/** * Edit group permission (use Ajax) * * @param integer $id_group Group ID * @return void */ public function gperm($id_group) { // load dictionaries $this->dict->get_wordarray(array('form', 'groups')); // get objects (group permissions) $mod = new Permission_model(); $gp = X4Utils_helper::obj2array($mod->get_gprivs($id_group), 'what', 'level'); // get area data $g = $mod->get_by_id($id_group, 'groups', 'id_area'); $a = $mod->get_by_id($g->id_area, 'areas', 'private'); // build the form $fields = array(); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $id_group, 'name' => 'id'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $a->private, 'name' => 'xrif'); // available permission levels $l = $mod->get_levels(); $fields[] = array('label' => null, 'type' => 'html', 'value' => '<div class="band inner-pad clearfix">'); // registered group permissions $types = $mod->get_privtypes($a->private); foreach ($types as $i) { $fields[] = array('label' => null, 'type' => 'html', 'value' => '<div class="one-half xs-one-whole">'); // actual permission level $value = isset($gp[$i->name]) ? $gp[$i->name] : 0; $fields[] = array('label' => constant($i->description), 'type' => 'select', 'value' => $value, 'name' => $i->name, 'options' => array($l, 'id', 'name', 0), 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $value, 'name' => 'old_' . $i->name); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div>'); } $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div>'); // if submitted if (X4Route_core::$post) { $e = X4Validation_helper::form($fields, 'gprivs'); if ($e) { $this->permitting($_POST); } else { $this->notice($fields); } die; } // contents $view = new X4View_core('editor'); $view->title = _GROUP_PERMISSION; // form builder $view->form = '<div id="scrolled">' . X4Form_helper::doform('gprivs', $_SERVER["REQUEST_URI"], $fields, array(_RESET, _SUBMIT, 'buttons'), 'post', '', 'onclick="setForm(\'gprivs\');"') . '</div>'; $view->js = ' <script> window.addEvent("domready", function() { var myScroll = new Scrollable($("scrolled")); }); </script>'; $view->render(TRUE); }
/** * Edit User permission on table's records * * @param integer $id_user User ID * @param integer $id_area Area ID * @param string $table Table name * @return void */ public function permissions($id_user, $id_area, $table) { // load dictionaries $this->dict->get_wordarray(array('form', 'groups', 'users')); $mod = new Permission_model(); // get user name $u = $mod->get_by_id($id_user, 'users', 'username'); // get area name $a = $mod->get_by_id($id_area, 'areas', 'name'); // get user privileges on the table $what = $mod->get_detail($id_user, $id_area, $table); // permission levels $l = $mod->get_levels(); $fields = array(); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $id_user, 'name' => 'id_user'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $id_area, 'name' => 'id_area'); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $table, 'name' => 'what'); $c = 0; // if table is not empty if ($what) { $fields[] = array('label' => null, 'type' => 'html', 'value' => '<div class="band inner-pad clearfix">'); // each record foreach ($what as $i) { $fields[] = array('label' => null, 'type' => 'html', 'value' => '<div class="one-half xs-one-whole">'); $value = is_null($i->level) ? 0 : $i->level; $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $i->id, 'name' => 'id_' . $c); $fields[] = array('label' => null, 'type' => 'hidden', 'value' => $value, 'name' => 'old_value_' . $c); $fields[] = array('label' => $i->name, 'type' => 'select', 'value' => $value, 'name' => 'value_' . $c, 'options' => array($l, 'id', 'name', 0), 'suggestion' => strip_tags($i->description), 'extra' => 'class="large"'); $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div>'); $c++; } $fields[] = array('label' => null, 'type' => 'html', 'value' => '</div>'); } // if submitted if (X4Route_core::$post) { $e = X4Validation_helper::form($fields, 'detpriv'); if ($e) { $this->detailing($_POST); } else { $this->notice($fields); } die; } // content $view = new X4View_core('editor'); $view->title = _EDIT_PRIV . ': ' . $a->name . _TRAIT_ . ucfirst($table); // form builder $view->form = '<div id="scrolled">' . X4Form_helper::doform('detpriv', $_SERVER["REQUEST_URI"], $fields, array(_RESET, _SUBMIT, 'buttons'), 'post', '', 'onclick="setForm(\'detpriv\');"') . '</div>'; $view->js = ' <script> window.addEvent("domready", function() { var myScroll = new Scrollable($("scrolled")); }); </script>'; $view->render(TRUE); }