public function load() { global $DB; global $user; $profile = new profile(); $profile->load($user->profile); $profile_menus = implode(",", $profile->menus); if ($DB->query('SELECT * FROM nv_menus WHERE id IN (' . $profile_menus . ') AND enabled = 1')) { $data = $DB->result(); $menu_pos = $DB->result('id'); for ($pm = 0; $pm < count($profile->menus); $pm++) { $p = array_search($profile->menus[$pm], $menu_pos); if ($p === false) { continue; } $this->menus[] = $data[$p]; $this->menus[count($this->menus) - 1]->items = $this->load_items($data[$p]->id, json_decode($data[$p]->functions)); } } }
function run() { global $user; global $layout; global $DB; $out = ''; $item = new profile(); switch ($_REQUEST['act']) { case 'json': case 1: // json data retrieval & operations switch ($_REQUEST['oper']) { case 'del': // remove rows $ids = $_REQUEST['ids']; foreach ($ids as $id) { $item->load($id); $item->delete(); } echo json_encode(true); break; default: // list or search $page = intval($_REQUEST['page']); $max = intval($_REQUEST['rows']); $offset = ($page - 1) * $max; $orderby = $_REQUEST['sidx'] . ' ' . $_REQUEST['sord']; $where = " 1=1 "; if ($_REQUEST['_search'] == 'true' || isset($_REQUEST['quicksearch'])) { if (isset($_REQUEST['quicksearch'])) { $where .= $item->quicksearch($_REQUEST['quicksearch']); } else { if (isset($_REQUEST['filters'])) { $where .= navitable::jqgridsearch($_REQUEST['filters']); } else { // single search $where .= ' AND ' . navitable::jqgridcompare($_REQUEST['searchField'], $_REQUEST['searchOper'], $_REQUEST['searchString']); } } } $DB->queryLimit('id,name', 'nv_profiles', $where, $orderby, $offset, $max); $dataset = $DB->result(); $total = $DB->foundRows(); //echo $DB->get_last_error(); $out = array(); for ($i = 0; $i < count($dataset); $i++) { $out[$i] = array(0 => $dataset[$i]['id'], 1 => $dataset[$i]['name']); } navitable::jqgridJson($out, $page, $offset, $max, $total); break; } session_write_close(); exit; break; case 'edit': case 2: // edit/new form if (!empty($_REQUEST['id'])) { $item->load(intval($_REQUEST['id'])); } if (isset($_REQUEST['form-sent'])) { $item->load_from_post(); try { $item->save(); permission::update_permissions(json_decode($_REQUEST['navigate_permissions_changes'], true), $item->id, 0); $layout->navigate_notification(t(53, "Data saved successfully."), false, false, 'fa fa-check'); } catch (Exception $e) { $layout->navigate_notification($e->getMessage(), true, true); } } $out = profiles_form($item); break; case 'delete': case 4: // remove if (!empty($_REQUEST['id'])) { $item->load(intval($_REQUEST['id'])); if ($item->delete() > 0) { $layout->navigate_notification(t(55, 'Item removed successfully.'), false); $out = profiles_list(); } else { $layout->navigate_notification(t(56, 'Unexpected error.'), false); $out = profiles_form($item); } } break; case 'list': case 0: // list / search result // list / search result default: $out = profiles_list(); break; } return $out; }
function nvweb_permissions_rows($website_id, $object_type, $object_id) { global $DB; $naviforms = new naviforms(); $object = new stdClass(); if ($object_type == 'user') { $object = new user(); $object->load($object_id); } else { if ($object_type == 'profile') { $object = new profile(); $object->load($object_id); } } $permissions_definitions = permission::get_definitions(); $permissions_values = permission::get_values($object_type, $object, $permissions_definitions, $website_id); $permissions_definitions = array_merge($permissions_definitions['system'], $permissions_definitions['functions'], $permissions_definitions['settings'], $permissions_definitions['extensions']); $out = array(); $iRow = 0; for ($i = 0; $i < count($permissions_definitions); $i++) { $control = ''; $type = ''; $scope = t(470, 'System'); $field_name = "wid" . $website_id . "." . $permissions_definitions[$i]['name']; if ($permissions_definitions[$i]['scope'] == 'functions') { $scope = t(240, 'Functions'); } else { if ($permissions_definitions[$i]['scope'] == 'settings') { $scope = t(459, 'Settings'); } else { if ($permissions_definitions[$i]['scope'] == 'extensions') { $scope = t(327, 'Extensions'); } } } switch ($permissions_definitions[$i]['type']) { case 'boolean': $type = t(206, 'Boolean'); $control = $naviforms->buttonset($field_name, array('true' => '<span class="ui-icon ui-icon-circle-check"></span>', 'false' => '<span class="ui-icon ui-icon-circle-close"></span>'), $permissions_values[$permissions_definitions[$i]['name']], "navigate_permission_change_boolean(this);"); break; case 'integer': $type = t(468, 'Integer'); $control = $naviforms->textfield($field_name, $permissions_values[$permissions_definitions[$i]['name']], '99%', 'navigate_permission_change_text(this);'); break; case 'option': case 'moption': $options = $permissions_definitions[$i]['options']; switch ($options) { case "websites": $options = array(); $DB->query("SELECT id, name FROM nv_websites"); $websites = $DB->result(); foreach ($websites as $ws) { $options[$ws->id] = $ws->name; } break; case "extensions": $options = array(); $extensions = extension::list_installed(null, true); foreach ($extensions as $ext) { $options[$ext['code']] = $ext['title']; } break; case "structure": $options = array(); $categories = $permissions_values[$permissions_definitions[$i]['name']]; if (!is_array($categories)) { $categories = array(); } $categories = array_filter($categories); $control = '<button data-permission-name="' . $permissions_definitions[$i]['name'] . '" data-action="structure" data-value="' . json_encode($categories) . '" title="' . count($categories) . '"><i class="fa fa-sitemap fa-fw"></i> ' . t(611, "Choose") . '</button>'; break; default: } $type = t(200, 'Options'); if (empty($control)) { $control = $naviforms->selectfield($field_name, array_keys($options), array_values($options), $permissions_values[$permissions_definitions[$i]['name']], 'navigate_permission_change_option(this);', $permissions_definitions[$i]['type'] == 'moption'); } break; case 'color': $type = t(441, 'Color'); $control = $naviforms->colorfield($field_name, $permissions_values[$permissions_definitions[$i]['name']], array(), 'navigate_permission_change_text'); break; case 'string': default: $type = t(469, 'String'); $control = $naviforms->textfield($field_name, $permissions_values[$permissions_definitions[$i]['name']], '99%', 'navigate_permission_change_text(this);'); break; } // search filters if (!empty($_REQUEST['filters'])) { $include = navitable::jqgridCheck(array('name' => $permissions_definitions[$i]['name'], 'scope' => $scope, 'type' => $type, 'value' => $permissions_values[$permissions_definitions[$i]['name']]), $_REQUEST['filters']); if (!$include) { continue; } } $out[$iRow] = array(0 => $permissions_definitions[$i]['name'], 1 => '<div data-description="' . $permissions_definitions[$i]['description'] . '">' . '<span class="ui-icon ui-icon-float ui-icon-info"></span> ' . '<span>' . $permissions_definitions[$i]['name'] . '</span></div>', 2 => $scope, 3 => $type, 4 => $control); $iRow++; } return $out; }