/** * 缓存设置 */ public function websiteAction() { if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (empty($_POST['Setting']) || !is_array($_POST['Setting'])) { $this->redirect('/setting/website'); } foreach ($_POST['Setting'] as $_k => $_v) { $this->db->update('{{setting}}', array('setting_value' => $_v), 'setting_identify=:setting_identify', array(':setting_identify' => $_k)); } //记录操作日志 $message = '{user_name}修改了站点设置'; $data = array('data' => $_POST['Setting']); UserLogsModel::inst()->add('Setting/Website', '', 'Modify', 'success', $message, $data); //WebsiteModel::inst()->updateCache(); } $settings = SettingModel::inst()->getSettingsByGroup('cache'); $this->getView()->assign(array('settings' => $settings)); }
/** * @param integer pagesize * @param integer CID * @param integer CState * @param integer GState * * @param string order * * @return array $rows */ public function Pages($params = array()) { //设置默认参数 $_defaults_params = array('allow_cache' => false, 'page' => isset($_GET['page']) ? intval($_GET['page']) : 1, 'pagesize' => 15); $params = array_merge($_defaults_params, $params); //有开启缓存功能,则从缓存中取数据, 如果有数据,则直接返回结果 if ($params['allow_cache'] && isset($this->cache)) { $cache_key = 'user.pages.' . serialize($params); $ret = $this->cache->get($_cache_key); if ($ret && is_array($ret)) { return $ret; } } //添加条件 $builds = array('select' => 'COUNT(u.user_id) AS COUNT', 'from' => array('{{user}}', 'u'), 'leftJoin' => array('{{group}}', 'g', '`g`.`group_id`=`u`.`group_id`')); if (isset($params['status']) && !empty($params['status'])) { $builds['where'][] = array('AND', 'u.status=:status'); $sql_params = array(':status' => $params['status']); } else { $builds['where'][] = array('AND', 'u.status>:status'); $sql_params = array(':status' => self::STAT_STATUS_DELETED); } if (isset($params['group_id']) && !empty($params['group_id'])) { $groups = GroupModel::inst()->getGroupsByOwner($params['group_id']); $group_ids = array(); $_addons_groups = array(); foreach ($groups as $_k => $_v) { $_addons_groups[] = array("OR", "`u`.`group_id`=:group_id_{$_k}"); $sql_params[":group_id_{$_k}"] = $_v['group_id']; } $builds['where'][] = array('AND', $_addons_groups); } if (isset($params['search_key']) && $params['search_key']) { $builds['where'][] = array('AND', array('OR LIKE', 'u.user_name', ':search_key_1'), array('OR LIKE', 'u.realname', ':search_key_2'), array('OR LIKE', 'u.email', ':search_key_3')); $sql_params[':search_key_1'] = "%{$params['search_key']}%"; $sql_params[':search_key_2'] = "%{$params['search_key']}%"; $sql_params[':search_key_3'] = "%{$params['search_key']}%"; } $sql = $this->buildQuery($builds); //统计数量 $count = $this->db->queryScalar($sql, $sql_params); //分页处理 $pages = new CPagination($count); //设置分页大小 $pages->pageSize = $params['pagesize']; //清空前面执行过的SQL if (isset($params['orderby']) && $params['orderby']) { $builds['order'] = $params['orderby']; } else { $builds['order'] = array('`r`.`role_rank` ASC', '`u`.`user_rank` ASC', '`u`.`user_id` ASC'); } $builds['select'] = 'u.user_id, u.user_name, u.realname, u.email, u.user_id, u.group_id, g.group_name, u.logintimes, u.lastvisit, u.lastip, u.user_rank, u.lasttime, u.dateline, u.is_system, u.status'; $pages->applyLimit($builds); $sql = $this->buildQuery($builds); $result['pages'] = $pages; $result['rows'] = $this->db->queryAll($sql, $sql_params); //有开启缓存,则把结果添加到缓存中 if ($params['allow_cache'] && isset($this->cache)) { $cache_time_out = SettingModel::inst()->getSettingCache('ADMIN_LOGS_TIME_OUT'); $this->cache->add($cache_key, $result, $cache_time_out); unset($cache_time_out, $cache_key); } return $result; }
/** * @param integer pagesize * @param integer CID * @param integer CState * @param integer GState * * @param string order * * @return array $rows */ public function Pages($params = array()) { //设置默认参数 $_defaults_params = array('allow_cache' => false, 'page' => isset($_GET['page']) ? intval($_GET['page']) : 1, 'pagesize' => 10); $params = array_merge($_defaults_params, $params); //有开启缓存功能,则从缓存中取数据, 如果有数据,则直接返回结果 if ($params['allow_cache'] && isset($this->cache)) { $cacheKey = md5('admin.logs.pages' . serialize($params)); $ret = $this->cache->get($cacheKey); if ($ret && is_array($ret)) { return $ret; } } //添加条件 $builds = array('select' => 'COUNT(ul.log_id) AS COUNT', 'from' => array('{{user_logs}}', 'ul')); $sql_params = array(); if (isset($params['searchKey']) && $params['searchKey']) { $builds[] = array('AND', array(array('OR LIKE', 'ul.log_type', ':searchKey_lType'), array('OR LIKE', 'ul.log_action', ':searchKey_lAction'), array('OR LIKE', 'ul.log_result', ':searchKey_lResult'), array('OR LIKE', 'ul.log_message', ':searchKey_lMessage'), array('OR LIKE', 'ul.log_data', ':searchKey_lData'))); $sql_params[':searchKey_lType'] = "%{$params['searchKey']}%"; $sql_params[':searchKey_lAction'] = "%{$params['searchKey']}%"; $sql_params[':searchKey_lResult'] = "%{$params['searchKey']}%"; $sql_params[':searchKey_lMessage'] = "%{$params['searchKey']}%"; $sql_params[':searchKey_lData'] = "%{$params['searchKey']}%"; } $sql = $this->buildQuery($builds); //统计数量 $count = $this->db->queryScalar($sql, $sql_params); //分页处理 $pages = new CPagination($count); //设置分页大小 $pages->pageSize = $params['pagesize']; if (isset($params['orderby']) && $params['orderby']) { $builds['order'] = $params['orderby']; $cmd->order(); } else { $builds['order'] = array('ul.lasttime DESC'); } $builds['select'] = 'ul.log_id, ul.user_id, ul.log_type, ul.log_item_id, ul.log_action, ul.log_result, ul.log_message, ul.log_data, ul.user_ip, ul.lasttime'; $pages->applyLimit($builds); $sql = $this->buildQuery($builds); $result['pages'] = $pages; $result['rows'] = $this->db->queryAll($sql); foreach ($result['rows'] as $key => $row) { $data = json_decode($row['log_data'], true); foreach ($data as $__key => $__value) { $row['log_message'] = str_replace("{{$__key}}", "\"{$__value}\"", $row['log_message']); } $result['rows'][$key] = $row; } //有开启缓存,则把结果添加到缓存中 if ($params['allow_cache'] && isset($this->cache)) { $cacheTimeOut = SettingModel::inst()->getSettingValue('ADMIN_LOGS_TIME_OUT'); $this->cache->set($cacheKey, $result, $cacheTimeOut); unset($cacheTimeOut, $cacheKey); } return $result; }