public function afterAction($handlerAdapter)
 {
     parent::afterAction($handlerAdapter);
     $debug = Wekit::C('site', 'debug') || !Wekit::C('site', 'css.compress');
     Wekit::setGlobal(array('debug' => $debug ? '/dev' : '/build'), 'theme');
     $this->setTheme('site', null);
     /* @var $resource WindLangResource */
     $resource = Wind::getComponent('i18n');
     $_error = $this->getForward()->getVars('message');
     if ($resource !== null) {
         foreach ($_error as $key => $value) {
             if (is_array($value)) {
                 list($value, $var) = $value;
             } else {
                 $var = array();
             }
             $message = $resource->getMessage($value, $var);
             $message && ($_error[$key] = $message);
         }
     }
     $this->getForward()->setVars(array('message' => $_error, '__error' => ''));
     $type = $this->getRequest()->getAcceptTypes();
     // 如果是含有上传的递交,不能采用ajax的方式递交,需要以html的方式递交,并且返回的结果需要是json格式,将以json=1传递过来标志
     $json = $this->getInput('_json');
     $requestJson = $this->getRequest()->getIsAjaxRequest() && strpos(strtolower($type), "application/json") !== false;
     if ($requestJson || $json == 1) {
         $this->getResponse()->setHeader('Content-type', 'application/json; charset=' . Wekit::V('charset'));
         echo Pw::jsonEncode($this->getForward()->getVars());
         exit;
     }
 }
Exemple #2
0
 public function forumlistAction()
 {
     $forums = Wekit::load('forum.PwForum')->getForumList(PwForum::FETCH_ALL);
     $service = Wekit::load('forum.srv.PwForumService');
     $map = $service->getForumMap();
     $cate = array();
     $forum = array();
     foreach ($map[0] as $key => $value) {
         if (!$value['isshow']) {
             continue;
         }
         $array = $service->findOptionInMap($value['fid'], $map, array('sub' => '--', 'sub2' => '----'));
         $tmp = array();
         foreach ($array as $k => $v) {
             $forumset = $forums[$k]['settings_basic'] ? unserialize($forums[$k]['settings_basic']) : array();
             $isAllowPoll = isset($forumset['allowtype']) && is_array($forumset['allowtype']) && in_array('poll', $forumset['allowtype']);
             if ($forums[$k]['isshow'] && $isAllowPoll && (!$forums[$k]['allow_post'] || $this->loginUser->inGroup(explode(',', $forums[$k]['allow_post'])))) {
                 $tmp[$k] = strip_tags($v);
             }
         }
         if ($tmp) {
             $cate[$value['fid']] = $value['name'];
             $forum[$value['fid']] = $tmp;
         }
     }
     $response = array('cate' => $cate, 'forum' => $forum);
     $this->setOutput(Pw::jsonEncode($response), 'data');
     $this->showMessage('success');
 }
Exemple #3
0
 public function run()
 {
     header("Content-type: text/html; charset=" . Wekit::app()->charset);
     //$pwServer['HTTP_USER_AGENT'] = 'Shockwave Flash';
     $swfhash = 1;
     echo Pw::jsonEncode(array('uid' => $this->loginUser->uid, 'a' => 'dorun', 'verify' => $swfhash));
     $this->setTemplate('');
 }
 /**
  * 学校获取(typeid = 1:小学,2:中学,3:大学)
  */
 public function schoolAction()
 {
     list($type, $areaid, $name, $first) = $this->getInput(array('typeid', 'areaid', 'name', 'first'));
     !$type && ($type = 3);
     Wind::import('WINDID:service.school.vo.WindidSchoolSo');
     $schoolSo = new WindidSchoolSo();
     $schoolSo->setName($name)->setTypeid($type)->setFirstChar($first)->setAreaid($areaid);
     $list = WindidApi::api('school')->searchSchoolData($schoolSo, 1000);
     exit($list ? Pw::jsonEncode($list) : '');
 }
 /**
  * 重写下afterAction,不去i18n解析
  * 
  */
 public function afterAction($handlerAdapter)
 {
     $_error = $this->getForward()->getVars('message');
     $this->getForward()->setVars(array('message' => $_error, '__error' => ''));
     $type = $this->getRequest()->getAcceptTypes();
     if ($this->getRequest()->getIsAjaxRequest() && strpos(strtolower($type), "application/json") !== false) {
         $this->getResponse()->setHeader('Content-type', 'application/json; charset=' . Wekit::V('charset'));
         exit(Pw::jsonEncode($this->getForward()->getVars()));
     }
 }
 protected function output($message = '')
 {
     if (is_numeric($message)) {
         echo $message;
         exit;
     } else {
         header('Content-type: application/json; charset=' . Wekit::V('charset'));
         echo Pw::jsonEncode($message);
         exit;
     }
 }
 /**
  * 学校获取(typeid = 1:小学,2:中学,3:大学)
  */
 public function schoolAction()
 {
     list($type, $areaid, $name, $first) = $this->getInput(array('typeid', 'areaid', 'name', 'first'));
     !$type && ($type = 3);
     Wind::import('SRV:school.srv.vo.PwWindidSchoolSo');
     $schoolSo = new PwWindidSchoolSo();
     $schoolSo->setName($name)->setTypeid($type)->setFirstChar($first)->setAreaid($areaid);
     /* @var $schoolService PwSchoolService */
     $schoolService = Wekit::load('school.srv.PwSchoolService');
     $list = $schoolService->searchSchool($schoolSo, 1000);
     exit($list ? Pw::jsonEncode($list) : '');
 }
