function run() { global $user; global $layout; global $DB; global $website; $out = ''; $item = new webuser(); switch ($_REQUEST['act']) { // json data retrieval & operations case 'json': case 1: 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 = ' website = ' . $website->id; if ($_REQUEST['_search'] == 'true' || isset($_REQUEST['quicksearch'])) { if (isset($_REQUEST['quicksearch'])) { $where .= $item->quicksearch($_REQUEST['quicksearch']); } else { if (isset($_REQUEST['filters'])) { $filters = $_REQUEST['filters']; if (is_array($filters)) { $filters = json_encode($filters); } $where .= navitable::jqgridsearch($filters); } else { // single search $where .= ' AND ' . navitable::jqgridcompare($_REQUEST['searchField'], $_REQUEST['searchOper'], $_REQUEST['searchString']); } } } $DB->queryLimit('id,avatar,username,email,fullname,groups,joindate,access,access_begin,access_end', 'nv_webusers', $where, $orderby, $offset, $max); $dataset = $DB->result(); $total = $DB->foundRows(); $dataset = grid_notes::summary($dataset, 'webuser', 'id'); global $webusers_groups_all; $webusers_groups_all = webuser_group::all_in_array(); //echo $DB->get_last_error(); $out = array(); for ($i = 0; $i < count($dataset); $i++) { $wug = str_replace('g', '', $dataset[$i]['groups']); $wug = explode(',', $wug); $wug = array_map(function ($in) { global $webusers_groups_all; if (empty($in)) { return; } return $webusers_groups_all[$in]; }, $wug); $blocked = 1; if ($dataset[$i]['access'] == 0 || $dataset[$i]['access'] == 2 && ($dataset[$i]['access_begin'] == 0 || $dataset[$i]['access_begin'] < time()) && ($dataset[$i]['access_end'] == 0 || $dataset[$i]['access_end'] > time())) { $blocked = 0; } $out[$i] = array(0 => $dataset[$i]['id'], 1 => empty($dataset[$i]['avatar']) ? '' : '<img title="' . $dataset[$i]['username'] . '" src="' . NAVIGATE_DOWNLOAD . '?wid=' . $website->id . '&id=' . urlencode($dataset[$i]['avatar']) . '&disposition=inline&width=32&height=32" />', 2 => '<div class="list-row" data-blocked="' . $blocked . '" title="' . $dataset[$i]['email'] . '">' . $dataset[$i]['username'] . '</div>', 3 => $dataset[$i]['fullname'], 4 => implode("<br />", $wug), 5 => core_ts2date($dataset[$i]['joindate'], true), 6 => $blocked == 0 ? '<img src="img/icons/silk/accept.png" />' : '<img src="img/icons/silk/cancel.png" />', 7 => $dataset[$i]['_grid_notes_html']); } navitable::jqgridJson($out, $page, $offset, $max, $total); break; } session_write_close(); exit; break; case 2: // edit/new form // edit/new form case 'create': case 'edit': if (!empty($_REQUEST['id'])) { $item->load(intval($_REQUEST['id'])); } if (isset($_REQUEST['form-sent'])) { $item->load_from_post(); try { $item->save(); property::save_properties_from_post('webuser', $item->id); $layout->navigate_notification(t(53, "Data saved successfully."), false, false, 'fa fa-check'); } catch (Exception $e) { $layout->navigate_notification($e->getMessage(), true, true); } if (!empty($item->id)) { users_log::action($_REQUEST['fid'], $item->id, 'save', $item->username, json_encode($_REQUEST)); } } else { if (!empty($item->id)) { users_log::action($_REQUEST['fid'], $item->id, 'load', $item->username); } } $out = webusers_form($item); break; case 4: // remove // remove case 'remove': if (!empty($_REQUEST['id'])) { $item->load(intval($_REQUEST['id'])); if ($item->delete() > 0) { $layout->navigate_notification(t(55, 'Item removed successfully.'), false); $out = webusers_list(); users_log::action($_REQUEST['fid'], $item->id, 'remove', $item->username, json_encode($_REQUEST)); } else { $layout->navigate_notification(t(56, 'Unexpected error.'), false); $out = webusers_form($item); } } break; case 90: // json request: timezones by country $timezones = property::timezones($_REQUEST['country']); if (empty($timezones)) { $timezones = property::timezones(); } echo json_encode($timezones); core_terminate(); break; case 'export': // export web users list to a CSV file users_log::action($_REQUEST['fid'], 0, 'export', "all", json_encode($_REQUEST)); webuser::export(); break; case 'webuser_groups_list': $out = webuser_groups_list(); break; case 'webuser_groups_json': $page = intval($_REQUEST['page']); $max = intval($_REQUEST['rows']); $offset = ($page - 1) * $max; $rs = webuser_group::all($_REQUEST['sidx'], $_REQUEST['sord']); $dataset = array(); foreach ($rs as $row) { $dataset[] = array('id' => $row->id, 'code' => $row->code, 'name' => $row->name); } $total = count($dataset); navitable::jqgridJson($dataset, $page, $offset, $max, $total, 'id'); session_write_close(); exit; break; case 'webuser_group_edit': $webuser_group = new webuser_group(); if (!empty($_REQUEST['id'])) { $webuser_group->load(intval($_REQUEST['id'])); } if (isset($_REQUEST['form-sent'])) { $webuser_group->load_from_post(); try { $ok = $webuser_group->save(); $layout->navigate_notification(t(53, "Data saved successfully."), false, false, 'fa fa-check'); users_log::action($_REQUEST['fid'], $webuser_group->id, 'save_webuser_group', $webuser_group->name, json_encode($_REQUEST)); } catch (Exception $e) { $layout->navigate_notification($e->getMessage(), true, true); } } else { users_log::action($_REQUEST['fid'], $webuser_group->id, 'load_webuser_group', $webuser_group->name, json_encode($_REQUEST)); } $out = webuser_groups_form($webuser_group); break; case 'webuser_group_delete': $webuser_group = new webuser_group(); if (!empty($_REQUEST['id'])) { $webuser_group->load(intval($_REQUEST['id'])); } try { $webuser_group->delete(); $layout->navigate_notification(t(55, 'Item removed successfully.'), false); $out = webuser_groups_list(); users_log::action($_REQUEST['fid'], $webuser_group->id, 'remove_webuser_group', $webuser_group->name, json_encode($_REQUEST)); } catch (Exception $e) { $out = $layout->navigate_message("error", t(24, 'Web users') . ' / ' . t(506, 'Groups'), t(56, 'Unexpected error.')); } break; case 0: // list / search result // list / search result case 'list': default: $out = webusers_list(); break; } return $out; }