$usr = dba::selectFirst('user', ['default-location'], ['uid' => api_user()]);
$profile = dba::selectFirst('profile', ['about'], ['uid' => api_user(), 'is-default' => true]);
}
- $countitms = 0;
+ $countitems = 0;
$countfriends = 0;
$countfollowers = 0;
$starred = 0;
'time_zone' => 'UTC',
'geo_enabled' => false,
'verified' => true,
- 'statuses_count' => intval($countitms),
+ 'statuses_count' => intval($countitems),
'lang' => '',
'contributors_enabled' => false,
'is_translator' => false,
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);
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);
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);
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
$statuses = Item::selectForUser(api_user(), [], $condition, $params);
- $data['status'] = api_format_items(dba::inArray($statuses), $user_info);
+ $data['status'] = api_format_items(Item::inArray($statuses), $user_info);
return api_format_data("statuses", $type, $data);
}
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
$statuses = Item::selectForUser(api_user(), [], $condition, $params);
- $items = dba::inArray($statuses);
+ $items = Item::inArray($statuses);
$ret = api_format_items($items, $user_info, false, $type);
$params = ['order' => ['iid' => true], 'limit' => [$start, $count]];
$statuses = Item::selectThreadForUser(api_user(), Item::DISPLAY_FIELDLIST, $condition, $params);
- $r = dba::inArray($statuses);
+ $r = Item::inArray($statuses);
} else {
$condition = ["`verb` = ? AND `id` > ? AND NOT `private` AND `wall` AND NOT `user`.`hidewall` AND `item`.`origin`",
ACTIVITY_POST, $since_id];
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
$statuses = Item::selectForUser(api_user(), [], $condition, $params);
- $r = dba::inArray($statuses);
+ $r = Item::inArray($statuses);
}
$ret = api_format_items($r, $user_info, false, $type);
$params = ['order' => ['iid' => true], 'limit' => [$start, $count]];
$statuses = Item::selectThreadForUser(api_user(), Item::DISPLAY_FIELDLIST, $condition, $params);
- $ret = api_format_items(dba::inArray($statuses), $user_info, false, $type);
+ $ret = api_format_items(Item::inArray($statuses), $user_info, false, $type);
$data = ['status' => $ret];
switch ($type) {
throw new BadRequestException("There is no status with this id.");
}
- $ret = api_format_items(dba::inArray($statuses), $user_info, false, $type);
+ $ret = api_format_items(Item::inArray($statuses), $user_info, false, $type);
if ($conversation) {
$data = ['status' => $ret];
throw new BadRequestException("There is no status with id $id.");
}
- $ret = api_format_items(dba::inArray($statuses), $user_info, false, $type);
+ $ret = api_format_items(Item::inArray($statuses), $user_info, false, $type);
$data = ['status' => $ret];
return api_format_data("statuses", $type, $data);
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
$statuses = Item::selectForUser(api_user(), [], $condition, $params);
- $ret = api_format_items(dba::inArray($statuses), $user_info, false, $type);
+ $ret = api_format_items(Item::inArray($statuses), $user_info, false, $type);
$data = ['status' => $ret];
switch ($type) {
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
$statuses = Item::selectForUser(api_user(), [], $condition, $params);
- $ret = api_format_items(dba::inArray($statuses), $user_info, true, $type);
+ $ret = api_format_items(Item::inArray($statuses), $user_info, true, $type);
$data = ['status' => $ret];
switch ($type) {
$statuses = Item::selectForUser(api_user(), [], $condition, $params);
- $ret = api_format_items(dba::inArray($statuses), $user_info, false, $type);
+ $ret = api_format_items(Item::inArray($statuses), $user_info, false, $type);
}
$data = ['status' => $ret];
'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 = Item::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;
}
}
+ dba::close($ret);
+
if ($type == "xml") {
$xml_activities = [];
foreach ($activities as $k => $v) {
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
$statuses = Item::selectForUser(api_user(), [], $condition, $params);
- $items = api_format_items(dba::inArray($statuses), $user_info, false, $type);
+ $items = api_format_items(Item::inArray($statuses), $user_info, false, $type);
$data = ['status' => $items];
switch ($type) {
function api_direct_messages_box($type, $box, $verbose)
{
$a = get_app();
- $user_info = api_get_user($a);
-
- if (api_user() === false || $user_info === false) {
+ if (api_user() === false) {
throw new ForbiddenException();
}
-
// params
$count = (x($_GET, 'count') ? $_GET['count'] : 20);
$page = (x($_REQUEST, 'page') ? $_REQUEST['page'] -1 : 0);
unset($_REQUEST["screen_name"]);
unset($_GET["screen_name"]);
+ $user_info = api_get_user($a);
+ if ($user_info === false) {
+ throw new ForbiddenException();
+ }
$profile_url = $user_info["url"];
// pagination
// 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
// 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]);
}
// 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')",
$statuses = Item::selectForUser(api_user(), [], $condition);
// prepare output of comments
- $commentData = api_format_items(dba::inArray($statuses), $user_info, false, $type);
+ $commentData = api_format_items(Item::inArray($statuses), $user_info, false, $type);
$comments = [];
if ($type == "xml") {
$k = 0;
$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: