X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FWorker%2FSearchDirectory.php;h=0bd17e0f821b58ee0cfcba77459b1e21bf891d02;hb=c6a9e8be397c5b3c519470f8e22f23b0fbdd3b68;hp=d489acb7fb6d6aa027879e98edb8762db31400bd;hpb=73b82d1455f1c1bdc74eb31ebd3d5653df50576e;p=friendica.git diff --git a/src/Worker/SearchDirectory.php b/src/Worker/SearchDirectory.php index d489acb7fb..0bd17e0f82 100644 --- a/src/Worker/SearchDirectory.php +++ b/src/Worker/SearchDirectory.php @@ -1,31 +1,44 @@ . + * */ + namespace Friendica\Worker; -use Friendica\Core\Cache; -use Friendica\Core\Config; +use Friendica\Core\Cache\Enum\Duration; use Friendica\Core\Logger; -use Friendica\Core\Protocol; -use Friendica\Database\DBA; -use Friendica\Model\GContact; -use Friendica\Model\GServer; -use Friendica\Network\Probe; -use Friendica\Util\Network; -use Friendica\Util\Strings; +use Friendica\Core\Search; +use Friendica\DI; +use Friendica\Model\Contact; +use Friendica\Network\HTTPClient\Client\HttpClientAccept; class SearchDirectory { // : Searches for "search pattern" in the directory. public static function execute($search) { - if (!Config::get('system', 'poco_local_search')) { + if (!DI::config()->get('system', 'poco_local_search')) { Logger::info('Local search is not enabled'); return; } - $data = Cache::get('SearchDirectory:' . $search); + $data = DI::cache()->get('SearchDirectory:' . $search); if (!is_null($data)) { // Only search for the same item every 24 hours if (time() < $data + (60 * 60 * 24)) { @@ -34,51 +47,14 @@ class SearchDirectory } } - $x = Network::fetchUrl(get_server() . '/lsearch?p=1&n=500&search=' . urlencode($search)); + $x = DI::httpClient()->fetch(Search::getGlobalDirectory() . '/lsearch?p=1&n=500&search=' . urlencode($search), HttpClientAccept::JSON); $j = json_decode($x); if (!empty($j->results)) { foreach ($j->results as $jj) { - // Check if the contact already exists - $gcontact = DBA::selectFirst('gcontact', ['id', 'last_contact', 'last_failure', 'updated'], ['nurl' => Strings::normaliseLink($jj->url)]); - if (DBA::isResult($gcontact)) { - Logger::info('Profile already exists', ['profile' => $jj->url, 'search' => $search]); - - if (($gcontact['last_contact'] < $gcontact['last_failure']) && - ($gcontact['updated'] < $gcontact['last_failure'])) { - continue; - } - - // Update the contact - GContact::updateFromProbe($jj->url); - continue; - } - - $server_url = GContact::getBasepath($jj->url, true); - if ($server_url != '') { - if (!GServer::check($server_url)) { - Logger::info("Friendica server doesn't answer.", ['server' => $server_url]); - continue; - } - Logger::info('Friendica server seems to be okay.', ['server' => $server_url]); - } - - $data = Probe::uri($jj->url); - if ($data['network'] == Protocol::DFRN) { - Logger::info('Add profile to local directory', ['profile' => $jj->url]); - - if ($jj->tags != '') { - $data['keywords'] = $jj->tags; - } - - $data['server_url'] = $data['baseurl']; - - GContact::update($data); - } else { - Logger::info('Profile is not responding or no Friendica contact', ['profile' => $jj->url, 'network' => $data['network']]); - } + Contact::getByURL($jj->url); } } - Cache::set('SearchDirectory:' . $search, time(), Cache::DAY); + DI::cache()->set('SearchDirectory:' . $search, time(), Duration::DAY); } }