X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FWorker%2FCronJobs.php;h=311ec59a53c2d2787c830f479cb30d2d2c6e8319;hb=4c5b97834b26745fab2f23040cc3ca87686c6e87;hp=164b1cf4d203747739b2e603073b134a906ba8e1;hpb=14b4fac8183b645409439fc3942b61ae599a1bed;p=friendica.git diff --git a/src/Worker/CronJobs.php b/src/Worker/CronJobs.php index 164b1cf4d2..311ec59a53 100644 --- a/src/Worker/CronJobs.php +++ b/src/Worker/CronJobs.php @@ -10,18 +10,20 @@ use Friendica\Core\Cache; use Friendica\Core\Config; use Friendica\Core\Logger; use Friendica\Core\Protocol; +use Friendica\Core\StorageManager; +use Friendica\Core\Worker; use Friendica\Database\DBA; use Friendica\Database\PostUpdate; use Friendica\Model\Contact; use Friendica\Model\GContact; +use Friendica\Model\GServer; +use Friendica\Model\Nodeinfo; use Friendica\Model\Photo; use Friendica\Model\User; use Friendica\Network\Probe; -use Friendica\Protocol\PortableContact; +use Friendica\Util\Network; use Friendica\Util\Proxy as ProxyUtils; - -require_once 'include/dba.php'; -require_once 'mod/nodeinfo.php'; +use Friendica\Util\Strings; class CronJobs { @@ -36,55 +38,54 @@ class CronJobs Logger::log("Starting cronjob " . $command, Logger::DEBUG); - // Call possible post update functions - // see src/Database/PostUpdate.php for more details - if ($command == 'post_update') { - PostUpdate::update(); - return; - } - - // update nodeinfo data - if ($command == 'nodeinfo') { - nodeinfo_cron(); - return; - } - - // Expire and remove user entries - if ($command == 'expire_and_remove_users') { - self::expireAndRemoveUsers(); - return; - } - - if ($command == 'update_contact_birthdays') { - Contact::updateBirthdays(); - return; - } - - if ($command == 'update_photo_albums') { - self::updatePhotoAlbums(); - return; - } - - // Clear cache entries - if ($command == 'clear_cache') { - self::clearCache($a); - return; - } - - // Repair missing Diaspora values in contacts - if ($command == 'repair_diaspora') { - self::repairDiaspora($a); - return; + switch($command) { + case 'post_update': + PostUpdate::update(); + break; + + case 'nodeinfo': + Logger::info('cron_start'); + Nodeinfo::update(); + // Now trying to register + $url = 'http://the-federation.info/register/' . $a->getHostName(); + Logger::debug('Check registering url', ['url' => $url]); + $ret = Network::fetchUrl($url); + Logger::debug('Check registering answer', ['answer' => $ret]); + Logger::info('cron_end'); + break; + + case 'expire_and_remove_users': + self::expireAndRemoveUsers(); + break; + + case 'update_contact_birthdays': + Contact::updateBirthdays(); + break; + + case 'update_photo_albums': + self::updatePhotoAlbums(); + break; + + case 'clear_cache': + self::clearCache($a); + break; + + case 'repair_diaspora': + self::repairDiaspora($a); + break; + + case 'repair_database': + self::repairDatabase(); + break; + + case 'move_storage': + self::moveStorage(); + break; + + default: + Logger::log("Cronjob " . $command . " is unknown.", Logger::DEBUG); } - // Repair entries in the database - if ($command == 'repair_database') { - self::repairDatabase(); - return; - } - - Logger::log("Xronjob " . $command . " is unknown.", Logger::DEBUG); - return; } @@ -135,6 +136,7 @@ class CronJobs * @brief Clear cache entries * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function clearCache(App $a) { @@ -174,7 +176,7 @@ class CronJobs } $condition = ['`uid` = 0 AND `resource-id` LIKE "pic:%" AND `created` < NOW() - INTERVAL ? SECOND', $cachetime]; - DBA::delete('photo', $condition); + Photo::delete($condition); } // Delete the cached OEmbed entries that are older than three month @@ -232,6 +234,8 @@ class CronJobs * @brief Repair missing values in Diaspora contacts * * @param App $a + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function repairDiaspora(App $a) { @@ -250,7 +254,7 @@ class CronJobs return; } - if (!PortableContact::reachable($contact["url"])) { + if (!GServer::reachable($contact["url"])) { continue; } @@ -298,5 +302,33 @@ class CronJobs /// - remove sign entries without item /// - remove children when parent got lost /// - set contact-id in item when not present + + // Add intro entries for pending contacts + // We don't do this for DFRN entries since such revived contact requests seem to mostly fail. + $pending_contacts = DBA::p("SELECT `uid`, `id`, `url`, `network`, `created` FROM `contact` + WHERE `pending` AND `rel` IN (?, ?) AND `network` != ? + AND NOT EXISTS (SELECT `id` FROM `intro` WHERE `contact-id` = `contact`.`id`)", + 0, Contact::FOLLOWER, Protocol::DFRN); + while ($contact = DBA::fetch($pending_contacts)) { + DBA::insert('intro', ['uid' => $contact['uid'], 'contact-id' => $contact['id'], 'blocked' => false, + 'hash' => Strings::getRandomHex(), 'datetime' => $contact['created']]); + } + DBA::close($pending_contacts); + } + + /** + * Moves up to 5000 attachments and photos to the current storage system. + * Self-replicates if legacy items have been found and moved. + * + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + */ + private static function moveStorage() + { + $current = StorageManager::getBackend(); + $moved = StorageManager::move($current); + + if ($moved) { + Worker::add(PRIORITY_LOW, "CronJobs", "move_storage"); + } } }