clsItemDB();
$this->tablename = GetTablePrefix()."SysCache";
$this->type=12;
$this->BasePermission="";
$this->id_field = "SysCacheId";
$this->NoResourceId=1;
$this->debuglevel=0;
if($id != NULL)
{
if(is_numeric($id))
{
$this->LoadFromDatabase($id);
}
else
$this->LoadByName($name);
}
}
function DetectCahanges($name, $value)
{
}
function LoadFromDatabase($Id)
{
global $Errors;
$sql = sprintf("SELECT * FROM ".$this->tablename." WHERE ".$this->id_field."='%s'",$Id);
$result = $this->adodbConnection->Execute($sql);
if ($result === false || $result->EOF)
{
$Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"LoadFromDatabase");
return false;
}
$data = $result->fields;
$this->SetFromArray($data);
$this->Clean();
return true;
}
function LoadByName($name)
{
global $Errors;
$sql = sprintf("SELECT * FROM ".$this->tablename." WHERE Name ='%s'",$name);
$result = $this->adodbConnection->Execute($sql);
if ($result === false || $result->EOF)
{
$Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"LoadByName");
return false;
}
$data = $result->fields;
$this->SetFromArray($data);
$this->Clean();
return true;
}
}
class clsSysCacheList extends clsItemCollection
{
function clsSysCacheList()
{
$this->clsItemCollection();
$this->SourceTable=GetTablePrefix()."SysCache";
$this->classname = "clsSysCacheItem";
}
function &GetItemByModule($name, $module, $GroupList="", $LoadFromDB=TRUE)
{
$found=FALSE;
if(is_array($this->Items))
{
foreach($this->Items as $i)
{
if($i->Get("Name")==$name && $i->Get("Module")==$module)
{
$found = TRUE;
break;
}
}
}
if(!$found && $LoadFromDB==TRUE)
{
$sql = "SELECT * FROM ".$this->SourceTable." WHERE Name = '$name' AND Module='$module' AND GroupList='$GroupList'";
//echo $sql;
$res = $this->adodbConnection->Execute($sql);
if($res && !$res->EOF)
{
$i = $this->AddItemFromArray($res->fields);
$i->tablename = $this->SourceTable;
$i->Clean();
$found = TRUE;
}
else
$i = FALSE;
}
if(!$found)
{
unset($i);
$i = FALSE;
}
return $i;
}
function &GetContextItem($name,$module,$context, $GroupList="", $LoadFromDB=TRUE)
{
$found=FALSE;
if(is_array($this->Items))
{
foreach($this->Items as $i)
{
if($i->Get("Name")==$name && $i->Get("Module")==$module && $i->Get("Context")==$context)
{
$found = TRUE;
break;
}
}
}
if(!$found && $LoadFromDB==TRUE)
{
unset($i);
$sql = "SELECT * FROM ".$this->SourceTable." WHERE Name = '$name' AND Module='$module' AND Context='$context' AND GroupList='$GroupList'";
//echo $sql."
\n";
$res = $this->adodbConnection->Execute($sql);
if($res && !$res->EOF)
{
$i = $this->AddItemFromArray($res->fields);
$i->tablename = $this->SourceTable;
$i->Clean();
$found = TRUE;
}
else
$i = FALSE;
}
if(!$found)
{
unset($i);
$i = FALSE;
}
return $i;
}
function &AddCacheItem($name,$value,$module="",$expire=0,$context="",$GroupList="")
{
$i = new clsSysCacheItem();
$i->tablename = $this->SourceTable;
$i->Set(array("Name","Value","Expire","GroupList"),array($name,$value,$expire, $GroupList));
if(strlen($module))
$i->Set("Module",$module);
$i->Set("Context",$context);
$conn = &GetADODBConnection();
$sql = 'SELECT * FROM '.$i->tablename.'
WHERE Name="'.$name.'"
AND GroupList='.(int)$GroupList.'
AND Context="'.$context.'"
AND Module="'.$module.'"';
$rs = $conn->Execute($sql);
if ($rs->EOF)
{
$i->Create();
}
return $i;
}
function EditCacheItem($name,$value,$module="",$expire=0,$context="",$GroupList="")
{
if(strlen($context))
{
$i =& $this->GetItemByModule($name,$module, $GroupList,TRUE);
}
else
$i =& $this->GetContextItem($name,$module,$context,$GroupList);
if(is_object($i))
{
if($i->Get("Value")!=$value && $name==$i->Get("Name") && $i->Get("Context")==$context &&
$GroupList==$i->Get("GroupList"))
{
$i->Set(array("Name","Value","Expire","GroupList"),array($name,$value,$expire, $GroupList));
if(strlen($module))
$i->Set("Module",$module);
$i->Set("Context",$context);
$i->Update();
}
else
{
$this->AddCacheItem($name,$value,$module,$expire, $context, $GroupList);
}
}
else
{
$this->AddCacheItem($name,$value,$module,$expire, $context, $GroupList);
}
}
function DeleteCacheItem($name,$module="")
{
$i =& $this->GetItemByModule($name,$module,TRUE);
if(is_object($i))
{
$i->Delete();
}
}
function GetContextValue($Name,$Module,$Context="",$GroupList="")
{
$ret = "";
$i =& $this->GetContextItem($Name,$Module,$Context, $GroupList);
if(is_object($i))
$ret = $i->Get("Value");
return $ret;
}
function GetValue($Name,$Module="",$GroupList="")
{
$ret = "";
$i =& $this->GetItemByModule($Name,$Module,$GroupList);
if(is_object($i))
$ret = $i->Get("Value");
return $ret;
}
function PurgeExpired()
{
$sql = "DELETE FROM ".$this->SourceTable." WHERE Expire>0 AND Expire <".adodb_date("U");
$this->adodbConnection->Execute($sql);
}
function PurgeCategory($CatId)
{
$sql = "DELETE FROM ".$this->SourceTable." WHERE Context LIKE ':m".$CatId."-%'";
$this->adodbConnection->Execute($sql);
}
function DeleteCachedItem($where)
{
$sql = "DELETE FROM ".$this->SourceTable;
if(strlen($where))
$sql .= " WHERE $where";
$this->adodbConnection->Execute($sql);
//echo $sql."
\n";
}
}
?>