-- ------------------------------------------
-- Friendica 2021.03-dev (Red Hot Poker)
---- DB_UPDATE_VERSION 1403
++-- DB_UPDATE_VERSION 1404
-- ------------------------------------------
-- TABLE parsed_url
--
CREATE TABLE IF NOT EXISTS `parsed_url` (
- `url` varbinary(255) NOT NULL COMMENT 'page url',
+ `url_hash` binary(64) NOT NULL COMMENT 'page url hash',
`guessing` boolean NOT NULL DEFAULT '0' COMMENT 'is the \'guessing\' mode active?',
`oembed` boolean NOT NULL DEFAULT '0' COMMENT 'is the data the result of oembed?',
+ `url` text NOT NULL COMMENT 'page url',
`content` mediumtext COMMENT 'page data',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of creation',
- PRIMARY KEY(`url`,`guessing`,`oembed`),
- INDEX `created` (`created`)
+ `expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of expiration',
- PRIMARY KEY(`url_hash`,`guessing`,`oembed`),
- INDEX `created` (`created`),
- INDEX `expires` (`expires`)
++ PRIMARY KEY(`url_hash`,`guessing`,`oembed`),
++ INDEX `created` (`created`),
++ INDEX `expires` (`expires`)
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='cache for \'parse_url\' queries';
+
--
-- TABLE pconfig
--
return Update::SUCCESS;
}
- function update_1403()
+ function pre_update_1403()
+ {
+ // Necessary before a primary key change
+ if (!DBA::e("DROP TABLE `parsed_url`")) {
+ return Update::FAILED;
+ }
+
+ return Update::SUCCESS;
+ }
++
++function update_1404()
+{
+ $tasks = DBA::select('workerqueue', ['id', 'command', 'parameter'], ['command' => ['notifier', 'delivery', 'apdelivery', 'done' => false]]);
+ while ($task = DBA::fetch($tasks)) {
+ $parameters = json_decode($task['parameter'], true);
+
+ if (in_array($parameters[0], [Delivery::MAIL, Delivery::SUGGESTION, Delivery::REMOVAL, Delivery::RELOCATION])) {
+ continue;
+ }
+
+ switch (strtolower($task['command'])) {
+ case 'notifier':
+ if (count($parameters) == 3) {
+ continue 2;
+ }
+ $item = DBA::selectFirst('item', ['uid', 'uri-id'], ['id' => $parameters[1]]);
+ if (!DBA::isResult($item)) {
+ continue 2;
+ }
+
+ $parameters[1] = $item['uri-id'];
+ $parameters[2] = $item['uid'];
+ break;
+ case 'delivery':
+ if (count($parameters) == 4) {
+ continue 2;
+ }
+ $item = DBA::selectFirst('item', ['uid', 'uri-id'], ['id' => $parameters[1]]);
+ if (!DBA::isResult($item)) {
+ continue 2;
+ }
+
+ $parameters[1] = $item['uri-id'];
+ $parameters[3] = $item['uid'];
+ break;
+ case 'apdelivery':
+ if (count($parameters) == 6) {
+ continue 2;
+ }
+
+ if (empty($parameters[4])) {
+ $parameters[4] = [];
+ }
+
+ $item = DBA::selectFirst('item', ['uri-id'], ['id' => $parameters[1]]);
+ if (!DBA::isResult($item)) {
+ continue 2;
+ }
+
+ $parameters[5] = $item['uri-id'];
+ break;
+ default:
+ continue 2;
+ }
+ DBA::update('workerqueue', ['parameter' => json_encode($parameters)], ['id' => $task['id']]);
+ }
- return Update::SUCCESS;
+}