/**
  * 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;
 }
Esempio n. 2
0
 public function kw()
 {
     $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();
     foreach ($keywords as $keyword) {
         var_dump($keyword->id);
     }
 }
 /**
  * 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;
     }
 }
Esempio n. 4
0
 public function delete($user_id = NULL)
 {
     $user = $this->prepare_user($user_id);
     if ($this->ion_auth->is_admin($user_id)) {
         $url = 'manage_admins';
     } elseif ($this->ion_auth->is_manager($user_id)) {
         $url = 'manage_accounts';
     } else {
         $url = 'admin_users';
     }
     if ($this->ion_auth->is_collaborator($user_id)) {
         $this->c_user->delete($user);
     }
     $user_deleted = $this->ion_auth->delete_user($user->id);
     if (!$user_deleted) {
         $this->addFlash(lang('delete_error', [$this->ion_auth->errors()]));
         redirect('admin/admin_users');
     }
     $sender = $this->get('core.mail.sender');
     $sender->sendUserDeleteMail(array('user' => $user));
     $access_token = new Access_token();
     $access_token->where('user_id', $user->id)->get()->delete_all();
     $directory_user = new Directory_User();
     $directory_user->where('user_id', $user->id)->get()->delete_all();
     $facebook_fanpage = new Facebook_Fanpage();
     $facebook_fanpage->where('user_id', $user->id)->get()->delete_all();
     $keyword = new Keyword();
     $keyword->where('user_id', $user->id)->get();
     foreach ($keyword as $k) {
         $keyword_rank = new Keyword_rank();
         $keyword_rank->where('keyword_id', $k->id)->get()->delete_all();
     }
     $keyword->delete_all();
     $media = new Media();
     $media->where('user_id', $user->id)->get()->delete_all();
     $post = new Post();
     $post->where('user_id', $user->id)->get();
     foreach ($post as $p) {
         $post_social = new Post_social();
         $post_social->where('post_id', $p->id)->get()->delete_all();
     }
     $post->delete_all();
     $review = new Review();
     $review->where('user_id', $user->id)->get()->delete_all();
     $reviews_notification = new Reviews_notification();
     $reviews_notification->where('user_id', $user->id)->get()->delete_all();
     $rss_feeds_users = new Rss_feeds_users();
     $rss_feeds_users->where('user_id', $user->id)->get()->delete_all();
     $social_post = new Social_post();
     $social_post->where('user_id', $user->id)->get()->delete_all();
     $social_value = new Social_value();
     $social_value->where('user_id', $user->id)->get()->delete_all();
     $user_additional = new User_additional();
     $user_additional->where('user_id', $user->id)->get()->delete_all();
     $user_feed = new User_feed();
     $user_feed->where('user_id', $user->id)->get()->delete_all();
     $user_timezone = new User_timezone();
     $user_timezone->where('user_id', $user->id)->get()->delete_all();
     $this->addFlash(lang('delete_success'), 'success');
     redirect('admin/' . $url);
 }
Esempio n. 5
0
 /**
  * Function for dev to add test rank for keywords
  */
 public function add_test_rank()
 {
     $start_date = strtotime('-2 year');
     $end_date = strtotime('today');
     $keywords = Keyword::inst()->get_user_keywords($this->c_user->id, $this->profile->id);
     for ($i = $start_date; $i <= $end_date; $i += 86400) {
         foreach ($keywords as $keyword) {
             $kr = Keyword_rank::inst()->where(array('keyword_id' => $keyword->id, 'date' => date('Y-m-d', $i)))->get(1);
             $kr->rank = rand(1, 100);
             $kr->keyword_id = $keyword->id;
             $kr->date = date('Y-m-d', $i);
             $kr->save();
         }
     }
 }
Esempio n. 6
0
 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;
     }
 }
Esempio n. 7
0
 /**
  * Return keyword average rank for each day (average for all user keywords for 1 day) in range
  * 
  * @param $user_id (int)
  * @param $from (string) - string for strtotime
  * @param $to (string) - string for strtotime
  * @param $group (bool) - if true - return single average result for all date range, if false - return value for each day in range
  * @return array - of arrays, each child array has "value" with average rank and "date" with date
  */
 public static function average_for_range($user_id, $from = '-1 month', $to = 'today', $group = TRUE)
 {
     $ci =& get_instance();
     $ci->load->library('gls');
     $max_rank = $ci->gls->max_results();
     $kr = Keyword_rank::inst();
     $kr->select('date, AVG(rank) as value')->where_related('keyword', 'user_id', $user_id)->where_related('keyword', 'is_deleted', 0)->where(array('date >=' => date('Y-m-d', strtotime($from)), 'date <=' => date('Y-m-d', strtotime($to)), 'rank < ' => $max_rank));
     if (!$group) {
         $kr->group_by('date')->order_by('date ASC');
     }
     $result = $kr->get()->all_to_array(array('date', 'value'));
     return !$group ? $result : (isset($result[0]['value']) ? $result[0]['value'] : 0);
 }