Cheetah
ChWsbTextDb.php
Go to the documentation of this file.
1 <?php
2 
8 ch_import('ChWsbModuleDb');
9 
11 {
12  var $_oConfig;
13 
14  function __construct(&$oConfig)
15  {
16  parent::__construct($oConfig);
17 
18  $this->_oConfig = &$oConfig;
19  }
23  function getEntries($aParams = array())
24  {
25  $sMethod = 'getAll';
26  $sSelectClause = $sWhereClause = $sOrderClause = $sLimitClause = "";
27  switch($aParams['sample_type']) {
28  case 'id':
29  $sMethod = 'getRow';
30  $sWhereClause = " AND `te`.`id`='" . $aParams['id'] . "'";
31  $sOrderClause = "`te`.`when` DESC";
32  $sLimitClause = "LIMIT 1";
33  break;
34  case 'uri':
35  $sMethod = 'getRow';
36  $sWhereClause = " AND `te`.`uri`='" . $aParams['uri'] . "'";
37  $sOrderClause = "`te`.`when` DESC";
38  $sLimitClause = "LIMIT 1";
39  break;
40  case 'view':
41  $sWhereClause = " AND `te`.`uri`='" . $aParams['uri'] . "' AND `te`.`status`='" . CH_TD_STATUS_ACTIVE . "'";
42  $sOrderClause = "`te`.`when` DESC";
43  $sLimitClause = "LIMIT 1";
44  break;
45  case 'search_unit':
46  $sWhereClause = " AND `te`.`uri`='" . $aParams['uri'] . "'";
47  $sOrderClause = "`te`.`when` DESC";
48  $sLimitClause = "LIMIT 1";
49  break;
50  case 'archive':
51  $sWhereClause = " AND `te`.`status`='" . CH_TD_STATUS_ACTIVE . "'";
52  $sOrderClause = "`te`.`when` DESC";
53  $sLimitClause = "LIMIT " . (int)$aParams['start'] . ', ' . (int)$aParams['count'];
54  break;
55  case 'featured':
56  $sWhereClause = " AND `te`.`status`='" . CH_TD_STATUS_ACTIVE . "' AND `te`.`featured`='1'";
57  $sOrderClause = "`te`.`when` DESC";
58  $sLimitClause = "LIMIT " . (int)$aParams['start'] . ', ' . (int)$aParams['count'];
59  break;
60  case 'top_rated':
61  $sWhereClause = " AND `te`.`status`='" . CH_TD_STATUS_ACTIVE . "'";
62  $sOrderClause = "`te`.`rate` DESC";
63  $sLimitClause = "LIMIT " . (int)$aParams['start'] . ', ' . (int)$aParams['count'];
64  break;
65  case 'popular':
66  $sWhereClause = " AND `te`.`status`='" . CH_TD_STATUS_ACTIVE . "'";
67  $sOrderClause = "`te`.`view_count` DESC";
68  $sLimitClause = "LIMIT " . (int)$aParams['start'] . ', ' . (int)$aParams['count'];
69  break;
70  case 'admin':
71  $sWhereClause = !empty($aParams['filter_value']) ? " AND (`caption` LIKE '%" . $aParams['filter_value'] . "%' OR `content` LIKE '%" . $aParams['filter_value'] . "%' OR `tags` LIKE '%" . $aParams['filter_value'] . "%')" : "";
72  $sOrderClause = "`te`.`when` DESC";
73  $sLimitClause = "LIMIT " . $aParams['start'] . ', ' . $aParams['count'];
74  break;
75  case 'all':
76  $sWhereClause = " AND `te`.`status`='" . CH_TD_STATUS_ACTIVE . "'";
77  $sOrderClause = "`te`.`when` DESC";
78  break;
79  }
80  $sSql = "SELECT
81  " . $sSelectClause . "
82  `te`.`id` AS `id`,
83  `te`.`caption` AS `caption`,
84  `te`.`snippet` AS `snippet`,
85  `te`.`content` AS `content`,
86  `te`.`when` AS `when_uts`,
87  DATE_FORMAT(FROM_UNIXTIME(`te`.`when`), '%Y-%m-%d %H:%i') AS `when`,
88  DATE_FORMAT(FROM_UNIXTIME(`te`.`when`), '" . $this->_oConfig->getDateFormat() . "') AS `when_uf`,
89  UNIX_TIMESTAMP() - `te`.`when` AS `ago`,
90  `te`.`uri` AS `uri`,
91  `te`.`tags` AS `tags`,
92  `te`.`categories` AS `categories`,
93  `te`.`comment` AS `comment`,
94  `te`.`vote` AS `vote`,
95  `te`.`date` AS `date`,
96  `te`.`status` AS `status`,
97  `te`.`featured` AS `featured`,
98  `te`.`cmts_count` AS `cmts_count`
99  FROM `" . $this->_sPrefix . "entries` AS `te`
100  WHERE 1 " . $sWhereClause . "
101  ORDER BY " . $sOrderClause . " " . $sLimitClause;
102  $aResult = $this->$sMethod($sSql);
103 
104  if(!in_array($aParams['sample_type'], array('id', 'uri', 'view'))) {
105  $iSnippetLen = $this->_oConfig->getSnippetLength();
106 
107  for($i = 0; $i < count($aResult); $i++)
108  $aResult[$i]['content'] = mb_substr(str_replace(array('&nbsp;', '&lt;', '&gt;'), array(' ', '', ''), strip_tags($aResult[$i]['snippet'])), 0, $iSnippetLen);
109  }
110 
111  return $aResult;
112  }
119  function deleteEntries($mixed)
120  {
121  if(!is_array($mixed))
122  $mixed = array($mixed);
123 
124  $sSql = "DELETE FROM `" . $this->_sPrefix . "entries` WHERE `id` IN ('" . implode("', '", $mixed) . "')";
125  return $this->query($sSql) > 0;
126  }
134  function updateEntry($mixed, $aValues)
135  {
136  if(!is_array($mixed))
137  $mixed = array($mixed);
138 
139  $sSql = "";
140  foreach($aValues as $sKey => $sValue)
141  $sSql .= "`" . $sKey . "`='" . $sValue . "', ";
142  $sSql = "UPDATE `" . $this->_sPrefix . "entries` SET " . substr($sSql, 0, -2) . " WHERE `id` IN ('" . implode("', '", $mixed) . "')";
143  return $this->query($sSql) > 0;
144  }
145  function getCount($aParams = array())
146  {
147  if(!isset($aParams['sample_type']))
148  $aParams['sample_type'] = '';
149 
150  switch($aParams['sample_type']) {
151  case 'featured':
152  $sWhereClause = "`status`='" . CH_TD_STATUS_ACTIVE . "' AND `featured`='1'";
153  break;
154  case 'admin':
155  $sWhereClause = !empty($aParams['filter_value']) ? "(`caption` LIKE '%" . $aParams['filter_value'] . "%' OR `content` LIKE '%" . $aParams['filter_value'] . "%' OR `tags` LIKE '%" . $aParams['filter_value'] . "%')" : "1";
156  break;
157  default:
158  $sWhereClause = "`status`='" . CH_TD_STATUS_ACTIVE . "'";
159  break;
160  }
161  $sSql = "SELECT COUNT(`id`) FROM `" . $this->_sPrefix . "entries` WHERE " . $sWhereClause . " LIMIT 1";
162  return (int)$this->getOne($sSql);
163  }
164  function getByMonth($iYear, $iMonth, $iNextYear, $iNextMonth)
165  {
166  $sSql = "SELECT
167  *,
168  DAYOFMONTH(FROM_UNIXTIME(`when`)) AS `Day`
169  FROM `" . $this->_sPrefix . "entries`
170  WHERE `when` >= UNIX_TIMESTAMP('" . $iYear . "-" . $iMonth . "-1') AND `when` < UNIX_TIMESTAMP('" . $iNextYear . "-" . $iNextMonth . "-1') AND `status` = '0'";
171  return $this->getAll($sSql);
172  }
173  function publish(&$aIds)
174  {
175  $aIds = $this->getColumn("SELECT
176  `id`
177  FROM `" . $this->_sPrefix . "entries`
178  WHERE `status`='" . CH_TD_STATUS_PENDING . "' AND `when`<=UNIX_TIMESTAMP()");
179  if(empty($aIds))
180  return false;
181 
182  $iStatus = $this->_oConfig->isAutoapprove() ? CH_TD_STATUS_ACTIVE : CH_TD_STATUS_INACTIVE;
183  return (int)$this->query("UPDATE `" . $this->_sPrefix . "entries`
184  SET `status`='" . $iStatus . "'
185  WHERE `id` IN ('" . implode("','", $aIds) . "')") > 0;
186  }
187 }
ChWsbTextDb\getCount
getCount($aParams=array())
Definition: ChWsbTextDb.php:145
ChWsbTextDb\$_oConfig
$_oConfig
Definition: ChWsbTextDb.php:12
ch_import
ch_import($sClassName, $aModule=array())
Definition: utils.inc.php:1218
$aResult
$aResult
Definition: index.php:19
php
ChWsbModuleDb
Definition: ChWsbModuleDb.php:12
ChWsbDb\getAll
getAll($sQuery, $aBindings=[], $iFetchType=PDO::FETCH_ASSOC)
Definition: ChWsbDb.php:206
ChWsbTextDb\publish
publish(&$aIds)
Definition: ChWsbTextDb.php:173
ChWsbTextDb\getEntries
getEntries($aParams=array())
Definition: ChWsbTextDb.php:23
ChWsbTextDb\deleteEntries
deleteEntries($mixed)
Definition: ChWsbTextDb.php:119
ChWsbDb\query
query($sQuery, $aBindings=[])
Definition: ChWsbDb.php:386
CH_TD_STATUS_INACTIVE
const CH_TD_STATUS_INACTIVE
Definition: ChWsbTextData.php:13
ChWsbTextDb\getByMonth
getByMonth($iYear, $iMonth, $iNextYear, $iNextMonth)
Definition: ChWsbTextDb.php:164
ChWsbDb\getOne
getOne($sQuery, $aBindings=[], $iIndex=0)
Definition: ChWsbDb.php:263
CH_TD_STATUS_ACTIVE
const CH_TD_STATUS_ACTIVE
Definition: ChWsbTextData.php:12
ChWsbTextDb
Definition: ChWsbTextDb.php:11
ChWsbTextDb\__construct
__construct(&$oConfig)
Definition: ChWsbTextDb.php:14
ChWsbTextDb\updateEntry
updateEntry($mixed, $aValues)
Definition: ChWsbTextDb.php:134
empty
Attr AllowedRel this is empty
Definition: Attr.AllowedRel.txt:7
as
as
Definition: Filter.ExtractStyleBlocks.Escaping.txt:10
CH_TD_STATUS_PENDING
const CH_TD_STATUS_PENDING
Definition: ChWsbTextData.php:14
ChWsbDb\getColumn
getColumn($sQuery, $aBindings=[])
Definition: ChWsbDb.php:243