Horde::selfUrlParams PHP Method

selfUrlParams() public static method

Create a self URL of the current page, building the parameter list from the current Horde_Variables object (or via another Variables object passed as an optional argument) rather than the original request data.
Since: 2.3.0
public static selfUrlParams ( array $opts = [] ) : Horde_Url
$opts array Additional options: - force_ssl: (boolean) Force creation of an SSL URL? DEFAULT: false - full: (boolean) Return a full URL? DEFAULT: false - nocache: (boolean) Include a cache-buster parameter in the URL? DEFAULT: true - vars: (Horde_Variables) Use this Horde_Variables object instead of the Horde global object. DEFAULT: Use the Horde global object.
return Horde_Url The self URL.
    public static function selfUrlParams(array $opts = array())
    {
        $vars = isset($opts['vars']) ? $opts['vars'] : $GLOBALS['injector']->createInstance('Horde_Variables');
        $url = self::selfUrl(false, !array_key_exists('nocache', $opts) || empty($opts['nocache']), !empty($opts['full']), !empty($opts['force_ssl']))->add(iterator_to_array($vars));
        if (!isset($opts['vars'])) {
            $url->remove(array_keys($_COOKIE));
        }
        return $url;
    }

Usage Example

Exemplo n.º 1
0
 /**
  */
 protected function _init()
 {
     global $injector, $notification, $page_output, $registry, $session;
     $imp_mailbox = $this->indices->mailbox->list_ob;
     switch ($mode = $this->vars->get('mode', 'thread')) {
         case 'thread':
             /* THREAD MODE: Make sure we have a valid index. */
             list($m, $u) = $this->indices->getSingle();
             $imp_indices = $imp_mailbox->getFullThread($u, $m);
             break;
         default:
             /* MSGVIEW MODE: Make sure we have a valid list of messages. */
             $imp_indices = $this->indices;
             break;
     }
     if (!count($imp_indices)) {
         $notification->push(_("Could not load message."), 'horde.error');
         $this->indices->mailbox->url('mailbox')->redirect();
     }
     /* Run through action handlers. */
     switch ($this->vars->actionID) {
         case 'add_address':
             try {
                 $contact_link = $injector->getInstance('IMP_Contacts')->addAddress($this->vars->address, $this->vars->name);
                 $notification->push(sprintf(_("Entry \"%s\" was successfully added to the address book"), $contact_link), 'horde.success', array('content.raw'));
             } catch (Horde_Exception $e) {
                 $notification->push($e);
             }
             break;
     }
     $msgs = $tree = array();
     $subject = '';
     $page_label = $this->indices->mailbox->label;
     $imp_ui = $injector->getInstance('IMP_Message_Ui');
     $query = new Horde_Imap_Client_Fetch_Query();
     $query->envelope();
     /* Force images to show in HTML data. */
     $injector->getInstance('IMP_Images')->alwaysShow = true;
     $multiple = count($imp_indices) > 1;
     foreach ($imp_indices as $ob) {
         $imp_imap = $ob->mbox->imp_imap;
         $fetch_res = $imp_imap->fetch($ob->mbox, $query, array('ids' => $imp_imap->getIdsOb($ob->uids)));
         foreach ($ob->uids as $idx) {
             $envelope = $fetch_res[$idx]->getEnvelope();
             /* Get the body of the message. */
             $curr_msg = $curr_tree = array();
             $contents = $injector->getInstance('IMP_Factory_Contents')->create($ob->mbox->getIndicesOb($idx));
             $mime_id = $contents->findBody();
             if ($contents->canDisplay($mime_id, IMP_Contents::RENDER_INLINE)) {
                 $ret = $contents->renderMIMEPart($mime_id, IMP_Contents::RENDER_INLINE);
                 $ret = reset($ret);
                 $curr_msg['body'] = $ret['data'];
                 if (!empty($ret['js'])) {
                     $page_output->addInlineScript($ret['js'], true);
                 }
             } else {
                 $curr_msg['body'] = '<em>' . _("There is no text that can be displayed inline.") . '</em>';
             }
             $curr_msg['idx'] = $idx;
             /* Get headers for the message. */
             $date_ob = new IMP_Message_Date($envelope->date);
             $curr_msg['date'] = $date_ob->format($date_ob::DATE_LOCAL);
             if ($this->indices->mailbox->special_outgoing) {
                 $curr_msg['addr_to'] = true;
                 $curr_msg['addr'] = _("To:") . ' ' . $imp_ui->buildAddressLinks($envelope->to, Horde::selfUrlParams());
                 $addr = _("To:") . ' ' . htmlspecialchars($envelope->to[0]->label, ENT_COMPAT, 'UTF-8');
             } else {
                 $from = $envelope->from;
                 $curr_msg['addr_to'] = false;
                 $curr_msg['addr'] = $imp_ui->buildAddressLinks($from, Horde::selfUrlParams());
                 $addr = htmlspecialchars($from[0]->label, ENT_COMPAT, 'UTF-8');
             }
             $subject_header = htmlspecialchars($envelope->subject, ENT_COMPAT, 'UTF-8');
             switch ($mode) {
                 case 'thread':
                     if (empty($subject)) {
                         $subject = preg_replace('/^re:\\s*/i', '', $subject_header);
                     }
                     $curr_msg['link'] = $multiple ? Horde::widget(array('url' => '#display', 'title' => _("Thread List"), 'nocheck' => true)) : '';
                     $curr_tree['subject'] = $imp_mailbox->getThreadOb($imp_mailbox->getArrayIndex($fetch_res[$idx]->getUid(), $ob->mbox) + 1)->img;
                     break;
                 default:
                     $curr_msg['link'] = Horde::widget(array('url' => '#display', 'title' => _("Back to Multiple Message View Index"), 'nocheck' => true));
                     $curr_tree['subject'] = '';
                     break;
             }
             switch ($registry->getView()) {
                 case $registry::VIEW_BASIC:
                     $curr_msg['link'] .= ' | ' . Horde::widget(array('url' => $this->indices->mailbox->url('message', $idx), 'title' => _("Go to Message"), 'nocheck' => true)) . ' | ' . Horde::widget(array('url' => $this->indices->mailbox->url('mailbox')->add(array('start' => $imp_mailbox->getArrayIndex($idx))), 'title' => sprintf(_("Bac_k to %s"), $page_label)));
                     break;
             }
             $curr_tree['subject'] .= Horde::link('#i' . $idx) . Horde_String::truncate($subject_header, 60) . '</a> (' . $addr . ')';
             $msgs[] = $curr_msg;
             $tree[] = $curr_tree;
         }
     }
     /* Flag messages as seen. */
     $injector->getInstance('IMP_Message')->flag(array('add' => array(Horde_Imap_Client::FLAG_SEEN)), $imp_indices);
     $view = new Horde_View(array('templatePath' => IMP_TEMPLATES . '/thread'));
     if ($mode == 'thread') {
         $view->subject = $subject;
         $view->thread = true;
         switch ($registry->getView()) {
             case $registry::VIEW_BASIC:
                 $uid_list = $imp_indices[strval($this->indices->mailbox)];
                 $delete_link = $this->indices->mailbox->url('mailbox')->add(array('actionID' => 'delete_messages', 'indices' => strval($imp_indices), 'token' => $session->getToken(), 'start' => $imp_mailbox->getArrayIndex(end($uid_list))));
                 $view->delete = Horde::link($delete_link, _("Delete Thread"), null, null, null, null, null, array('id' => 'threaddelete'));
                 $page_output->addInlineScript(array('$("threaddelete").observe("click", function(e) { if (!window.confirm(' . json_encode(_("Are you sure you want to delete all messages in this thread?")) . ')) { e.stop(); } })'), true);
                 break;
         }
     } else {
         $view->subject = sprintf(_("%d Messages"), count($msgs));
     }
     $view->messages = $msgs;
     $view->tree = $tree;
     $page_output->addScriptFile('stripe.js', 'horde');
     $page_output->addScriptFile('toggle_quotes.js', 'horde');
     $page_output->noDnsPrefetch();
     $this->output = $view->render('thread');
     switch ($registry->getView()) {
         case $registry::VIEW_DYNAMIC:
             $page_output->topbar = $page_output->sidebar = false;
             $this->header_params = array('html_id' => 'htmlAllowScroll');
             break;
     }
     $this->title = $mode == 'thread' ? _("Thread View") : _("Multiple Message View");
 }
All Usage Examples Of Horde::selfUrlParams