Beispiel #1
0
 /**
  *
  * @return nc_search_data_persistent
  */
 public function save()
 {
     $this->set('timestamp', nc_search_util::sql_datetime());
     return parent::save();
 }
Beispiel #2
0
    $order_by = "`Timestamp` DESC";
} elseif ($sort_by == 'query') {
    $order_by = "`QueryString` ASC";
}
$where = array(1);
if (strlen($this->get_input('fragment'))) {
    $where[] = "`QueryString` LIKE '%" . nc_search_util::db_escape($this->get_input('fragment')) . "%'";
}
// если установлен день или час, считать, что речь идёт о текущем дне/месяце/годе
$from_today = $this->get_input('datetime_from_d') || $this->get_input('datetime_from_H');
$timestamp_from = call_user_func_array('mktime', array((int) $this->get_input('datetime_from_H', 0), (int) $this->get_input('datetime_from_M', 0), 0, (int) $this->get_input('datetime_from_m', $from_today ? date("m") : 1), (int) $this->get_input('datetime_from_d', $from_today ? date("d") : 1), (int) $this->get_input('datetime_from_Y', $from_today ? date("Y") : 2000)));
// если установлен день или час, считать, что речь идёт о текущем дне/месяце/годе
$to_today = $this->get_input('datetime_to_d') || $this->get_input('datetime_to_H');
$timestamp_to = call_user_func_array('mktime', array((int) $this->get_input('datetime_to_H', 23), (int) $this->get_input('datetime_to_M', 59), 59, (int) $this->get_input('datetime_to_m', $to_today ? date("m") : 12), (int) $this->get_input('datetime_to_d', $to_today ? date("d") : 31), (int) $this->get_input('datetime_to_Y', $to_today ? date("Y") : 2037)));
$sql_datetime_from = nc_search_util::sql_datetime($timestamp_from);
$sql_datetime_to = nc_search_util::sql_datetime($timestamp_to);
if ($sql_datetime_from != '2000-01-01 00:00:00' || $sql_datetime_to != '2037-12-31 23:59:59') {
    $where[] = "`Timestamp` BETWEEN '{$sql_datetime_from}' AND '{$sql_datetime_to}'";
}
if ($results == 'none') {
    $where[] = '`ResultsCount` = 0';
} elseif ($results == 'matched') {
    $where[] = '`ResultsCount` > 0';
}
$where = join(" AND ", $where);
$offset = (int) $this->get_input('offset');
$query = "SELECT `latest`.`Timestamp`,\n                 `latest`.`QueryString`,\n                 `latest`.`ResultsCount`,\n                 `latest`.`IP`,\n                 `latest`.`User_ID`,\n                 `q`.`QueryCount`,\n                 `u`.`Login`\n            FROM (SELECT MAX(`Query_ID`) AS `Query_ID`,\n                         COUNT(`Query_ID`) AS `QueryCount`\n                    FROM `Search_Query`\n                   WHERE {$where}\n                   GROUP BY `QueryString`\n                   ORDER BY {$order_by}\n                   LIMIT {$per_page} OFFSET {$offset}) AS `q`\n            JOIN `Search_Query` AS `latest` ON (`q`.`Query_ID` = `latest`.`Query_ID`)\n            LEFT JOIN `User` AS `u` ON (`latest`.`User_ID` = `u`.`User_ID`)";
$res = $this->get_db()->get_results($query, ARRAY_A);
if ($res) {
    $found_rows = $this->get_db()->get_var("SELECT COUNT(DISTINCT(`QueryString`))\n                                              FROM `Search_Query`\n                                             WHERE {$where}");
    // строка с вариантами сортировки
Beispiel #3
0
 /**
  * 
  */
 public static function purge_log()
 {
     $days_to_keep = self::get_setting('DaysToKeepEventLog');
     $time = nc_search_util::sql_datetime(strtotime("-{$days_to_keep} days"));
     nc_Core::get_object()->db->query("DELETE FROM `Search_Log` WHERE `Timestamp` < '{$time}'");
 }