Пример #1
0
 /**
  */
 protected function _init()
 {
     global $injector, $notification, $page_output;
     $this->_assertCategory(Ingo_Storage::ACTION_WHITELIST, _("Whitelist"));
     $ingo_storage = $injector->getInstance('Ingo_Factory_Storage')->create();
     $whitelist = $ingo_storage->retrieve(Ingo_Storage::ACTION_WHITELIST);
     /* Token checking & perform requested actions. */
     switch ($this->_checkToken(array('rule_update'))) {
         case 'rule_update':
             try {
                 Ingo::updateListFilter($this->vars->whitelist, Ingo_Storage::ACTION_WHITELIST);
                 $notification->push(_("Changes saved."), 'horde.success');
                 Ingo_Script_Util::update();
             } catch (Ingo_Exception $e) {
                 $notification->push($e);
             }
             break;
     }
     /* Get the whitelist rule. */
     $wl_rule = $ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS)->findRule(Ingo_Storage::ACTION_WHITELIST);
     /* Prepare the view. */
     $view = new Horde_View(array('templatePath' => INGO_TEMPLATES . '/basic/whitelist'));
     $view->addHelper('Horde_Core_View_Helper_Help');
     $view->addHelper('Horde_Core_View_Helper_Label');
     $view->addHelper('Text');
     $view->disabled = !empty($wl_rule['disable']);
     $view->formurl = $this->_addToken(self::url());
     $view->whitelist = implode("\n", $whitelist->getWhitelist());
     $page_output->addScriptFile('whitelist.js');
     $page_output->addInlineJsVars(array('IngoWhitelist.filtersurl' => strval(Ingo_Basic_Filters::url()->setRaw(true))));
     $this->title = _("Whitelist Edit");
     $this->output = $view->render('whitelist');
 }
Пример #2
0
 /**
  */
 protected function _init()
 {
     global $injector, $notification, $page_output;
     $this->_assertCategory(Ingo_Storage::ACTION_BLACKLIST, _("Blacklist"));
     $ingo_script = $injector->getInstance('Ingo_Factory_Script')->create(Ingo::RULE_BLACKLIST);
     $ingo_storage = $injector->getInstance('Ingo_Factory_Storage')->create();
     $flagonly = $ingo_script && in_array(Ingo_Storage::ACTION_FLAGONLY, $ingo_script->availableActions());
     /* Token checking & perform requested actions. */
     switch ($this->_checkToken(array('rule_update'))) {
         case 'rule_update':
             switch ($this->vars->action) {
                 case 'delete':
                     $folder = '';
                     break;
                 case 'mark':
                     $folder = Ingo::BLACKLIST_MARKER;
                     break;
                 case 'folder':
                     $folder = $this->validateMbox('actionvalue');
                     break;
                 default:
                     $folder = null;
                     break;
             }
             if (!$flagonly && $folder == Ingo::BLACKLIST_MARKER) {
                 $notification->push("Not supported by this script generator.", 'horde.error');
             } else {
                 try {
                     $blacklist = Ingo::updateListFilter($this->vars->blacklist, Ingo_Storage::ACTION_BLACKLIST);
                     $blacklist->setBlacklistFolder($folder);
                     $ingo_storage->store($blacklist);
                     $notification->push(_("Changes saved."), 'horde.success');
                     Ingo_Script_Util::update();
                 } catch (Ingo_Exception $e) {
                     $notification->push($e->getMessage(), $e->getCode());
                 }
             }
             break;
     }
     /* Get the blacklist object. */
     if (!isset($blacklist)) {
         try {
             $blacklist = $ingo_storage->retrieve(Ingo_Storage::ACTION_BLACKLIST);
         } catch (Ingo_Exception $e) {
             $notification->push($e);
             $blacklist = new Ingo_Storage_Blacklist();
         }
     }
     /* Create the folder listing. */
     $blacklist_folder = $blacklist->getBlacklistFolder();
     $folder_list = Ingo_Flist::select($blacklist_folder, 'actionvalue');
     /* Get the blacklist rule. */
     $bl_rule = $ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS)->findRule(Ingo_Storage::ACTION_BLACKLIST);
     /* Prepare the view. */
     $view = new Horde_View(array('templatePath' => INGO_TEMPLATES . '/basic/blacklist'));
     $view->addHelper('Horde_Core_View_Helper_Help');
     $view->addHelper('Horde_Core_View_Helper_Label');
     $view->addHelper('FormTag');
     $view->addHelper('Tag');
     $view->addHelper('Text');
     $view->blacklist = implode("\n", $blacklist->getBlacklist());
     $view->disabled = !empty($bl_rule['disable']);
     $view->flagonly = $flagonly;
     $view->folder = $blacklist_folder;
     $view->folderlist = $folder_list;
     $view->formurl = $this->_addToken(self::url());
     $page_output->addScriptFile('blacklist.js');
     $page_output->addInlineJsVars(array('IngoBlacklist.filtersurl' => strval(Ingo_Basic_Filters::url()->setRaw(true))));
     $this->header = _("Blacklist Edit");
     $this->output = $view->render('blacklist');
 }
Пример #3
0
 /**
  * Add addresses to the whitelist.
  *
  * @param string $addresses  The addresses to add to the whitelist.
  */
 public function whitelistFrom($addresses)
 {
     global $injector, $notification;
     try {
         $wl = $injector->getInstance('Ingo_Factory_Storage')->create()->retrieve(Ingo_Storage::ACTION_WHITELIST)->getWhitelist();
         Ingo::updateListFilter(array_merge($wl, $addresses), Ingo_Storage::ACTION_WHITELIST);
         Ingo_Script_Util::update(false);
         foreach ($addresses as $from) {
             $notification->push(sprintf(_("The address \"%s\" has been added to your whitelist."), $from));
         }
     } catch (Ingo_Exception $e) {
         $notification->push($e);
     }
 }