Exemplo n.º 1
0
 /**
  * called by an ajax form
  * input is $_POST['id'] 
  */
 public function actionAjaxDelete()
 {
     if (isset($_POST['id']) && isset($_POST['passcode']) && $_POST['passcode'] == 'u98u8acja8scja89sjcjGBHJ') {
         Keyword::model()->deleteByPk($_POST['id']);
     }
     Yii::app()->end();
 }
 public function actionIndex($isForced = false, $isDebug = false)
 {
     $console = Console::getInstance($isForced, $isDebug);
     $console->writeLine('Initializing');
     $criteria = new CDbCriteria();
     $criteria->alias = 'keyword';
     $criteria->addCondition('keyword.period > 0');
     $criteria->addNotInCondition('keyword.status', array(Keyword::STATUS_PENDING, Keyword::STATUS_TAKEN, Keyword::STATUS_IN_PROGRESS));
     $keyword = Keyword::model()->findAll($criteria);
     $console->progressStart('Updating keywords', count($keyword));
     foreach ($keyword as $k) {
         $console->progressStep();
         if (time() > strtotime($k->checked_at) + $k->period) {
             $k->setStatus(Keyword::STATUS_PENDING);
         }
     }
     $console->progressEnd();
 }
Exemplo n.º 3
0
 public function buildLeads()
 {
     $leads = array();
     $keywords = Keyword::model()->findAll('deleted_at IS NULL AND status = \'' . Keyword::STATUS_CHECKED . '\'');
     foreach ($keywords as $k) {
         $domain = '';
         $executorCriteria = new CDbCriteria();
         $executorCriteria->addCondition('keyword_id = :keyword_id');
         $executorCriteria->addCondition('status = :status');
         $executorCriteria->params = array(':keyword_id' => $k->id, ':status' => Executor::STATUS_DONE);
         $executorCriteria->order = 'id DESC';
         $executor = Executor::model()->find($executorCriteria);
         if ($executor) {
             $site = Site::model()->findAll('executor_id = :executor_id', array(':executor_id' => $executor->id));
             $domain .= $site[0]->domain;
         } else {
             $domain = 'This task has never been checked';
         }
         array_push($leads, array('id' => $k->id, 'keyword' => $k->name, 'domain' => strlen($domain) > 0 ? $domain : 'No results ' . $executor->id, 'search_engine' => $k->search_engine, 'updated' => $executor->deleted_at));
     }
     return new CArrayDataProvider($leads, array('sort' => array('attributes' => array('*')), 'pagination' => array('pageSize' => 50)));
 }
Exemplo n.º 4
0
<?php

/* @var $this SiteController */
$this->pageTitle = Yii::app()->name;
?>

<p>Tasks done: <?php 
echo Executor::model()->count('status = \'' . Executor::STATUS_DONE . '\'');
?>
</p>
<p>Tasks in total: <?php 
echo Executor::model()->count();
?>
</p>
<p>Pending keywords: <?php 
echo Keyword::model()->count('status = \'' . Keyword::STATUS_PENDING . '\'');
?>
</p>

<h3>Active Executors</h3>

<div>
    <?php 
$this->widget('zii.widgets.grid.CGridView', array('id' => 'grvKeywords', 'dataProvider' => $executor->searchActive(), 'htmlOptions' => array(), 'columns' => array(array('name' => 'id', 'header' => 'ID', 'value' => function ($e) {
    return $e->id;
}), array('name' => 'keyword_id', 'header' => 'Keyword', 'value' => function ($e) {
    return String::build('{keyword_id}: {keyword}', array('keyword' => $e->keyword->name, 'keyword_id' => $e->keyword_id));
}), array('header' => 'Search Engine', 'value' => function ($e) {
    return ucwords($e->keyword->search_engine);
}), array('name' => 'status', 'header' => 'Status', 'value' => function ($e) {
    return ucwords($e->status);
Exemplo n.º 5
0
 /**
  * 迁移
  * GET /api/migrate
  */
 public function actionRestmigrate()
 {
     $criteria = new CDbCriteria();
     $criteria->compare('archived', 1);
     $criteria->compare('type', 0);
     $criteria->order = 'created_time asc';
     $activities = Activity::model()->findAll($criteria);
     foreach ($activities as $activity) {
         // 创建reply
         $reply = new Autoreply();
         $reply->name = $activity->code;
         $reply->type = 0;
         $reply->reply = $activity->reply;
         if (!$reply->save()) {
             return $this->sendResponse(500, 'failed to save reply');
         }
         // 创建keywords
         $keywords = split(',', $activity->code);
         $count = 0;
         foreach ($keywords as $keywordStr) {
             $criteria = new CDbCriteria();
             $criteria->compare('word', $keywordStr);
             $criteria->compare('archived', 1);
             if (Keyword::model()->count($criteria) == 0) {
                 $keyword = new Keyword();
                 $keyword->word = $keywordStr;
                 $keyword->reply_id = $reply->id;
                 $keyword->save();
             }
         }
         $activity->archived = 0;
         $activity->save();
         sleep(1);
     }
     echo 'migrated';
 }
Exemplo n.º 6
0
 public function findTask()
 {
     $criteria = new CDbCriteria();
     $criteria->alias = 'keyword';
     $criteria->addCondition('keyword.status = :status');
     $criteria->addCondition('keyword.deleted_at IS NULL');
     $criteria->params = array(':status' => Keyword::STATUS_PENDING);
     $activeSearchEngines = self::getActiveSearchEngines();
     for ($i = 0; $i < count($activeSearchEngines); $i++) {
         $parameterName = ':search_engine_' . $i;
         $criteria->addCondition('keyword.search_engine NOT LIKE ' . $parameterName);
         $criteria->params[$parameterName] = '%' . $activeSearchEngines[$i] . '%';
     }
     $criteria->order = 'keyword.updated_at ASC';
     $criteria->limit = 1;
     if ($keyword = Keyword::model()->find($criteria)) {
         $this->keyword_id = $keyword->id;
         $keyword->setStatus(Keyword::STATUS_TAKEN);
         return true;
     }
     return false;
 }
Exemplo n.º 7
0
 public function actionKeywordDelete($keywordId)
 {
     $keyword = Keyword::model()->findByPk($keywordId);
     $keyword->deleted_at = date(Time::FORMAT_STANDART);
     $keyword->update();
     $this->redirect(Yii::app()->createUrl('site/keywords'));
 }