-- --------------------------------------------------------
+--
+-- Table structure for table `dsprphotoq`
+--
+
+CREATE TABLE `dsprphotoq` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL,
+ `msg` mediumtext NOT NULL,
+ `attempt` tinyint(4) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
--
-- Table structure for table `event`
--
return;
}
- $r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN ( SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s' ) AND `account_expired` = 0 AND `account_removed` = 0 ",
+ $r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN
+ ( SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s' )
+ AND `account_expired` = 0 AND `account_removed` = 0 ",
dbesc(NETWORK_DIASPORA),
dbesc($msg['author'])
);
-function diaspora_dispatch($importer,$msg) {
+function diaspora_dispatch($importer,$msg,$attempt=1) {
$ret = 0;
$ret = diaspora_signed_retraction($importer,$xmlbase->relayable_retraction,$msg);
}
elseif($xmlbase->photo) {
- $ret = diaspora_photo($importer,$xmlbase->photo,$msg);
+ $ret = diaspora_photo($importer,$xmlbase->photo,$msg,$attempt);
}
elseif($xmlbase->conversation) {
$ret = diaspora_conversation($importer,$xmlbase->conversation,$msg);
}
-function diaspora_photo($importer,$xml,$msg) {
+function diaspora_photo($importer,$xml,$msg,$attempt=1) {
$a = get_app();
dbesc($status_message_guid)
);
if(! count($r)) {
- logger('diaspora_photo: parent item not found: parent: ' . $parent_guid . ' item: ' . $guid);
+ if($attempt <= 3) {
+ q("INSERT INTO dsprphotoq (uid, msg, attempt) VALUES (%d, '%s', %d)",
+ intval($importer['uid']),
+ dbesc(serialize($msg)),
+ intval($attempt + 1)
+ );
+ }
+ logger('diaspora_photo: attempt = ' . $attempt . '; status message not found: ' . $status_message_guid . ' for photo: ' . $guid);
return;
}
$images = array();
$title = $item['title'];
- $body = $item['body'];
+ $body = fix_private_photos($item['body'], $owner['uid'], $item, $contact['id']);
/*
// We're trying to match Diaspora's split message/photo protocol but
// $theiraddr = $contact['addr'];
// Diaspora doesn't support threaded comments
- /*if($item['thr-parent']) {
+ if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) {
$p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1",
dbesc($item['thr-parent'])
);
}
- else {*/
+ else {
// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
// The only item with `parent` and `id` as the parent id is the parent item.
intval($item['parent']),
intval($item['parent'])
);
- //}
+ }
if(count($p))
$parent = $p[0];
else
$text = html_entity_decode(bb2diaspora($body));
// Diaspora doesn't support threaded comments
- /*if($item['thr-parent']) {
+ if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) {
$p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1",
dbesc($item['thr-parent'])
);
}
- else {*/
+ else {
// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
// The only item with `parent` and `id` as the parent id is the parent item.
intval($item['parent']),
intval($item['parent'])
);
- //}
+ }
if(count($p))
$parent = $p[0];
else
--- /dev/null
+<?php
+require_once("boot.php");
+require_once('include/diaspora.php');
+
+function dsprphotoq_run($argv, $argc){
+ global $a, $db;
+
+ if(is_null($a)){
+ $a = new App;
+ }
+
+ if(is_null($db)){
+ @include(".htconfig.php");
+ require_once("include/dba.php");
+ $db = new dba($db_host, $db_user, $db_pass, $db_data);
+ unset($db_host, $db_user, $db_pass, $db_data);
+ };
+
+ logger("diaspora photo queue: running", LOGGER_DEBUG);
+
+ $r = q("SELECT * FROM dsprphotoq");
+ if(!$r)
+ return;
+
+ $dphotos = $r;
+
+ logger("diaspora photo queue: processing " . count($dphotos) . " photos");
+
+ foreach($dphotos as $dphoto) {
+
+ $r = q("SELECT * FROM user WHERE uid = %d",
+ intval($dphoto['uid'])
+ );
+ if(!$r) {
+ logger("diaspora photo queue: user " . $dphoto['uid'] . " not found");
+ return;
+ }
+
+ $ret = diaspora_dispatch($r[0],unserialize($dphoto['msg']),$dphoto['attempt']);
+ q("DELETE FROM dsprphotoq WHERE id = %d",
+ intval($dphoto['id'])
+ );
+ }
+}
+
+
+if (array_search(__file__,get_included_files())===0){
+ dsprphotoq_run($argv,$argc);
+ killme();
+}
<?php
-define( 'UPDATE_VERSION' , 1157 );
+define( 'UPDATE_VERSION' , 1158 );
/**
*
if(!$r) return UPDATE_FAILED;
return UPDATE_SUCCESS;
}
+
+function update_1157() {
+ $r = q("CREATE TABLE IF NOT EXISTS `dsprphotoq` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL,
+ `msg` mediumtext NOT NULL,
+ `attempt` tinyint(4) NOT NULL,
+ PRIMARY KEY (`id`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8"
+ );
+
+ if($r)
+ return UPDATE_SUCCESS;
+
+ return UPDATE_FAILED;
+}
+