Exemple #8
0
 /**
  * 发帖页我的草稿
  *
  * @return void
  */
 public function myDraftsAction()
 {
     $drafts = $this->_getDraftDs()->getByUid($this->loginUser->uid, $this->maxNum);
     $data = array();
     foreach ($drafts as $v) {
         $_tmp['id'] = $v['id'];
         $_tmp['title'] = $v['title'];
         $_tmp['content'] = $v['content'];
         $_tmp['created_time'] = Pw::time2str($v['created_time'], 'auto');
         $data[] = $_tmp;
     }
     echo Pw::jsonEncode(array('state' => 'success', 'data' => $data));
     exit;
 }
Exemple #9
0
 protected function jsonFormat($moduleId)
 {
     $_data = array();
     Wind::import('SRV:design.bo.PwDesignModuleBo');
     $bo = new PwDesignModuleBo($moduleId);
     $module = $bo->getModule();
     if ($module['module_type'] != PwDesignModule::TYPE_SCRIPT) {
         exit('fail');
     }
     $data = $bo->getData(true);
     header('Content-type: application/json');
     echo Pw::jsonEncode($data);
     exit;
 }
 /** 
  * 获取用户关注数据,ajax输出
  *
  */
 public function getfollowAction()
 {
     list($type, $page, $perpage) = $this->getInput(array('type', 'page', 'perpage'));
     $page = $page ? $page : 1;
     $perpage = $perpage ? $perpage : $this->perpage;
     list($start, $limit) = Pw::page2limit($page, $perpage);
     $typeCounts = $this->_getAttentionTypeDs()->countUserType($this->loginUser->uid);
     if ($type) {
         $tmp = $this->_getAttentionTypeDs()->getUserByType($this->loginUser->uid, $type, $limit, $start);
         $follows = $this->_getAttentionDs()->fetchFollows($this->loginUser->uid, array_keys($tmp));
         $count = $typeCounts[$type] ? $typeCounts[$type]['count'] : 0;
     } else {
         $follows = $this->_getAttentionDs()->getFollows($this->loginUser->uid, $limit, $start);
         $count = $this->loginUser->info['follows'];
     }
     $uids = array_keys($follows);
     echo Pw::jsonEncode(array('state' => 'success', 'data' => $this->_buildRemindUsers($uids), 'page' => $page));
     exit;
 }
