X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FWorker%2FDiscoverPoCo.php;h=d495b4c2a6a8db94c6a7e070eb09f94afad25931;hb=4c5b97834b26745fab2f23040cc3ca87686c6e87;hp=965477d993a46722ae366e6d80500b229210411a;hpb=0ec44f3e8a73229c3aadea86f61b5571a701c6b7;p=friendica.git diff --git a/src/Worker/DiscoverPoCo.php b/src/Worker/DiscoverPoCo.php index 965477d993..d495b4c2a6 100644 --- a/src/Worker/DiscoverPoCo.php +++ b/src/Worker/DiscoverPoCo.php @@ -6,13 +6,18 @@ namespace Friendica\Worker; use Friendica\Core\Cache; use Friendica\Core\Config; +use Friendica\Core\Logger; +use Friendica\Core\Protocol; use Friendica\Core\Worker; use Friendica\Database\DBA; use Friendica\Model\GContact; +use Friendica\Model\Contact; +use Friendica\Model\GServer; use Friendica\Network\Probe; use Friendica\Protocol\PortableContact; use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; +use Friendica\Util\Strings; class DiscoverPoCo { @@ -51,15 +56,15 @@ class DiscoverPoCo } elseif ($command == "check_profile") { $mode = 8; } elseif ($command !== "") { - logger("Unknown or missing parameter ".$command."\n"); + Logger::log("Unknown or missing parameter ".$command."\n"); return; } - logger('start '.$search); + Logger::log('start '.$search); if ($mode == 8) { if ($param1 != "") { - PortableContact::lastUpdated($param1, true); + GContact::updateFromProbe($param1, true); } } elseif ($mode == 7) { if (!empty($param4)) { @@ -78,17 +83,17 @@ class DiscoverPoCo return; } $server_url = filter_var($server_url, FILTER_SANITIZE_URL); - if (substr(normalise_link($server_url), 0, 7) != "http://") { + if (substr(Strings::normaliseLink($server_url), 0, 7) != "http://") { return; } $result = "Checking server ".$server_url." - "; - $ret = PortableContact::checkServer($server_url); + $ret = GServer::check($server_url); if ($ret) { $result .= "success"; } else { $result .= "failed"; } - logger($result, LOGGER_DEBUG); + Logger::log($result, Logger::DEBUG); } elseif ($mode == 3) { GContact::updateSuggestions(); } elseif (($mode == 2) && Config::get('system', 'poco_completion')) { @@ -96,7 +101,7 @@ class DiscoverPoCo } elseif (($mode == 1) && ($search != "") && Config::get('system', 'poco_local_search')) { self::discoverDirectory($search); self::gsSearchUser($search); - } elseif (($mode == 0) && ($search == "") && (Config::get('system', 'poco_discovery') > 0)) { + } elseif (($mode == 0) && ($search == "") && (Config::get('system', 'poco_discovery') != PortableContact::DISABLED)) { // Query Friendica and Hubzilla servers for their users PortableContact::discover(); @@ -106,7 +111,7 @@ class DiscoverPoCo } } - logger('end '.$search); + Logger::log('end '.$search); return; } @@ -118,7 +123,7 @@ class DiscoverPoCo private static function updateServer() { $r = q("SELECT `url`, `created`, `last_failure`, `last_contact` FROM `gserver` ORDER BY rand()"); - if (!DBA::is_result($r)) { + if (!DBA::isResult($r)) { return; } @@ -128,7 +133,7 @@ class DiscoverPoCo if (!PortableContact::updateNeeded($server["created"], "", $server["last_failure"], $server["last_contact"])) { continue; } - logger('Update server status for server '.$server["url"], LOGGER_DEBUG); + Logger::log('Update server status for server '.$server["url"], Logger::DEBUG); Worker::add(PRIORITY_LOW, "DiscoverPoCo", "server", $server["url"]); @@ -139,7 +144,7 @@ class DiscoverPoCo } private static function discoverUsers() { - logger("Discover users", LOGGER_DEBUG); + Logger::log("Discover users", Logger::DEBUG); $starttime = time(); @@ -147,8 +152,8 @@ class DiscoverPoCo WHERE `last_contact` < UTC_TIMESTAMP - INTERVAL 1 MONTH AND `last_failure` < UTC_TIMESTAMP - INTERVAL 1 MONTH AND `network` IN ('%s', '%s', '%s', '%s', '') ORDER BY rand()", - dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), - dbesc(NETWORK_OSTATUS), dbesc(NETWORK_FEED)); + DBA::escape(Protocol::DFRN), DBA::escape(Protocol::DIASPORA), + DBA::escape(Protocol::OSTATUS), DBA::escape(Protocol::FEED)); if (!$users) { return; @@ -159,36 +164,31 @@ class DiscoverPoCo $urlparts = parse_url($user["url"]); if (!isset($urlparts["scheme"])) { - DBA::update('gcontact', ['network' => NETWORK_PHANTOM], - ['nurl' => normalise_link($user["url"])]); + DBA::update('gcontact', ['network' => Protocol::PHANTOM], + ['nurl' => Strings::normaliseLink($user["url"])]); continue; } - if (in_array($urlparts["host"], ["www.facebook.com", "facebook.com", "twitter.com", - "identi.ca", "alpha.app.net"])) { - $networks = ["www.facebook.com" => NETWORK_FACEBOOK, - "facebook.com" => NETWORK_FACEBOOK, - "twitter.com" => NETWORK_TWITTER, - "identi.ca" => NETWORK_PUMPIO, - "alpha.app.net" => NETWORK_APPNET]; + if (in_array($urlparts["host"], ["twitter.com", "identi.ca"])) { + $networks = ["twitter.com" => Protocol::TWITTER, "identi.ca" => Protocol::PUMPIO]; DBA::update('gcontact', ['network' => $networks[$urlparts["host"]]], - ['nurl' => normalise_link($user["url"])]); + ['nurl' => Strings::normaliseLink($user["url"])]); continue; } - $server_url = PortableContact::detectServer($user["url"]); + $server_url = Contact::getBasepath($user["url"]); $force_update = false; if ($user["server_url"] != "") { - $force_update = (normalise_link($user["server_url"]) != normalise_link($server_url)); + $force_update = (Strings::normaliseLink($user["server_url"]) != Strings::normaliseLink($server_url)); $server_url = $user["server_url"]; } - if ((($server_url == "") && ($user["network"] == NETWORK_FEED)) || $force_update || PortableContact::checkServer($server_url, $user["network"])) { - logger('Check profile '.$user["url"]); + if ((($server_url == "") && ($user["network"] == Protocol::FEED)) || $force_update || GServer::check($server_url, $user["network"])) { + Logger::log('Check profile '.$user["url"]); Worker::add(PRIORITY_LOW, "DiscoverPoCo", "check_profile", $user["url"]); if (++$checked > 100) { @@ -196,7 +196,7 @@ class DiscoverPoCo } } else { DBA::update('gcontact', ['last_failure' => DateTimeFormat::utcNow()], - ['nurl' => normalise_link($user["url"])]); + ['nurl' => Strings::normaliseLink($user["url"])]); } // Quit the loop after 3 minutes @@ -212,7 +212,7 @@ class DiscoverPoCo if (!is_null($data)) { // Only search for the same item every 24 hours if (time() < $data + (60 * 60 * 24)) { - logger("Already searched for ".$search." in the last 24 hours", LOGGER_DEBUG); + Logger::log("Already searched for ".$search." in the last 24 hours", Logger::DEBUG); return; } } @@ -220,35 +220,35 @@ class DiscoverPoCo $x = Network::fetchUrl(get_server()."/lsearch?p=1&n=500&search=".urlencode($search)); $j = json_decode($x); - if (count($j->results)) { + if (!empty($j->results)) { foreach ($j->results as $jj) { // Check if the contact already exists - $exists = q("SELECT `id`, `last_contact`, `last_failure`, `updated` FROM `gcontact` WHERE `nurl` = '%s'", normalise_link($jj->url)); - if (DBA::is_result($exists)) { - logger("Profile ".$jj->url." already exists (".$search.")", LOGGER_DEBUG); + $exists = q("SELECT `id`, `last_contact`, `last_failure`, `updated` FROM `gcontact` WHERE `nurl` = '%s'", Strings::normaliseLink($jj->url)); + if (DBA::isResult($exists)) { + Logger::log("Profile ".$jj->url." already exists (".$search.")", Logger::DEBUG); if (($exists[0]["last_contact"] < $exists[0]["last_failure"]) && ($exists[0]["updated"] < $exists[0]["last_failure"])) { continue; } // Update the contact - PortableContact::lastUpdated($jj->url); + GContact::updateFromProbe($jj->url); continue; } - $server_url = PortableContact::detectServer($jj->url); + $server_url = Contact::getBasepath($jj->url); if ($server_url != '') { - if (!PortableContact::checkServer($server_url)) { - logger("Friendica server ".$server_url." doesn't answer.", LOGGER_DEBUG); + if (!GServer::check($server_url)) { + Logger::log("Friendica server ".$server_url." doesn't answer.", Logger::DEBUG); continue; } - logger("Friendica server ".$server_url." seems to be okay.", LOGGER_DEBUG); + Logger::log("Friendica server ".$server_url." seems to be okay.", Logger::DEBUG); } $data = Probe::uri($jj->url); - if ($data["network"] == NETWORK_DFRN) { - logger("Profile ".$jj->url." is reachable (".$search.")", LOGGER_DEBUG); - logger("Add profile ".$jj->url." to local directory (".$search.")", LOGGER_DEBUG); + if ($data["network"] == Protocol::DFRN) { + Logger::log("Profile ".$jj->url." is reachable (".$search.")", Logger::DEBUG); + Logger::log("Add profile ".$jj->url." to local directory (".$search.")", Logger::DEBUG); if ($jj->tags != "") { $data["keywords"] = $jj->tags; @@ -258,17 +258,20 @@ class DiscoverPoCo GContact::update($data); } else { - logger("Profile ".$jj->url." is not responding or no Friendica contact - but network ".$data["network"], LOGGER_DEBUG); + Logger::log("Profile ".$jj->url." is not responding or no Friendica contact - but network ".$data["network"], Logger::DEBUG); } } } - Cache::set("dirsearch:".$search, time(), CACHE_DAY); + Cache::set("dirsearch:".$search, time(), Cache::DAY); } /** * @brief Search for GNU Social user with gstools.org * * @param string $search User name + * @return bool + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function gsSearchUser($search) { @@ -278,12 +281,12 @@ class DiscoverPoCo $url = "http://gstools.org/api/users_search/".urlencode($search); - $result = Network::curl($url); - if (!$result["success"]) { + $curlResult = Network::curl($url); + if (!$curlResult->isSuccess()) { return false; } - $contacts = json_decode($result["body"]); + $contacts = json_decode($curlResult->getBody()); if ($contacts->status == 'ERROR') { return false; @@ -293,7 +296,7 @@ class DiscoverPoCo /// @TODO find all those and convert to all lower-case which is a keyword then foreach ($contacts->data AS $user) { $contact = Probe::uri($user->site_address."/".$user->name); - if ($contact["network"] != NETWORK_PHANTOM) { + if ($contact["network"] != Protocol::PHANTOM) { $contact["about"] = $user->description; GContact::update($contact); }