public function actionIndex($isForced = false, $isDebug = false) { $console = Console::getInstance($isForced, $isDebug); $console->debugStart('Entered'); // if (mail('*****@*****.**', 'test', 'test message')) { // $console->writeLine('OK'); // } else { // $console->writeLine('Failure'); // } $newExecutors = Site::getNewExecutors('2015-11-19 12:20:00'); $report = ''; foreach ($newExecutors as $e) { $sites = Site::model()->findAllByAttributes(array('executor_id' => $e)); if (count($sites) < 1) { continue; } $report .= String::build('Positions for "{keyword}" ({date_from} - {date_to})', array('keyword' => $sites[0]->keyword->name, 'date_from' => Time::toPretty($sites[0]->updated_at), 'date_to' => Time::toPretty($sites[count($sites) - 1]->updated_at))) . PHP_EOL; foreach ($sites as $s) { $report .= String::build('{position}: {site}', array('position' => $s->position, 'site' => String::rebuildUrl($s->link, false, false, true, false))) . PHP_EOL; } } $console->writeLine($report); $console->debugEnd(); return; }
protected function fetch($userAgent = null, $cookie = null, $referrer = null, \Proxy $proxy = null) { sleep(Settings::getValue(Settings::GOOGLE_SEARCH_COOLDOWN)); $body = file_get_contents($this->getUrl()); $json = json_decode($body); if ($json->responseStatus != 200) { throw new Exception(String::build('Can\'t fetch results from {search_engine}. Response status: {status} ({details})', array('search_engine' => $this->getSearchEngine(), 'status' => $json->responseStatus, 'details' => $json->responseDetails))); } return $json->responseData->results; }
<div class="row"> <?php echo Chtml::submitButton('Add'); ?> </div> <?php echo CHtml::endForm(); ?> </div> <div> <?php $this->widget('zii.widgets.grid.CGridView', array('id' => 'grvKeywords', 'dataProvider' => $keyword->search(), 'filter' => $keyword, 'htmlOptions' => array(), 'columns' => array(array('name' => 'name', 'header' => 'Keyword', 'type' => 'raw', 'value' => function ($e) { return String::build('<a href="{link}" title="Added on {created_at}">{keyword}</a>', array('link' => Yii::app()->createUrl('site/keywordDetails', array('keywordId' => $e->id)), 'created_at' => Time::toPretty($e->created_at), 'keyword' => $e->name)); }), array('name' => 'search_engine', 'header' => 'Search Engine', 'value' => function ($e) { return ucwords($e->search_engine); }), array('name' => 'status', 'header' => 'Status', 'type' => 'raw', 'value' => function ($e) { return CHtml::tag('span', array('title' => String::build('Last Check: {last_check} Next Check: {next_check}', array('last_check' => Time::toPretty($e->checked_at), 'next_check' => $e->period ? date(Time::FORMAT_PRETTY, strtotime($e->checked_at) + $e->period) : 'No autocheck'))), ucwords($e->status)); })))); ?> </div> <script type="text/javascript"> $("#ddlPeriod").change(function () { $("#txfPeriod").val($(this).val()); }); </script>
/** * Get microtime string * @return string */ private function timestamp() { $microtime = microtime(true); $microtimeString = sprintf('%03d', ($microtime - floor($microtime)) * 1000); return String::build('{0}{1}: ', array(gmdate('H:i:s.', $microtime), $microtimeString)); }
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); }), array('name' => 'message', 'header' => 'Message', 'value' => function ($e) { return $e->message; }), array('name' => 'created_at', 'header' => 'Created', 'value' => function ($e) { return Time::toPretty($e->created_at); }), array('name' => 'updated_at', 'header' => 'Updated', 'value' => function ($e) { return Time::toPretty($e->updated_at); }), array('header' => '', 'type' => 'raw', 'value' => function ($e) { if ($e->status == Executor::STATUS_ERROR) { return CHtml::link('Terminate', Yii::app()->createUrl('site/terminateExecutor', array('executorId' => $e->id))); } }))));
</div> <?php echo CHtml::endForm(); ?> </div> <p><a href="<?php echo Yii::app()->createUrl('site/reportsBrowse'); ?> ">Browse Reports</a></p> <div> <?php $this->widget('zii.widgets.grid.CGridView', array('id' => 'grvKeywords', 'dataProvider' => $report->search(), 'filter' => $report, 'htmlOptions' => array(), 'columns' => array(array('name' => 'email', 'header' => 'Email', 'type' => 'raw', 'value' => function ($e) { return String::build('<span title="Added on {created_at}">{email}</span>', array('email' => $e->email, 'created_at' => Time::toPretty($e->created_at))); }), array('name' => 'last_send_at', 'header' => 'Last Update', 'filter' => false, 'value' => function ($e) { return Time::toPretty($e->last_send_at); }), array('header' => 'Next Update', 'value' => function ($e) { return date(Time::FORMAT_PRETTY, strtotime($e->last_send_at) + $e->period); }), array('header' => '', 'type' => 'raw', 'value' => function ($e) { $links = ''; if (time() - strtotime($e->last_send_at) > 600) { $links .= CHtml::link('Send Now', Yii::app()->createUrl('site/reportsSend', array('reportId' => $e->id))) . ' '; } $links .= Chtml::link('Delete', Yii::app()->createUrl('site/reportsDelete', array('reportId' => $e->id))); return $links; })))); ?> </div>
<?php /* @var $this SiteController */ $this->pageTitle = Yii::app()->name; ?> <div> <?php $this->widget('zii.widgets.grid.CGridView', array('id' => 'grvLeads', 'dataProvider' => $site->searchLeads(), 'columns' => array(array('name' => 'domain', 'header' => 'Domain', 'value' => function ($e) { return $e->domain; }), array('name' => 'keyword', 'header' => 'Keyword', 'value' => function ($e) { return $e->keyword->name; }), array('name' => 'created_at', 'header' => 'Added On', 'type' => 'raw', 'value' => function ($e) { return CHtml::tag('span', array('title' => String::build('by {search_engine} on {position} position', array('search_engine' => $e->keyword->search_engine, 'position' => $e->position))), Time::toPretty($e->created_at)); })))); ?> </div>
public function getUrl() { return String::build('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&hl=it&rsz=8&q={query}{startPosition}', array('query' => urlencode($this->query), 'startPosition' => $this->pageNumber > 1 ? '&start=' . ($this->pageNumber - 1) * $this->positionsPerPage - 1 : '')); }
/** * Find text with web address and wrap it to tag 'a' * @param string $string * @return string */ public static function wrapLinks($string) { $pattern = '/(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\+\\:\\?\\=\\&\\/\\w\\.-]*)*\\/?/'; $result = array(); preg_match_all($pattern, $string, $result); foreach ($result[0] as $l) { $string = str_replace($l, String::build('<a href="{link}">{link}</a>', array('link' => $l)), $string); } return $string; }
protected function getUrl() { return String::build('http://www.bing.com/search?q={query}&first={startPosition}', array('query' => urlencode(str_replace(' ', '+', $this->query)), 'startPosition' => $this->pageNumber > 0 ? $this->pageNumber * $this->positionsPerPage : '0')); }
public function send() { $reportHtml; if (!($reportHtml = $this->generate())) { return false; } $title = Yii::app()->name . ' Report'; $body = String::build('<h1>{title}</h1><br /><br />{report}', array('title' => $title, 'report' => $reportHtml)); $headers = 'From: noreply@ad-center.com' . PHP_EOL; $headers .= 'Content-type: text/html' . PHP_EOL; if (mail($this->email, $title, $body, $headers)) { $this->last_send_at = date(Time::FORMAT_STANDART); $this->update(); file_put_contents(Yii::app()->basePath . '/reports/' . date(Time::FORMAT_STANDART) . '.html', $body); } else { throw new Exception('Can\'t send report to ' . $this->email); } }