}
// if this isn't the real parent of the conversation, find it
- if($r !== false && count($r)) {
+ if(dbm::is_result($r)) {
$parid = $r[0]['parent'];
$parent_uri = $r[0]['uri'];
if($r[0]['id'] != $r[0]['parent']) {
}
}
- if(($r === false) || (! count($r))) {
+ if(! dbm::is_result($r)) {
notice( t('Unable to locate original post.') . EOL);
if(x($_REQUEST,'return'))
goaway($return_path);
$r = q("SELECT * FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
dbesc(normalise_link($thrparent[0]["author-link"])));
- if (count($r)) {
+ if (dbm::is_result($r)) {
$parent_contact = $r[0];
$parent_contact["thumb"] = $parent_contact["photo"];
$parent_contact["micro"] = $parent_contact["photo"];
$profile_uid = ((x($_REQUEST,'profile_uid')) ? intval($_REQUEST['profile_uid']) : 0);
$post_id = ((x($_REQUEST,'post_id')) ? intval($_REQUEST['post_id']) : 0);
$app = ((x($_REQUEST,'source')) ? strip_tags($_REQUEST['source']) : '');
- $extid = ((x($_REQUEST,'extid')) ? strip_tags($_REQUEST['extid']) : '');
+ $extid = ((x($_REQUEST,'extid')) ? strip_tags($_REQUEST['extid']) : '');
+ $object = ((x($_REQUEST,'object')) ? $_REQUEST['object'] : '');
// Check for multiple posts with the same message id (when the post was created via API)
if (($message_id != '') AND ($profile_uid != 0)) {
$r = q("SELECT * FROM `mailacct` WHERE `uid` = %d AND `server` != '' LIMIT 1",
intval(local_user())
);
- if(count($r) && intval($r[0]['pubmail']))
+ if(dbm::is_result($r) && intval($r[0]['pubmail']))
$pubmail_enabled = true;
}
}
intval($profile_uid)
);
- if(! count($r))
+ if(! dbm::is_result($r))
continue;
$r = q("UPDATE `photo` SET `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s'
$datarray['moderated'] = $allow_moderated;
$datarray['gcontact-id'] = get_gcontact_id(array("url" => $datarray['author-link'], "network" => $datarray['network'],
"photo" => $datarray['author-avatar'], "name" => $datarray['author-name']));
+ $datarray['object'] = $object;
/**
* These fields are for the convenience of plugins...
if($preview) {
require_once('include/conversation.php');
+ // We set the datarray ID to -1 because in preview mode the dataray
+ // doesn't have an ID.
+ $datarray["id"] = -1;
$o = conversation($a,array(array_merge($contact_record,$datarray)),'search', false, true);
logger('preview: ' . $o);
echo json_encode(array('preview' => $o));
`tag`, `inform`, `verb`, `object-type`, `postopts`,
`allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`,
`pubmail`, `attach`, `bookmark`,`origin`, `moderated`, `file`,
- `rendered-html`, `rendered-hash`,
+ `rendered-html`, `rendered-hash`, `gcontact-id`, `object`,
`parent`, `parent-uri`, `plink`, `last-child`, `visible`)
VALUES('%s', '%s', %d, '%s', %d, %d, '%s', %d,
'%s', '%s', '%s', %d,
'%s', '%s', '%s', '%s', '%s',
'%s', '%s', '%s', '%s', %d,
%d, '%s', %d, %d, %d, '%s',
- '%s', '%s',
+ '%s', '%s', %d, '%s',
%d, '%s', '%s', %d, %d)",
dbesc($datarray['guid']),
dbesc($datarray['extid']),
dbesc($datarray['file']),
dbesc($datarray['rendered-html']),
dbesc($datarray['rendered-hash']),
+ intval($datarray['gcontact-id']),
+ dbesc($datarray['object']),
intval($datarray['parent']),
dbesc($datarray['parent-uri']),
dbesc($datarray['plink']),
create_tags_from_item($post_id);
create_files_from_item($post_id);
- // Insert an item entry for UID=0 for global entries
- if ($post_id != $parent) {
- add_shadow_thread($post_id);
- } else {
- add_shadow_entry($post_id);
- }
-
- // This is a real juggling act on shared hosting services which kill your processes
- // e.g. dreamhost. We used to start delivery to our native delivery agents in the background
- // and then run our plugin delivery from the foreground. We're now doing plugin delivery first,
- // because as soon as you start loading up a bunch of remote delivey processes, *this* page is
- // likely to get killed off. If you end up looking at an /item URL and a blank page,
- // it's very likely the delivery got killed before all your friends could be notified.
- // Currently the only realistic fixes are to use a reliable server - which precludes shared hosting,
- // or cut back on plugins which do remote deliveries.
+ // Insert an item entry for UID=0 for global entries.
+ // We now do it in the background to save some time.
+ // This is important in interactive environments like the frontend or the API.
+ // We don't fork a new process since this is done anyway with the following command
+ proc_run(array('priority' => PRIORITY_HIGH, 'dont_fork' => true), "include/create_shadowentry.php", $post_id);
+ // Call the background process that is delivering the item to the receivers
proc_run(PRIORITY_HIGH, "include/notifier.php", $notify_type, $post_id);
logger('post_complete');