/** * Render page, query string 's' indicates that get page record regardless of published status */ public function actionPage($id = '') { $isPreview = \Yii::$app->request->get('s', 0); if (!empty($id)) { $id = new \MongoId($id); $page = Page::getPage($id, !!$isPreview); if (empty($page) || empty($page->url)) { $this->redirect(self::NOT_FOUND_PAGE_PATH); } if (empty($page['color'])) { $page['color'] = \Yii::$app->params['micrositeDefaultColor']; } if (empty($page->cpts) || $isPreview) { $cpts = PageComponent::getAllComponents($id); $page->cpts = ArrayHelper::toArray($cpts); } $sdk = Yii::$app->wechatSdk; $sdk->refererUrl = $sdk->refererDomain . 'msite/page/' . $id; $signPackage = $sdk->getSignPackage(); $actionView = $this->getView(); $actionView->registerJsFile('https://res.wx.qq.com/open/js/jweixin-1.0.0.js'); $this->view->params['page'] = $page; $this->view->params['pageRGBColor'] = join(',', StringUtil::hex2rgb($page['color'])); $this->layout = self::PAGE_PATH; $this->registerPageResource($isPreview); $params = ['signPackage' => $signPackage, 'components' => $page->cpts, 'page' => ['title' => $page->title, 'desc' => $page->description, 'url' => $page->url, 'isCover' => $page->type === Page::TYPE_COVER]]; if (BrowserUtil::isWeiboBrower() || BrowserUtil::isWeixinBrowser()) { $params['hideTitle'] = true; } return $this->render(self::PAGE_PATH, $params); } else { return $this->render(self::NOT_FOUND_PAGE_PATH); } }
/** * View a page with statistics data * @param string $id page id * @return array * @throws ServerErrorHttpException */ public function actionView($id) { $pageId = new \MongoId($id); $startDate = $this->getQuery('from'); $endDate = $this->getQuery('to'); $page = Page::getPage($pageId, true); if (empty($page)) { throw new ServerErrorHttpException(Yii::t('microSite', 'page_not_exist')); } $pageArr = $page->toArray(); // find the statistics data from url service if (isset($page->shortUrl) && !empty($page->shortUrl) && strstr($page->shortUrl, Yii::$app->urlService->shortUrlDomain)) { // build a url with 'from' and 'to' params $url = Yii::$app->curl->buildUrl($page->shortUrl, ['from' => $startDate, 'to' => $endDate]); $pageArr['statistics'] = Yii::$app->urlService->statistics($url); } return $pageArr; }