. * * @category Settings * @package StatusNet * @author Evan Prodromou * @copyright 2010 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 * @link http://status.net/ */ if (!defined('STATUSNET')) { exit(1); } /** * Administer blacklist * * @category Admin * @package StatusNet * @author Evan Prodromou * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 * @link http://status.net/ */ class BlacklistadminpanelAction extends AdminPanelAction { /** * title of the admin panel * * @return string title */ function title() { return _('Blacklist'); } /** * Panel instructions * * @return string instructions */ function getInstructions() { return _('Blacklisted URLs and nicknames'); } /** * Show the actual form * * @return void * * @see BlacklistAdminPanelForm */ function showForm() { $form = new BlacklistAdminPanelForm($this); $form->show(); return; } /** * Save the form settings * * @return void */ function saveSettings() { static $settings = array( 'blacklist' => array('nicknames', 'urls'), ); $values = array(); foreach ($settings as $section => $parts) { foreach ($parts as $setting) { $values[$section][$setting] = $this->trimmed("$section-$setting"); } } // This throws an exception on validation errors $this->validate($values); // assert(all values are valid); $config = new Config(); $config->query('BEGIN'); foreach ($settings as $section => $parts) { foreach ($parts as $setting) { Config::save($section, $setting, $values[$section][$setting]); } } $config->query('COMMIT'); return; } /** * Validate the values * * @param array &$values 2d array of values to check * * @return boolean success flag */ function validate(&$values) { return true; } } /** * Admin panel form for blacklist panel * * @category Admin * @package StatusNet * @author Evan Prodromou * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 * @link http://status.net/ */ class BlacklistAdminPanelForm extends Form { /** * ID of the form * * @return string ID */ function id() { return 'blacklistadminpanel'; } /** * Class of the form * * @return string class */ function formClass() { return 'form_settings'; } /** * Action we post to * * @return string action URL */ function action() { return common_local_url('blacklistadminpanel'); } /** * Show the form controls * * @return void */ function formData() { $this->out->elementStart('ul', 'form_data'); $this->out->elementStart('li'); $this->out->textarea('blacklist-nicknames', _m('Nicknames'), common_config('blacklist', 'nicknames'), _('Patterns of nicknames to block, one per line')); $this->out->elementEnd('li'); $this->out->elementStart('li'); $this->out->textarea('blacklist-urls', _m('URLs'), common_config('blacklist', 'urls'), _('Patterns of URLs to block, one per line')); $this->out->elementEnd('li'); $this->out->elementEnd('ul'); } /** * Buttons for submitting * * @return void */ function formActions() { $this->out->submit('submit', _('Save'), 'submit', null, _('Save site settings')); } }