Exemplo n.º 1
0
 /**
  * Store a rule.
  *
  * @param integer $action  Storage action.
  * @param Ingo_Rule $rule  Rule the action affects.
  */
 protected function _store($action, $rule = null)
 {
     global $session;
     $this->_storeBackend($action, $rule);
     switch ($action) {
         case self::STORE_UPDATE:
             if ($rule instanceof Ingo_Rule_System_Blacklist) {
                 $tmp = $this->getSystemRule('Ingo_Rule_System_Whitelist');
             } elseif ($rule instanceof Ingo_Rule_System_Whitelist) {
                 $tmp = $this->getSystemRule('Ingo_Rule_System_Blacklist');
             } else {
                 $tmp = null;
             }
             if (!is_null($tmp)) {
                 /* Filter out the rule's addresses in the opposite filter. */
                 $ob = new Horde_Mail_Rfc822_List($tmp->addresses);
                 $ob->setIteratorFilter(0, $rule->addresses);
                 $tmp->addresses = $ob->bare_addresses;
                 $this->_storeBackend($action, $tmp);
             }
             break;
     }
     $session->set('ingo', 'change', time());
 }
Exemplo n.º 2
0
 /**
  * Builds a string containing a list of addresses.
  *
  * @param Horde_Mail_Rfc822_List $addrlist  An address list.
  * @param Horde_Url $addURL                 The self URL.
  * @param boolean $link                     Link each address to the
  *                                          compose screen?
  *
  * @return string  String containing the formatted address list.
  */
 protected function _buildAddressLinks(Horde_Mail_Rfc822_List $addrlist, $addURL = null, $link = true)
 {
     global $prefs, $registry;
     $add_link = null;
     $addr_array = array();
     /* Set up the add address icon link if contact manager is
      * available. */
     if (!is_null($addURL) && $link && $prefs->getValue('add_source')) {
         try {
             $add_link = $registry->hasMethod('contacts/import') ? $addURL->copy()->add('actionID', 'add_address') : null;
         } catch (Horde_Exception $e) {
         }
     }
     $addrlist->setIteratorFilter();
     foreach ($addrlist->base_addresses as $ob) {
         if ($ob instanceof Horde_Mail_Rfc822_Group) {
             $group_array = array();
             foreach ($ob->addresses as $ad) {
                 $ret = htmlspecialchars(strval($ad));
                 if ($link) {
                     $clink = new IMP_Compose_Link(array('to' => strval($ad)));
                     $ret = Horde::link($clink->link(), sprintf(_("New Message to %s"), strval($ad))) . $ret . '</a>';
                 }
                 /* Append the add address icon to every address if contact
                  * manager is available. */
                 if ($add_link) {
                     $curr_link = $add_link->copy()->add(array('address' => $ad->bare_address, 'name' => $ad->personal));
                     $ret .= Horde::link($curr_link, sprintf(_("Add %s to my Address Book"), $ad->bare_address)) . '<span class="iconImg addrbookaddImg"></span></a>';
                 }
                 $group_array[] = $ret;
             }
             $addr_array[] = htmlspecialchars($ob->groupname) . ':' . (count($group_array) ? ' ' . implode(', ', $group_array) : '');
         } else {
             $ret = htmlspecialchars(strval($ob));
             if ($link) {
                 $clink = new IMP_Compose_Link(array('to' => strval($ob)));
                 $ret = Horde::link($clink->link(), sprintf(_("New Message to %s"), strval($ob))) . $ret . '</a>';
             }
             /* Append the add address icon to every address if contact
              * manager is available. */
             if ($add_link) {
                 $curr_link = $add_link->copy()->add(array('address' => $ob->bare_address, 'name' => $ob->personal));
                 $ret .= Horde::link($curr_link, sprintf(_("Add %s to my Address Book"), $ob->bare_address)) . '<span class="iconImg addrbookaddImg"></span></a>';
             }
             $addr_array[] = $ret;
         }
     }
     /* If left with an empty address list ($ret), inform the user that the
      * recipient list is purposely "undisclosed". */
     if (empty($addr_array)) {
         $ret = _("Undisclosed Recipients");
     } else {
         /* Build the address line. */
         $addr_count = count($addr_array);
         $ret = '<span class="nowrap">' . implode(',</span> <span class="nowrap">', $addr_array) . '</span>';
         if ($link && $addr_count > 15) {
             $ret = '<span>' . '<span onclick="[ this, this.next(), this.next(1) ].invoke(\'toggle\')" class="widget largeaddrlist">' . sprintf(_("Show Addresses (%d)"), $addr_count) . '</span>' . '<span onclick="[ this, this.previous(), this.next() ].invoke(\'toggle\')" class="widget largeaddrlist" style="display:none">' . _("Hide Addresses") . '</span>' . '<span style="display:none">' . $ret . '</span></span>';
         }
     }
     return $ret;
 }
Exemplo n.º 3
0
 public function testIterateEmptyArray()
 {
     $ob = new Horde_Mail_Rfc822_List();
     foreach ($ob as $val) {
         $this->fail('Nothing to iterate.');
     }
     $ob = new Horde_Mail_Rfc822_List(new Horde_Mail_Rfc822_Group());
     $ob->setIteratorFilter(Horde_Mail_Rfc822_List::HIDE_GROUPS);
     foreach ($ob as $val) {
         $this->fail('Nothing to iterate.');
     }
 }
Exemplo n.º 4
0
 /**
  * Updates a list (blacklist/whitelist) filter.
  *
  * @param mixed $addresses  Addresses of the filter.
  * @param integer $type     Type of filter.
  *
  * @return Horde_Storage_Rule  The filter object.
  */
 public static function updateListFilter($addresses, $type)
 {
     global $injector;
     $storage = $injector->getInstance('Ingo_Factory_Storage')->create();
     $rule = $storage->retrieve($type);
     switch ($type) {
         case $storage::ACTION_BLACKLIST:
             $rule->setBlacklist($addresses);
             $addr = $rule->getBlacklist();
             $rule2 = $storage->retrieve($storage::ACTION_WHITELIST);
             $addr2 = $rule2->getWhitelist();
             break;
         case $storage::ACTION_WHITELIST:
             $rule->setWhitelist($addresses);
             $addr = $rule->getWhitelist();
             $rule2 = $storage->retrieve($storage::ACTION_BLACKLIST);
             $addr2 = $rule2->getBlacklist();
             break;
     }
     /* Filter out the rule's addresses in the opposite filter. */
     $ob = new Horde_Mail_Rfc822_List($addr2);
     $ob->setIteratorFilter(0, $addr);
     switch ($type) {
         case $storage::ACTION_BLACKLIST:
             $rule2->setWhitelist($ob->bare_addresses);
             break;
         case $storage::ACTION_WHITELIST:
             $rule2->setBlacklist($ob->bare_addresses);
             break;
     }
     $storage->store($rule);
     $storage->store($rule2);
     return $rule;
 }