本文整理汇总了PHP中phpbb\db\driver\driver_interface::sql_close方法的典型用法代码示例。如果您正苦于以下问题:PHP driver_interface::sql_close方法的具体用法?PHP driver_interface::sql_close怎么用?PHP driver_interface::sql_close使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类phpbb\db\driver\driver_interface
的用法示例。
在下文中一共展示了driver_interface::sql_close方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: top_count
public function top_count($top_id, $action)
{
/* GIF изображение */
header('Cache-Control: public');
header("Content-type: image/gif");
$error = false;
$user_ip = $this->ip();
/* Выводим данные сайта */
$sql_array = array('SELECT' => 'r.top_id, r.top_online, r.top_hits, r.top_hosts, r.top_hits_all, r.top_hosts_all, r.top_icon_big, r.top_icon_small', 'FROM' => array(RATING_TABLE => 'r'));
$sql_array['SELECT'] .= ', hi.top_ip';
$sql_array['LEFT_JOIN'][] = array('FROM' => array(RATING_HITS_TABLE => 'hi'), 'ON' => 'r.top_id = hi.top_id AND `top_ip` = "' . $user_ip . '"');
$sql_array['SELECT'] .= ', o.top_time';
$sql_array['LEFT_JOIN'][] = array('FROM' => array(RATING_ONLINE_TABLE => 'o'), 'ON' => 'r.top_id = o.top_id AND o.top_ip = "' . $user_ip . '"');
$sql_array['WHERE'] = "r.top_id = " . (int) $top_id;
$sql = $this->db->sql_build_query('SELECT', $sql_array);
$result = $this->db->sql_query($sql);
$row = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
/* Ошибка или бот поисковой */
if (!$row['top_id'] && !$this->user->data['is_bot']) {
$error = true;
}
/* Не будем счиать ошибки */
if (!$error) {
$sql_upd = array();
$ip_prov_id = 0;
/* Пока cron не сделает сброс, ни каких подсчётов. */
if ($this->config['top_rating_last_gc'] > time() - $this->config['top_rating_gc']) {
$sql = 'SELECT ip_prov_id FROM ' . RATING_IP_TABLE . " WHERE INET_ATON('" . $user_ip . "') BETWEEN `ip_start` AND `ip_finish`";
$result = $this->db->sql_query($sql);
if ($iprow = $this->db->sql_fetchrow($result)) {
$ip_prov_id = $iprow['ip_prov_id'];
}
$this->db->sql_freeresult($result);
/* Если нет ip пользователя в базе, значит нужно его создать и подсчитать хосты */
if ($row['top_ip'] != $user_ip) {
if ($row['top_hits'] > $row['top_hosts'] + $row['top_hosts']) {
$sql = 'INSERT INTO ' . RATING_HITS_TABLE . " SET\n\t\t\t\t\t\t\t`top_id`\t\t= " . $row['top_id'] . ",\n\t\t\t\t\t\t\t`top_time`\t\t= '" . time() . "',\n\t\t\t\t\t\t\t`top_ip`\t\t= '" . $user_ip . "',\n\t\t\t\t\t\t\t`top_device`\t= '" . (string) $this->browser() . "',\n\t\t\t\t\t\t\t`top_prov_id`\t= " . $ip_prov_id . ",\n\t\t\t\t\t\t\t`top_count`\t\t= 1";
$this->db->sql_query($sql);
$sql_upd += array('top_hosts' => $row['top_hosts'] + 1, 'top_hosts_all' => $row['top_hosts_all'] + 1);
}
} else {
/* Иначе просто обновим количество визитов пользователя */
$sql = 'UPDATE ' . RATING_HITS_TABLE . ' SET `top_time` = "' . time() . '", `top_count` = (`top_count` + 1)
WHERE top_id = ' . $row['top_id'] . '
AND top_ip = "' . $row['top_ip'] . '"';
$this->db->sql_query($sql);
}
/* Общее число и количество визитов */
if ($user_ip) {
$sql_upd += array('top_hits' => $row['top_hits'] + 1, 'top_hits_all' => $row['top_hits_all'] + 1);
}
/* Время онлайн, индивидуально для каждого пользователя */
if (!$row['top_time']) {
$sql = 'INSERT INTO ' . RATING_ONLINE_TABLE . " SET\n\t\t\t\t\t\t`top_id`\t\t= " . $row['top_id'] . ",\n\t\t\t\t\t\t`top_time`\t\t= '" . time() . "',\n\t\t\t\t\t\t`top_ip`\t\t= '" . $user_ip . "',\n\t\t\t\t\t\t`top_device`\t= '" . (string) $this->browser() . "',\n\t\t\t\t\t\t`top_prov_id`\t= " . $ip_prov_id;
$this->db->sql_query($sql);
$sql_upd += array('top_online' => $row['top_online'] + 1);
} else {
$this->db->sql_query('DELETE FROM ' . RATING_ONLINE_TABLE . ' WHERE top_id = ' . $row['top_id'] . ' AND top_time < ' . (time() - 360));
$sql = 'SELECT COUNT(*) AS top_time FROM ' . RATING_ONLINE_TABLE . ' WHERE top_id = ' . (int) $row['top_id'];
$result = $this->db->sql_query($sql);
$top_online = (int) $this->db->sql_fetchfield('top_time');
$this->db->sql_freeresult($result);
$sql_upd += array('top_online' => $top_online);
}
/* Все изменеия фиксируем у данного сайта */
$sql = 'UPDATE ' . RATING_TABLE . ' SET ' . $this->db->sql_build_array('UPDATE', $sql_upd) . '
WHERE top_id = ' . $row['top_id'];
$this->db->sql_query($sql);
}
/* Если создать и(или) вывести счётчик не получилось, то ошибка */
if (!($counter = $this->count_img($action, $row))) {
$action = $row['top_hosts'];
$top_id = $row['top_hits'];
$error = true;
}
}
/* Если ошибка дошла сюда, значит пора выводить изображение по умолчанию */
if ($error) {
$this->default_img($action, $top_id);
}
/* Очищаем буфер, закрываем соединение и завершаем работу скрипта */
flush();
$this->db->sql_close();
exit;
}