/**
  * Save the permissions
  *
  * @access	public
  * @return	void		Outputs to screen
  **/
 public function permDoEdit()
 {
     /* INI */
     $perms = array();
     $this->request['f'] = intval($this->request['f']);
     /* Security Check */
     $this->registry->adminFunctions->checkSecurityKey();
     /* Save the permissions */
     require_once IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php';
     $permissions = new classPublicPermissions(ipsRegistry::instance());
     $permissions->savePermMatrix($this->request['perms'], $this->request['f'], 'forum');
     /* Log */
     $this->registry->adminFunctions->saveAdminLog(sprintf($this->lang->words['for_permeditedin'], $this->request['name']));
     $this->recacheForums();
     /* Previous Forum */
     if ($this->request['doprevious'] and $this->request['doprevious'] and $this->request['previd'] > 0) {
         $this->registry->output->global_message = $this->lang->words['for_permedited'];
         $this->request['f'] = $this->request['previd'];
         $this->registry->output->silentRedirect("{$this->settings['base_url']}{$this->html->form_code}do=pedit&f=" . $this->request['f']);
     } else {
         if ($this->request['donext'] and $this->request['donext'] and $this->request['nextid'] > 0) {
             $this->registry->output->global_message = $this->lang->words['for_permedited'];
             $this->request['f'] = $this->request['nextid'];
             $this->registry->output->silentRedirect("{$this->settings['base_url']}{$this->html->form_code}do=pedit&f=" . $this->request['f']);
         } else {
             if ($this->request['reload'] and $this->request['reload']) {
                 $this->registry->output->silentRedirect("{$this->settings['base_url']}{$this->html->form_code}do=pedit&f=" . $this->request['f']);
             } else {
                 $this->registry->output->doneScreen($this->lang->words['for_permedited2'], $this->lang->words['for_control'], $this->html->form_code, 'redirect');
             }
         }
     }
 }
 /**
  * Form for modifying a permission set
  *
  * @access	private
  * @return	void		[Outputs to screen]
  */
 private function _permissionSetForm()
 {
     /* ID */
     $id = intval($this->request['id']);
     $matricies = array();
     $apps = array();
     /* Query Set Name */
     $set_data = $this->DB->buildAndFetch(array('select' => '*', 'from' => 'forum_perms', 'where' => "perm_id={$id}"));
     /* Permissions Class */
     require_once IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php';
     $perm_obj = new classPublicPermissions($this->registry);
     /* Loop through applications */
     foreach ($this->registry->getApplications() as $app) {
         /* Check to see if there is a permission map */
         $_file = IPSLib::getAppDir($app['app_directory']) . '/extensions/coreExtensions.php';
         if (file_exists($_file)) {
             /* Get the permission mappings */
             require_once $_file;
             /* Check for a config array */
             if (isset($_PERM_CONFIG) && is_array($_PERM_CONFIG) && count($_PERM_CONFIG)) {
                 /* Loop through the types */
                 foreach ($_PERM_CONFIG as $perm_type) {
                     /* Check for a class */
                     $_class = $app['app_directory'] . 'PermMapping' . $perm_type;
                     if (class_exists($_class)) {
                         /* Create the object */
                         $perm_map = new $_class();
                         /* Make sure the function exists */
                         if (method_exists($perm_map, 'getPermItems')) {
                             $matricies[$app['app_title']] = $perm_obj->adminItemPermMatrix($perm_map, $perm_map->getPermItems(), $id, $app['app_directory'], $perm_type);
                             $apps[$app['app_directory']] = $perm_type;
                         }
                     }
                 }
             }
         }
     }
     /* Output */
     $this->registry->output->html .= $this->html->permissionEditor($set_data['perm_name'], $matricies, $id, $apps);
 }
 /**
  * Add/Edit Calendar Form
  *
  * @access	public
  * @param	string	$type	Either new or edit
  * @return	void
  */
 public function calendarForm($type = 'new')
 {
     //-----------------------------------------
     // Init Vars
     //-----------------------------------------
     $cal_id = $this->request['cal_id'] ? intval($this->request['cal_id']) : 0;
     $form = array();
     $form['perm_read'] = "";
     $form['perm_post'] = "";
     $form['perm_nomod'] = "";
     $form['perm_read_all'] = "";
     $form['perm_post_all'] = "";
     $form['perm_nomod_all'] = "";
     /* New Calendar */
     if ($type == 'new') {
         /* Form Bits */
         $formcode = 'calendar_add_do';
         $title = $this->lang->words['c_addcal'];
         $button = $this->lang->words['c_addcal'];
         /* Data */
         $calendar = array('perm_read' => '', 'perm_post' => '', 'perm_nomod' => '', 'cal_title' => '', 'cal_moderate' => '', 'cal_event_limit' => '', 'cal_bday_limit' => '', 'cal_rss_export' => '', 'cal_rss_update' => '', 'cal_rss_export_days' => '', 'cal_rss_export_max' => '', 'cal_id' => 0);
     } else {
         /* Data */
         $calendar = $this->DB->buildAndFetch(array('select' => 'c.*', 'from' => array('cal_calendars' => 'c'), 'where' => 'c.cal_id=' . $cal_id, 'add_join' => array(array('select' => 'p.*', 'from' => array('permission_index' => 'p'), 'where' => "p.perm_type='calendar' AND perm_type_id=c.cal_id", 'type' => 'left'))));
         if (!$calendar['cal_id']) {
             $this->registry->output->global_message = $this->lang->words['c_noid'];
             $this->calendarsList();
             return;
         }
         /* Form Bits */
         $formcode = 'calendar_edit_do';
         $title = $this->lang->words['c_editbutton'] . $calendar['cal_title'];
         $button = $this->lang->words['c_savebutton'];
     }
     /* Permissions */
     require_once IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php';
     $permissions = new classPublicPermissions(ipsRegistry::instance());
     $form['perm_matrix'] = $permissions->adminPermMatrix('calendar', $calendar);
     /* Form Elements */
     $form['cal_title'] = $this->registry->output->formInput('cal_title', IPSText::htmlspecialchars((isset($_POST['cal_title']) and $_POST['cal_title']) ? $_POST['cal_title'] : $calendar['cal_title']));
     $form['cal_moderate'] = $this->registry->output->formYesNo('cal_moderate', (isset($this->request['cal_moderate']) and $this->request['cal_moderate']) ? $this->request['cal_moderate'] : $calendar['cal_moderate']);
     $form['cal_event_limit'] = $this->registry->output->formSimpleInput('cal_event_limit', (isset($this->request['cal_event_limit']) and $this->request['cal_event_limit']) ? $this->request['cal_event_limit'] : $calendar['cal_event_limit'], 5);
     $form['cal_bday_limit'] = $this->registry->output->formSimpleInput('cal_bday_limit', (isset($this->request['cal_bday_limit']) and $this->request['cal_bday_limit']) ? $this->request['cal_bday_limit'] : $calendar['cal_bday_limit'], 5);
     $form['cal_rss_export'] = $this->registry->output->formYesNo('cal_rss_export', (isset($this->request['cal_rss_export']) and $this->request['cal_rss_export']) ? $this->request['cal_rss_export'] : $calendar['cal_rss_export']);
     $form['cal_rss_update'] = $this->registry->output->formSimpleInput('cal_rss_update', (isset($this->request['cal_rss_update']) and $this->request['cal_rss_update']) ? $this->request['cal_rss_update'] : $calendar['cal_rss_update'], 5);
     $form['cal_rss_export_days'] = $this->registry->output->formSimpleInput('cal_rss_export_days', (isset($this->request['cal_rss_export_days']) and $this->request['cal_rss_export_days']) ? $this->request['cal_rss_export_days'] : $calendar['cal_rss_export_days'], 5);
     $form['cal_rss_export_max'] = $this->registry->output->formSimpleInput('cal_rss_export_max', (isset($this->request['cal_rss_export_max']) and $this->request['cal_rss_export_max']) ? $this->request['cal_rss_export_max'] : $calendar['cal_rss_export_max'], 5);
     /* Output */
     $this->registry->output->html .= $this->html->calendarForm($form, $title, $formcode, $button, $calendar);
 }