table_common_advertisement.php
2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
/**
 *      [Discuz!] (C)2001-2099 Comsenz Inc.
 *      This is NOT a freeware, use is subject to license terms
 *
 *      $Id: table_common_advertisement.php 33658 2013-07-29 06:25:15Z nemohou $
 */
if(!defined('IN_DISCUZ')) {
	exit('Access Denied');
}
class table_common_advertisement extends discuz_table
{
	public function __construct() {
		$this->_table = 'common_advertisement';
		$this->_pk    = 'advid';
		parent::__construct();
	}
	public function fetch_all_type() {
		return DB::fetch_all("SELECT type, COUNT(type) AS count FROM %t GROUP BY type", array($this->_table));
	}
	public function fetch_all_by_type($type) {
		return DB::fetch_all("SELECT * FROM %t WHERE type=%s", array($this->_table, $type));
	}
	public function fetch_all_old() {
		return DB::fetch_all("SELECT * FROM %t WHERE available>0 AND starttime<=%d ORDER BY displayorder", array($this->_table, TIMESTAMP));
	}
	public function close_endtime() {
		$return = DB::result_first("SELECT COUNT(*) FROM %t WHERE endtime>0 AND endtime<='".TIMESTAMP."'", array($this->_table));
		DB::update($this->_table, array('available' => 0), "endtime>0 AND endtime<='".TIMESTAMP."'", 'UNBUFFERED');
		return $return;
	}
	public function fetch_all_endtime($endtime) {
		return DB::fetch_all("SELECT * FROM %t WHERE endtime=%s", array($this->_table, $endtime));
	}
	private function _search_conditions($title, $starttime, $endtime, $type, $target) {
		$conditions = '';
		$conditions .= $title ? " AND ".DB::field('title', '%'.$title.'%', 'like') : '';
		$conditions .= $starttime > 0 ? " AND starttime>='".(TIMESTAMP - intval($starttime))."'" : ($starttime == -1 ? " AND starttime='0'" : '');
		$conditions .= $endtime > 0 ? " AND endtime>0 AND endtime<'".(TIMESTAMP + intval($endtime))."'" : ($endtime == -1 ? " AND endtime='0'" : '');
		$conditions .= $type ? " AND ".DB::field('type', $type) : '';
		$conditions .= $target ? " AND ".DB::field('targets', '%'.$target.'%', 'like') : '';
		return $conditions;
	}
	public function fetch_all_search($title, $starttime, $endtime, $type, $target, $orderby, $start_limit, $advppp) {
		$conditions = $this->_search_conditions($title, $starttime, $endtime, $type, $target);
		$order_by = $orderby == 'starttime' ? 'starttime' : ($orderby == 'type' ? 'type' : ($orderby == 'displayorder' ? 'displayorder' : 'advid DESC'));
		$start_limit = intval($start_limit);
		$advppp = intval($advppp);
		return DB::fetch_all("SELECT * FROM ".DB::table('common_advertisement')." WHERE 1 $conditions ORDER BY available DESC, $order_by LIMIT $start_limit, $advppp");
	}
	public function count_search($title, $starttime, $endtime, $type, $target) {
		$conditions = $this->_search_conditions($title, $starttime, $endtime, $type, $target);
		return DB::result_first("SELECT COUNT(*) FROM ".DB::table('common_advertisement')." WHERE 1 $conditions");
	}
}
?>