Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Thu, Jul 17, 6:37 PM

in-portal

Index: trunk/kernel/include/itemtypes.php
===================================================================
--- trunk/kernel/include/itemtypes.php (revision 3042)
+++ trunk/kernel/include/itemtypes.php (revision 3043)
@@ -1,236 +1,237 @@
<?php
class clsItemType extends clsItemDB
{
function clsItemType($ItemType=NULL)
{
$this->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<br>\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;
}
}
Property changes on: trunk/kernel/include/itemtypes.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