Exemple #11
0
 protected function showErrorMessage($message, $file, $line, $trace, $errorcode)
 {
     list($fileLines, $trace) = $this->crash($file, $line, $trace);
     if (Wind::$isDebug & 2) {
         $log = $message . "\r\n" . $file . ":" . $line . "\r\n";
         foreach ($trace as $key => $value) {
             $log .= $value . "\r\n";
         }
         Wind::getComponent('windLogger')->error($log, 'error', true);
     }
     $message = nl2br($message);
     //render json
     $type = $this->getRequest()->getAcceptTypes();
     // 如果是含有上传的递交,不能采用ajax的方式递交,需要以html的方式递交,并且返回的结果需要是json格式,将以json=1传递过来标志
     $json = $this->getRequest()->getRequest('_json');
     $requestJson = $this->getRequest()->getIsAjaxRequest() && strpos(strtolower($type), "application/json") !== false;
     if ($requestJson || $json == 1) {
         Wind::$isDebug & 1 && ($message = nl2br($message . "\r\n" . $file . ":" . $line . "\r\n"));
         $this->getResponse()->setHeader('Content-type', 'application/json; charset=' . $this->getResponse()->getCharset());
         echo Pw::jsonEncode(array('referer' => null, 'refresh' => null, 'state' => 'fail', 'message' => $message));
         exit;
     }
     $errDir = Wind::getRealPath($this->errorDir, false);
     if ($this->isClosed) {
         $errPage = 'close';
     } elseif (is_file($errDir . '/' . $errorcode . '.htm')) {
         $errPage = $errorcode;
     } else {
         $errPage = 'error';
     }
     $title = $this->getResponse()->codeMap($errorcode);
     $title = $title ? $errorcode . ' ' . $title : 'unknowen error';
     $__vars['title'] = ucwords($title);
     $__vars['message'] = $message;
     if (Wind::$isDebug & 1) {
         $__vars['debug']['file'] = $file;
         $__vars['debug']['line'] = $line;
         $__vars['debug']['trace'] = $trace;
         $__vars['debug']['fileLines'] = $fileLines;
     }
     $this->render($__vars, $errorcode, $errDir, $errPage);
 }
Exemple #12
0
 /**
  * do群发消息
  *
  * @return void
  */
 public function doSendAction()
 {
     list($type, $content, $title, $step, $countStep) = $this->getInput(array('type', 'content', 'title', 'step', 'countStep'));
     !$content && $this->showError('Message:content.empty');
     if ($step > $countStep) {
         $this->showMessage("ADMIN:success");
     }
     $step = $step ? $step : 1;
     switch ($type) {
         case 1:
             // 根据用户组
             list($user_groups, $grouptype) = $this->getInput(array('user_groups', 'grouptype'));
             Wind::import('SRV:user.vo.PwUserSo');
             $vo = new PwUserSo();
             $searchDs = Wekit::load('SRV:user.PwUserSearch');
             if (!$user_groups) {
                 $this->showError('Message:user.groups.empty');
             }
             if ($grouptype == 'memberid') {
                 $vo->setMemberid($user_groups);
             } else {
                 $vo->setGid($user_groups);
             }
             $count = $searchDs->countSearchUser($vo);
             $countStep = ceil($count / $this->perstep);
             if ($step <= $countStep) {
                 list($start, $limit) = Pw::page2limit($step, $this->perstep);
                 $userInfos = $searchDs->searchUser($vo, $limit, $start);
             }
             break;
         case 2:
             // 根据用户名
             $touser = $this->getInput('touser');
             !$touser && $this->showError('Message:receive.user.empty');
             $touser = explode(' ', $touser);
             $count = count($touser);
             $countStep = ceil($count / $this->perstep);
             if ($step <= $countStep) {
                 $userDs = Wekit::load('user.PwUser');
                 list($start, $limit) = Pw::page2limit($step, $this->perstep);
                 $userInfos = $userDs->fetchUserByName(array_slice($touser, $start, $limit));
             }
             break;
         case 3:
             // 根据在线用户(精确在线)
             $onlineService = Wekit::load('online.srv.PwOnlineCountService');
             list($count, $userInfos) = $onlineService->getVisitorList('', $step, $this->perstep, true);
             $countStep = ceil($count / $this->perstep);
             break;
     }
     $result = $this->sendNoticeByUsers((array) $userInfos, $content, strip_tags($title));
     if ($result instanceof PwError) {
         $this->showError($result->getError());
     }
     $haveBuild = $step * $this->perstep;
     $haveBuild = $haveBuild > $count ? $count : $haveBuild;
     $step++;
     usleep(500);
     $data = array('step' => $step, 'countStep' => $countStep, 'count' => $count, 'haveBuild' => $haveBuild);
     echo Pw::jsonEncode(array('data' => $data));
     exit;
 }
