public function deleteSqlLogsByIds($ids)
 {
     if (!ACloudSysCoreS::isArray($ids)) {
         return false;
     }
     return $this->getSqlLogDao()->deleteSqlLogsByIds($ids);
 }
 public function deleteSqlLogsByIds($ids)
 {
     if (!ACloudSysCoreS::isArray($ids)) {
         return false;
     }
     return $this->query(sprintf("DELETE FROM %s WHERE id IN (%s)", $this->tablename, ACloudSysCoreS::sqlImplode($ids)));
 }
 public function updateApiConfigByApiName($apiName, $fields)
 {
     list($apiName, $fields) = array(trim($apiName), $this->checkFields($fields));
     if (!$apiName || !ACloudSysCoreS::isArray($fields)) {
         return false;
     }
     return $this->getApisDao()->update($fields, $apiName);
 }
 public function updateTableSettingByTableName($tableName, $fields)
 {
     list($tableName, $fields) = array(trim($tableName), $this->checkFields($fields));
     if (!$tableName || !ACloudSysCoreS::isArray($fields)) {
         return false;
     }
     return $this->getTableSettingsDao()->update($fields, $tableName);
 }
 public function formatDeleteIds($ids)
 {
     if (!ACloudSysCoreS::isArray($ids)) {
         return array();
     }
     list($tableName, $primaryKey) = $this->getPrimaryKeyAndTable();
     $result = array();
     foreach ($ids as $id) {
         $result[] = array($primaryKey => intval($id));
     }
     return $result;
 }
 public function filterFields($data)
 {
     if (!ACloudSysCoreS::isArray($data)) {
         return $data;
     }
     $result = array();
     foreach ($data as $key => $fields) {
         if (ACloudSysCoreS::isArray($fields)) {
             unset($fields['password'], $fields['safecv']);
         }
         $result[$key] = $fields;
     }
     return $result;
 }
 public function getForumsByRange($startId, $endId)
 {
     list($startId, $endId) = array(intval($startId), intval($endId));
     if ($startId < 0 || $startId > $endId || $endId < 1) {
         return array();
     }
     $sql = sprintf("SELECT * FROM %s WHERE isshow = 1 AND fid >= %s AND fid <= %s", ACloudSysCoreS::sqlMetadata('{{bbs_forum}}'), ACloudSysCoreS::sqlEscape($startId), ACloudSysCoreS::sqlEscape($endId));
     $query = Wind::getComponent('db')->query($sql);
     $result = $query->fetchAll(null, PDO::FETCH_ASSOC);
     if (!ACloudSysCoreS::isArray($result)) {
         return array();
     }
     return $this->buildForumData($result);
 }
 public function crawlSqlLog($startTime, $endTime, $page, $perpage)
 {
     list($startTime, $endTime, $page, $perpage) = array(intval($startTime), intval($endTime), intval($page), intval($perpage));
     if ($startTime > $endTime) {
         return '';
     }
     $page < 1 && ($page = 1);
     $perpage < 1 && ($perpage = $this->perpage);
     $sqlLogService = ACloudSysCoreCommon::loadSystemClass('sql.log', 'config.service');
     $result = $sqlLogService->getSqlLogsByTimestamp($startTime, $endTime, $page, $perpage);
     if (!ACloudSysCoreS::isArray($result)) {
         return '';
     }
     return $this->outputDataFlow($result);
 }
 public function checkSecretKey($data)
 {
     if (!ACloudSysCoreS::isArray($data) || !isset($data['plaintext']) || !$data['plaintext'] || !isset($data['ciphertext']) || !$data['ciphertext']) {
         return array(false, 'apply_checkkey_invalid_params');
     }
     $keysService = ACloudSysCoreCommon::loadSystemClass('keys', 'config.service');
     $key6 = $keysService->getKey6(2);
     if (!$key6 || strlen($key6) != 128) {
         return array(false, 'apply_checkkey_invalid_key6');
     }
     unset($data['a']);
     unset($data['m']);
     unset($data['c']);
     if (!ACloudSysCoreVerify::verifyWithOAuth($data, $key6)) {
         return array(false, 'apply_checkkey_wrong_sign');
     }
     if (!ACloudSysCoreVerify::verifyWithAES($data['ciphertext'], $data['plaintext'])) {
         return array(false, 'apply_checkkey_fail');
     }
     return array(true, 'apply_checkkey_success');
 }
 public function call($api, $request)
 {
     $api = trim($api);
     if (!$api) {
         return $this->buildResponse(10000);
     }
     $apiConfigService = ACloudSysCoreCommon::loadSystemClass('apis', 'config.service');
     $apiConfig = $apiConfigService->getApiConfigByApiName($api);
     if (!ACloudSysCoreS::isArray($apiConfig)) {
         return $this->buildResponse(10001);
     }
     if (!$apiConfig['status']) {
         return $this->buildResponse(10002);
     }
     list($apiClass, $method, $arguments) = $this->getClassAndMethodAndArguments($apiConfig, $request);
     if (!$apiClass) {
         return $this->buildResponse(10003);
     }
     list($errorCode, $data) = call_user_func_array(array($apiClass, $method), $arguments);
     return $this->buildResponse($errorCode, $data);
 }
 public function checkApplyCondition($siteUrl)
 {
     if (!$siteUrl) {
         return array(false, '站点地址不能为空');
     }
     $envService = ACloudSysCoreCommon::loadSystemClass('env', 'open.service');
     if (!$envService->hasIndexFile()) {
         return array(false, 'aCloud安装包的代码不完整,请重新安装覆盖');
     }
     $tableInfo = $this->getTableInfo();
     if (ACloudSysCoreS::isArray($tableInfo)) {
         return array(false, '缺少以下数据表' . implode(',', $tableInfo));
     }
     return array(true, '');
 }
 public function getLatestThreadsByFids($fids, $offset, $limit)
 {
     if (!ACloudSysCoreS::isArray($fids)) {
         return $this->buildResponse(0, array());
     }
     Wind::import('SRV:forum.vo.PwThreadSo');
     $uids = $result = array();
     $threaddb = array();
     $so = new PwThreadSo();
     $so->setFid($fids)->setDisabled(0)->orderbyCreatedTime(0);
     $threaddb = $this->_getThread()->searchThread($so, $limit, $offset);
     if (!$threaddb) {
         return $this->buildResponse(THREAD_NOT_EXIST, "帖子不存在");
     }
     $forums = $this->_getForum()->fetchForum($fids, PwForum::FETCH_MAIN);
     $result = array();
     foreach ($threaddb as $key => $value) {
         if (!$value) {
             continue;
         }
         $value['forumname'] = strip_tags($forums[$value]['name']);
         $value['icon'] = Pw::getAvatar($value['created_userid']);
         $uids[$value['tid']] = $value['created_userid'];
         $result['threads'][$value['tid']] = $value;
     }
     return $this->buildResponse(0, $result);
 }
 public function getForumsByRange($startId, $endId)
 {
     list($startId, $endId) = array(intval($startId), intval($endId));
     if ($startId < 0 || $startId > $endId || $endId < 1) {
         return array();
     }
     $sql = sprintf("SELECT * FROM %s WHERE isshow = 1 AND fid >= %s AND fid <= %s", ACloudSysCoreS::sqlMetadata('{{bbs_forum}}'), ACloudSysCoreS::sqlEscape($startId), ACloudSysCoreS::sqlEscape($endId));
     $query = Wind::getComponent('db')->query($sql);
     $result = $query->fetchAll('fid', PDO::FETCH_ASSOC);
     $fids = array_keys($result);
     $forumDomain = $this->_getDomainDs()->fetchByTypeAndId('forum', $fids);
     $data = array();
     foreach ($result as $k => $v) {
         $v['domain'] = '';
         if (isset($forumDomain[$k])) {
             $v['domain'] = $forumDomain[$k]['domain'];
         }
         $data[] = $v;
     }
     if (!ACloudSysCoreS::isArray($data)) {
         return array();
     }
     return $this->buildForumData($data);
 }
 private function buildSql($sql)
 {
     if (!ACloudSysCoreS::isArray($this->getParams())) {
         return $sql;
     }
     return preg_replace_callback('/\\?/', array($this, 'replaceSqlParams'), $sql);
 }
 public function getThreadsByModifiedTime($startTime, $endTime, $page, $perpage)
 {
     list($startTime, $endTime, $page, $perpage) = array(intval($startTime), intval($endTime), intval($page), intval($perpage));
     if ($startTime < 1 || $endTime < 1 || $startTime > $endTime || $page < 1 || $perpage < 1) {
         return array();
     }
     $offset = ($page - 1) * $perpage;
     $sql = sprintf("SELECT t.* FROM %s t WHERE t.fid != 0 AND t.ischeck = 1 AND t.modified_time >= %s AND t.modified_time <= %s %s", ACloudSysCoreS::sqlMetadata('{{bbs_threads}}'), ACloudSysCoreS::sqlEscape($startTime), ACloudSysCoreS::sqlEscape($endTime), ACloudSysCoreS::sqlLimit($offset, $perpage));
     $query = Wind::getComponent('db')->query($sql);
     $result = $query->fetchAll(null, PDO::FETCH_ASSOC);
     if (!ACloudSysCoreS::isArray($result)) {
         return array();
     }
     $result = $this->getContentAndForumInfo($result);
     return $this->_buildThreadData($result);
 }
 private function filterMemberFields($members)
 {
     if (!ACloudSysCoreS::isArray($members)) {
         return array();
     }
     $result = array();
     foreach ($members as $value) {
         unset($value['password']);
         $result[] = $value;
     }
     return $result;
 }
 public function replaceSql($sqlTemplate, $argumentValues, $fields)
 {
     $sqlTemplate = preg_replace('/\\{\\{(\\w+?)\\}\\}/', '[[$1]]', $sqlTemplate);
     preg_match_all('/\\{(\\w+)\\}/', $sqlTemplate, $matches);
     if (!ACloudSysCoreS::isArray($matches)) {
         return '';
     }
     $seg = $this->getRandString(4);
     $sql = preg_replace('/\\{(\\w+)\\}/', $seg . '{${1}}' . $seg, $sqlTemplate);
     foreach ($matches[0] as $k => $v) {
         $value = $v != '{fields}' ? is_array($argumentValues[$matches[1][$k]]) ? ACloudSysCoreS::sqlImplode($argumentValues[$matches[1][$k]]) : $argumentValues[$matches[1][$k]] : $fields;
         $sql = str_replace($seg . $v . $seg, $value, $sql);
     }
     $sql = preg_replace('/\\[\\[(\\w+?)\\]\\]/', '{{$1}}', $sql);
     return $sql;
 }