public function actionRecent()
 {
     $startAll = microtime(true);
     $discusComponent = Yii::app()->disqusComments;
     /** @var EDisqusComments $discusComponent */
     $lastUpdate = DisqusComments::getLastUpdateTime();
     $interval = DisqusInterval::getIntervalBySeconds(time() - $lastUpdate);
     $urls = $discusComponent->loadRecentThreads($interval);
     echo "searching for updates by last {$interval} \n";
     if (!empty($urls)) {
         foreach ($urls as $url) {
             $start = microtime(true);
             $commentsPage = DisqusComments::findByUrl($url, true, 'syncComments');
             /* 'true' is for create if not exist */
             $commentsFromApi = $discusComponent->loadCommentsByUrl($commentsPage->page_url);
             if (is_array($commentsFromApi) && !empty($commentsFromApi)) {
                 $comments = EDisqusComments::formatComments($commentsFromApi);
                 $commentsHierarchy = EDisqusComments::sortCommentsByHierarchy($comments);
                 $commentsPage->comments_block = json_encode($commentsHierarchy);
                 $commentsPage->update_time = time();
                 $commentsPage->save();
             }
             echo 'generated for ' . $commentsPage->page_url . ' in ';
             echo microtime(true) - $start . " seconds. \n";
         }
         $finishAll = microtime(true);
         \Yii::app()->setGlobalState('DisqusComments', $finishAll);
         echo 'generated ALL in ';
         echo $finishAll - $startAll . " seconds. \n";
     } else {
         echo "nothing to update \n";
     }
 }
 public function run()
 {
     if (Yii::app()->request->isAjaxRequest) {
         if (isset($_POST['page_url'])) {
             $url = $_POST['page_url'];
             $disqusComponent = Yii::app()->disqusComments;
             /** @var EDisqusComments $disqusComponent */
             $duration = $disqusComponent->queryCacheDuration;
             $dependency = new \CGlobalStateCacheDependency('DisqusComments');
             $comments = DisqusComments::model()->cache($duration, $dependency)->findByAttributes(array('page_url' => $url));
             if (!isset($comments)) {
                 DisqusComments::saveNewUrl($url);
             }
             echo EDisqusComments::createCommentsJSON($comments->comments_block);
         }
     }
 }
 public function run()
 {
     $disqusComponent = Yii::app()->disqusComments;
     /** @var EDisqusComments $disqusComponent */
     $commentsBlock = $disqusComponent->getCache('commentBlock_' . md5($this->pageUrl));
     if ($commentsBlock === false) {
         $duration = $disqusComponent->queryCacheDuration;
         $dependency = new \CGlobalStateCacheDependency('DisqusComments');
         $disqusComments = DisqusComments::model()->cache($duration, $dependency)->findByAttributes(array('page_url' => $this->pageUrl));
         if (isset($disqusComments)) {
             $comments = json_decode($disqusComments->comments_block);
             $commentsBlock = EDisqusComments::createCommentsHTML($comments);
         } else {
             $commentsBlock = '';
             if ($disqusComponent->autoUpdateMap && !empty($this->pageUrl)) {
                 DisqusComments::saveNewUrl($this->pageUrl);
             }
         }
         $disqusComponent->setCache('commentBlock_' . md5($this->pageUrl), $commentsBlock);
     }
     $this->render('disqusCommentsWidget', array('commentsBlock' => $commentsBlock, 'apiKey' => $disqusComponent->apiKey, 'shortName' => $disqusComponent->shortName));
 }