3 * @copyright Copyright (C) 2020, Friendica
5 * @license GNU AGPL version 3 or any later version
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as
9 * published by the Free Software Foundation, either version 3 of the
10 * License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 namespace Friendica\Worker;
24 use Friendica\Core\Cache\Duration;
25 use Friendica\Core\Logger;
26 use Friendica\Core\Search;
28 use Friendica\Model\Contact;
32 // <search pattern>: Searches for "search pattern" in the directory.
33 public static function execute($search)
35 if (!DI::config()->get('system', 'poco_local_search')) {
36 Logger::info('Local search is not enabled');
40 $data = DI::cache()->get('SearchDirectory:' . $search);
41 if (!is_null($data)) {
42 // Only search for the same item every 24 hours
43 if (time() < $data + (60 * 60 * 24)) {
44 Logger::info('Already searched this in the last 24 hours', ['search' => $search]);
49 $x = DI::httpRequest()->fetch(Search::getGlobalDirectory() . '/lsearch?p=1&n=500&search=' . urlencode($search));
52 if (!empty($j->results)) {
53 foreach ($j->results as $jj) {
54 Contact::getByURL($jj->url);
57 DI::cache()->set('SearchDirectory:' . $search, time(), Duration::DAY);