define('FRIENDICA_CODENAME', 'Asparagus');
define('FRIENDICA_VERSION', '3.6-dev');
define('DFRN_PROTOCOL_VERSION', '2.23');
-define('DB_UPDATE_VERSION', 1235);
+define('DB_UPDATE_VERSION', 1236);
/**
* @brief Constant with a HTML line break.
// Compare the current structure with the defined structure
$t = Config::get('database', 'dbupdate_' . DB_UPDATE_VERSION);
- if ($t !== false) {
+ if (!is_null($t)) {
return;
}
-- ------------------------------------------
-- Friendica 3.6-dev (Asparagus)
--- DB_UPDATE_VERSION 1235
+-- DB_UPDATE_VERSION 1236
-- ------------------------------------------
`source` mediumtext,
`received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY(`item-uri`),
- INDEX `conversation-uri` (`conversation-uri`)
+ INDEX `conversation-uri` (`conversation-uri`),
+ INDEX `received` (`received`)
) DEFAULT COLLATE utf8mb4_general_ci;
--
$days = Config::get('system', 'dbclean-expire-days', 0);
if ($stage == 0) {
- for ($i = 1; $i <= 9; $i++) {
+ for ($i = 1; $i <= 10; $i++) {
// Execute the background script for a step when it isn't finished.
// Execute step 8 and 9 only when $days is defined.
- if (!Config::get('system', 'finished-dbclean-'.$i, false) && (($i < 8) || ($days > 0))) {
+ if (!Config::get('system', 'finished-dbclean-'.$i, false) && (($i < 8) || ($i > 9) || ($days > 0))) {
Worker::add(PRIORITY_LOW, 'DBClean', $i);
}
}
*
* Values for $stage:
* ------------------
- * 1: Old global item entries from item table without user copy.
- * 2: Items without parents.
- * 3: Orphaned data from thread table.
- * 4: Orphaned data from notify table.
- * 5: Orphaned data from notify-threads table.
- * 6: Orphaned data from sign table.
- * 7: Orphaned data from term table.
- * 8: Expired threads.
- * 9: Old global item entries from expired threads
+ * 1: Old global item entries from item table without user copy.
+ * 2: Items without parents.
+ * 3: Orphaned data from thread table.
+ * 4: Orphaned data from notify table.
+ * 5: Orphaned data from notify-threads table.
+ * 6: Orphaned data from sign table.
+ * 7: Orphaned data from term table.
+ * 8: Expired threads.
+ * 9: Old global item entries from expired threads.
+ * 10: Old conversations.
*/
private static function removeOrphans($stage = 0) {
global $db;
logger("Done deleting ".$count." old global item entries from expired threads. Last ID: ".$last_id);
Config::set('system', 'dbclean-last-id-9', $last_id);
+ } elseif ($stage == 10) {
+ $last_id = Config::get('system', 'dbclean-last-id-10', 0);
+
+ logger("Deleting old conversations. Last created: ".$last_id);
+ $r = dba::p("SELECT `received`, `item-uri` FROM `conversation`
+ WHERE `received` < UTC_TIMESTAMP() - INTERVAL 90 DAY
+ ORDER BY `received` LIMIT ".intval($limit));
+ $count = dba::num_rows($r);
+ if ($count > 0) {
+ logger("found old conversations: ".$count);
+ while ($orphan = dba::fetch($r)) {
+ $last_id = $orphan["received"];
+ dba::delete('conversation', array('item-uri' => $orphan["item-uri"]));
+ }
+ } else {
+ logger("No old conversations found");
+ }
+ dba::close($r);
+ logger("Done deleting ".$count." conversations. Last created: ".$last_id);
+
+ Config::set('system', 'dbclean-last-id-10', $last_id);
}
// Call it again if not all entries were purged