Exemple #13
0
 private function _initTopictypes($defaultTopicType = 0)
 {
     $topictypes = $jsonArray = array();
     $forceTopicType = $this->post->forum->forumset['force_topic_type'];
     if ($this->post->forum->forumset['topic_type']) {
         $permission = $this->loginUser->getPermission('operate_thread', false, array());
         $topictypes = $this->_getTopictypeDs()->getTopicTypesByFid($this->post->forum->fid, !$permission['type']);
         foreach ($topictypes['sub_topic_types'] as $key => $value) {
             if (!is_array($value)) {
                 continue;
             }
             // 				if (!$forceTopicType && $value) $jsonArray[$key][$key] = '无分类';
             foreach ($value as $k => $v) {
                 $jsonArray[$key][$k] = strip_tags($v['name']);
             }
         }
     }
     if ($defaultTopicType && isset($topictypes['all_types'][$defaultTopicType])) {
         $defaultParentTopicType = $topictypes['all_types'][$defaultTopicType]['parentid'];
     } else {
         $defaultTopicType = $defaultParentTopicType = 0;
     }
     $json = Pw::jsonEncode($jsonArray);
     $this->setOutput($defaultTopicType, 'defaultTopicType');
     $this->setOutput($defaultParentTopicType, 'defaultParentTopicType');
     $this->setOutput($topictypes, 'topictypes');
     $this->setOutput($json, 'subTopicTypesJson');
     $this->setOutput($forceTopicType ? 1 : 0, 'forceTopic');
     $this->setOutput('1', 'isTopic');
 }
 /**
  * 获取我关注的人
  *
  * @return void
  */
 public function followsAction()
 {
     list($page, $perpage, $type) = $this->getInput(array('page', 'perpage', 'type'));
     $page = $page ? $page : 1;
     $perpage = $perpage ? $perpage : $this->perpage;
     list($start, $limit) = Pw::page2limit($page, $perpage);
     $attentionDs = Wekit::load('attention.PwAttention');
     $type = $type ? $type : 'follows';
     if ($type == 'follows') {
         $count = $this->loginUser->info['follows'];
         $count && ($attentions = $attentionDs->getFollows($this->loginUser->uid, $limit, $start));
     } else {
         $count = $this->loginUser->info['fans'];
         $count && ($attentions = $attentionDs->getFans($this->loginUser->uid, $limit, $start));
     }
     if (!$attentions) {
         echo Pw::jsonEncode(array('state' => 'fail'));
         exit;
     }
     $uids = array_keys($attentions);
     $attentions = Wekit::load('user.PwUser')->fetchUserByUid($uids);
     echo Pw::jsonEncode(array('state' => 'success', 'data' => $attentions));
     exit;
 }
