$o .= status_editor($a, $x);
}
- $sql_table = $update ? '`item`' : '`thread`';
+ $conditionFields = ['uid' => local_user()];
+ $conditionStrings = [];
- $sql_extra = ($star ? " AND `thread`.`starred` " : '') .
- ($conv ? " AND $sql_table.`mention`" : '') .
- ($nets ? sprintf(" AND $sql_table.`network` = '%s' ", DBA::escape($nets)) : '');
+ if ($star) {
+ $conditionFields['starred'] = true;
+ }
+ if ($conv) {
+ $conditionFields['mention'] = true;
+ }
+ if ($nets) {
+ $conditionFields['network'] = $nets;
+ }
if ($datequery) {
- $sql_extra .= Strings::protectSprintf(sprintf(" AND $sql_table.received <= '%s' ",
- DBA::escape(DateTimeFormat::convert($datequery, 'UTC', date_default_timezone_get()))));
+ $conditionStrings = DBA::mergeConditions($conditionStrings, ["`received` <= ? ", DateTimeFormat::convert($datequery, 'UTC', date_default_timezone_get())]);
}
if ($datequery2) {
- $sql_extra .= Strings::protectSprintf(sprintf(" AND $sql_table.received >= '%s' ",
- DBA::escape(DateTimeFormat::convert($datequery2, 'UTC', date_default_timezone_get()))));
+ $conditionStrings = DBA::mergeConditions($conditionStrings, ["`received` >= ? ", DateTimeFormat::convert($datequery2, 'UTC', date_default_timezone_get())]);
}
if ($gid) {
// NOTREACHED
}
- $sql_extra .= sprintf(" AND `thread`.`contact-id` IN (SELECT `contact-id` FROM `group_member` WHERE `gid` = %d) ", intval($gid));
+ $conditionStrings = DBA::mergeConditions($conditionStrings, ["`contact-id` IN (SELECT `contact-id` FROM `group_member` WHERE `gid` = ?)", $gid]);
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('section_title.tpl'), [
'$title' => DI::l10n()->t('Group: %s', $group['name'])
} elseif ($cid) {
$contact = Contact::getById($cid);
if (DBA::isResult($contact)) {
- $sql_extra .= " AND " . $sql_table . ".`contact-id` = " . intval($cid);
+ $conditionFields['contact-id'] = $cid;
$o = Renderer::replaceMacros(Renderer::getMarkupTemplate('viewcontact_template.tpl'), [
'contacts' => [ModuleContact::getContactTemplateVars($contact)],
$order_mode = 'commented';
}
- $sql_order = "$sql_table.$ordering";
-
$pager = new Pager(DI::l10n(), DI::args()->getQueryString());
networkPager($a, $pager);
switch ($order_mode) {
case 'received':
if ($last_received != '') {
- $sql_extra .= sprintf(" AND $sql_table.`received` < '%s'", DBA::escape($last_received));
+ $conditionStrings = DBA::mergeConditions($conditionStrings, ["`received` < ?", $last_received]);
}
break;
case 'commented':
if ($last_commented != '') {
- $sql_extra .= sprintf(" AND $sql_table.`commented` < '%s'", DBA::escape($last_commented));
+ $conditionStrings = DBA::mergeConditions($conditionStrings, ["`commented` < ?", $last_commented]);
}
break;
case 'created':
if ($last_created != '') {
- $sql_extra .= sprintf(" AND $sql_table.`created` < '%s'", DBA::escape($last_created));
+ $conditionStrings = DBA::mergeConditions($conditionStrings, ["`created` < ?", $last_created]);
}
break;
case 'uriid':
if ($last_uriid > 0) {
- $sql_extra .= sprintf(" AND $sql_table.`uri-id` < '%s'", DBA::escape($last_uriid));
+ $conditionStrings = DBA::mergeConditions($conditionStrings, ["`uri-id` < ?", $last_uriid]);
}
break;
}
if ($update) {
if (!empty($parent)) {
// Load only a single thread
- $sql_extra2 = "`item`.`id` = ".intval($parent);
+ $conditionFields['parent'] = $parent;
+ } elseif ($order === 'post') {
+ // Only load new toplevel posts
+ $conditionFields['unseen'] = true;
+ $conditionFields['gravity'] = GRAVITY_PARENT;
} else {
// Load all unseen items
- $sql_extra2 = "`item`.`unseen`";
+ $conditionFields['unseen'] = true;
}
- $r = q("SELECT `item`.`parent-uri` AS `uri`, `item`.`parent` AS `item_id`, $sql_order AS `order_date`
- FROM `item`
- INNER JOIN `thread` ON `thread`.`iid` = `item`.`parent`
- STRAIGHT_JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
- AND (NOT `contact`.`blocked` OR `contact`.`pending`)
- LEFT JOIN `user-item` ON `user-item`.`iid` = `item`.`id` AND `user-item`.`uid` = %d
- WHERE `thread`.`uid` = %d AND `thread`.`visible` AND NOT `thread`.`deleted`
- AND (`user-item`.`hidden` IS NULL OR NOT `user-item`.`hidden`)
- AND NOT `thread`.`moderated` AND $sql_extra2
- $sql_extra
- ORDER BY `order_date` DESC LIMIT 100",
- intval(local_user()),
- intval(local_user())
- );
+ $params = ['order' => [$order_mode => true], 'limit' => 100];
+ $table = 'network-item-view';
} else {
- $r = q("SELECT `item`.`uri`, `thread`.`iid` AS `item_id`, $sql_order AS `order_date`
- FROM `thread`
- STRAIGHT_JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
- AND (NOT `contact`.`blocked` OR `contact`.`pending`)
- STRAIGHT_JOIN `item` ON `item`.`id` = `thread`.`iid`
- LEFT JOIN `user-item` ON `user-item`.`iid` = `item`.`id` AND `user-item`.`uid` = %d
- WHERE `thread`.`uid` = %d AND `thread`.`visible` AND NOT `thread`.`deleted`
- AND (`user-item`.`hidden` IS NULL OR NOT `user-item`.`hidden`)
- AND NOT `thread`.`moderated`
- $sql_extra
- ORDER BY `order_date` DESC LIMIT %d, %d",
- intval(local_user()),
- intval(local_user()),
- intval($pager->getStart()),
- intval($pager->getItemsPerPage())
- );
+ $params = ['order' => [$order_mode => true], 'limit' => [$pager->getStart(), $pager->getItemsPerPage()]];
+ $table = 'network-thread-view';
}
+ $r = DBA::selectToArray($table, [], DBA::mergeConditions($conditionFields, $conditionStrings), $params);
return $o . network_display_post($a, $pager, (!$gid && !$cid && !$star), $update, $ordering, $r);
}
$parents_arr = [];
foreach ($items as $item) {
- if (!in_array($item['item_id'], $parents_arr) && ($item['item_id'] > 0)) {
- $parents_arr[] = $item['item_id'];
+ if (!in_array($item['parent'], $parents_arr) && ($item['parent'] > 0)) {
+ $parents_arr[] = $item['parent'];
}
}
$parents_str = implode(', ', $parents_arr);
}
- $query_string = DI::args()->getQueryString();
-
- $pager->setQueryString($query_string);
+ $pager->setQueryString(DI::args()->getQueryString());
// We aren't going to try and figure out at the item, group, and page
// level which items you've seen and which you haven't. If you're looking