use Friendica\Content\Widget;
use Friendica\Content\Text\HTML;
use Friendica\Core\ACL;
-use Friendica\Core\Addon;
use Friendica\Core\Config;
use Friendica\Core\Hook;
use Friendica\Core\L10n;
use Friendica\Core\PConfig;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
+use Friendica\Core\Session;
use Friendica\Database\DBA;
use Friendica\Model\Contact;
use Friendica\Model\Group;
use Friendica\Model\Item;
use Friendica\Model\Profile;
+use Friendica\Model\Term;
use Friendica\Module\Login;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Proxy as ProxyUtils;
use Friendica\Util\Strings;
-require_once 'include/conversation.php';
-require_once 'include/items.php';
-
function network_init(App $a)
{
if (!local_user()) {
Hook::add('head', __FILE__, 'network_infinite_scroll_head');
- $search = (x($_GET, 'search') ? Strings::escapeTags($_GET['search']) : '');
+ $search = (!empty($_GET['search']) ? Strings::escapeHtml($_GET['search']) : '');
if (($search != '') && !empty($_GET['submit'])) {
$a->internalRedirect('search?search=' . urlencode($search));
}
- if (x($_GET, 'save')) {
+ if (!empty($_GET['save'])) {
$exists = DBA::exists('search', ['uid' => local_user(), 'term' => $search]);
if (!$exists) {
DBA::insert('search', ['uid' => local_user(), 'term' => $search]);
}
}
- if (x($_GET, 'remove')) {
+ if (!empty($_GET['remove'])) {
DBA::delete('search', ['uid' => local_user(), 'term' => $search]);
}
$group_id = (($a->argc > 1 && is_numeric($a->argv[1])) ? intval($a->argv[1]) : 0);
$cid = 0;
- if (x($_GET, 'cid') && intval($_GET['cid']) != 0) {
+ if (!empty($_GET['cid'])) {
$cid = $_GET['cid'];
- $_GET['nets'] = 'all';
+ $_GET['nets'] = '';
$group_id = 0;
}
// convert query string to array. remove friendica args
$query_array = [];
- $query_string = str_replace($a->cmd . '?', '', $a->query_string);
- parse_str($query_string, $query_array);
- array_shift($query_array);
+ parse_str(parse_url($a->query_string, PHP_URL_QUERY), $query_array);
// fetch last used network view and redirect if needed
if (!$is_a_date_query) {
- $sel_nets = defaults($_GET, 'nets', false);
+ $sel_nets = defaults($_GET, 'nets', '');
$sel_tabs = network_query_get_sel_tab($a);
$sel_groups = network_query_get_sel_group($a);
$last_sel_tabs = PConfig::get(local_user(), 'network.view', 'tab.selected');
if ($remember_tab) {
// redirect if current selected tab is '/network' and
- // last selected tab is _not_ '/network?f=&order=comment'.
+ // last selected tab is _not_ '/network?order=comment'.
// and this isn't a date query
$tab_baseurls = [
'', //bookmarked
];
$tab_args = [
- 'f=&order=comment', //all
- 'f=&order=post', //postord
- 'f=&conv=1', //conv
+ 'order=comment', //all
+ 'order=post', //postord
+ 'conv=1', //conv
'', //new
- 'f=&star=1', //starred
- 'f=&bmark=1', //bookmarked
+ 'star=1', //starred
+ 'bmark=1', //bookmarked
];
$k = array_search('active', $last_sel_tabs);
}
}
- if ($sel_nets !== false) {
+ if ($sel_nets) {
$net_args['nets'] = $sel_nets;
}
if ($remember_tab) {
$net_args = array_merge($query_array, $net_args);
- $net_queries = build_querystring($net_args);
+ $net_queries = http_build_query($net_args);
$redir_url = ($net_queries ? $net_baseurl . '?' . $net_queries : $net_baseurl);
}
}
- // If nets is set to all, unset it
- if (x($_GET, 'nets') && $_GET['nets'] === 'all') {
- unset($_GET['nets']);
- }
-
- if (!x($a->page, 'aside')) {
+ if (empty($a->page['aside'])) {
$a->page['aside'] = '';
}
- $a->page['aside'] .= (Feature::isEnabled(local_user(), 'groups') ?
- Group::sidebarWidget('network/0', 'network', 'standard', $group_id) : '');
- $a->page['aside'] .= (Feature::isEnabled(local_user(), 'forumlist_widget') ? ForumManager::widget(local_user(), $cid) : '');
- $a->page['aside'] .= posted_date_widget('network', local_user(), false);
- $a->page['aside'] .= Widget::networks('network', (x($_GET, 'nets') ? $_GET['nets'] : ''));
+ $a->page['aside'] .= Group::sidebarWidget('network/0', 'network', 'standard', $group_id);
+ $a->page['aside'] .= ForumManager::widget(local_user(), $cid);
+ $a->page['aside'] .= Widget::postedByYear('network', local_user(), false);
+ $a->page['aside'] .= Widget::networks('network', defaults($_GET, 'nets', '') );
$a->page['aside'] .= saved_searches($search);
- $a->page['aside'] .= Widget::fileAs('network', (x($_GET, 'file') ? $_GET['file'] : ''));
+ $a->page['aside'] .= Widget::fileAs('network', defaults($_GET, 'file', '') );
}
function saved_searches($search)
{
- if (!Feature::isEnabled(local_user(), 'savedsearch')) {
- return '';
- }
-
- $a = get_app();
-
$srchurl = '/network?f='
- . ((x($_GET, 'cid')) ? '&cid=' . $_GET['cid'] : '')
- . ((x($_GET, 'star')) ? '&star=' . $_GET['star'] : '')
- . ((x($_GET, 'bmark')) ? '&bmark=' . $_GET['bmark'] : '')
- . ((x($_GET, 'conv')) ? '&conv=' . $_GET['conv'] : '')
- . ((x($_GET, 'nets')) ? '&nets=' . $_GET['nets'] : '')
- . ((x($_GET, 'cmin')) ? '&cmin=' . $_GET['cmin'] : '')
- . ((x($_GET, 'cmax')) ? '&cmax=' . $_GET['cmax'] : '')
- . ((x($_GET, 'file')) ? '&file=' . $_GET['file'] : '');
+ . (!empty($_GET['cid']) ? '&cid=' . rawurlencode($_GET['cid']) : '')
+ . (!empty($_GET['star']) ? '&star=' . rawurlencode($_GET['star']) : '')
+ . (!empty($_GET['bmark']) ? '&bmark=' . rawurlencode($_GET['bmark']) : '')
+ . (!empty($_GET['conv']) ? '&conv=' . rawurlencode($_GET['conv']) : '')
+ . (!empty($_GET['nets']) ? '&nets=' . rawurlencode($_GET['nets']) : '')
+ . (!empty($_GET['cmin']) ? '&cmin=' . rawurlencode($_GET['cmin']) : '')
+ . (!empty($_GET['cmax']) ? '&cmax=' . rawurlencode($_GET['cmax']) : '')
+ . (!empty($_GET['file']) ? '&file=' . rawurlencode($_GET['file']) : '');
;
- $o = '';
-
$terms = DBA::select('search', ['id', 'term'], ['uid' => local_user()]);
$saved = [];
$o = Renderer::replaceMacros($tpl, [
'$title' => L10n::t('Saved Searches'),
'$add' => L10n::t('add'),
- '$searchbox' => HTML::search($search, 'netsearch-box', $srchurl, true),
+ '$searchbox' => HTML::search($search, 'netsearch-box', $srchurl),
'$saved' => $saved,
]);
* Return selected tab from query
*
* urls -> returns
- * '/network' => $no_active = 'active'
- * '/network?f=&order=comment' => $comment_active = 'active'
- * '/network?f=&order=post' => $postord_active = 'active'
- * '/network?f=&conv=1', => $conv_active = 'active'
- * '/network/new', => $new_active = 'active'
- * '/network?f=&star=1', => $starred_active = 'active'
- * '/network?f=&bmark=1', => $bookmarked_active = 'active'
+ * '/network' => $no_active = 'active'
+ * '/network?order=comment' => $comment_active = 'active'
+ * '/network?order=post' => $postord_active = 'active'
+ * '/network?conv=1', => $conv_active = 'active'
+ * '/network/new', => $new_active = 'active'
+ * '/network?star=1', => $starred_active = 'active'
+ * '/network?bmark=1', => $bookmarked_active = 'active'
*
- * @return Array ($no_active, $comment_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active);
+ * @param App $a
+ * @return array ($no_active, $comment_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active);
*/
function network_query_get_sel_tab(App $a)
{
$new_active = 'active';
}
- if (x($_GET, 'star')) {
+ if (!empty($_GET['star'])) {
$starred_active = 'active';
}
- if (x($_GET, 'bmark')) {
+ if (!empty($_GET['bmark'])) {
$bookmarked_active = 'active';
}
- if (x($_GET, 'conv')) {
+ if (!empty($_GET['conv'])) {
$conv_active = 'active';
}
$no_active = 'active';
}
- if ($no_active == 'active' && x($_GET, 'order')) {
+ if ($no_active == 'active' && !empty($_GET['order'])) {
switch($_GET['order']) {
case 'post' : $postord_active = 'active'; $no_active=''; break;
case 'comment' : $all_active = 'active'; $no_active=''; break;
/**
* @brief Sets the pager data and returns SQL
*
- * @param App $a The global App
+ * @param App $a The global App
+ * @param Pager $pager
* @param integer $update Used for the automatic reloading
* @return string SQL with the appropriate LIMIT clause
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
function networkPager(App $a, Pager $pager, $update)
{
* @brief Sets items as seen
*
* @param array $condition The array with the SQL condition
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
function networkSetSeen($condition)
{
$unseen = Item::exists($condition);
if ($unseen) {
- $r = Item::update(['unseen' => false], $condition);
+ Item::update(['unseen' => false], $condition);
}
}
*
* @param App $a The global App
* @param array $items Items of the conversation
+ * @param Pager $pager
* @param string $mode Display mode for the conversation
* @param integer $update Used for the automatic reloading
+ * @param string $ordering
* @return string HTML of the conversation
+ * @throws ImagickException
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
function networkConversation(App $a, $items, Pager $pager, $mode, $update, $ordering = '')
{
// Set this so that the conversation function can find out contact info for our wall-wall items
$a->page_contact = $a->contact;
+ if (!is_array($items)) {
+ Logger::log("Expecting items to be an array. Got " . print_r($items, true));
+ $items = [];
+ }
+
$o = conversation($a, $items, $pager, $mode, $update, false, $ordering, local_user());
if (!$update) {
/// @TODO Is this really necessary? $a is already available to hooks
$arr = ['query' => $a->query_string];
- Addon::callHooks('network_content_init', $arr);
+ Hook::callAll('network_content_init', $arr);
$flat_mode = false;
$o = networkThreadedView($a, $update, $parent);
}
+ if ($o === '') {
+ info("No items found");
+ }
+
return $o;
}
/**
* @brief Get the network content in flat view
*
- * @param Pager $pager
* @param App $a The global App
* @param integer $update Used for the automatic reloading
* @return string HTML of the network content in flat view
+ * @throws ImagickException
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+ * @global Pager $pager
*/
function networkFlatView(App $a, $update = 0)
{
// Rawmode is used for fetching new content at the end of the page
$rawmode = (isset($_GET['mode']) && ($_GET['mode'] == 'raw'));
- if (isset($_GET['last_id'])) {
- $last_id = intval($_GET['last_id']);
- } else {
- $last_id = 0;
- }
-
$o = '';
$file = defaults($_GET, 'file', '');
$pager = new Pager($a->query_string);
- /// @TODO Figure out why this variable is unused
- $pager_sql = networkPager($a, $pager, $update);
+ networkPager($a, $pager, $update);
+
+ $item_params = ['order' => ['id' => true]];
if (strlen($file)) {
- $condition = ["`term` = ? AND `otype` = ? AND `type` = ? AND `uid` = ?",
- $file, TERM_OBJ_POST, TERM_FILE, local_user()];
- $params = ['order' => ['tid' => true], 'limit' => [$pager->getStart(), $pager->getItemsPerPage()]];
- $result = DBA::select('term', ['oid'], $condition);
+ $term_condition = ["`term` = ? AND `otype` = ? AND `type` = ? AND `uid` = ?",
+ $file, Term::OBJECT_TYPE_POST, Term::FILE, local_user()];
+ $term_params = ['order' => ['tid' => true], 'limit' => [$pager->getStart(), $pager->getItemsPerPage()]];
+ $result = DBA::select('term', ['oid'], $term_condition, $term_params);
$posts = [];
while ($term = DBA::fetch($result)) {
}
DBA::close($result);
- $condition = ['uid' => local_user(), 'id' => $posts];
+ if (count($posts) == 0) {
+ return '';
+ }
+ $item_condition = ['uid' => local_user(), 'id' => $posts];
} else {
- $condition = ['uid' => local_user()];
+ $item_condition = ['uid' => local_user()];
+ $item_params['limit'] = [$pager->getStart(), $pager->getItemsPerPage()];
+
+ networkSetSeen(['unseen' => true, 'uid' => local_user()]);
}
- $params = ['order' => ['id' => true], 'limit' => [$pager->getStart(), $pager->getItemsPerPage()]];
- $result = Item::selectForUser(local_user(), [], $condition, $params);
+ $result = Item::selectForUser(local_user(), [], $item_condition, $item_params);
$items = Item::inArray($result);
-
- $condition = ['unseen' => true, 'uid' => local_user()];
- networkSetSeen($condition);
-
$o .= networkConversation($a, $items, $pager, 'network-new', $update);
return $o;
/**
* @brief Get the network content in threaded view
*
- * @global Pager $pager
* @param App $a The global App
* @param integer $update Used for the automatic reloading
* @param integer $parent
* @return string HTML of the network content in flat view
+ * @throws ImagickException
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+ * @global Pager $pager
*/
function networkThreadedView(App $a, $update, $parent)
{
for ($x = 1; $x < $a->argc; $x ++) {
if (is_a_date_arg($a->argv[$x])) {
if ($datequery) {
- $datequery2 = Strings::escapeTags($a->argv[$x]);
+ $datequery2 = Strings::escapeHtml($a->argv[$x]);
} else {
- $datequery = Strings::escapeTags($a->argv[$x]);
+ $datequery = Strings::escapeHtml($a->argv[$x]);
$_GET['order'] = 'post';
}
} elseif (intval($a->argv[$x])) {
$gid = intval($a->argv[$x]);
- $default_permissions = ['allow_gid' => '<' . $gid . '>'];
+ $default_permissions['allow_gid'] = [$gid];
}
}
}
$star = intval(defaults($_GET, 'star' , 0));
$bmark = intval(defaults($_GET, 'bmark', 0));
$conv = intval(defaults($_GET, 'conv' , 0));
- $order = Strings::removeTags(defaults($_GET, 'order', 'comment'));
+ $order = Strings::escapeTags(defaults($_GET, 'order', 'comment'));
$nets = defaults($_GET, 'nets' , '');
+ $allowedCids = [];
if ($cid) {
- $default_permissions = ['allow_cid' => '<' . intval($cid) . '>'];
+ $allowedCids[] = (int) $cid;
+ } elseif ($nets) {
+ $condition = [
+ 'uid' => local_user(),
+ 'network' => $nets,
+ 'self' => false,
+ 'blocked' => false,
+ 'pending' => false,
+ 'archive' => false,
+ 'rel' => [Contact::SHARING, Contact::FRIEND],
+ ];
+ $contactStmt = DBA::select('contact', ['id'], $condition);
+ while ($contact = DBA::fetch($contactStmt)) {
+ $allowedCids[] = (int) $contact['id'];
+ }
+ DBA::close($contactStmt);
}
- if ($nets) {
- $r = DBA::select('contact', ['id'], ['uid' => local_user(), 'network' => $nets], ['self' => false]);
-
- $str = '';
- while ($rr = DBA::fetch($r)) {
- $str .= '<' . $rr['id'] . '>';
- }
- if (strlen($str)) {
- $default_permissions = ['allow_cid' => $str];
- }
+ if (count($allowedCids)) {
+ $default_permissions['allow_cid'] = $allowedCids;
}
if (!$update && !$rawmode) {
$sql_extra3 = '';
$sql_table = '`thread`';
$sql_parent = '`iid`';
- $sql_order = '';
if ($update) {
$sql_table = '`item`';
$group = DBA::selectFirst('group', ['name'], ['id' => $gid, 'uid' => local_user()]);
if (!DBA::isResult($group)) {
if ($update) {
- killme();
+ exit();
}
notice(L10n::t('No such group') . EOL);
$a->internalRedirect('network/0');
// NOTREACHED
}
- $contacts = Group::expand([$gid]);
+ $contacts = Group::expand(local_user(), [$gid]);
if ((is_array($contacts)) && count($contacts)) {
$contact_str_self = '';
$entries[0] = [
'id' => 'network',
- 'name' => htmlentities($contact['name']),
+ 'name' => $contact['name'],
'itemurl' => defaults($contact, 'addr', $contact['nurl']),
'thumb' => ProxyUtils::proxifyUrl($contact['thumb'], false, ProxyUtils::SIZE_THUMB),
'details' => $contact['location'],
}
if ($datequery) {
- $sql_extra3 .= Strings::protectSprintf(sprintf(" AND $sql_table.created <= '%s' ",
+ $sql_extra3 .= Strings::protectSprintf(sprintf(" AND $sql_table.received <= '%s' ",
DBA::escape(DateTimeFormat::convert($datequery, 'UTC', date_default_timezone_get()))));
}
if ($datequery2) {
- $sql_extra3 .= Strings::protectSprintf(sprintf(" AND $sql_table.created >= '%s' ",
+ $sql_extra3 .= Strings::protectSprintf(sprintf(" AND $sql_table.received >= '%s' ",
DBA::escape(DateTimeFormat::convert($datequery2, 'UTC', date_default_timezone_get()))));
}
// Normal conversation view
if ($order === 'post') {
- $ordering = '`created`';
- $order_mode = 'created';
+ $ordering = '`received`';
+ $order_mode = 'received';
} else {
$ordering = '`commented`';
$order_mode = 'commented';
((time() - $_SESSION['network_last_date_timestamp']) < ($browser_update * 10))) {
$bottom_limit = $_SESSION['network_last_date'];
}
- $_SESSION['network_last_date'] = defaults($_SESSION, 'network_last_top_limit', $top_limit);
+ $_SESSION['network_last_date'] = Session::get('network_last_top_limit', $top_limit);
$_SESSION['network_last_date_timestamp'] = time();
if ($last_date > $top_limit) {
(SELECT SUBSTR(`term`, 2) FROM `search` WHERE `uid` = ? AND `term` LIKE '#%') AND `otype` = ? AND `type` = ? AND `uid` = 0) AS `term`
ON `item`.`id` = `term`.`oid`
STRAIGHT_JOIN `contact` AS `author` ON `author`.`id` = `item`.`author-id`
- WHERE `item`.`uid` = 0 AND `item`.$ordering < ? AND `item`.$ordering > ?
+ WHERE `item`.`uid` = 0 AND `item`.$ordering < ? AND `item`.$ordering > ? AND `item`.`gravity` = ?
AND NOT `author`.`hidden` AND NOT `author`.`blocked`" . $sql_tag_nets,
local_user(), TERM_OBJ_POST, TERM_HASHTAG,
- $top_limit, $bottom_limit);
+ $top_limit, $bottom_limit, GRAVITY_PARENT);
$data = DBA::toArray($items);
$parents_str = implode(', ', $parents_arr);
}
- if (x($_GET, 'offset')) {
+ if (!empty($_GET['offset'])) {
$date_offset = $_GET['offset'];
}
*
* @param App $a The global App
* @return string Html of the networktab
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
function network_tabs(App $a)
{
$tabs = [
[
'label' => L10n::t('Commented Order'),
- 'url' => str_replace('/new', '', $cmd) . '?f=&order=comment' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
+ 'url' => str_replace('/new', '', $cmd) . '?order=comment' . (!empty($_GET['cid']) ? '&cid=' . $_GET['cid'] : ''),
'sel' => $all_active,
'title' => L10n::t('Sort by Comment Date'),
'id' => 'commented-order-tab',
],
[
'label' => L10n::t('Posted Order'),
- 'url' => str_replace('/new', '', $cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
+ 'url' => str_replace('/new', '', $cmd) . '?order=post' . (!empty($_GET['cid']) ? '&cid=' . $_GET['cid'] : ''),
'sel' => $postord_active,
'title' => L10n::t('Sort by Post Date'),
'id' => 'posted-order-tab',
],
];
- if (Feature::isEnabled(local_user(), 'personal_tab')) {
- $tabs[] = [
- 'label' => L10n::t('Personal'),
- 'url' => str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '/?f=') . '&conv=1',
- 'sel' => $conv_active,
- 'title' => L10n::t('Posts that mention or involve you'),
- 'id' => 'personal-tab',
- 'accesskey' => 'r',
- ];
- }
+ $tabs[] = [
+ 'label' => L10n::t('Personal'),
+ 'url' => str_replace('/new', '', $cmd) . (!empty($_GET['cid']) ? '/?cid=' . $_GET['cid'] : '/?f=') . '&conv=1',
+ 'sel' => $conv_active,
+ 'title' => L10n::t('Posts that mention or involve you'),
+ 'id' => 'personal-tab',
+ 'accesskey' => 'r',
+ ];
if (Feature::isEnabled(local_user(), 'new_tab')) {
$tabs[] = [
'label' => L10n::t('New'),
- 'url' => 'network/new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''),
+ 'url' => 'network/new' . (!empty($_GET['cid']) ? '/?cid=' . $_GET['cid'] : ''),
'sel' => $new_active,
'title' => L10n::t('Activity Stream - by date'),
'id' => 'activitiy-by-date-tab',
if (Feature::isEnabled(local_user(), 'link_tab')) {
$tabs[] = [
'label' => L10n::t('Shared Links'),
- 'url' => str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '/?f=') . '&bmark=1',
+ 'url' => str_replace('/new', '', $cmd) . (!empty($_GET['cid']) ? '/?cid=' . $_GET['cid'] : '/?f=') . '&bmark=1',
'sel' => $bookmarked_active,
'title' => L10n::t('Interesting Links'),
'id' => 'shared-links-tab',
];
}
- if (Feature::isEnabled(local_user(), 'star_posts')) {
- $tabs[] = [
- 'label' => L10n::t('Starred'),
- 'url' => str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '/?f=') . '&star=1',
- 'sel' => $starred_active,
- 'title' => L10n::t('Favourite Posts'),
- 'id' => 'starred-posts-tab',
- 'accesskey' => 'm',
- ];
- }
+ $tabs[] = [
+ 'label' => L10n::t('Starred'),
+ 'url' => str_replace('/new', '', $cmd) . (!empty($_GET['cid']) ? '/?cid=' . $_GET['cid'] : '/?f=') . '&star=1',
+ 'sel' => $starred_active,
+ 'title' => L10n::t('Favourite Posts'),
+ 'id' => 'starred-posts-tab',
+ 'accesskey' => 'm',
+ ];
// save selected tab, but only if not in file mode
- if (!x($_GET, 'file')) {
+ if (empty($_GET['file'])) {
PConfig::set(local_user(), 'network.view', 'tab.selected', [
$all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active
]);
}
$arr = ['tabs' => $tabs];
- Addon::callHooks('network_tabs', $arr);
+ Hook::callAll('network_tabs', $arr);
$tpl = Renderer::getMarkupTemplate('common_tabs.tpl');
* of the page to make the correct asynchronous call. This is obtained through the Pager that was instantiated in
* networkThreadedView or networkFlatView.
*
- * @global Pager $pager
- * @param App $a
+ * @param App $a
* @param string $htmlhead The head tag HTML string
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+ * @global Pager $pager
*/
function network_infinite_scroll_head(App $a, &$htmlhead)
{
/// @TODO this will have to be converted to a static property of the converted Module\Network class
+ /**
+ * @var $pager Pager
+ */
global $pager;
if (PConfig::get(local_user(), 'system', 'infinite_scroll')
'$reload_uri' => $pager->getBaseQueryString()
]);
}
-}
\ No newline at end of file
+}