clsItemDB(); $this->NoResourceId=1; $this->table = GetTablePrefix()."ItemTypes"; $this->id_field="ItemType"; if($ItemType) $this->LoadFromDatabase($ItemType); } function LoadFromDatabase($ItemType) { global $Errors; if(!isset($Id)) { $Errors->AddError("error.AppError",NULL,'Internal error: LoadFromDatabase id',"",get_class($this),"LoadFromDatabase"); return false; } $sql = sprintf("SELECT * FROM ".$this->tablename." WHERE ".$this->IdField()." = '%s'", $Id); $result = $this->adodbConnection->Execute($sql); if ($result === false) { $Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"LoadFromDatabase"); return false; } $data = $result->fields; if(is_array($data)) $this->SetFromArray($data); $this->Clean(); return TRUE; } function GetEditURL() { global $rootURL; $url = $this->Get("EditUrl"); if(strlen($url)) { $ret = $rootURL.$url; } else $ret = ""; return $ret; } function GetTemplatePath() { $m = $this->Get("Module"); } } class clsItemTypeList extends clsItemCollection { function clsItemTypeList() { $this->clsItemCollection(); $this->SourceTable = GetTablePrefix()."ItemTypes"; $this->classname="clsItemType"; $this->LoadAllItems(); } function LoadAllItems() { $t = $this->SourceTable; $m = GetTablePrefix()."Modules"; $sql = "SELECT * FROM $t INNER JOIN $m ON ($t.Module=$m.Name) WHERE Loaded=1 ORDER BY LoadOrder"; $this->Query_Item($sql); } function LoadPrimaryItems() { $t = $this->SourceTable; $m = GetTablePrefix()."Modules"; $sql = "SELECT * FROM $t INNER JOIN $m ON ($t.Module=$m.Name) WHERE Loaded=1 ORDER BY LoadOrder WHERE PrimaryItem=1"; $this->Query_Item($sql); } function BuildUserItemTable($UserId,$ClearTable=1) { global $objSession; $dest_table = $objSession->GetEditTable("UserItems"); // $objSession->GetSessionKey()."_UserItems"; if($ClearTable) { @$this->adodbConnection->Execute("DROP TABLE IF EXISTS ".$dest_table); $sql = "CREATE TABLE ".$dest_table." ("; $sql .="PortalUserId INT, "; $sql .="ResourceId INT, "; $sql .="ItemType INT)"; $this->adodbConnection->Execute($sql); } foreach($this->Items as $t) { $Source = GetTablePrefix().$t->Get("SourceTable"); $Field = $t->Get("CreatorField"); if(!$Field) continue; $Type = $t->Get("ItemType"); $sel = "SELECT ResourceId FROM $Source WHERE $Field=$UserId"; $rs = $this->adodbConnection->Execute($sel); while($rs && !$rs->EOF) { $ins = "INSERT INTO $dest_table VALUES ($UserId,".$rs->fields["ResourceId"].",$Type)"; $this->adodbConnection->Execute($ins); $rs->MoveNext(); } } return $dest_table; } function GetTypeByClassName($name) { $ret = NULL; foreach($this->Items as $i) { if($i->Get("ClassName")==$name) { $ret = $i; break; } } return $ret; } function GetTypeByName($name) { $ret = NULL; foreach($this->Items as $i) { if(strtolower($i->Get("ItemName"))==strtolower($name)) { $ret = $i; break; } } return $ret; } function GetItemTypeValue($name) { $ret = NULL; foreach($this->Items as $i) { if(strtolower($i->Get("ItemName"))==strtolower($name)) { $ret = $i; break; } } $value = 0; if(is_object($ret)) $value = $i->Get("ItemType"); return $value; } function GetItem($id,$db=FALSE) { foreach($this->Items as $i) { if($i->Get("ItemType")==$id) { $ret = $i; break; } } return $ret; } function GetTypeEditUrl($type) { foreach($this->Items as $i) { if($i->Get("ItemType")==$type) { $ret = $i->GetEditURL(); break; } } return $ret; } } class clsMultiTypeList extends clsItemCollection { function clsMultiTypeList() { $this->clsItemCollection(); $this->classname = "clsItem"; } function Query_Item($sql, $offset=-1,$rows=-1,$Type="") { global $Errors; if($rows>-1 && $offset>-1) { //echo "Executing SelectLimit $sql Offset: $offset,$rows
\n"; $result = $this->adodbConnection->SelectLimit($sql, $rows,$offset); } else $result = $this->adodbConnection->Execute($sql); if ($result === false) { $Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Query_Item"); return false; } LogEntry("SQL Loop Start\n"); $count = 0; while ($result && !$result->EOF) { $count++; $data = $result->fields; $i =& $this->AddItemFromArray($data,TRUE); if(is_numeric($Type)) $i->type = $Type; if(ADODB_EXTENSION>0) { adodb_movenext($result); } else $result->MoveNext(); } LogEntry("SQL Loop End ($count iterations)\n"); return $this->Items; } }