-- ------------------------------------------
--- Friendica 3.5.1-rc (Asparagus)
+-- Friendica 3.5.2-dev (Asparagus)
-- DB_UPDATE_VERSION 1215
-- ------------------------------------------
INDEX `uid` (`uid`)
) DEFAULT CHARSET=utf8mb4;
---
--- TABLE deliverq
---
-CREATE TABLE IF NOT EXISTS `deliverq` (
- `id` int(10) unsigned NOT NULL auto_increment,
- `cmd` varbinary(32) NOT NULL DEFAULT '',
- `item` int(11) NOT NULL DEFAULT 0,
- `contact` int(11) NOT NULL DEFAULT 0,
- PRIMARY KEY(`id`),
- UNIQUE INDEX `cmd_item_contact` (`cmd`,`item`,`contact`)
-) DEFAULT CHARSET=utf8mb4;
-
--
-- TABLE event
--
"uid" => array("uid"),
)
);
- $database["deliverq"] = array(
- "fields" => array(
- "id" => array("type" => "int(10) unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"),
- "cmd" => array("type" => "varbinary(32)", "not null" => "1", "default" => ""),
- "item" => array("type" => "int(11)", "not null" => "1", "default" => "0"),
- "contact" => array("type" => "int(11)", "not null" => "1", "default" => "0"),
- ),
- "indexes" => array(
- "PRIMARY" => array("id"),
- "cmd_item_contact" => array("UNIQUE", "cmd", "item", "contact"),
- )
- );
$database["event"] = array(
"fields" => array(
"id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"),
$contact_id = intval($argv[$x]);
- /// @todo When switching completely to the worker we won't need this anymore
- // Some other process may have delivered this item already.
-
- $r = q("SELECT * FROM `deliverq` WHERE `cmd` = '%s' AND `item` = %d AND `contact` = %d LIMIT 1",
- dbesc($cmd),
- dbesc($item_id),
- dbesc($contact_id)
- );
- if (!dbm::is_result($r)) {
- continue;
- }
-
- if ($a->maxload_reached()) {
- return;
- }
-
- // It's ours to deliver. Remove it from the queue.
-
- q("DELETE FROM `deliverq` WHERE `cmd` = '%s' AND `item` = %d AND `contact` = %d",
- dbesc($cmd),
- dbesc($item_id),
- dbesc($contact_id)
- );
-
if (!$item_id || !$contact_id) {
continue;
}
if ($relocate) {
$r = $recipients_relocate;
} else {
- $r = q("SELECT * FROM `contact` WHERE `id` IN (%s) AND NOT `blocked` AND NOT `pending` AND NOT `archive`".$sql_extra,
+ $r = q("SELECT `id`, `url`, `network`, `self` FROM `contact`
+ WHERE `id` IN (%s) AND NOT `blocked` AND NOT `pending` AND NOT `archive`".$sql_extra,
dbesc($recip_str)
);
}
if (dbm::is_result($r)) {
foreach ($r as $contact) {
- if (!$contact['self']) {
- if (($contact['network'] === NETWORK_DIASPORA) && ($public_message)) {
- continue;
- }
- q("INSERT INTO `deliverq` (`cmd`,`item`,`contact`) VALUES ('%s', %d, %d)",
- dbesc($cmd),
- intval($item_id),
- intval($contact['id'])
- );
- }
- }
-
- for ($x = 0; $x < count($r); $x ++) {
- $contact = $r[$x];
-
if ($contact['self']) {
continue;
}
logger("Deliver ".$target_item["guid"]." to ".$contact['url']." via network ".$contact['network'], LOGGER_DEBUG);
proc_run(PRIORITY_HIGH,'include/delivery.php', $cmd, $item_id, $contact['id']);
- continue;
}
}
if (dbm::is_result($r)) {
logger('pubdeliver '.$target_item["guid"].': '.print_r($r,true), LOGGER_DEBUG);
- // throw everything into the queue in case we get killed
-
- foreach ($r as $rr) {
- if ((! $mail) && (! $fsuggest) && (! $followup)) {
- q("INSERT INTO `deliverq` (`cmd`,`item`,`contact`) VALUES ('%s', %d, %d)
- ON DUPLICATE KEY UPDATE `cmd` = '%s', `item` = %d, `contact` = %d",
- dbesc($cmd), intval($item_id), intval($rr['id']),
- dbesc($cmd), intval($item_id), intval($rr['id'])
- );
- }
- }
-
foreach ($r as $rr) {
// except for Diaspora batch jobs
// Handling the pubsubhubbub requests
proc_run(PRIORITY_HIGH,'include/pubsubpublish.php');
- $r = q("select * from deliverq where 1");
- if ($r) {
- foreach ($r as $rr) {
- logger('queue: deliverq');
- proc_run(PRIORITY_HIGH,'include/delivery.php', $rr['cmd'], $rr['item'], $rr['contact']);
- }
- }
-
$r = q("SELECT `queue`.*, `contact`.`name`, `contact`.`uid` FROM `queue`
INNER JOIN `contact` ON `queue`.`cid` = `contact`.`id`
WHERE `queue`.`created` < UTC_TIMESTAMP() - INTERVAL 3 DAY");