Exemple #15
0
 /** 
  * 请求获取tip
  *
  */
 public function punchtipAction()
 {
     $punchData = $this->loginUser->info['punch'];
     $punchData = $punchData ? unserialize($punchData) : array();
     $reward = $this->config['punch.reward'];
     if (!$punchData) {
         $data = array('cUnit' => $this->_creditBo->cUnit[$reward['type']], 'cType' => $this->_creditBo->cType[$reward['type']], 'todaycNum' => $reward['min'], 'tomorrowcNum' => $reward['min'] + $reward['step'], 'step' => $reward['step'], 'max' => $reward['max']);
         echo Pw::jsonEncode(array('state' => 'success', 'data' => $data));
         exit;
     }
     $havePunch = $this->_getPunchService()->isPunch($punchData);
     if ($punchData['username'] == $this->loginUser->username && $havePunch) {
         echo Pw::jsonEncode(array('state' => 'fail'));
         exit;
     }
     $behavior = $this->_getUserBehaviorDs()->getBehavior($this->loginUser->uid, 'punch_day');
     $steps = $behavior['number'] > 0 ? $behavior['number'] : 0;
     $awardNum = $reward['min'] + $steps * $reward['step'] > $reward['max'] ? $reward['max'] : $reward['min'] + $steps * $reward['step'];
     $tomorrowcNum = $awardNum + $reward['step'];
     $data = array('cUnit' => $this->_creditBo->cUnit[$reward['type']], 'cType' => $this->_creditBo->cType[$reward['type']], 'todaycNum' => $awardNum, 'tomorrowcNum' => $tomorrowcNum > $reward['max'] ? $reward['max'] : $tomorrowcNum, 'step' => $reward['step'], 'max' => $reward['max']);
     echo Pw::jsonEncode(array('state' => 'success', 'data' => $data));
     exit;
 }
 public function afterAction($handlerAdapter)
 {
     parent::afterAction($handlerAdapter);
     $debug = Wekit::C('site', 'debug') || !Wekit::C('site', 'css.compress');
     Wekit::setGlobal(array('debug' => $debug ? '/dev' : '/build'), 'theme');
     $this->setTheme('site', null);
     /* @var $resource WindLangResource */
     $resource = Wind::getComponent('i18n');
     $_error = $this->getForward()->getVars('message');
     if ($resource !== null) {
         foreach ($_error as $key => $value) {
             if (is_array($value)) {
                 list($value, $var) = $value;
             } else {
                 $var = array();
             }
             $message = $resource->getMessage($value, $var);
             $message && ($_error[$key] = $message);
         }
     }
     $this->getForward()->setVars(array('message' => $_error, '__error' => ''));
     $type = $this->getRequest()->getAcceptTypes();
     // 如果是含有上传的递交,不能采用ajax的方式递交,需要以html的方式递交,并且返回的结果需要是json格式,将以json=1传递过来标志
     $json = $this->getInput('_json');
     $requestJson = $this->getRequest()->getIsAjaxRequest() && strpos(strtolower($type), "application/json") !== false;
     if ($requestJson || $json == 1) {
         $this->getResponse()->setHeader('Content-type', 'application/json; charset=' . Wekit::V('charset'));
         $vars = $this->getForward()->getVars();
         isset($vars['referer']) && ($vars['referer'] = rawurlencode($vars['referer']));
         foreach ($vars as $key => $value) {
             if ($key == 'html') {
                 continue;
             }
             //$vars[$key] = WindSecurity::escapeArrayHTML($value);
         }
         //jsonp
         $callback = $this->getInput('callback', 'get');
         if ($callback && preg_match('/[\\w_]/i', $callback)) {
             echo $callback . "(" . Pw::jsonEncode($vars) . ")";
             exit;
         }
         //            print_r($vars);
         echo Pw::jsonEncode($vars);
         exit;
     }
 }
 /**
  * 获取热门话题
  *
  * @return void
  */
 public function getHotTagsAction()
 {
     $hotTags = $this->_getTagService()->getHotTags('', $this->hotTagList);
     echo Pw::jsonEncode($hotTags);
     exit;
 }
Exemple #18
0
 /**
  * 版块列表 弹窗
  */
 public function listAction()
 {
     $withMyforum = $this->getInput('withMyforum');
     $service = Wekit::load('forum.srv.PwForumService');
     $forums = $service->getForumList();
     $map = $service->getForumMap();
     $cate = array();
     $forum = array();
     foreach ($map[0] as $key => $value) {
         if (!$value['isshow']) {
             continue;
         }
         $array = $service->findOptionInMap($value['fid'], $map, array('sub' => '--', 'sub2' => '----'));
         $tmp = array();
         foreach ($array as $k => $v) {
             if ($forums[$k]['isshow'] && (!$forums[$k]['allow_post'] || $this->loginUser->inGroup(explode(',', $forums[$k]['allow_post'])))) {
                 $tmp[] = array($k, strip_tags($v));
             }
         }
         if ($tmp) {
             $cate[] = array($value['fid'], strip_tags($value['name']));
             $forum[$value['fid']] = $tmp;
         }
     }
     if ($withMyforum && $this->loginUser->isExists() && ($joinForum = Wekit::load('forum.PwForumUser')->getFroumByUid($this->loginUser->uid))) {
         $tmp = array();
         foreach ($joinForum as $key => $value) {
             if (!$key) {
                 continue;
             }
             $tmp[] = array($key, strip_tags($forums[$key]['name']));
         }
         array_unshift($cate, array('my', '我的版块'));
         $forum['my'] = $tmp;
     }
     $response = array('cate' => $cate, 'forum' => $forum);
     $this->setOutput(Pw::jsonEncode($response), 'data');
     $this->showMessage('success');
 }
Exemple #19
0
 /**
  * 主题分类
  */
 public function topictypesAction()
 {
     $fid = (int) $this->getInput('fid', 'post');
     if ($fid < 1) {
         $this->showError('data.error');
     }
     $topicTypes = Wekit::load('forum.srv.PwTopicTypeService')->getTopictypes($fid);
     $topicTypes = $topicTypes ? $topicTypes : '';
     echo Pw::jsonEncode(array('state' => 'success', 'data' => $topicTypes));
     exit;
 }