diff --git a/database.sql b/database.sql index 09f1a83cc..1ff770641 100644 --- a/database.sql +++ b/database.sql @@ -274,29 +274,6 @@ CREATE TABLE IF NOT EXISTS `fcontact` ( UNIQUE INDEX `url` (`url`(190)) ) DEFAULT COLLATE utf8mb4_general_ci; --- --- TABLE ffinder --- -CREATE TABLE IF NOT EXISTS `ffinder` ( - `id` int(10) unsigned NOT NULL auto_increment, - `uid` int(10) unsigned NOT NULL DEFAULT 0, - `cid` int(10) unsigned NOT NULL DEFAULT 0, - `fid` int(10) unsigned NOT NULL DEFAULT 0, - PRIMARY KEY(`id`) -) DEFAULT COLLATE utf8mb4_general_ci; - --- --- TABLE fserver --- -CREATE TABLE IF NOT EXISTS `fserver` ( - `id` int(11) NOT NULL auto_increment, - `server` varchar(255) NOT NULL DEFAULT '', - `posturl` varchar(255) NOT NULL DEFAULT '', - `key` text, - PRIMARY KEY(`id`), - INDEX `server` (`server`(32)) -) DEFAULT COLLATE utf8mb4_general_ci; - -- -- TABLE fsuggest -- @@ -558,22 +535,6 @@ CREATE TABLE IF NOT EXISTS `item` ( INDEX `uid_ownerlink` (`uid`,`owner-link`(190)) ) DEFAULT COLLATE utf8mb4_general_ci; --- --- TABLE item_id --- -CREATE TABLE IF NOT EXISTS `item_id` ( - `id` int(11) NOT NULL auto_increment, - `iid` int(11) NOT NULL DEFAULT 0, - `uid` int(11) NOT NULL DEFAULT 0, - `sid` varchar(255) NOT NULL DEFAULT '', - `service` varchar(255) NOT NULL DEFAULT '', - PRIMARY KEY(`id`), - INDEX `uid` (`uid`), - INDEX `sid` (`sid`(32)), - INDEX `service` (`service`(32)), - INDEX `iid` (`iid`) -) DEFAULT COLLATE utf8mb4_general_ci; - -- -- TABLE locks -- @@ -948,23 +909,6 @@ CREATE TABLE IF NOT EXISTS `sign` ( UNIQUE INDEX `iid` (`iid`) ) DEFAULT COLLATE utf8mb4_general_ci; --- --- TABLE spam --- -CREATE TABLE IF NOT EXISTS `spam` ( - `id` int(11) NOT NULL auto_increment, - `uid` int(11) NOT NULL DEFAULT 0, - `spam` int(11) NOT NULL DEFAULT 0, - `ham` int(11) NOT NULL DEFAULT 0, - `term` varchar(255) NOT NULL DEFAULT '', - `date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - PRIMARY KEY(`id`), - INDEX `uid` (`uid`), - INDEX `spam` (`spam`), - INDEX `ham` (`ham`), - INDEX `term` (`term`(32)) -) DEFAULT COLLATE utf8mb4_general_ci; - -- -- TABLE term -- diff --git a/include/dbstructure.php b/include/dbstructure.php index 3c620d7d7..dae54835f 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -888,29 +888,6 @@ function db_definition() { "url" => array("UNIQUE", "url(190)"), ) ); - $database["ffinder"] = array( - "fields" => array( - "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), - "cid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("contact" => "id")), - "fid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0", "relation" => array("fcontact" => "id")), - ), - "indexes" => array( - "PRIMARY" => array("id"), - ) - ); - $database["fserver"] = array( - "fields" => array( - "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "server" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "posturl" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "key" => array("type" => "text"), - ), - "indexes" => array( - "PRIMARY" => array("id"), - "server" => array("server(32)"), - ) - ); $database["fsuggest"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), @@ -1172,22 +1149,6 @@ function db_definition() { "uid_ownerlink" => array("uid","owner-link(190)"), ) ); - $database["item_id"] = array( - "fields" => array( - "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "iid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("item" => "id")), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), - "sid" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "service" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - ), - "indexes" => array( - "PRIMARY" => array("id"), - "uid" => array("uid"), - "sid" => array("sid(32)"), - "service" => array("service(32)"), - "iid" => array("iid"), - ) - ); $database["locks"] = array( "fields" => array( "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), @@ -1562,23 +1523,6 @@ function db_definition() { "iid" => array("UNIQUE", "iid"), ) ); - $database["spam"] = array( - "fields" => array( - "id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), - "uid" => array("type" => "int(11)", "not null" => "1", "default" => "0", "relation" => array("user" => "uid")), - "spam" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "ham" => array("type" => "int(11)", "not null" => "1", "default" => "0"), - "term" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), - "date" => array("type" => "datetime", "not null" => "1", "default" => NULL_DATE), - ), - "indexes" => array( - "PRIMARY" => array("id"), - "uid" => array("uid"), - "spam" => array("spam"), - "ham" => array("ham"), - "term" => array("term(32)"), - ) - ); $database["term"] = array( "fields" => array( "tid" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"), diff --git a/include/fcontact.php b/include/fcontact.php deleted file mode 100644 index 7e93d067f..000000000 --- a/include/fcontact.php +++ /dev/null @@ -1,33 +0,0 @@ - $nurl, 'name' => $name, 'photo' => $photo)); - - if (DBM::is_result($r)) { - $r = q("SELECT `id` FROM `fcontact` WHERE `url` = '%s' LIMIT 1", - dbesc($nurl) - ); - if (DBM::is_result($r)) - return $r[0]['id']; - } - - return 0; -} - -function ffinder_store($uid,$cid,$fid) { - $r = dba::insert('ffinder', array('uid' => $uid, 'cid' => $cid, 'fid' => $fid)); - return $r; -} - diff --git a/include/items.php b/include/items.php index 63c321819..61a9c7a1f 100644 --- a/include/items.php +++ b/include/items.php @@ -2233,7 +2233,6 @@ function drop_item($id, $interactive = true) { // Now delete them if ($parentid != "") { - $r = q("DELETE FROM `item_id` WHERE `iid` IN (%s)", dbesc($parentid)); $r = q("DELETE FROM `sign` WHERE `iid` IN (%s)", dbesc($parentid)); } diff --git a/src/Worker/Cron.php b/src/Worker/Cron.php index 5814c0548..db0d518cc 100644 --- a/src/Worker/Cron.php +++ b/src/Worker/Cron.php @@ -153,14 +153,13 @@ Class Cron { : '' ); - $contacts = q("SELECT `contact`.`id`, `contact`.`nick`, `contact`.`name`, `contact`.`network`, - `contact`.`last-update`, `contact`.`priority`, `contact`.`subhub` + $contacts = q("SELECT `contact`.`id`, `contact`.`nick`, `contact`.`name`, `contact`.`network`, `contact`.`archive`, + `contact`.`last-update`, `contact`.`priority`, `contact`.`rel`, `contact`.`subhub` FROM `user` STRAIGHT_JOIN `contact` ON `contact`.`uid` = `user`.`uid` AND `contact`.`poll` != '' AND `contact`.`network` IN ('%s', '%s', '%s', '%s', '%s') $sql_extra - AND NOT `contact`.`self` AND NOT `contact`.`blocked` AND NOT `contact`.`readonly` - AND NOT `contact`.`archive` + AND NOT `contact`.`self` AND NOT `contact`.`blocked` WHERE NOT `user`.`account_expired` AND NOT `user`.`account_removed` $abandon_sql", dbesc(NETWORK_DFRN), dbesc(NETWORK_OSTATUS), @@ -179,6 +178,7 @@ Class Cron { $contact['last-update'] = NULL_DATE; } + // Friendica and OStatus are checked once a day if (in_array($contact['network'], array(NETWORK_DFRN, NETWORK_OSTATUS))) { $contact['priority'] = 2; } @@ -191,7 +191,17 @@ Class Cron { * changed. We will only update hubs once a day, regardless of 'pushpoll_frequency'. */ $poll_interval = Config::get('system', 'pushpoll_frequency'); - $contact['priority'] = (($poll_interval !== false) ? intval($poll_interval) : 3); + $contact['priority'] = (!is_null($poll_interval) ? intval($poll_interval) : 3); + } + + // Check Diaspora contacts or followers once a week + if (($contact["network"] == NETWORK_DIASPORA) || ($contact["rel"] == CONTACT_IS_FOLLOWER)) { + $contact['priority'] = 4; + } + + // Check archived contacts once a month + if ($contact['archive']) { + $contact['priority'] = 5; } if (($contact['priority'] >= 0) && !$force) { @@ -240,13 +250,16 @@ Class Cron { } } - logger("Polling " . $contact["network"] . " " . $contact["id"] . " " . $contact["nick"] . " " . $contact["name"]); - if (($contact['network'] == NETWORK_FEED) && ($contact['priority'] <= 3)) { $priority = PRIORITY_MEDIUM; + } elseif ($contact['archive']) { + $priority = PRIORITY_NEGLIGIBLE; } else { $priority = PRIORITY_LOW; } + + logger("Polling " . $contact["network"] . " " . $contact["id"] . " " . $contact['priority'] . " " . $contact["nick"] . " " . $contact["name"]); + Worker::add(array('priority' => $priority, 'dont_fork' => true), 'OnePoll', (int)$contact['id']); } } diff --git a/src/Worker/OnePoll.php b/src/Worker/OnePoll.php index 2d742fc56..c1fb5350c 100644 --- a/src/Worker/OnePoll.php +++ b/src/Worker/OnePoll.php @@ -63,27 +63,25 @@ Class OnePoll } } - // Diaspora users and followers we only check if they still exist. - if (($contact["network"] == NETWORK_DIASPORA) || ($contact["rel"] == CONTACT_IS_FOLLOWER)) { - if (PortableContact::updateNeeded($contact["created"], $contact["last-item"], $contact["failure_update"], $contact["success_update"])) { - $last_updated = PortableContact::lastUpdated($contact["url"]); - $updated = datetime_convert(); - if ($last_updated) { - logger('Contact '.$contact['id'].' had last update on '.$last_updated, LOGGER_DEBUG); + // Diaspora users, archived users and followers are only checked if they still exist. + if ($contact['archive'] || ($contact["network"] == NETWORK_DIASPORA) || ($contact["rel"] == CONTACT_IS_FOLLOWER)) { + $last_updated = PortableContact::lastUpdated($contact["url"]); + $updated = datetime_convert(); + if ($last_updated) { + logger('Contact '.$contact['id'].' had last update on '.$last_updated, LOGGER_DEBUG); - // The last public item can be older than the last item we got - if ($last_updated < $contact['last-item']) { - $last_updated = $contact['last-item']; - } - - $fields = array('last-item' => $last_updated, 'last-update' => $updated, 'success_update' => $updated); - self::updateContact($contact, $fields); - Contact::unmarkForArchival($contact); - } else { - self::updateContact($contact, array('last-update' => $updated, 'failure_update' => $updated)); - Contact::markForArchival($contact); - logger('Contact '.$contact['id'].' is marked for archival', LOGGER_DEBUG); + // The last public item can be older than the last item we got + if ($last_updated < $contact['last-item']) { + $last_updated = $contact['last-item']; } + + $fields = array('last-item' => $last_updated, 'last-update' => $updated, 'success_update' => $updated); + self::updateContact($contact, $fields); + Contact::unmarkForArchival($contact); + } else { + self::updateContact($contact, array('last-update' => $updated, 'failure_update' => $updated)); + Contact::markForArchival($contact); + logger('Contact '.$contact['id'].' is marked for archival', LOGGER_DEBUG); } return; }