public static function display() { if (!is_numeric($_GET['id'])) { cc_redirect(Admin::link('users')); } if ($_POST['cc_form'] == 'edit-group') { $id = $_GET['id']; $previous = (array) unserialize(urldecode($_POST['previous'])); $group = $_POST['group']; $permissions = (array) $_POST['permissions']; $new = array_merge($previous, $permissions); foreach ($new as $k => $v) { if ($v == "1") { $new[$k] = true; } if (!array_key_exists($k, $permissions)) { $new[$k] = false; } } if (DB::update('users', array('name', 'data'), array($group, serialize(filter('admin_edit_group_data', array('permissions' => $new)))), array('users_id = ?', $id))) { $message = Message::success(__('admin', 'group-information-updated')); } else { $message = Message::error(__('admin', 'database-error')); } } $p = Permissions::getAll(); $g = new Group((int) $_GET['id']); $p_form = new Form(''); $p_form->setCC_Form('edit-group'); $p_form->startFieldset(__('admin', 'group-information')); $p_form->addInput(__('admin', 'group-name'), 'text', 'group', $g->getName()); $p_form->endFieldset(); $p_form->addHTML(sprintf("<h3>%s</h3>", __('admin', 'permissions'))); $p_table = new Table('permissions'); $p_table->addHeader(array('Name', 'Allowed')); foreach ($p as $k => $v) { $previous[$v['name']] = $g->isAllowed($v['name']); $p_table->addRow(array(__('permissions', $v['name']), sprintf('<input type="checkbox" name="permissions[%s]"%svalue="1"/>', $v['name'], $g->isAllowed($v['name']) ? ' checked="checked"' : ''))); } $p_form->addHidden('previous', urlencode(serialize($previous))); $p_form->addHTML($p_table->html()); $p_form->addSubmit('', 'save-permissions', __('admin', 'save-changes')); return array(sprintf('%s: %s', __('admin', 'edit-group'), $g->getName()), $message . $p_form->html()); }
public static function display() { $users = Database::select('users', '*', array('type = ?', 'user'), array('name', 'ASC')); $groups = Database::select('users', '*', array('type = ?', 'group'), array('name', 'ASC')); $groups_array = array(); $groups_table = new Table("groups", array('', 'actions')); $groups_table->addHeader(array(__('admin', "group-name"), __('admin', "actions"))); foreach ($groups->fetchAll(PDO::FETCH_ASSOC) as $key => $value) { $group_array[$value['users_id']] = $value['name']; $groups_table->addRow(array($value['name'], icon('group_edit', Admin::link('users/edit-group', array('id' => $value['users_id'])), false, array('rel' => 'tooltip', 'title' => StringUtils::escapeForHTMLAttr(sprintf(__('admin', 'edit-specific'), $value['name'])))) . icon('group_delete', Admin::link('users/delete', array('id' => $value['users_id'], 'type' => 'group')), false, array('class' => 'delete-link', 'rel' => 'tooltip', 'title' => StringUtils::escapeForHTMLAttr(sprintf(__('admin', 'delete-specific'), $value['name'])))))); } $groups_table = $groups_table->html(); $users_table = new Table("users", array('', '', 'actions')); $users_table->addHeader(array(__('admin', 'name'), __('admin', 'group'), __('admin', 'actions'))); foreach ($users->fetchAll(PDO::FETCH_ASSOC) as $key => $value) { $users_table->addRow(array($value['name'], $group_array[$value['group']], icon('user_edit', Admin::link('users/edit-user', array('id' => $value['users_id'])), false, array('rel' => 'tooltip', 'title' => StringUtils::escapeForHTMLAttr(sprintf(__('admin', 'edit-specific'), $value['name'])))) . icon('user_delete', Admin::link('users/delete', array('id' => $value['users_id'], 'type' => 'user')), false, array('class' => 'delete-link', 'rel' => 'tooltip', 'title' => StringUtils::escapeForHTMLAttr(sprintf(__('admin', 'delete-specific'), $value['name'])))))); } $r = "<h3>" . __('admin', 'users') . "</h3>" . $users_table->html() . "<h3>" . __('admin', 'groups') . "</h3>" . $groups_table; return array(__('admin', 'user-management'), $r); }
/** * Return html table from data array * * @param array $data array of data * @param array $tableInfo array of common table info and settings * @return void */ private static function writeTable($data = false, $tableInfo = false) { if ($data) { $args = ""; $colKeys = false; $titles = false; //Search and collect information about the table in $tableInfo //High priority is given to $tableInfo(second parameter) if (!$tableInfo) { $tableInfo = $data['tableInfo']; } elseif ($data['tableInfo']) { $tableInfo = array_replace_recursive($data['tableInfo'], $tableInfo); } $data['tableInfo'] = $tableInfo; $date = new DateTime('now'); $_SESSION['class.table']['date'] = $date; $_SESSION['class.table']['array'] = $data; unset($data['tableInfo']); if ($tableInfo) { //Following work will be happening with global variable $info self::$info = $tableInfo; unset($tableInfo); //Collecting information about columns(titles and column keys) if (self::$info['cols']) { $colKeys = array_keys(self::$info['cols']); $titles = array_filter(self::$info['cols']); unset(self::$info['cols']); } } self::$info['class'] = trim("class.table " . self::$info['class']); //Collecting HTML parameters for table $args = self::convertRulesToHtml(self::$info); //Height of each row will be calculated automatically by the default if (!isset(self::$info['rowspan'])) { self::$info['rowspan'] = true; } self::$html .= "\n\t\t<table{$args}>"; self::$html .= "\n\t\t\t<caption>\n\t\t\t\t\t\t\t\t\t\t\t<div class='forToggle'><div class='forVAlign'></div><button>—охранить</button></div>\n\t\t\t\t\t\t\t\t\t\t</caption>"; //If title was set then write if (is_array($titles) && sizeof($titles)) { self::$html .= "\n\t\t<tr>"; foreach ($titles as $title) { self::$html .= "\n\t\t\t<th>{$title}</th>"; } self::$html .= "\n\t\t</tr>"; } //Write the rows foreach ($data as $info) { self::writeRow($info, $colKeys); } self::$html .= "\n\t\t</table>"; $html = self::$html; //Clearing of global variables for the next use a static class self::$info = null; self::$html = null; return $html; } }