/** * Check for not-updated-today, not-deleted keywords * And set for rank update if exist * * daily */ public function queue_keywords_for_update() { $keyword_rank = new Keyword_rank(); $keyword_rank_ids = $keyword_rank->where('date', date('Y-m-d'))->get()->all_to_single_array('keyword_id'); if (empty($keyword_rank_ids)) { $keyword_rank_ids = array(0); } $keywords = new Keyword(); $keywords->where('is_deleted', 0)->where_not_in('id', $keyword_rank_ids)->get(); if (!$keywords->exists()) { log_message('CRON_ERROR', __FUNCTION__ . ' > ' . 'No keywords for rank update'); return; } $acc = $this->getAAC(); foreach ($keywords as $keyword) { $user = new User($keyword->user_id); if (!$user->exists()) { continue; } $acc->setUser($user); if (!$acc->isGrantedPlan('local_search_keyword_tracking')) { continue; } $args = $keyword->to_array(); $this->jobQueue->addJob('tasks/google_rank_task/grabber', $args, array('thread' => self::GOOGLE_RANK_THREAD)); } $ids_str = implode(', ', array_values($keywords->all_to_single_array('id'))); log_message('CRON_SUCCESS', __FUNCTION__ . ' > ' . 'Keywords for rank update ids: ' . $ids_str); return; }
/** * Remove single keyword with all collected rank * * @param $keyword_array (array) - keyword model arrayed * @throws Exception */ public function remove_deleted($keyword_array) { try { $keyword_id = isset($keyword_array['id']) ? $keyword_array['id'] : NULL; $keyword = new Keyword($keyword_id); if (!$keyword->exists()) { throw new Exception('kwid: ' . $keyword_id . ' doesn\'t exist.'); } $keyword_rank = Keyword_rank::inst()->get_by_keyword_id($keyword_id); $keyword_rank->delete_all(); $keyword->delete(); log_message('TASK_SUCCESS', __FUNCTION__ . ' > ' . 'Keyword and keyword rank for kwid: ' . $keyword_id . ' deleted'); } catch (Exception $e) { log_message('TASK_ERROR', __FUNCTION__ . ' > ' . $e->getMessage()); throw $e; } }
public function hourly_queue_keywords_for_update_single($keyword_array) { try { $keyword_id = isset($keyword_array['id']) ? $keyword_array['id'] : NULL; $keyword = new Keyword($keyword_id); if (!$keyword->exists()) { throw new Exception('kwid: ' . $keyword_id . ' doesn\'t exist.'); } if ($keyword->is_deleted) { throw new Exception('kwid: ' . $keyword->id . ' is set for deletion.'); } $user_additional = User_additional::inst()->get_by_user_id($keyword->user_id); if (!$user_additional->exists()) { throw new Exception('No user additional model for user: '******' ; kwid: ' . $keyword->id); } if (!$user_additional->address_id) { throw new Exception('No address id for user: '******'; kwid: ' . $keyword->id); } $this->load->config('site_config', TRUE); // $google_app_config = $this->config->item('google_app', 'site_config'); $google_app_config = Api_key::build_config('google', $this->config->item('google_app', 'site_config')); $this->load->library('gls'); $gls = new Gls(); // important $gls->set(array('key' => $google_app_config['developer_key'])); $gls->request($keyword->keyword); if ($gls->success()) { $rank = $gls->location_rank($user_additional->address_id); if (is_null($rank)) { throw new Exception('no results for rank. kwid: ' . $keyword->id); } $keyword_rank = new Keyword_rank(); $keyword_rank->where(array('keyword_id' => $keyword->id, 'date' => date('Y-m-d')))->get(1); $keyword_rank->keyword_id = $keyword->id; $keyword_rank->date = date('Y-m-d'); $keyword_rank->rank = intval($rank); $keyword_rank->save(); log_message('TASK_SUCCESS', __FUNCTION__ . ' > ' . 'GLS Rank grabbed for kwid: ' . $keyword->id . ' -> ' . $rank); } else { throw new Exception('Google Rank Grabber Error: ' . $gls->error()); } } catch (Exception $e) { //echo 'error: '.$e->getMessage().PHP_EOL; log_message('TASK_ERROR', __FUNCTION__ . ' > ' . $e->getMessage()); throw $e; } }