/** * 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(); }
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))); }
<?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);
/** * 迁移 * 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'; }
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; }
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')); }