Esempio n. 1
0
/**
 * @brief Returns querystring as string from a mapped array.
 *
 * @param array $params mapped array with query parameters
 * @param string $name of parameter, default null
 *
 * @return string
 */
function build_querystring($params, $name = null)
{
    $ret = '';
    foreach ($params as $key => $val) {
        if (is_array($val)) {
            if ($name === null) {
                $ret .= build_querystring($val, $key);
            } else {
                $ret .= build_querystring($val, $name . "[{$key}]");
            }
        } else {
            $val = urlencode($val);
            if ($name != null) {
                $ret .= $name . "[{$key}]" . "={$val}&";
            } else {
                $ret .= "{$key}={$val}&";
            }
        }
    }
    return $ret;
}
Esempio n. 2
0
function network_init(&$a)
{
    if (!local_user()) {
        notice(t('Permission denied.') . EOL);
        return;
    }
    $is_a_date_query = false;
    if ($a->argc > 1) {
        for ($x = 1; $x < $a->argc; $x++) {
            if (is_a_date_arg($a->argv[$x])) {
                $is_a_date_query = true;
                break;
            }
        }
    }
    // convert query string to array. remove friendica args
    $query_array = array();
    $query_string = str_replace($a->cmd . "?", "", $a->query_string);
    parse_str($query_string, $query_array);
    array_shift($query_array);
    // fetch last used network view and redirect if needed
    if (!$is_a_date_query) {
        $sel_tabs = network_query_get_sel_tab($a);
        $sel_nets = network_query_get_sel_net();
        $sel_groups = network_query_get_sel_group($a);
        $last_sel_tabs = get_pconfig(local_user(), 'network.view', 'tab.selected');
        $last_sel_nets = get_pconfig(local_user(), 'network.view', 'net.selected');
        $last_sel_groups = get_pconfig(local_user(), 'network.view', 'group.selected');
        $remember_tab = $sel_tabs[0] === 'active' && is_array($last_sel_tabs) && $last_sel_tabs[0] !== 'active';
        $remember_net = $sel_nets === false && $last_sel_nets && $last_sel_nets !== 'all';
        $remember_group = $sel_groups === false && $last_sel_groups && $last_sel_groups != 0;
        $net_baseurl = '/network';
        $net_args = array();
        if ($remember_group) {
            $net_baseurl .= '/' . $last_sel_groups;
            // Note that the group number must come before the "/new" tab selection
        } else {
            if ($sel_groups !== false) {
                $net_baseurl .= '/' . $sel_groups;
            }
        }
        if ($remember_tab) {
            // redirect if current selected tab is '/network' and
            // last selected tab is _not_ '/network?f=&order=comment'.
            // and this isn't a date query
            $tab_baseurls = array('', '', '', '/new', '', '', '');
            $tab_args = array('f=&order=comment', 'f=&order=post', 'f=&conv=1', '', 'f=&star=1', 'f=&bmark=1', 'f=&spam=1');
            $k = array_search('active', $last_sel_tabs);
            $net_baseurl .= $tab_baseurls[$k];
            // parse out tab queries
            $dest_qa = array();
            $dest_qs = $tab_args[$k];
            parse_str($dest_qs, $dest_qa);
            $net_args = array_merge($net_args, $dest_qa);
        } else {
            if ($sel_tabs[4] === 'active') {
                // The '/new' tab is selected
                $net_baseurl .= '/new';
            }
        }
        if ($remember_net) {
            $net_args['nets'] = $last_sel_nets;
        } else {
            if ($sel_nets !== false) {
                $net_args['nets'] = $sel_nets;
            }
        }
        if ($remember_tab || $remember_net || $remember_group) {
            $net_args = array_merge($query_array, $net_args);
            $net_queries = build_querystring($net_args);
            $redir_url = $net_queries ? $net_baseurl . "?" . $net_queries : $net_baseurl;
            goaway($a->get_baseurl() . $redir_url);
        }
    }
    if (x($_GET['nets']) && $_GET['nets'] === 'all') {
        unset($_GET['nets']);
    }
    $group_id = $a->argc > 1 && is_numeric($a->argv[1]) ? intval($a->argv[1]) : 0;
    set_pconfig(local_user(), 'network.view', 'group.selected', $group_id);
    require_once 'include/group.php';
    require_once 'include/contact_widgets.php';
    require_once 'include/items.php';
    if (!x($a->page, 'aside')) {
        $a->page['aside'] = '';
    }
    $search = x($_GET, 'search') ? escape_tags($_GET['search']) : '';
    if (x($_GET, 'save')) {
        $r = q("select * from `search` where `uid` = %d and `term` = '%s' limit 1", intval(local_user()), dbesc($search));
        if (!count($r)) {
            q("insert into `search` ( `uid`,`term` ) values ( %d, '%s') ", intval(local_user()), dbesc($search));
        }
    }
    if (x($_GET, 'remove')) {
        q("delete from `search` where `uid` = %d and `term` = '%s'", intval(local_user()), dbesc($search));
    }
    // search terms header
    if (x($_GET, 'search')) {
        $a->page['content'] .= replace_macros(get_markup_template("section_title.tpl"), array('$title' => sprintf(t('Search Results For: %s'), $search)));
    }
    $a->page['aside'] .= feature_enabled(local_user(), 'groups') ? group_side('network/0', 'network', true, $group_id) : '';
    $a->page['aside'] .= posted_date_widget($a->get_baseurl() . '/network', local_user(), false);
    $a->page['aside'] .= networks_widget($a->get_baseurl(true) . '/network', x($_GET, 'nets') ? $_GET['nets'] : '');
    $a->page['aside'] .= saved_searches($search);
    $a->page['aside'] .= fileas_widget($a->get_baseurl(true) . '/network', x($_GET, 'file') ? $_GET['file'] : '');
}