Use config value to trigger automated rating
authorMichael <heluecht@pirati.ca>
Sun, 16 Aug 2020 21:38:26 +0000 (21:38 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 16 Aug 2020 21:38:26 +0000 (21:38 +0000)
src/Protocol/Feed.php
src/Worker/Cron.php
static/defaults.config.php

index 78830c5..915d78a 100644 (file)
@@ -602,7 +602,7 @@ class Feed
                        }
                }
 
-               if (!$dryRun) {
+               if (!$dryRun && DI::config()->get('system', 'adjust_poll_frequency')) {
                        self::adjustPollFrequency($contact, $creation_dates);
                }
 
@@ -716,8 +716,9 @@ class Feed
                        $priority = 3; // Poll once a day
                }
 
-               if ($contact['priority'] != $priority) {
-                       Logger::notice('Adjusting priority', ['old' => $contact['priority'], 'new' => $priority, 'id' => $contact['id'], 'uid' => $contact['uid'], 'url' => $contact['url']]);
+               if ($contact['rating'] != $priority) {
+                       Logger::notice('Adjusting priority', ['old' => $contact['rating'], 'new' => $priority, 'id' => $contact['id'], 'uid' => $contact['uid'], 'url' => $contact['url']]);
+                       DBA::update('contact', ['rating' => $priority], ['id' => $contact['id']]);
                }
        }
 
index ecfd2e7..286a19c 100644 (file)
@@ -186,7 +186,7 @@ class Cron
                Addon::reload();
 
                $sql = "SELECT `contact`.`id`, `contact`.`nick`, `contact`.`name`, `contact`.`network`, `contact`.`archive`,
-                                       `contact`.`last-update`, `contact`.`priority`, `contact`.`rel`, `contact`.`subhub`
+                                       `contact`.`last-update`, `contact`.`priority`, `contact`.`rating`, `contact`.`rel`, `contact`.`subhub`
                                FROM `user`
                                STRAIGHT_JOIN `contact`
                                ON `contact`.`uid` = `user`.`uid` AND `contact`.`poll` != ''
@@ -217,6 +217,11 @@ class Cron
                }
 
                while ($contact = DBA::fetch($contacts)) {
+                       // Use the "rating" field when auto adjusting the poll intervall
+                       if (DI::config()->get('system', 'adjust_poll_frequency') && ($contact['network'] == Protocol::FEED)) {
+                               $contact['priority'] = max($contact['rating'], $contact['priority']);
+                       }
+
                        // Friendica and OStatus are checked once a day
                        if (in_array($contact['network'], [Protocol::DFRN, Protocol::OSTATUS])) {
                                $contact['priority'] = 3;
index 5e5b48c..018e0dc 100644 (file)
@@ -82,6 +82,10 @@ return [
                'php_path' => 'php',
        ],
        'system' => [
+               // adjust_poll_frequency (Boolean)
+               // Automatically detect and set the best feed poll frequency.
+               'adjust_poll_frequency' => false,
+
                // allowed_link_protocols (Array)
                // Allowed protocols in links URLs, add at your own risk. http(s) is always allowed.
                'allowed_link_protocols' => ['ftp://', 'ftps://', 'mailto:', 'cid:', 'gopher://'],