Esempio n. 1
0
 public function minutely_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. 2
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. 3
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);
 }