Merge pull request #5238 from annando/more-abstraction
Even more replaced item calls ...
This commit is contained in:
+36
-136
@@ -688,59 +688,8 @@ function api_get_user(App $a, $contact_id = null)
|
||||
|
||||
$usr = dba::selectFirst('user', ['default-location'], ['uid' => api_user()]);
|
||||
$profile = dba::selectFirst('profile', ['about'], ['uid' => api_user(), 'is-default' => true]);
|
||||
|
||||
/// @TODO old-lost code? (twice)
|
||||
// Counting is deactivated by now, due to performance issues
|
||||
// count public wall messages
|
||||
//$r = q("SELECT COUNT(*) as `count` FROM `item` WHERE `uid` = %d AND `wall`",
|
||||
// intval($uinfo[0]['uid'])
|
||||
//);
|
||||
//$countitms = $r[0]['count'];
|
||||
$countitms = 0;
|
||||
} else {
|
||||
// Counting is deactivated by now, due to performance issues
|
||||
//$r = q("SELECT count(*) as `count` FROM `item`
|
||||
// WHERE `contact-id` = %d",
|
||||
// intval($uinfo[0]['id'])
|
||||
//);
|
||||
//$countitms = $r[0]['count'];
|
||||
$countitms = 0;
|
||||
}
|
||||
|
||||
/// @TODO old-lost code? (twice)
|
||||
/*
|
||||
// Counting is deactivated by now, due to performance issues
|
||||
// count friends
|
||||
$r = q("SELECT count(*) as `count` FROM `contact`
|
||||
WHERE `uid` = %d AND `rel` IN ( %d, %d )
|
||||
AND `self`=0 AND NOT `blocked` AND NOT `pending` AND `hidden`=0",
|
||||
intval($uinfo[0]['uid']),
|
||||
intval(CONTACT_IS_SHARING),
|
||||
intval(CONTACT_IS_FRIEND)
|
||||
);
|
||||
$countfriends = $r[0]['count'];
|
||||
|
||||
$r = q("SELECT count(*) as `count` FROM `contact`
|
||||
WHERE `uid` = %d AND `rel` IN ( %d, %d )
|
||||
AND `self`=0 AND NOT `blocked` AND NOT `pending` AND `hidden`=0",
|
||||
intval($uinfo[0]['uid']),
|
||||
intval(CONTACT_IS_FOLLOWER),
|
||||
intval(CONTACT_IS_FRIEND)
|
||||
);
|
||||
$countfollowers = $r[0]['count'];
|
||||
|
||||
$r = q("SELECT count(*) as `count` FROM item where starred = 1 and uid = %d and deleted = 0",
|
||||
intval($uinfo[0]['uid'])
|
||||
);
|
||||
$starred = $r[0]['count'];
|
||||
|
||||
|
||||
if (! $uinfo[0]['self']) {
|
||||
$countfriends = 0;
|
||||
$countfollowers = 0;
|
||||
$starred = 0;
|
||||
}
|
||||
*/
|
||||
$countitems = 0;
|
||||
$countfriends = 0;
|
||||
$countfollowers = 0;
|
||||
$starred = 0;
|
||||
@@ -790,7 +739,7 @@ function api_get_user(App $a, $contact_id = null)
|
||||
'time_zone' => 'UTC',
|
||||
'geo_enabled' => false,
|
||||
'verified' => true,
|
||||
'statuses_count' => intval($countitms),
|
||||
'statuses_count' => intval($countitems),
|
||||
'lang' => '',
|
||||
'contributors_enabled' => false,
|
||||
'is_translator' => false,
|
||||
@@ -1173,18 +1122,8 @@ function api_statuses_update($type)
|
||||
if ($throttle_day > 0) {
|
||||
$datefrom = date(DateTimeFormat::MYSQL, time() - 24*60*60);
|
||||
|
||||
$r = q(
|
||||
"SELECT COUNT(*) AS `posts_day` FROM `item` WHERE `uid`=%d AND `wall`
|
||||
AND `created` > '%s' AND `id` = `parent`",
|
||||
intval(api_user()),
|
||||
dbesc($datefrom)
|
||||
);
|
||||
|
||||
if (DBM::is_result($r)) {
|
||||
$posts_day = $r[0]["posts_day"];
|
||||
} else {
|
||||
$posts_day = 0;
|
||||
}
|
||||
$condition = ["`uid` = ? AND `wall` AND `created` > ? AND `id` = `parent`", api_user(), $datefrom];
|
||||
$posts_day = dba::count('item', $condition);
|
||||
|
||||
if ($posts_day > $throttle_day) {
|
||||
logger('Daily posting limit reached for user '.api_user(), LOGGER_DEBUG);
|
||||
@@ -1197,18 +1136,8 @@ function api_statuses_update($type)
|
||||
if ($throttle_week > 0) {
|
||||
$datefrom = date(DateTimeFormat::MYSQL, time() - 24*60*60*7);
|
||||
|
||||
$r = q(
|
||||
"SELECT COUNT(*) AS `posts_week` FROM `item` WHERE `uid`=%d AND `wall`
|
||||
AND `created` > '%s' AND `id` = `parent`",
|
||||
intval(api_user()),
|
||||
dbesc($datefrom)
|
||||
);
|
||||
|
||||
if (DBM::is_result($r)) {
|
||||
$posts_week = $r[0]["posts_week"];
|
||||
} else {
|
||||
$posts_week = 0;
|
||||
}
|
||||
$condition = ["`uid` = ? AND `wall` AND `created` > ? AND `id` = `parent`", api_user(), $datefrom];
|
||||
$posts_week = dba::count('item', $condition);
|
||||
|
||||
if ($posts_week > $throttle_week) {
|
||||
logger('Weekly posting limit reached for user '.api_user(), LOGGER_DEBUG);
|
||||
@@ -1221,18 +1150,8 @@ function api_statuses_update($type)
|
||||
if ($throttle_month > 0) {
|
||||
$datefrom = date(DateTimeFormat::MYSQL, time() - 24*60*60*30);
|
||||
|
||||
$r = q(
|
||||
"SELECT COUNT(*) AS `posts_month` FROM `item` WHERE `uid`=%d AND `wall`
|
||||
AND `created` > '%s' AND `id` = `parent`",
|
||||
intval(api_user()),
|
||||
dbesc($datefrom)
|
||||
);
|
||||
|
||||
if (DBM::is_result($r)) {
|
||||
$posts_month = $r[0]["posts_month"];
|
||||
} else {
|
||||
$posts_month = 0;
|
||||
}
|
||||
$condition = ["`uid` = ? AND `wall` AND `created` > ? AND `id` = `parent`", api_user(), $datefrom];
|
||||
$posts_month = dba::count('item', $condition);
|
||||
|
||||
if ($posts_month > $throttle_month) {
|
||||
logger('Monthly posting limit reached for user '.api_user(), LOGGER_DEBUG);
|
||||
@@ -2806,20 +2725,16 @@ function api_format_items_activities(&$item, $type = "json")
|
||||
'attendmaybe' => [],
|
||||
];
|
||||
|
||||
$items = q(
|
||||
'SELECT * FROM `item`
|
||||
WHERE `uid` = %d AND `thr-parent` = "%s" AND `visible` AND NOT `deleted`',
|
||||
intval($item['uid']),
|
||||
dbesc($item['uri'])
|
||||
);
|
||||
$condition = ['uid' => $item['uid'], 'thr-parent' => $item['uri']];
|
||||
$ret = Item::selectForUser($item['uid'], ['author-id', 'verb'], $condition);
|
||||
|
||||
foreach ($items as $i) {
|
||||
while ($item = dba::fetch($ret)) {
|
||||
// not used as result should be structured like other user data
|
||||
//builtin_activity_puller($i, $activities);
|
||||
|
||||
// get user data and add it to the array of the activity
|
||||
$user = api_get_user($a, $i['author-id']);
|
||||
switch ($i['verb']) {
|
||||
$user = api_get_user($a, $item['author-id']);
|
||||
switch ($item['verb']) {
|
||||
case ACTIVITY_LIKE:
|
||||
$activities['like'][] = $user;
|
||||
break;
|
||||
@@ -2840,6 +2755,8 @@ function api_format_items_activities(&$item, $type = "json")
|
||||
}
|
||||
}
|
||||
|
||||
dba::close($ret);
|
||||
|
||||
if ($type == "xml") {
|
||||
$xml_activities = [];
|
||||
foreach ($activities as $k => $v) {
|
||||
@@ -3924,16 +3841,13 @@ function api_fr_photoalbum_delete($type)
|
||||
// function for setting the items to "deleted = 1" which ensures that comments, likes etc. are not shown anymore
|
||||
// to the user and the contacts of the users (drop_items() performs the federation of the deletion to other networks
|
||||
foreach ($r as $rr) {
|
||||
$photo_item = q(
|
||||
"SELECT `id` FROM `item` WHERE `uid` = %d AND `resource-id` = '%s' AND `type` = 'photo'",
|
||||
intval(local_user()),
|
||||
dbesc($rr['resource-id'])
|
||||
);
|
||||
$condition = ['uid' => local_user(), 'resource-id' => $rr['resource-id'], 'type' => 'photo'];
|
||||
$photo_item = Item::selectFirstForUser(local_user(), ['id'], $condition);
|
||||
|
||||
if (!DBM::is_result($photo_item)) {
|
||||
throw new InternalServerErrorException("problem with deleting items occured");
|
||||
}
|
||||
Item::deleteForUser(['id' => $photo_item[0]['id']], api_user());
|
||||
Item::deleteForUser(['id' => $photo_item['id']], api_user());
|
||||
}
|
||||
|
||||
// now let's delete all photos from the album
|
||||
@@ -4214,18 +4128,15 @@ function api_fr_photo_delete($type)
|
||||
// return success of deletion or error message
|
||||
if ($result) {
|
||||
// retrieve the id of the parent element (the photo element)
|
||||
$photo_item = q(
|
||||
"SELECT `id` FROM `item` WHERE `uid` = %d AND `resource-id` = '%s' AND `type` = 'photo'",
|
||||
intval(local_user()),
|
||||
dbesc($photo_id)
|
||||
);
|
||||
$condition = ['uid' => local_user(), 'resource-id' => $photo_id, 'type' => 'photo'];
|
||||
$photo_item = Item::selectFirstForUser(local_user(), ['id'], $condition);
|
||||
|
||||
if (!DBM::is_result($photo_item)) {
|
||||
throw new InternalServerErrorException("problem with deleting items occured");
|
||||
}
|
||||
// function for setting the items to "deleted = 1" which ensures that comments, likes etc. are not shown anymore
|
||||
// to the user and the contacts of the users (drop_items() do all the necessary magic to avoid orphans in database and federate deletion)
|
||||
Item::deleteForUser(['id' => $photo_item[0]['id']], api_user());
|
||||
Item::deleteForUser(['id' => $photo_item['id']], api_user());
|
||||
|
||||
$answer = ['result' => 'deleted', 'message' => 'photo with id `' . $photo_id . '` has been deleted from server.'];
|
||||
return api_format_data("photo_delete", $type, ['$result' => $answer]);
|
||||
@@ -4713,12 +4624,10 @@ function prepare_photo_data($type, $scale, $photo_id)
|
||||
}
|
||||
|
||||
// retrieve item element for getting activities (like, dislike etc.) related to photo
|
||||
$item = q(
|
||||
"SELECT * FROM `item` WHERE `uid` = %d AND `resource-id` = '%s' AND `type` = 'photo'",
|
||||
intval(local_user()),
|
||||
dbesc($photo_id)
|
||||
);
|
||||
$data['photo']['friendica_activities'] = api_format_items_activities($item[0], $type);
|
||||
$condition = ['uid' => local_user(), 'resource-id' => $photo_id, 'type' => 'photo'];
|
||||
$item = Item::selectFirstForUser(local_user(), ['id'], $condition);
|
||||
|
||||
$data['photo']['friendica_activities'] = api_format_items_activities($item, $type);
|
||||
|
||||
// retrieve comments on photo
|
||||
$condition = ["`parent` = ? AND `uid` = ? AND (`verb` = ? OR `type`='photo')",
|
||||
@@ -5013,35 +4922,26 @@ function api_in_reply_to($item)
|
||||
$in_reply_to['screen_name'] = null;
|
||||
|
||||
if (($item['thr-parent'] != $item['uri']) && (intval($item['parent']) != intval($item['id']))) {
|
||||
$r = q(
|
||||
"SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
|
||||
intval($item['uid']),
|
||||
dbesc($item['thr-parent'])
|
||||
);
|
||||
|
||||
if (DBM::is_result($r)) {
|
||||
$in_reply_to['status_id'] = intval($r[0]['id']);
|
||||
$parent = Item::selectFirst(['id'], ['uid' => $item['uid'], 'uri' => $item['thr-parent']]);
|
||||
if (DBM::is_result($parent)) {
|
||||
$in_reply_to['status_id'] = intval($parent['id']);
|
||||
} else {
|
||||
$in_reply_to['status_id'] = intval($item['parent']);
|
||||
}
|
||||
|
||||
$in_reply_to['status_id_str'] = (string) intval($in_reply_to['status_id']);
|
||||
|
||||
$r = q(
|
||||
"SELECT `contact`.`nick`, `contact`.`name`, `contact`.`id`, `contact`.`url` FROM `item`
|
||||
STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`author-id`
|
||||
WHERE `item`.`id` = %d LIMIT 1",
|
||||
intval($in_reply_to['status_id'])
|
||||
);
|
||||
$fields = ['author-nick', 'author-name', 'author-id', 'author-link'];
|
||||
$parent = Item::selectFirst($fields, ['id' => $in_reply_to['status_id']]);
|
||||
|
||||
if (DBM::is_result($r)) {
|
||||
if ($r[0]['nick'] == "") {
|
||||
$r[0]['nick'] = api_get_nick($r[0]["url"]);
|
||||
if (DBM::is_result($parent)) {
|
||||
if ($parent['author-nick'] == "") {
|
||||
$parent['author-nick'] = api_get_nick($parent['author-link']);
|
||||
}
|
||||
|
||||
$in_reply_to['screen_name'] = (($r[0]['nick']) ? $r[0]['nick'] : $r[0]['name']);
|
||||
$in_reply_to['user_id'] = intval($r[0]['id']);
|
||||
$in_reply_to['user_id_str'] = (string) intval($r[0]['id']);
|
||||
$in_reply_to['screen_name'] = (($parent['author-nick']) ? $parent['author-nick'] : $parent['author-name']);
|
||||
$in_reply_to['user_id'] = intval($parent['author-id']);
|
||||
$in_reply_to['user_id_str'] = (string) intval($parent['author-id']);
|
||||
}
|
||||
|
||||
// There seems to be situation, where both fields are identical:
|
||||
|
||||
@@ -633,16 +633,12 @@ function conversation(App $a, $items, $mode, $update, $preview = false, $order =
|
||||
$location_e = $location;
|
||||
$owner_name_e = $owner_name;
|
||||
|
||||
if ($item['item_network'] == "") {
|
||||
$item['item_network'] = $item['network'];
|
||||
}
|
||||
|
||||
$tmp_item = [
|
||||
'template' => $tpl,
|
||||
'id' => (($preview) ? 'P0' : $item['item_id']),
|
||||
'guid' => (($preview) ? 'Q0' : $item['guid']),
|
||||
'network' => $item['item_network'],
|
||||
'network_name' => ContactSelector::networkToName($item['item_network'], $profile_link),
|
||||
'network' => $item['network'],
|
||||
'network_name' => ContactSelector::networkToName($item['network'], $profile_link),
|
||||
'linktitle' => L10n::t('View %s\'s profile @ %s', $profile_name, $item['author-link']),
|
||||
'profile_url' => $profile_link,
|
||||
'item_photo_menu' => item_photo_menu($item),
|
||||
@@ -688,7 +684,7 @@ function conversation(App $a, $items, $mode, $update, $preview = false, $order =
|
||||
Addon::callHooks('display_item', $arr);
|
||||
|
||||
$threads[$threadsid]['id'] = $item['item_id'];
|
||||
$threads[$threadsid]['network'] = $item['item_network'];
|
||||
$threads[$threadsid]['network'] = $item['network'];
|
||||
$threads[$threadsid]['items'] = [$arr['output']];
|
||||
|
||||
}
|
||||
|
||||
+3
-7
@@ -335,17 +335,14 @@ function drop_item($id) {
|
||||
|
||||
// locate item to be deleted
|
||||
|
||||
$r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1",
|
||||
intval($id)
|
||||
);
|
||||
$fields = ['id', 'uid', 'contact-id', 'deleted'];
|
||||
$item = Item::selectFirstForUser(local_user(), $fields, ['id' => $id]);
|
||||
|
||||
if (!DBM::is_result($r)) {
|
||||
if (!DBM::is_result($item)) {
|
||||
notice(L10n::t('Item not found.') . EOL);
|
||||
goaway(System::baseUrl() . '/' . $_SESSION['return_url']);
|
||||
}
|
||||
|
||||
$item = $r[0];
|
||||
|
||||
if ($item['deleted']) {
|
||||
return 0;
|
||||
}
|
||||
@@ -364,7 +361,6 @@ function drop_item($id) {
|
||||
}
|
||||
|
||||
if ((local_user() == $item['uid']) || $contact_id) {
|
||||
|
||||
// Check if we should do HTML-based delete confirmation
|
||||
if ($_REQUEST['confirm']) {
|
||||
// <form> can't take arguments in its "action" parameter
|
||||
|
||||
+2
-2
@@ -1177,8 +1177,8 @@ function put_item_in_cache(&$item, $update = false)
|
||||
}
|
||||
|
||||
if ($update && ($item["id"] > 0)) {
|
||||
dba::update('item', ['rendered-html' => $item["rendered-html"], 'rendered-hash' => $item["rendered-hash"]],
|
||||
['id' => $item["id"]], false);
|
||||
Item::update(['rendered-html' => $item["rendered-html"], 'rendered-hash' => $item["rendered-hash"]],
|
||||
['id' => $item["id"]]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user