Merge pull request #2624 from annando/1606-contact-id
Item: New fields for author id and owner id - avatar improvement with relocation
This commit is contained in:
+35
-6
@@ -255,11 +255,20 @@ function get_contact_details_by_url($url, $uid = -1, $default = array()) {
|
||||
$profile["bd"] = (++$current_year)."-".$month."-".$day;
|
||||
} else
|
||||
$profile["bd"] = "0000-00-00";
|
||||
} else {
|
||||
} else
|
||||
$profile = $default;
|
||||
if (!isset($profile["thumb"]) AND isset($profile["photo"]))
|
||||
$profile["thumb"] = $profile["photo"];
|
||||
}
|
||||
|
||||
if (($profile["photo"] == "") AND isset($default["photo"]))
|
||||
$profile["photo"] = $default["photo"];
|
||||
|
||||
if (($profile["name"] == "") AND isset($default["name"]))
|
||||
$profile["name"] = $default["name"];
|
||||
|
||||
if (($profile["network"] == "") AND isset($default["network"]))
|
||||
$profile["network"] = $default["network"];
|
||||
|
||||
if (!isset($profile["thumb"]) AND isset($profile["photo"]))
|
||||
$profile["thumb"] = $profile["photo"];
|
||||
|
||||
if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND ($profile["gid"] != 0) AND
|
||||
in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
|
||||
@@ -451,8 +460,18 @@ function get_contact($url, $uid = 0) {
|
||||
$data = probe_url($url);
|
||||
|
||||
// Does this address belongs to a valid network?
|
||||
if (!in_array($data["network"], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA)))
|
||||
return 0;
|
||||
if (!in_array($data["network"], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA))) {
|
||||
if ($uid != 0)
|
||||
return 0;
|
||||
|
||||
// Get data from the gcontact table
|
||||
$r = q("SELECT `name`, `nick`, `url`, `photo`, `addr`, `alias`, `network` FROM `gcontact` WHERE `nurl` = '%s'",
|
||||
dbesc(normalise_link($url)));
|
||||
if (!$r)
|
||||
return 0;
|
||||
|
||||
$data = $r[0];
|
||||
}
|
||||
|
||||
$url = $data["url"];
|
||||
|
||||
@@ -490,6 +509,16 @@ function get_contact($url, $uid = 0) {
|
||||
return 0;
|
||||
|
||||
$contactid = $contact[0]["id"];
|
||||
|
||||
// Update the newly created contact from data in the gcontact table
|
||||
$r = q("SELECT `location`, `about`, `keywords`, `gender` FROM `gcontact` WHERE `nurl` = '%s'",
|
||||
dbesc(normalise_link($data["url"])));
|
||||
if ($r) {
|
||||
logger("Update contact ".$data["url"]);
|
||||
q("UPDATE `contact` SET `location` = '%s', `about` = '%s', `keywords` = '%s', `gender` = '%s' WHERE `id` = %d",
|
||||
dbesc($r["location"]), dbesc($r["about"]), dbesc($r["keywords"]),
|
||||
dbesc($r["gender"]), intval($contactid));
|
||||
}
|
||||
}
|
||||
|
||||
if ((count($contact) > 1) AND ($uid == 0) AND ($contactid != 0) AND ($url != ""))
|
||||
|
||||
+9
-2
@@ -408,6 +408,11 @@ function bb_ShareAttributes($share, $simplehtml) {
|
||||
if ($itemcache == "")
|
||||
$reldate = (($posted) ? " " . relative_date($posted) : '');
|
||||
|
||||
// We only call this so that a previously unknown contact can be added.
|
||||
// This is important for the function "get_contact_details_by_url".
|
||||
// This function then can fetch an entry from the contact table.
|
||||
get_contact($profile, 0);
|
||||
|
||||
$data = get_contact_details_by_url($profile);
|
||||
|
||||
if (isset($data["name"]) AND isset($data["addr"]))
|
||||
@@ -423,8 +428,8 @@ function bb_ShareAttributes($share, $simplehtml) {
|
||||
if (isset($data["name"]))
|
||||
$author = $data["name"];
|
||||
|
||||
if (isset($data["photo"]))
|
||||
$avatar = $data["photo"];
|
||||
if (isset($data["thumb"]))
|
||||
$avatar = $data["thumb"];
|
||||
|
||||
$preshare = trim($share[1]);
|
||||
|
||||
@@ -490,6 +495,8 @@ function bb_ShareAttributes($share, $simplehtml) {
|
||||
default:
|
||||
$text = trim($share[1])."\n";
|
||||
|
||||
$avatar = proxy_url($avatar, false, PROXY_SIZE_THUMB);
|
||||
|
||||
$tpl = get_markup_template('shared_content.tpl');
|
||||
$text .= replace_macros($tpl,
|
||||
array(
|
||||
|
||||
+54
-61
@@ -374,39 +374,27 @@ function visible_activity($item) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief List of all contact fields that are needed for the conversation function
|
||||
* @brief SQL query for items
|
||||
*/
|
||||
function contact_fieldlist() {
|
||||
function item_query() {
|
||||
|
||||
$fieldlist = "`contact`.`network`, `contact`.`url`, `contact`.`name`, `contact`.`writable`,
|
||||
`contact`.`self`, `contact`.`id` AS `cid`, `contact`.`alias`";
|
||||
|
||||
return $fieldlist;
|
||||
return "SELECT ".item_fieldlists()." FROM `item` ".
|
||||
item_joins()." WHERE ".item_condition();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief SQL condition for contacts
|
||||
* @brief List of all data fields that are needed for displaying items
|
||||
*/
|
||||
function contact_condition() {
|
||||
|
||||
$condition = "NOT `contact`.`blocked` AND NOT `contact`.`pending`";
|
||||
|
||||
return $condition;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief List of all item fields that are needed for the conversation function
|
||||
*/
|
||||
function item_fieldlist() {
|
||||
function item_fieldlists() {
|
||||
|
||||
/*
|
||||
These Fields are not added below (yet). They are here to for bug search.
|
||||
`item`.`type`,
|
||||
`item`.`object`,
|
||||
`item`.`extid`,
|
||||
`item`.`received`,
|
||||
`item`.`changed`,
|
||||
`item`.`author-avatar`,
|
||||
`item`.`object`,
|
||||
`item`.`moderated`,
|
||||
`item`.`target-type`,
|
||||
`item`.`target`,
|
||||
`item`.`resource-id`,
|
||||
@@ -414,10 +402,8 @@ These Fields are not added below (yet). They are here to for bug search.
|
||||
`item`.`attach`,
|
||||
`item`.`inform`,
|
||||
`item`.`pubmail`,
|
||||
`item`.`moderated`,
|
||||
`item`.`visible`,
|
||||
`item`.`spam`,
|
||||
`item`.`starred`,
|
||||
`item`.`bookmark`,
|
||||
`item`.`unseen`,
|
||||
`item`.`deleted`,
|
||||
@@ -430,28 +416,42 @@ These Fields are not added below (yet). They are here to for bug search.
|
||||
`item`.`shadow`,
|
||||
*/
|
||||
|
||||
$fieldlist = "`item`.`author-link`, `item`.`verb`, `item`.`id`, `item`.`parent`, `item`.`file`,
|
||||
`item`.`uid`, `item`.`author-name`, `item`.`location`, `item`.`coord`,
|
||||
`item`.`title`, `item`.`uri`, `item`.`created`, `item`.`app`, `item`.`guid`,
|
||||
`item`.`contact-id`, `item`.`thr-parent`, `item`.`parent-uri`, `item`.`rendered-hash`,
|
||||
`item`.`body`, `item`.`rendered-html`, `item`.`private`, `item`.`edited`,
|
||||
`item`.`allow_cid`, `item`.`allow_gid`, `item`.`deny_cid`, `item`.`deny_gid`,
|
||||
`item`.`event-id`, `item`.`object-type`, `item`.`starred`, `item`.`created`,
|
||||
`item`.`postopts`, `item`.`owner-link`, `item`.`owner-name`, `item`.`owner-avatar`,
|
||||
`item`.`plink`, `item`.`wall`, `item`.`commented`,
|
||||
`item`.`id` AS `item_id`, `item`.`network` AS `item_network`";
|
||||
return "`item`.`author-link`, `item`.`author-name`, `item`.`author-avatar`,
|
||||
`item`.`owner-link`, `item`.`owner-name`, `item`.`owner-avatar`,
|
||||
`item`.`contact-id`, `item`.`uid`, `item`.`id`, `item`.`parent`,
|
||||
`item`.`uri`, `item`.`thr-parent`, `item`.`parent-uri`,
|
||||
`item`.`commented`, `item`.`created`, `item`.`edited`,
|
||||
`item`.`verb`, `item`.`object-type`, `item`.`postopts`, `item`.`plink`,
|
||||
`item`.`guid`, `item`.`wall`, `item`.`private`, `item`.`starred`,
|
||||
`item`.`title`, `item`.`body`, `item`.`file`, `item`.`event-id`,
|
||||
`item`.`location`, `item`.`coord`, `item`.`app`,
|
||||
`item`.`rendered-hash`, `item`.`rendered-html`,
|
||||
`item`.`allow_cid`, `item`.`allow_gid`, `item`.`deny_cid`, `item`.`deny_gid`,
|
||||
`item`.`id` AS `item_id`, `item`.`network` AS `item_network`,
|
||||
|
||||
return $fieldlist;
|
||||
`author`.`thumb` AS `author-thumb`, `owner`.`thumb` AS `owner-thumb`,
|
||||
|
||||
`contact`.`network`, `contact`.`url`, `contact`.`name`, `contact`.`writable`,
|
||||
`contact`.`self`, `contact`.`id` AS `cid`, `contact`.`alias`";
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief SQL condition for items
|
||||
* @brief SQL join for contacts that are needed for displaying items
|
||||
*/
|
||||
function item_joins() {
|
||||
|
||||
return "STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND
|
||||
NOT `contact`.`blocked` AND NOT `contact`.`pending`
|
||||
LEFT JOIN `contact` AS `author` ON `author`.`id`=`item`.`author-id`
|
||||
LEFT JOIN `contact` AS `owner` ON `owner`.`id`=`item`.`owner-id`";
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief SQL condition for items that are needed for displaying items
|
||||
*/
|
||||
function item_condition() {
|
||||
|
||||
$condition = "`item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`";
|
||||
|
||||
return $condition;
|
||||
return "`item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`";
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -623,7 +623,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||
|
||||
$comment = '';
|
||||
$owner_url = '';
|
||||
$owner_photo = '';
|
||||
$owner_name = '';
|
||||
$sparkle = '';
|
||||
|
||||
@@ -668,18 +667,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||
$tags[] = $prefix."<a href=\"".$tag["url"]."\" target=\"_blank\">".$tag["term"]."</a>";
|
||||
}
|
||||
|
||||
/*foreach(explode(',',$item['tag']) as $tag){
|
||||
$tag = trim($tag);
|
||||
if ($tag!="") {
|
||||
$t = bbcode($tag);
|
||||
$tags[] = $t;
|
||||
if($t[0] == '#')
|
||||
$hashtags[] = $t;
|
||||
elseif($t[0] == '@')
|
||||
$mentions[] = $t;
|
||||
}
|
||||
}*/
|
||||
|
||||
$sp = false;
|
||||
$profile_link = best_link_url($item,$sp);
|
||||
if($profile_link === 'mailbox')
|
||||
@@ -689,12 +676,21 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||
else
|
||||
$profile_link = zrl($profile_link);
|
||||
|
||||
// Don't rely on the author-avatar. It is better to use the data from the contact table
|
||||
$author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
|
||||
if ($author_contact["thumb"])
|
||||
$profile_avatar = $author_contact["thumb"];
|
||||
else
|
||||
$profile_avatar = $item['author-avatar'];
|
||||
if (!isset($item['author-thumb'])) {
|
||||
$author_contact = get_contact_details_by_url($item['author-link'], $profile_owner);
|
||||
if ($author_contact["thumb"])
|
||||
$item['author-thumb'] = $author_contact["thumb"];
|
||||
else
|
||||
$item['author-thumb'] = $item['author-avatar'];
|
||||
}
|
||||
|
||||
if (!isset($item['owner-thumb'])) {
|
||||
$owner_contact = get_contact_details_by_url($item['owner-link'], $profile_owner);
|
||||
if ($owner_contact["thumb"])
|
||||
$item['owner-thumb'] = $owner_contact["thumb"];
|
||||
else
|
||||
$item['owner-thumb'] = $item['owner-avatar'];
|
||||
}
|
||||
|
||||
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
|
||||
call_hooks('render_location',$locate);
|
||||
@@ -762,7 +758,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||
'name' => $profile_name_e,
|
||||
'sparkle' => $sparkle,
|
||||
'lock' => $lock,
|
||||
'thumb' => App::remove_baseurl(proxy_url($profile_avatar, false, PROXY_SIZE_THUMB)),
|
||||
'thumb' => App::remove_baseurl(proxy_url($item['author-thumb'], false, PROXY_SIZE_THUMB)),
|
||||
'title' => $item['title_e'],
|
||||
'body' => $body_e,
|
||||
'tags' => $tags_e,
|
||||
@@ -781,7 +777,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||
'indent' => '',
|
||||
'owner_name' => $owner_name_e,
|
||||
'owner_url' => $owner_url,
|
||||
'owner_photo' => proxy_url($owner_photo, false, PROXY_SIZE_THUMB),
|
||||
'owner_photo' => App::remove_baseurl(proxy_url($item['owner-thumb'], false, PROXY_SIZE_THUMB)),
|
||||
'plink' => get_plink($item),
|
||||
'edpost' => false,
|
||||
'isstarred' => $isstarred,
|
||||
@@ -885,8 +881,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
||||
|
||||
function best_link_url($item,&$sparkle,$ssl_state = false) {
|
||||
|
||||
$a = get_app();
|
||||
|
||||
$best_url = '';
|
||||
$sparkle = false;
|
||||
|
||||
@@ -913,7 +907,6 @@ function best_link_url($item,&$sparkle,$ssl_state = false) {
|
||||
|
||||
if(! function_exists('item_photo_menu')){
|
||||
function item_photo_menu($item){
|
||||
$a = get_app();
|
||||
|
||||
$ssl_state = false;
|
||||
|
||||
|
||||
@@ -792,9 +792,11 @@ function db_definition() {
|
||||
"commented" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
|
||||
"received" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
|
||||
"changed" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
|
||||
"owner-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"),
|
||||
"owner-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
|
||||
"owner-link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
|
||||
"owner-avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
|
||||
"author-id" => array("type" => "int(11)", "not null" => "1", "default" => "0"),
|
||||
"author-name" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
|
||||
"author-link" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
|
||||
"author-avatar" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
|
||||
@@ -1296,6 +1298,8 @@ function db_definition() {
|
||||
"uid" => array("type" => "int(10) unsigned", "not null" => "1", "default" => "0"),
|
||||
"contact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
|
||||
"gcontact-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
|
||||
"owner-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
|
||||
"author-id" => array("type" => "int(11) unsigned", "not null" => "1", "default" => "0"),
|
||||
"created" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
|
||||
"edited" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
|
||||
"commented" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"),
|
||||
|
||||
+23
-14
@@ -369,6 +369,7 @@ class dfrn {
|
||||
xml::add_element($doc, $relocate, "dfrn:url", $owner['url']);
|
||||
xml::add_element($doc, $relocate, "dfrn:name", $owner['name']);
|
||||
xml::add_element($doc, $relocate, "dfrn:addr", $owner['addr']);
|
||||
xml::add_element($doc, $relocate, "dfrn:avatar", $owner['avatar']);
|
||||
xml::add_element($doc, $relocate, "dfrn:photo", $photos[4]);
|
||||
xml::add_element($doc, $relocate, "dfrn:thumb", $photos[5]);
|
||||
xml::add_element($doc, $relocate, "dfrn:micro", $photos[6]);
|
||||
@@ -1548,6 +1549,7 @@ class dfrn {
|
||||
$relocate["url"] = $xpath->query("dfrn:url/text()", $relocation)->item(0)->nodeValue;
|
||||
$relocate["addr"] = $xpath->query("dfrn:addr/text()", $relocation)->item(0)->nodeValue;
|
||||
$relocate["name"] = $xpath->query("dfrn:name/text()", $relocation)->item(0)->nodeValue;
|
||||
$relocate["avatar"] = $xpath->query("dfrn:avatar/text()", $relocation)->item(0)->nodeValue;
|
||||
$relocate["photo"] = $xpath->query("dfrn:photo/text()", $relocation)->item(0)->nodeValue;
|
||||
$relocate["thumb"] = $xpath->query("dfrn:thumb/text()", $relocation)->item(0)->nodeValue;
|
||||
$relocate["micro"] = $xpath->query("dfrn:micro/text()", $relocation)->item(0)->nodeValue;
|
||||
@@ -1557,6 +1559,9 @@ class dfrn {
|
||||
$relocate["poll"] = $xpath->query("dfrn:poll/text()", $relocation)->item(0)->nodeValue;
|
||||
$relocate["sitepubkey"] = $xpath->query("dfrn:sitepubkey/text()", $relocation)->item(0)->nodeValue;
|
||||
|
||||
if (($relocate["avatar"] == "") AND ($relocate["photo"] != ""))
|
||||
$relocate["avatar"] = $relocate["photo"];
|
||||
|
||||
if ($relocate["addr"] == "")
|
||||
$relocate["addr"] = preg_replace("=(https?://)(.*)/profile/(.*)=ism", "$3@$2", $relocate["url"]);
|
||||
|
||||
@@ -1583,7 +1588,7 @@ class dfrn {
|
||||
`server_url` = '%s'
|
||||
WHERE `nurl` = '%s';",
|
||||
dbesc($relocate["name"]),
|
||||
dbesc($relocate["photo"]),
|
||||
dbesc($relocate["avatar"]),
|
||||
dbesc($relocate["url"]),
|
||||
dbesc(normalise_link($relocate["url"])),
|
||||
dbesc($relocate["addr"]),
|
||||
@@ -1595,9 +1600,7 @@ class dfrn {
|
||||
// Update the contact table. We try to find every entry.
|
||||
$x = q("UPDATE `contact` SET
|
||||
`name` = '%s',
|
||||
`photo` = '%s',
|
||||
`thumb` = '%s',
|
||||
`micro` = '%s',
|
||||
`avatar` = '%s',
|
||||
`url` = '%s',
|
||||
`nurl` = '%s',
|
||||
`addr` = '%s',
|
||||
@@ -1608,9 +1611,7 @@ class dfrn {
|
||||
`site-pubkey` = '%s'
|
||||
WHERE (`id` = %d AND `uid` = %d) OR (`nurl` = '%s');",
|
||||
dbesc($relocate["name"]),
|
||||
dbesc($relocate["photo"]),
|
||||
dbesc($relocate["thumb"]),
|
||||
dbesc($relocate["micro"]),
|
||||
dbesc($relocate["avatar"]),
|
||||
dbesc($relocate["url"]),
|
||||
dbesc(normalise_link($relocate["url"])),
|
||||
dbesc($relocate["addr"]),
|
||||
@@ -1623,6 +1624,8 @@ class dfrn {
|
||||
intval($importer["importer_uid"]),
|
||||
dbesc(normalise_link($old["url"])));
|
||||
|
||||
update_contact_avatar($relocate["avatar"], $importer["importer_uid"], $importer["id"], true);
|
||||
|
||||
if ($x === false)
|
||||
return false;
|
||||
|
||||
@@ -1631,17 +1634,23 @@ class dfrn {
|
||||
$fields = array(
|
||||
'owner-link' => array($old["url"], $relocate["url"]),
|
||||
'author-link' => array($old["url"], $relocate["url"]),
|
||||
'owner-avatar' => array($old["photo"], $relocate["photo"]),
|
||||
'author-avatar' => array($old["photo"], $relocate["photo"]),
|
||||
//'owner-avatar' => array($old["photo"], $relocate["photo"]),
|
||||
//'author-avatar' => array($old["photo"], $relocate["photo"]),
|
||||
);
|
||||
foreach ($fields as $n=>$f){
|
||||
$x = q("UPDATE `item` SET `%s` = '%s' WHERE `%s` = '%s' AND `uid` = %d",
|
||||
$n, dbesc($f[1]),
|
||||
foreach ($fields as $n=>$f) {
|
||||
$r = q("SELECT `id` FROM `item` WHERE `%s` = '%s' AND `uid` = %d LIMIT 1",
|
||||
$n, dbesc($f[0]),
|
||||
intval($importer["importer_uid"]));
|
||||
if ($x === false)
|
||||
return false;
|
||||
|
||||
if ($r) {
|
||||
$x = q("UPDATE `item` SET `%s` = '%s' WHERE `%s` = '%s' AND `uid` = %d",
|
||||
$n, dbesc($f[1]),
|
||||
$n, dbesc($f[0]),
|
||||
intval($importer["importer_uid"]));
|
||||
if ($x === false)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// @TODO
|
||||
/// merge with current record, current contents have priority
|
||||
|
||||
@@ -584,6 +584,12 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
|
||||
"photo" => $arr['author-avatar'], "name" => $arr['author-name']));
|
||||
}
|
||||
|
||||
if ($arr["author-id"] == 0)
|
||||
$arr["author-id"] = get_contact($arr["author-link"], 0);
|
||||
|
||||
if ($arr["owner-id"] == 0)
|
||||
$arr["owner-id"] = get_contact($arr["owner-link"], 0);
|
||||
|
||||
if ($arr['guid'] != "") {
|
||||
// Checking if there is already an item with the same guid
|
||||
logger('checking for an item for user '.$arr['uid'].' on network '.$arr['network'].' with the guid '.$arr['guid'], LOGGER_DEBUG);
|
||||
|
||||
+4
-2
@@ -1,7 +1,9 @@
|
||||
<?php
|
||||
function add_thread($itemid, $onlyshadow = false) {
|
||||
$items = q("SELECT `uid`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`, `moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`, `gcontact-id`,
|
||||
`deleted`, `origin`, `forum_mode`, `mention`, `network` FROM `item` WHERE `id` = %d AND (`parent` = %d OR `parent` = 0) LIMIT 1", intval($itemid), intval($itemid));
|
||||
$items = q("SELECT `uid`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`,
|
||||
`moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`, `gcontact-id`,
|
||||
`deleted`, `origin`, `forum_mode`, `mention`, `network`, `author-id`, `owner-id`
|
||||
FROM `item` WHERE `id` = %d AND (`parent` = %d OR `parent` = 0) LIMIT 1", intval($itemid), intval($itemid));
|
||||
|
||||
if (!$items)
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user