Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Thu, Jun 19, 6:20 AM

in-portal

Index: trunk/core/units/general/helpers/count_helper.php
===================================================================
--- trunk/core/units/general/helpers/count_helper.php (revision 8067)
+++ trunk/core/units/general/helpers/count_helper.php (revision 8068)
@@ -1,102 +1,100 @@
<?php
class kCountHelper extends kHelper {
function kCountHelper()
{
parent::kHelper();
// reset expired counts
$sql = 'UPDATE '.TABLE_PREFIX.'Counters
SET CountValue = NULL
WHERE (LifeTime > 0) AND (LastCounted < '.adodb_mktime().' - LifeTime)';
$this->Conn->Query($sql);
}
/**
* Returns counter value
*
* @param string $name counter name
* @param Array $params counter parameters
* @param string $query_name specify query name directly (don't generate from parmeters)
* @param bool $multiple_results
* @return mixed
*/
function getCounter($name, $params = Array (), $query_name = null, $multiple_results = false)
{
$clone_counter = false;
$query_name = isset($query_name) ? $query_name : rtrim($name.'-'.implode('-', array_values($params)), '-');
$sql = 'SELECT *
FROM '.TABLE_PREFIX.'Counters
WHERE Name = '.$this->Conn->qstr($query_name);
$count_data = $this->Conn->GetRow($sql);
if (!$count_data && ($query_name != $name)) {
// cloned record not found -> search for origial one
$sql = 'SELECT *
FROM '.TABLE_PREFIX.'Counters
WHERE Name = '.$this->Conn->qstr($name);
$count_data = $this->Conn->GetRow($sql);
$clone_counter = true;
}
if (is_null($count_data['CountValue'])) {
$params['PREFIX'] = TABLE_PREFIX;
$count_sql = $count_data['CountQuery'];
foreach ($params as $replace_from => $replace_to) {
$count_sql = str_replace('<%'.$replace_from.'%>', $replace_to, $count_sql);
}
if ($multiple_results) {
$count_data['CountValue'] = serialize($this->Conn->GetCol($count_sql));
}
else {
$count_data['CountValue'] = $this->Conn->GetOne($count_sql);
}
if ($clone_counter && !$count_data['IsClone']) {
// don't clone clones
$count_data['CounterId'] = 0;
$count_data['Name'] = $query_name;
$count_data['CountQuery'] = $count_sql;
$count_data['IsClone'] = 1;
}
$count_data['LastCounted'] = adodb_mktime();
$this->Conn->doInsert($count_data, TABLE_PREFIX.'Counters', 'REPLACE');
}
return $multiple_results ? unserialize($count_data['CountValue']) : $count_data['CountValue'];
}
/**
* Resets counter, whitch are affected by one of specified tables
*
* @param string $tables comma separated tables list used in counting sqls
*/
function resetCounters($tables)
{
- echo 'resetting counters ['.$tables.']<br />';
-
$tables = explode(',', $tables);
$prefix_length = strlen(TABLE_PREFIX);
foreach ($tables as $index => $table) {
// remove prefixes
if (substr($table, 0, $prefix_length) == TABLE_PREFIX) {
$table = substr($table, $prefix_length);
}
$tables[$index] = '(TablesAffected LIKE "%|'.$table.'|%")';
}
$sql = 'UPDATE '.TABLE_PREFIX.'Counters
SET CountValue = NULL
WHERE '.implode(' OR ', $tables);
$this->Conn->Query($sql);
}
}
?>
\ No newline at end of file
Property changes on: trunk/core/units/general/helpers/count_helper.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.2
\ No newline at end of property
+1.3
\ No newline at end of property

Event Timeline