Index: trunk/kernel/include/parseditem.php
===================================================================
diff -u -r667 -r676
--- trunk/kernel/include/parseditem.php (.../parseditem.php) (revision 667)
+++ trunk/kernel/include/parseditem.php (.../parseditem.php) (revision 676)
@@ -1,5917 +1,2959 @@
clsItemDB();
-
$this->Parser = new clsTemplateList($TemplateRoot);
-
$this->AdminParser = new clsAdminTemplateList();
-
}
-
-
/* function ParseObject($element)
-
{
-
$extra_attribs = ExtraAttributes($element->attributes);
-
if(strtolower($element->name)==$this->TagPrefix)
-
{
-
$field = strtolower($element->attributes["_field"]);
-
$tag = $this->TagPrefix."_".$field;
-
$ret = $this->parsetag($tag);
-
}
-
return $ret;
-
}
-
*/
-
function ParseTimeStamp($d,$attribs=array())
-
{
-
if( isset($attribs["_tz"]) )
-
{
-
$d = GetLocalTime($d,$objSession->Get("tz"));
-
}
-
$part = isset($attribs["_part"]) ? strtolower($attribs["_part"]) : '';
-
if(strlen($part))
-
{
-
$ret = ExtractDatePart($part,$d);
-
}
-
else
-
{
-
if($d<=0)
-
{
-
$ret = "";
-
}
-
else
-
$ret = LangDate($d);
-
}
-
return $ret;
-
}
-
-
function ParseObject($element)
-
{
-
global $objConfig, $objCatList, $var_list_update, $var_list, $n_var_list_update, $m_var_list_update;
-
-
$extra_attribs = ExtraAttributes($element->attributes);
-
$ret = "";
-
-
if ($this->TagPrefix == "email" && strtolower($element->name) == "touser") {
-
$this->TagPrefix = "touser";
-
}
-
-
if(strtolower($element->name)==$this->TagPrefix)
-
{
-
$field = strtolower($element->attributes["_field"]);
-
switch($field)
-
{
-
case "id":
-
$ret = $this->Get($this->id_field);
-
break;
-
case "resourceid":
-
if(!$this->NoResourceId)
-
$ret = $this->Get("ResourceId");
-
break;
-
case "category":
-
$c = $objCatList->GetItem($this->Get("CategoryId"));
-
if(is_object($c))
-
{
-
$ret = $c->parsetag($element->attributes["_cattag"]);
-
}
-
break;
-
case "priority":
-
if($this->Get("Priority")!=0)
-
{
-
$ret = (int)$this->Get("Priority");
-
}
-
else
-
$ret = "";
-
break;
-
case "link":
-
if(method_exists($this,"ItemURL"))
-
{
-
$ret = $this->ItemURL($element->attributes["_template"],FALSE,"");
-
}
-
break;
-
case "cat_link":
-
if(method_exists($this,"ItemURL"))
-
{
-
$ret = $this->ItemURL($element->attributes["_template"],TRUE,"");
-
}
-
break;
-
case "fullpath":
-
$ret = $this->Get("CachedNavbar");
-
if(!strlen($ret))
-
{
-
if(is_numeric($this->Get("CategoryId")))
-
{
-
$c = $objCatList->GetItem($this->Get("CategoryId"));
-
if(is_object($c))
-
$ret = $c->Get("CachedNavbar");
-
}
-
else
-
{
-
if(method_exists($this,"GetPrimaryCategory"))
-
{
-
$cat = $this->GetPrimaryCategory();
-
$c = $objCatList->GetItem($cat);
-
if(is_object($c))
-
$ret = $c->Get("CachedNavbar");
-
}
-
}
-
}
-
// $ret = $this->HighlightText($ret);
-
break;
-
-
case "relevance":
-
$style = $element->attributes["_displaymode"];
-
if(!strlen($style))
-
$style = "numerical";
-
switch ($style)
-
{
-
case "numerical":
-
$ret = (100 * LangNumber($this->Get("Relevance"),1))."%";
-
break;
-
case "bar":
-
$OffColor = $element->attributes["_offbackgroundcolor"];
-
$OnColor = $element->attributes["_onbackgroundcolor"];
-
$percentsOff = (int)(100 - (100 * $this->Get("Relevance"))); if ($percentsOff)
-
{
-
$percentsOn = 100 - $percentsOff;
-
$ret = "
 |  | ";
-
}
-
else
-
$ret = " | ";
-
break;
-
case "graphical":
-
$OnImage = $element->attributes["_onimage"];
-
if (!strlen($OnImage))
-
break;
-
// Get image extension
-
$image_data = explode(".", $OnImage);
-
$image_ext = $image_data[count($image_data)-1];
-
unset($image_data[count($image_data)-1]);
-
$rel = (10 * LangNumber($this->Get("Relevance"),1));
-
$OnImage1 = join(".", $image_data);
-
-
if ($rel)
-
$img_src = $OnImage1."_".$rel.".".$image_ext;
-
else
-
$img_src = $OnImage;
-
-
$ret = "
";
-
break;
-
}
-
-
break;
-
-
case "rating":
-
$style = $element->GetAttributeByName("_displaymode");
-
if(!strlen($style))
-
$style = "numerical";
-
switch($style)
-
{
-
case "numerical":
-
$ret = LangNumber($this->Get("CachedRating"),1);
-
break;
-
case "text":
-
$ret = RatingText($this->Get("CachedRating"));
-
break;
-
case "graphical":
-
$OnImage = $element->attributes["_onimage"];
-
$OffImage = $element->attributes["_offimage"];
-
$images = RatingTickImage($this->Get("CachedRating"),$OnImage,$OffImage);
-
-
for($i=1;$i<=count($images);$i++)
-
{
-
$url = $images[$i];
-
if(strlen($url))
-
{
-
$ret .= "
";
-
$ret .= $element->attributes["_separator"];
-
}
-
}
-
break;
-
}
-
break;
-
case "reviews":
-
$today = FALSE;
-
-
if(method_exists($this,"ReviewCount"))
-
{
-
if($element->GetAttributeByName("_today"))
-
$today = TRUE;
-
$ret = $this->ReviewCount($today);
-
}
-
else
-
$ret = "";
-
-
break;
-
case "votes":
-
$ret = (int)$this->Get("CachedVotesQty");
-
break;
-
-
case "favorite":
-
if(method_exists($this,"IsFavorite"))
-
{
-
if($this->IsFavorite())
-
{
-
$ret = $element->attributes["_label"];
-
if(!strlen($ret))
-
$ret = "lu_favorite";
-
$ret = language($ret);
-
}
-
else
-
$ret = "";
-
}
-
break;
-
case "new":
-
if(method_exists($this,"IsNewItem"))
-
{
-
if($this->IsNewItem())
-
{
-
$ret = $element->GetAttributeByName('_label');
-
if(!strlen($ret))
-
$ret = "lu_new";
-
$ret = language($ret);
-
}
-
else
-
$ret = "";
-
}
-
break;
-
case "pop":
-
if(method_exists($this,"IsPopItem"))
-
{
-
if($this->IsPopItem())
-
{
-
$ret = $element->attributes["_label"];
-
if(!strlen($ret))
-
$ret = "lu_pop";
-
$ret = language($ret);
-
}
-
else
-
$ret = "";
-
}
-
break;
-
case "hot":
-
if(method_exists($this,"IsHotItem"))
-
{
-
if($this->IsHotItem())
-
{
-
$ret = $element->GetAttributeByName("_label");
-
if(!strlen($ret))
-
$ret = "lu_hot";
-
$ret = language($ret);
-
}
-
else
-
$ret = "";
-
}
-
break;
-
case "pick":
-
if($this->Get("EditorsPick")==1)
-
{
-
$ret = $element->GetAttributeByName('_label');
-
if(!strlen($ret))
-
$ret = "lu_pick";
-
$ret = language($ret);
-
}
-
else
-
$ret = "";
-
break;
-
case "admin_icon":
-
if(method_exists($this,"StatusIcon"))
-
{
-
if($element->GetAttributeByName("fulltag"))
-
{
-
$ret = "
StatusIcon()."\">";
-
}
-
else
-
$ret = $this->StatusIcon();
-
}
-
break;
-
case "custom":
-
if(method_exists($this,"GetCustomFieldValue"))
-
{
-
$field = $element->attributes["_customfield"];
-
$default = $element->attributes["_default"];
-
if (strlen($field))
-
$ret = $this->GetCustomFieldValue($field,$default);
-
}
-
break;
-
case "image":
-
$default = $element->attributes["_primary"];
-
$name = $element->attributes["_name"];
-
-
if(strlen($name))
-
{
-
$img = $this->GetImageByName($name);
-
}
-
else
-
{
-
if($default)
-
$img = $this->GetDefaultImage();
-
}
-
-
if(is_object($img))
-
{
-
-
if(strlen($element->attributes["_imagetemplate"]))
-
{
-
$ret = $img->ParseTemplate($element->attributes["_imagetemplate"]);
-
break;
-
}
-
else
-
{
-
if($element->attributes["_thumbnail"])
-
{
-
$url = $img->parsetag("thumb_url");
-
}
-
else
-
{
-
-
if(!$element->attributes["_nothumbnail"])
-
{
-
$url = $img->parsetag("image_url");
-
}
-
else
-
{
-
$url = $img->FullURL(TRUE,"");
-
}
-
}
-
}
-
}
-
else
-
{
-
$url = $element->attributes["_defaulturl"];
-
-
}
-
-
if($element->attributes["_imagetag"])
-
{
-
if(strlen($url))
-
{
-
$ret = "
";
-
}
-
else
-
$ret = "";
-
}
-
else
-
$ret = $url;
-
break;
-
default:
-
$ret = "Undefined:".$element->name;
-
break;
-
}
-
-
}
-
else if ($this->TagPrefix == 'email'){
-
$ret = "Undefined:".$element->name;
-
}
-
return $ret;
-
}
-
-
function ParseString($name)
-
{
-
$el = new clsHtmlTag();
-
$el->Clear();
-
$el->prefix = "inp";
-
$el->name = $name;
-
-
$numargs = func_num_args();
-
$arg_list = func_get_args();
-
for ($i = 1; $i < $numargs; $i++)
-
{
-
$attr = $arg_list[$i];
-
$parts = explode("=",$attr,2);
-
$name = $parts[0];
-
$val = $parts[1];
-
$el->attributes[$name] = $val;
-
}
-
return $this->ParseObject($el);
-
}
-
-
/* pass attributes as strings
-
ie: ParseStringEcho('tagname','_field="something" _data="somethingelse"');
-
*/
-
function ParseStringEcho($name)
-
{
-
$el = new clsHtmlTag();
-
$el->Clear();
-
$el->prefix = "inp";
-
$el->name = $name;
-
-
$numargs = func_num_args();
-
$arg_list = func_get_args();
-
for ($i = 1; $i < $numargs; $i++)
-
{
-
$attr = $arg_list[$i];
-
$parts = explode("=",$attr,2);
-
$name = $parts[0];
-
$val = $parts[1];
-
$el->attributes[$name] = $val;
-
}
-
echo $this->ParseObject($el);
-
}
-
-
function ParseElement($raw, $inner_html ="")
-
{
-
$tag = new clsHtmlTag($raw);
-
$tag->inner_html = $inner_html;
-
-
if($tag->parsed)
-
{
-
if($tag->name=="include" || $tag->name=="perm_include" || $tag->name=="lang_include")
-
{
-
$output = $this->Parser->IncludeTemplate($tag);
-
}
-
else
-
{
-
$output = $this->ParseObject($tag);
-
//echo $output."
";
-
if(substr($output,0,9)=="Undefined")
-
{
-
$output = $tag->Execute();
-
// if(substr($output,0,8)="{Unknown")
-
// $output = $raw;
-
} return $output;
-
}
-
}
-
else
-
return "";
-
}
-
-
function AdminParseTemplate($file)
-
{
-
$html = "";
-
$t = $this->AdminParser->GetTemplate($file);
-
-
if(is_object($t))
-
{
-
array_push($this->AdminParser->stack,$file);
-
$html = $t->source;
-
$next_tag = strpos($html,"",$next_tag);
-
$tagtext = substr($html,$next_tag,($end_tag - $next_tag)+2);
-
$pre = substr($html,0,$next_tag);
-
$post = substr($html,$end_tag+2);
-
$inner = $this->ParseElement($tagtext);
-
$html = $pre.$inner.$post;
-
$next_tag = strpos($html,"AdminParser->stack);
-
}
-
return $html;
-
}
-
-
function ParseTemplateText($text)
-
{
-
$html = $text;
-
$search = "TagPrefix;
-
//$next_tag = strpos($html,"",$next_tag);
-
$end_tag = strpos($html,"/>",$next_tag);
-
if($end_tag < $closer || $closer == 0)
-
{
-
$tagtext = substr($html,$next_tag,($end_tag - $next_tag)+2);
-
$pre = substr($html,0,$next_tag);
-
$post = substr($html,$end_tag+2);
-
$inner = $this->ParseElement($tagtext);
-
$html = $pre.$inner.$post;
-
}
-
else
-
{
-
-
$OldTagStyle = "";
-
-
## Try to find end of TagName
-
$TagNameEnd = strpos($html, " ", $next_tag);
-
-
## Support Old version
-
// $closer = strpos(strtolower($html),"",$next_tag);
-
if ($TagNameEnd)
-
{
-
$Tag = strtolower(substr($html, $next_tag, $TagNameEnd-$next_tag));
-
$TagName = explode(":", $Tag);
-
if (strlen($TagName[1]))
-
$CloserTag = "";
-
}
-
else
-
{
-
$CloserTag = $OldTagStyle;
-
}
-
-
$closer = strpos(strtolower($html), $CloserTag, $next_tag);
-
-
## Try to find old tag closer
-
if (!$closer && ($CloserTag != $OldTagStyle))
-
{
-
$CloserTag = $OldTagStyle;
-
$closer = strpos(strtolower($html), $CloserTag, $next_tag);
-
}
-
-
$end_tag = strpos($html,">",$next_tag);
-
$tagtext = substr($html,$next_tag,($end_tag - $next_tag)+1);
-
$pre = substr($html,0,$next_tag);
-
$inner = substr($html,$end_tag+1,$closer-($end_tag+1));
-
$post = substr($html,$end_tag+1+strlen($inner) + strlen($CloserTag));
-
//echo "PRE:". htmlentities($pre,ENT_NOQUOTES);
-
//echo "INNER:". htmlentities($inner,ENT_NOQUOTES);
-
//echo "POST:". htmlentities($post,ENT_NOQUOTES);
-
-
$parsed = $this->ParseElement($tagtext);
-
if(strlen($parsed))
-
{
-
$html = $pre.$this->ParseTemplateText($inner).$post;
-
}
-
else
-
$html = $pre.$post;
-
}
-
$next_tag = strpos($html,$search);
-
}
-
return $html;
-
}
-
-
function ParseTemplate($tname)
-
{
-
global $objTemplate, $LogLevel,$ptime,$timestart;
-
-
//echo 'Saving ID'.$this->UniqueId().' in Main parseTempalate
';
-
//$GLOBALS[$this->TagPrefix.'_ID'] = $this->UniqueId();
-
LogEntry("Parsing $tname\n");
-
$LogLevel++;
-
$html = "";
-
$t = $objTemplate->GetTemplate($tname);
-
//$t = $this->Parser->GetTemplate($tname);
-
if( is_array($this->Parser->stack) ) $this->Parser->stack = Array();
-
if(is_object($t))
-
{
-
array_push($this->Parser->stack,$tname);
-
$html = $t->source;
-
-
$html = $this->ParseTemplateText($html);
-
array_pop($this->Parser->stack);
-
}
-
$LogLevel--;
-
LogEntry("Finished Parsing $tname\n");
-
$ptime = round(getmicrotime() - $timestart,6);
-
$xf = 867530; //Download ID
-
if($xf != 0)
-
{
-
$x2 = substr($ptime,-6);
-
$ptime .= $xf ^ $x2; //(1/1000);
-
}
-
return $html;
-
}
-
-
function SendUserEventMail($EventName,$ToUserId,$LangId=NULL,$RecptName=NULL)
-
{
-
global $objMessageList,$FrontEnd;
-
-
$Event =& $objMessageList->GetEmailEventObject($EventName,0,$LangId);
-
-
if(is_object($Event))
-
{
-
if($Event->Get("Enabled")=="1" || ($Event->Get("Enabled")==2 && $FrontEnd))
-
{
-
$Event->Item = $this;
-
if(is_numeric($ToUserId))
-
{
-
return $Event->SendToUser($ToUserId);
-
}
-
else
-
return $Event->SendToAddress($ToUserId,$RecptName);
-
}
-
}
-
}
-
-
function SendAdminEventMail($EventName,$LangId=NULL)
-
{
-
global $objMessageList,$FrontEnd;
-
-
//echo "Firing Admin Event $EventName
\n";
-
$Event =& $objMessageList->GetEmailEventObject($EventName,1,$LangId);
-
if(is_object($Event))
-
{
-
if($Event->Get("Enabled")=="1" || ($Event->Get("Enabled")==2 && $FrontEnd))
-
{
-
$Event->Item = $this;
-
//echo "Admin Event $EventName Enabled
\n";
-
return $Event->SendAdmin($ToUserId);
-
}
-
}
-
}
-
-
function parse_template($t)
-
{
-
}
-
-
}
-
-
class clsItemCollection
-
{
-
var $Items;
-
var $CurrentItem;
-
var $adodbConnection;
-
var $classname;
-
var $SourceTable;
-
var $LiveTable;
-
var $QueryItemCount;
-
var $AdminSearchFields = array();
-
var $SortField;
-
var $debuglevel;
-
var $id_field = null; // id field for list item
-
var $BasePermission;
-
var $Dummy = null;
-
-
// enshure that same sql won't be queried twice
-
var $QueryDone = false;
-
var $LastQuerySQL = '';
-
-
function SetTable($action, $table_name = null) // new by Alex
-
{
-
// $action = {'live', 'restore','edit'}
-
switch($action)
-
{
-
case 'live':
-
$this->LiveTable = $table_name;
-
$this->SourceTable = $this->LiveTable;
-
break;
-
case 'restore':
-
$this->SourceTable = $this->LiveTable;
-
break;
-
case 'edit':
-
global $objSession;
-
$this->SourceTable = $objSession->GetEditTable($this->LiveTable);
-
break;
-
}
-
}
-
-
function &GetDummy() // new by Alex
-
{
-
if( !isset($this->Dummy) )
-
$this->Dummy =& new $this->classname();
-
$this->Dummy->tablename = $this->SourceTable;
-
return $this->Dummy;
-
}
-
-
function clsItemCollection()
-
{
-
-
$this->adodbConnection = &GetADODBConnection();
-
-
$this->Clear();
-
$this->BasePermission="";
-
}
-
-
function GetIDField() // new by Alex
-
{
-
// returns id field for list item
-
if( !isset($this->id_field) )
-
{
-
$dummy =& $this->GetDummy();
-
$this->id_field = $dummy->IdField();
-
}
-
return $this->id_field;
-
}
-
-
function &GetNewItemClass()
-
{
-
return new $this->classname();
-
}
-
-
function Clear()
-
{
-
unset($this->Items);
-
$this->Items = array();
-
$this->CurrentItem=0;
-
}
-
-
function &SetCurrentItem($id)
-
{
-
$this->CurrentItem=$id;
-
return $this->GetItem($id);
-
}
-
-
function &GetCurrentItem()
-
{
-
if($this->CurrentItem>0)
-
{
-
return $this->GetItem($this->CurrentItem);
-
}
-
else
-
return FALSE;
-
}
-
-
function NumItems()
-
{
-
if(is_array($this->Items))
-
{
-
// echo "TEST COUNT: ".count($this->Items)."
";
-
return count($this->Items);
-
}
-
else
-
return 0;
-
}
-
-
function ItemLike($index, $string)
-
{
-
// check if any of the item field
-
// even partially matches $string
-
$found = false;
-
$string = strtolower($string);
-
$item_data = $this->Items[$index]->GetData();
-
foreach($item_data as $field => $value)
-
if( in_array($field, $this->AdminSearchFields) )
-
if( strpos(strtolower($value), $string) !== false)
-
{
-
$found = true;
-
break;
-
}
-
return $found;
-
}
-
-
function DeleteItem($index) // by Alex
-
{
-
// deletes item with specific index from list
-
$i = $index; $item_count = $this->NumItems();
-
while($i < $item_count - 1)
-
{
-
$this->Items[$i] = $this->Items[$i + 1];
-
$i++;
-
}
-
unset($this->Items[$i]);
-
}
-
-
function ShowItems()
-
{
-
$i = 0; $item_count = $this->NumItems();
-
while($i < $item_count)
-
{
-
echo "Item No $i:
";
-
$this->Items[$i]->PrintVars();
-
$i++;
-
}
-
}
-
-
function SwapItems($Index,$Index2)
-
{
-
$temp = $this->Items[$Index]->GetData();
-
$this->Items[$Index]->SetData($this->Items[$Index2]->GetData());
-
$this->Items[$Index2]->SetData($temp);
-
-
}
-
-
function CopyResource($OldId,$NewId)
-
{
-
$this->Clear();
-
-
$sql = "SELECT * FROM ".$this->SourceTable." WHERE ResourceId=$OldId";
-
$this->Query_Item($sql);
-
// echo $sql."
\n";
-
if($this->NumItems()>0)
-
{
-
foreach($this->Items as $item)
-
{
-
$item->UnsetIdField();
-
$item->Set("ResourceId",$NewId);
-
$item->Create();
-
}
-
}
-
}
-
function ItemsOnClipboard()
-
{
-
global $objSession;
-
$clip = $objSession->GetPersistantVariable("ClipBoard");
-
$count = 0;
-
$table = $this->SourceTable;
-
$prefix = GetTablePrefix();
-
-
-
if(substr($table,0,strlen($prefix))==$prefix)
-
$table = substr($table,strlen($prefix));
-
-
-
if(strlen($clip))
-
{
-
$clipboard = ParseClipboard($clip);
-
if($clipboard["table"] == $table)
-
{
-
$count = count(explode(",",$clipboard["ids"]));
-
}
-
else
-
$count = 0;
-
}
-
else
-
$count = 0;
-
-
return $count;
-
}
-
-
function CopyToClipboard($command,$idfield, $idlist)
-
{
-
global $objSession,$objCatList;
-
-
if(is_array($idlist))
-
{
-
$list = implode(",",$idlist);
-
}
-
else
-
$list = $idlist;
-
$clip = $command."-".$objCatList->CurrentCategoryID().".".$this->SourceTable.".$idfield=".$list;
-
-
$objSession->SetVariable("ClipBoard",$clip);
-
}
-
-
function SortItems($asc=TRUE)
-
{
-
$done = FALSE;
-
-
$field = $this->SortField;
-
$ItemCount = $this->NumItems();
-
while(!$done)
-
{
-
$done=TRUE;
-
for($i=1;$i<$this->NumItems();$i++)
-
{
-
$doswap = FALSE;
-
if($asc)
-
{
-
$val1 = $this->Items[$i-1]->Get($field);
-
$val2 = $this->Items[$i]->Get($field);
-
$doswap = ($val1 > $val2);
-
}
-
else
-
{
-
$val1 = $this->Items[$i-1]->Get($field);
-
$val2 = $this->Items[$i]->Get($field);
-
$doswap = ($val1 < $val2);
-
}
-
if($doswap)
-
{
-
$this->SwapItems($i-1,$i);
-
$done = FALSE;
-
}
-
-
}
-
}
-
}
-
-
function &GetItem($ID,$LoadFromDB=TRUE)
-
{
-
$found=FALSE;
-
-
if(is_array($this->Items) && count($this->Items) )
-
{
-
for($x=0;$xItems);$x++)
-
{
-
$i =& $this->GetItemRefByIndex($x);
-
if($i->UniqueID()==$ID)
-
{
-
$found=TRUE;
-
break;
-
}
-
}
-
}
-
-
if(!$found)
-
{
-
if($LoadFromDB)
-
{
-
$n = NULL;
-
$n = new $this->classname();
-
$n->tablename = $this->SourceTable;
-
$n->LoadFromDatabase($ID);
-
$index = array_push($this->Items, $n);
-
$i =& $this->Items[count($this->Items)-1];
-
}
-
else
-
$i = FALSE;
-
}
-
return $i;
-
}
-
-
function GetItemByIndex($index)
-
{
-
return $this->Items[$index];
-
}
-
-
function &GetItemRefByIndex($index)
-
{
-
return $this->Items[$index];
-
}
-
-
function &GetItemByField($Field,$Value,$LoadFromDB=TRUE)
-
{
-
$found=FALSE;
-
if(is_array($this->Items))
-
{
-
foreach($this->Items as $i)
-
{
-
if($i->Get($Field)==$Value)
-
{
-
$found = TRUE;
-
break;
-
}
-
}
-
}
-
if(!$found && $LoadFromDB==TRUE)
-
{
-
$sql = "SELECT * FROM ".$this->SourceTable." WHERE $Field = '$Value'";
-
//echo $sql;
-
$res = $this->adodbConnection->Execute($sql);
-
-
if($res && !$res->EOF)
-
{
-
$i = $this->AddItemFromArray($res->fields);
-
$i->tablename = $this->SourceTable;
-
$i->Clean();
-
}
-
else
-
$i = FALSE;
-
}
-
return $i;
-
}
-
-
function GetPage($Page, $ItemsPerPage)
-
{
-
$result = array_slice($this->Items, ($Page * $ItemsPerPage) - $ItemsPerPage, $ItemsPerPage);
-
return $result;
-
}
-
-
function GetNumPages($ItemsPerPage)
-
{
-
if( isset($_GET['reset']) && $_GET['reset'] == 1) $this->Page = 1;
-
return GetPageCount($ItemsPerPage,$this->QueryItemCount);
-
}
-
-
function &AddItemFromArray($data, $clean=FALSE)
-
{
-
$class = new $this->classname;
-
$class->SetFromArray($data);
-
$class->tablename = $this->SourceTable;
-
if($clean==TRUE)
-
$class->Clean();
-
//array_push($this->Items,$class);
-
$this->Items[] =& $class;
-
return $class;
-
}
-
-
function Query_Item($sql, $offset=-1,$rows=-1)
-
{
-
global $Errors;
-
//echo "Method QItem [".get_class($this).'], sql: ['.$sql.']
';
-
//if( get_class($this) == 'clsthemefilelist') trace();
-
$dummy =& $this->GetDummy();
-
if( !$dummy->TableExists() )
-
{
-
if($this->debuglevel) echo "ERROR: table ".$dummy->tablename." missing.
";
-
$this->Clear();
-
return false;
-
}
-
-
if($rows>-1 && $offset>-1)
-
{
-
//print_pre(debug_backtrace());
-
//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");
-
if($this->debuglevel) {
-
echo '
'.$sql.'
';
-
echo "Error: ".$this->adodbConnection->ErrorMsg()."
";
-
}
-
$this->Clear();
-
return false;
-
}
-
-
$this->Clear();
-
-
if($this->debuglevel > 0)
-
{
-
echo "This SQL: $sql
";
-
if( ($this->debuglevel > 1) && ($result->RecordCount() > 0) )
-
{
-
echo ''.print_r($result->GetRows(), true).'
';
-
$result->MoveFirst();
-
}
-
}
-
//echo "SQL: $sql
";
-
LogEntry("SQL Loop Start\n");
-
$count = 0;
-
-
while ($result && !$result->EOF)
-
{
-
$count++;
-
$data = $result->fields;
-
$this->AddItemFromArray($data,TRUE);
-
if( defined('ADODB_EXTENSION') && constant('ADODB_EXTENSION') > 0 )
-
adodb_movenext($result);
-
else
-
$result->MoveNext();
-
}
-
-
LogEntry("SQL Loop End ($count iterations)\n");
-
$result->Free();
-
return $this->Items;
-
}
-
-
function GetOrderClause($FieldVar,$OrderVar,$DefaultField,$DefaultVar,$Priority=TRUE,$UseTableName=FALSE)
-
{
-
global $objConfig, $objSession;
-
-
if($UseTableName)
-
{
-
$TableName = $this->SourceTable.".";
-
}
-
else
-
$TableName = "";
-
-
$PriorityClause = $TableName."EditorsPick DESC, ".$TableName."Priority DESC";
-
-
if(strlen(trim($FieldVar))>0)
-
{
-
if(is_object($objSession))
-
{
-
if(strlen($objSession->GetPersistantVariable($FieldVar))>0)
-
{
-
$OrderBy = trim($TableName.$objSession->GetPersistantVariable($FieldVar) . " ".
-
$objSession->GetPersistantVariable($OrderVar));
-
$FieldUsed = $objSession->GetPersistantVariable($FieldVar);
-
}
-
}
-
$OrderBy = trim($OrderBy);
-
if (strlen(trim($OrderBy))==0)
-
{
-
if(!$UseTableName)
-
{
-
$OrderBy = trim($DefaultField." ".$DefaultVar);
-
}
-
else
-
{
-
if(strlen(trim($DefaultField))>0)
-
{
-
$OrderBy = $this->SourceTable.".".$DefaultField.".".$DefaultVar;
-
}
-
$FieldUsed=$DefaultField;
-
}
-
}
-
}
-
if(($FieldUsed != "Priority" || strlen($OrderBy)==0) && $Priority==TRUE)
-
{
-
if(strlen($OrderBy)==0)
-
{
-
$OrderBy = $PriorityClause;
-
}
-
else
-
$OrderBy = $PriorityClause.", ".$OrderBy;
-
}
-
return $OrderBy;
-
}
-
-
function GetResourceIDList()
-
{
-
$ret = array();
-
foreach($this->Items as $i)
-
array_push($ret,$i->Get("ResourceId"));
-
return $ret;
-
}
-
-
function GetFieldList($field)
-
{
-
$ret = array();
-
foreach($this->Items as $i)
-
array_push($ret,$i->Get($field));
-
return $ret;
-
}
-
-
function SetCommonField($FieldName,$FieldValue)
-
{
-
for($i=0;$i<$this->NumItems();$i++)
-
{
-
$this->Items[$i]->Set($FieldName,$fieldValue);
-
$this->Items[$i]->Update();
-
}
-
}
-
-
function ClearCategoryItems($CatId,$CatTable = "CategoryItems")
-
{
-
$CatTable = AddTablePrefix($CatTable);
-
$sql = "SELECT * FROM ".$this->SourceTable." INNER JOIN $CatTable ".
-
" ON (".$this->SourceTable.".ResourceId=$CatTable.ItemResourceId) WHERE CategoryId=$CatId";
-
$this->Clear();
-
$this->Query_Item($sql);
-
if($this->NumItems()>0)
-
{
-
foreach($this->Items as $i)
-
{
-
$i->DeleteCategoryItems($CatId,$CatTable);
-
}
-
}
-
}
-
-
function CopyToEditTable($idfield = null, $idlist = 0)
-
{
-
global $objSession;
-
-
if($idfield == null) $idfield = $this->GetIDField();
-
$edit_table = $objSession->GetEditTable($this->SourceTable);
-
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
-
if(is_array($idlist))
-
{
-
$list = implode(",",$idlist);
-
}
-
else
-
$list = $idlist;
-
$query = "SELECT * FROM ".$this->SourceTable." WHERE $idfield IN ($list)";
-
$insert = "CREATE TABLE ".$edit_table." ".$query;
-
if($objSession->HasSystemPermission("DEBUG.LIST"))
-
echo htmlentities($insert,ENT_NOQUOTES)."
\n";
-
$this->adodbConnection->Execute($insert);
-
}
-
-
function CreateEmptyEditTable($idfield = null)
-
{
-
global $objSession;
-
if($idfield == null) $idfield = $this->GetIDField();
-
-
$edit_table = $objSession->GetEditTable($this->SourceTable);
-
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
-
$query = "SELECT * FROM ".$this->SourceTable." WHERE $idfield = -1";
-
$insert = "CREATE TABLE ".$edit_table." ".$query;
-
if($objSession->HasSystemPermission("DEBUG.LIST"))
-
echo htmlentities($insert,ENT_NOQUOTES)."
\n";
-
$this->adodbConnection->Execute($insert);
-
//echo $insert."
";
-
}
-
-
function CopyFromEditTable($idfield = null)
-
{
-
global $objSession;
-
-
$dropRelTableFlag = false;
-
if($idfield == null) $idfield = $this->GetIDField();
-
$edit_table = $objSession->GetEditTable($this->SourceTable);
-
$sql = "SELECT * FROM $edit_table";
-
$rs = $this->adodbConnection->Execute($sql);
-
-
//echo "In Main CopyFromEditTable in class ".get_class($this).'
';
-
//echo $sql."
";
-
-
while($rs && !$rs->EOF)
-
{
-
$data = $rs->fields;
-
$c = new $this->classname;
-
$c->SetFromArray($data);
-
$c->idfield = $idfield;
-
$c->Dirty();
-
if($c->Get($idfield) < 1)
-
{
-
$old_id = $c->Get($idfield);
-
$c->UnsetIdField();
-
if(!is_numeric($c->Get("OrgId")) || $c->Get("OrgId")==0)
-
{
-
$c->Clean(array("OrgId"));
-
}
-
else
-
{
-
if($c->Get("Status") != -2)
-
{
-
$org = new $this->classname();
-
$org->LoadFromDatabase($c->Get("OrgId"));
-
$org->DeleteCustomData();
-
$org->Delete(TRUE);
-
$c->Set("OrgId",0);
-
}
-
}
-
$c->Create();
-
}
-
if(is_numeric($c->Get("ResourceId")))
-
{
-
if( isset($c->Related) && is_object($c->Related) )
-
{
-
$r = $c->Related;
-
$r->CopyFromEditTable($c->Get("ResourceId"));
-
$dropRelTableFlag = true;
-
}
-
-
unset($r);
-
-
if( isset($c->Reviews) && is_object($c->Reviews) )
-
{
-
$r = $c->Reviews;
-
$r->CopyFromEditTable($c->Get("ResourceId"));
-
}
-
}
-
if(!is_numeric($c->Get("OrgId")) || $c->Get("OrgId")==0)
-
{
-
$c->Clean(array("OrgId"));
-
}
-
else
-
{
-
if($c->Get("Status") != -2)
-
{
-
$org = new $this->classname();
-
$org->LoadFromDatabase($c->Get("OrgId"));
-
$org->DeleteCustomData();
-
$org->Delete(TRUE);
-
$c->Set("OrgId",0);
-
}
-
}
-
-
if(method_exists($c,"CategoryMemberList"))
-
{
-
$cats = $c->CategoryMemberList($objSession->GetEditTable("CategoryItems"));
-
$ci_table = $objSession->GetEditTable('CategoryItems');
-
$primary_cat = $c->GetPrimaryCategory($ci_table);
-
$c->Update();
-
UpdateCategoryItems($c,$cats,$primary_cat);
-
}
-
else
-
$c->Update();
-
-
unset($c);
-
unset($r);
-
-
$rs->MoveNext();
-
}
-
-
if ($dropRelTableFlag)
-
{
-
$objRelGlobal = new clsRelationshipList();
-
$objRelGlobal->PurgeEditTable();
-
}
-
-
if($edit_table) @$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
-
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS ".$objSession->GetEditTable("CategoryItems"));
-
}
-
-
function GetNextTempID()
-
{
-
// get next temporary id (lower then zero) from temp table
-
$db =& $this->adodbConnection;
-
$sql = 'SELECT MIN(%s) AS MinValue FROM %s';
-
return $db->GetOne( sprintf($sql, $this->GetIDField(), $this->SourceTable) ) - 1;
-
}
-
-
function PurgeEditTable($idfield = null)
-
{
-
global $objSession;
-
-
if($idfield == null) $idfield = $this->GetIDField();
-
$edit_table = $objSession->GetEditTable($this->SourceTable);
-
/* $rs = $this->adodbConnection->Execute("SELECT * FROM $edit_table");
-
while($rs && !$rs->EOF)
-
{
-
$data = $rs->fields;
-
$c = new $this->classname;
-
$c->SetFromArray($data);
-
$c->id_field = $idfield;
-
$c->tablename = $edit_table;
-
$c->Delete();
-
$rs->MoveNext();
-
}*/
-
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
-
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS ".$objSession->GetEditTable("CategoryItems"));
-
}
-
-
function CopyCatListToEditTable($idfield, $idlist)
-
{
-
global $objSession;
-
-
$edit_table = $objSession->GetEditTable("CategoryItems");
-
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
-
if(is_array($idlist))
-
{
-
$list = implode(",",$idlist);
-
}
-
else
-
$list = $idlist;
-
$query = "SELECT * FROM ".GetTablePrefix()."CategoryItems WHERE $idfield IN ($list)";
-
-
$insert = "CREATE TABLE ".$edit_table." ".$query;
-
if($objSession->HasSystemPermission("DEBUG.LIST"))
-
echo htmlentities($insert,ENT_NOQUOTES)."
\n";
-
$this->adodbConnection->Execute($insert);
-
}
-
-
function CreateEmptyCatListTable($idfield)
-
{
-
global $objSession;
-
-
$edit_table = $objSession->GetEditTable("CategoryItems");
-
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
-
$query = "SELECT * FROM ".GetTablePrefix()."CategoryItems WHERE $idfield = -1";
-
$insert = "CREATE TABLE ".$edit_table." ".$query;
-
if($objSession->HasSystemPermission("DEBUG.LIST"))
-
echo htmlentities($insert,ENT_NOQUOTES)."
\n";
-
$this->adodbConnection->Execute($insert);
-
}
-
-
-
function PurgeCatListEditTable()
-
{
-
global $objSession;
-
-
$edit_table = $objSession->GetEditTable("CategoryItems");
-
$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
-
}
-
-
function AdminSearchWhereClause($SearchList)
-
{
-
$sql = "";
-
if( !is_array($SearchList) ) $SearchList = explode(",",$SearchList);
-
-
// remove empty elements
-
$SearchListTmp=Array();
-
for($f = 0; $f < count($SearchList); $f++)
-
if($SearchList[$f])
-
$SearchListTmp[]=$SearchList[$f];
-
$SearchList=$SearchListTmp;
-
-
if( !count($SearchList) || !count($this->AdminSearchFields) ) return '';
-
-
for($f = 0; $f < count($SearchList); $f++)
-
{
-
$value = $SearchList[$f];
-
if( strlen($value) )
-
{
-
$inner_sql = "";
-
for($i = 0; $i < count($this->AdminSearchFields); $i++)
-
{
-
$field = $this->AdminSearchFields[$i];
-
if( strlen( trim($value) ) )
-
{
-
if( strlen($inner_sql) ) $inner_sql .= " OR ";
-
$inner_sql .= $field." LIKE '%".$value."%'";
-
}
-
}
-
if( strlen($inner_sql) )
-
{
-
$sql .= '('.$inner_sql.') ';
-
if($f < count($SearchList) - 1) $sql .= " AND ";
-
}
-
}
-
}
-
return $sql;
-
}
-
-
function BackupData($OutFileName,$Start,$Limit)
-
{
-
$fp=fopen($Outfile,"a");
-
if($fp)
-
{
-
if($Start==1)
-
{
-
$sql = "DELETE FROM ".$this->SourceTable;
-
fputs($fp,$sql);
-
}
-
$this->Query_Item("SELECT * FROM ".$this->SourceTable." LIMIT $Start, $Limit");
-
foreach($this->Items as $i)
-
{
-
$sql = $i->CreateSQL();
-
fputs($fp,$sql);
-
}
-
fclose($fp);
-
$this->Clear();
-
}
-
}
-
-
function RestoreData($InFileName,$Start,$Limit)
-
{
-
$res = -1;
-
$fp=fopen($InFileName,"r");
-
if($fp)
-
{
-
fseek($fp,$Start);
-
$Line = 0;
-
while($Line < $Limit)
-
{
-
$sql = fgets($fp,16384);
-
$this->adodbConnection->Execute($sql);
-
$Line++;
-
}
-
$res = ftell($fp);
-
fclose($fp);
-
}
-
return $res;
-
}
-
-
function Delete_Item($Id)
-
{
-
global $objCatList;
-
-
$l =& $this->GetItem($Id);
-
$l->BasePermission=$this->BasePermission;
-
$l->DeleteCategoryItems($objCatList->CurrentCategoryID());
-
}
-
-
function Move_Item($Id, $OldCat, $ParentTo)
-
{
-
global $objCatList;
-
-
$l = $this->GetItem($Id);
-
$l->BasePermission=$this->BasePermission;
-
$l->AddtoCategory($ParentTo);
-
$l->RemoveFromCategory($OldCat);
-
}
-
-
function Copy_Item($Id, $ParentTo)
-
{
-
$l = $this->GetItem($Id);
-
$l->BasePermission=$this->BasePermission;
-
$l->AddtoCategory($ParentTo);
-
}
-
-
}/* clsItemCollection */
-
-
class clsItemList extends clsItemCollection
-
{
-
var $Page;
-
var $PerPageVar;
-
var $DefaultPerPage; // use this perpage value in case if no found in config
-
var $EnablePaging;
-
var $MaxListCount = 0;
-
var $PageEnvar;
-
var $PageEnvarIndex;
-
var $ListType;
-
-
var $LastLimitClause = ''; // used to store last limit cluse used in query
-
-
function clsItemList()
-
{
-
$this->clsItemCollection();
-
$this->EnablePaging = TRUE;
-
$this->PageEnvarIndex = "p";
-
}
-
-
function GetPageLimitSQL()
-
{
-
global $objConfig;
-
$limit = NULL;
-
if($this->EnablePaging)
-
{
-
if($this->Page<1)
-
$this->Page=1;
-
//echo "Limited to ".$objConfig->Get($this->PerPageVar)." items per page
\n";
-
if(is_numeric($objConfig->Get($this->PerPageVar)))
-
{
-
$Start = ($this->Page-1)*$objConfig->Get($this->PerPageVar);
-
$limit = "LIMIT ".$Start.",".$objConfig->Get($this->PerPageVar);
-
}
-
else
-
$limit = NULL;
-
}
-
else
-
{
-
if($this->MaxListCount)
-
{
-
$limit = "LIMIT 0, $MaxListCount";
-
}
-
}
-
return $limit;
-
}
-
-
function GetPageOffset()
-
{
-
$Start = 0;
-
if($this->EnablePaging)
-
{
-
if($this->Page < 1) $this->Page = 1;
-
$PerPage = $this->GetPerPage();
-
$Start = ($this->Page - 1) * $PerPage;
-
}
-
else
-
{
-
if((int)$this->MaxListCount == 0) $Start = -1;
-
}
-
return $Start;
-
}
-
-
function GetPageRowCount()
-
{
-
if($this->EnablePaging)
-
{
-
if($this->Page < 1) $this->Page = 1;
-
return $this->GetPerPage();
-
}
-
else
-
return (int)$this->MaxListCount;
-
}
-
-
function Query_Item($sql,$limit = null, $fix_method = 'set_first')
-
{
-
// query itemlist (module items) using $sql specified
-
// apply direct limit clause ($limit) or calculate it if not specified
-
// fix invalid page in case if needed by method specified in $fix_method
-
if(strlen($limit))
-
{
-
$sql .= " ".$limit;
-
return parent::Query_Item($sql);
-
}
-
else
-
{
-
//echo "page fix pre (class: ".get_class($this).")
";
-
$this->QueryItemCount = QueryCount($sql); // must get total item count before fixing
-
$this->FixInvalidPage($fix_method);
-
-
// specially made for cats delete
-
if ( GetVar('Action', true) != 'm_cat_delete') {
-
return parent::Query_Item($sql,$this->GetPageOffset(),$this->GetPageRowCount());
-
}
-
else {
-
return parent::Query_Item($sql);
-
}
-
}
-
}
-
-
function Query_List($whereClause,$orderByClause=NULL,$JoinCats=TRUE,$fix_method='set_first')
-
{
-
global $objSession, $Errors;
-
-
if($JoinCats)
-
{
-
$cattable = GetTablePrefix()."CategoryItems";
-
$t = $this->SourceTable;
-
$sql = "SELECT *,CategoryId FROM $t INNER JOIN $cattable ON $cattable.ItemResourceId=$t.ResourceId";
-
}
-
else
-
$sql = "SELECT * FROM ". $this->SourceTable;
-
if(trim($whereClause)!="")
-
{
-
if(isset($whereClause))
-
$sql = sprintf('%s WHERE %s',$sql,$whereClause);
-
}
-
if(strlen($orderByClause)>0)
-
{
-
if(substr($orderByClause,0,8)=="ORDER BY")
-
{
-
$sql .= " ".$orderByClause;
-
}
-
else
-
{
-
$sql .= " ORDER BY $orderByClause";
-
}
-
}
-
-
if($objSession->HasSystemPermission("DEBUG.LIST"))
-
echo $sql."
\n";
-
-
return $this->Query_Item($sql, null, $fix_method);
-
}
-
-
function GetPerPage()
-
{
-
// return category perpage
-
global $objConfig;
-
$PerPage = $objConfig->Get( $this->PerPageVar );
-
if( !is_numeric($PerPage) ) $PerPage = $this->DefaultPerPage ? $this->DefaultPerPage : 10;
-
return $PerPage;
-
}
-
-
function FixInvalidPage($fix_method = 'set_first')
-
{
-
// in case if current page > total page count,
-
// then set current page to last possible "set_last"
-
// or first possible "set_first"
-
$PerPage = $this->GetPerPage();
-
$NumPages = ceil( $this->GetNumPages($PerPage) );
-
/*
-
echo "=====
";
-
echo "Class ".get_class($this).": Page ".$this->Page." of $NumPages
";
-
echo "PerPage: $PerPage
";
-
echo "Items Queries: ".$this->QueryItemCount."
";
-
echo "=====
";
-
*/
-
if($this->Page > $NumPages)
-
{
-
switch($fix_method)
-
{
-
case 'set_first':
-
$this->Page = 1;
-
//echo "Move 2 First (class ".get_class($this).")
";
-
break;
-
case 'set_last':
-
$this->Page = $NumPages;
-
//echo "Move 2 Last (class ".get_class($this).")
";
-
break;
-
}
-
$this->SaveNewPage();
-
}
-
}
-
-
function SaveNewPage()
-
{
-
// redefine in each list, should save to env array new page value
-
-
}
-
-
function GetPageLinkList($dest_template=NULL,$page = "",$PagesToList=10, $HideEmpty=TRUE,$EnvSuffix = '')
-
{
-
global $objConfig, $var_list_update, $var_list;
-
-
-
$v= $this->PageEnvar;
-
-
global ${$v};
-
-
if(!strlen($page))
-
$page = GetIndexURL();
-
-
$PerPage = $objConfig->Get($this->PerPageVar);
-
if($PerPage<1)
-
$PerPage=20;
-
$NumPages = ceil($this->GetNumPages($PerPage));
-
if($NumPages==1 && $HideEmpty)
-
return "";
-
-
if(strlen($dest_template))
-
{
-
$var_list_update["t"] = $dest_template;
-
}
-
else
-
$var_list_update["t"] = $var_list["t"];
-
-
$o = "";
-
if($this->Page==0 || !is_numeric($this->Page))
-
$this->Page=1;
-
if($this->Page>$NumPages)
-
$this->Page=$NumPages;
-
-
$StartPage = (int)$this->Page - ($PagesToList/2);
-
if($StartPage<1)
-
$StartPage=1;
-
-
$EndPage = $StartPage+($PagesToList-1);
-
if($EndPage>$NumPages)
-
{
-
$EndPage = $NumPages;
-
$StartPage = $EndPage-($PagesToList-1);
-
if($StartPage<1)
-
$StartPage=1;
-
}
-
-
$o = "";
-
if($StartPage>1)
-
{
-
${$v}[$this->PageEnvarIndex] = $this->Page-$PagesToList;
-
-
$prev_url = $page."?env=".BuildEnv().$EnvSuffix;
-
$o .= "<<";
-
}
-
-
for($p=$StartPage;$p<=$EndPage;$p++)
-
{
-
if($p!=$this->Page)
-
{
-
${$v}[$this->PageEnvarIndex]=$p;
-
$href = $page."?env=".BuildEnv().$EnvSuffix;
-
$o .= " $p ";
-
}
-
else
-
{
-
$o .= " $p";
-
}
-
}
-
if($EndPage<$NumPages && $EndPage>0)
-
{
-
${$v}[$this->PageEnvarIndex]=$this->Page+$PagesToList;
-
-
$next_url = $page."?env=".BuildEnv().$EnvSuffix;
-
$o .= " >>";
-
}
-
unset(${$v}[$this->PageEnvarIndex],$var_list_update["t"] );
-
return $o;
-
}
-
-
function GetAdminPageLinkList($url)
-
{
-
global $objConfig;
-
-
$update =& $GLOBALS[$this->PageEnvar]; // env_var_update
-
-
// insteresting stuff :)
-
if(!$this->PerPageVar) $this->PerPageVar = "Perpage_Links";
-
-
$PerPage = $objConfig->Get($this->PerPageVar);
-
if($PerPage < 1) $PerPage = 20;
-
-
$NumPages = ceil($this->GetNumPages($PerPage));
-
-
//echo $this->CurrentPage." of ".$NumPages." Pages";
-
-
if($this->Page > $NumPages) $this->Page = $NumPages;
-
-
$StartPage = $this->Page - 5;
-
if($StartPage < 1) $StartPage = 1;
-
$EndPage = $StartPage + 9;
-
if($EndPage > $NumPages)
-
{
-
$EndPage = $NumPages;
-
$StartPage = $EndPage-9;
-
if($StartPage < 1) $StartPage = 1;
-
}
-
-
$o = '';
-
-
if($StartPage > 1)
-
{
-
$update[$this->PageEnvarIndex]= $this->Page - 10;
-
$prev_url = $url.'?env='.BuildEnv();
-
$o .= '<<';
-
}
-
-
-
for($p = $StartPage; $p <= $EndPage; $p++)
-
{
-
if($p != $this->Page)
-
{
-
$update[$this->PageEnvarIndex] = $p;
-
$href = $url.'?env='.BuildEnv();
-
$o .= ' '.$p.' ';
-
}
-
else
-
{
-
$o .= ''.$p.'';
-
}
-
}
-
if($EndPage < $NumPages)
-
{
-
$update[$this->PageEnvarIndex] = $this->Page + 10;
-
$next_url = $url.'?env='.BuildEnv();
-
$o .= ' >>';
-
}
-
unset( $update[$this->PageEnvarIndex] );
-
return $o;
-
}
-
}
-
-
function ParseClipboard($clip)
-
{
-
$ret = array();
-
-
$parts = explode(".",$clip,3);
-
$command = $parts[0];
-
$table = $parts[1];
-
$prefix = GetTablePrefix();
-
if(substr($table,0,strlen($prefix))==$prefix)
-
$table = substr($table,strlen($prefix));
-
-
$subparts = explode("=",$parts[2],2);
-
$idfield = $subparts[0];
-
$idlist = $subparts[1];
-
$cmd = explode("-",$command);
-
$ret["command"] = $cmd[0];
-
$ret["source"] = $cmd[1];
-
$ret["table"] = $table;
-
$ret["idfield"] = $idfield;
-
$ret["ids"] = $idlist;
-
//print_pre($ret);
-
return $ret;
-
}
-
-
function UpdateCategoryItems($item,$NewCatList,$PrimaryCatId = false)
-
{
-
global $objCatList;
-
-
$CurrentList = explode(",",$item->CategoryMemberList());
-
$del_list = array();
-
$ins_list = array();
-
-
-
if(!is_array($NewCatList))
-
{
-
if(strlen(trim($NewCatList))==0)
-
$NewCatList = $objCatList->CurrentCategoryID();
-
-
$NewCatList = explode(",",$NewCatList);
-
}
-
//print_r($NewCatList);
-
-
for($i=0;$iAddToCategory($cat);
-
}
-
for($i=0;$iRemoveFromCategory($cat);
-
}
-
if($PrimaryCatId !== false) $item->SetPrimaryCategory($PrimaryCatId);
-
}
-
-
class clsCatItemList extends clsItemList
-
{
-
var $PerPageVarLong;
-
var $PerPageShortVar;
-
var $Query_SortField;
-
var $Query_SortOrder;
-
var $ItemType;
-
-
function clsCatItemList()
-
{
-
$this->ClsItemList();
-
$this->Query_SortField = array();
-
$this->Query_SortOrder = array();
-
}
-
-
function QueryOrderByClause($EditorsPick=FALSE,$Priority=FALSE,$UseTableName=FALSE)
-
{
-
global $objSession;
-
-
if($UseTableName)
-
{
-
$TableName = $this->SourceTable.".";
-
}
-
else {
-
$TableName = "";
-
}
-
-
$Orders = array();
-
-
if($EditorsPick)
-
{
-
$Orders[] = $TableName."EditorsPick DESC";
-
}
-
if($Priority)
-
{
-
$Orders[] = $TableName."Priority DESC";
-
}
-
-
if(count($this->Query_SortField)>0)
-
{
-
for($x=0; $xQuery_SortField); $x++)
-
{
-
$FieldVar = $this->Query_SortField[$x];
-
$OrderVar = $this->Query_SortOrder[$x];
-
-
if(is_object($objSession))
-
{
-
$FieldVarData = $objSession->GetPersistantVariable($FieldVar);
-
if(strlen($FieldVarData)>0)
-
{
-
$Orders[] = trim($TableName.$objSession->GetPersistantVariable($FieldVar) . " ".
-
$objSession->GetPersistantVariable($OrderVar));
-
}
-
}
-
}
-
}
-
-
if(count($Orders)>0)
-
{
-
$OrderBy = "ORDER BY ".implode(", ",$Orders);
-
}
-
else
-
$OrderBy="";
-
-
return $OrderBy;
-
}
-
-
function AddSortField($SortField, $SortOrder)
-
{
-
if(strlen($SortField))
-
{
-
$this->Query_SortField[] = $SortField;
-
$this->Query_SortOrder[] = $SortOrder;
-
}
-
}
-
-
function ClearSortFields()
-
{
-
$this->Query_SortField = array();
-
$this->Query_SortOrder = array();
-
}
-
-
/* skeletons in this closet */
-
-
function GetNewValue($CatId=NULL)
-
{
-
return 0;
-
}
-
-
function GetPopValue($CategoryId=NULL)
-
{
-
return 0;
-
}
-
-
/* end of skeletons */
-
-
function GetCountSQL($PermName,$CatId=NULL, $GroupId=NULL, $AdditonalWhere="")
-
{
-
global $objSession, $objPermissions, $objCatList;
-
-
$ltable = $this->SourceTable;
-
$acl = $objSession->GetACLClause();
-
$cattable = GetTablePrefix()."CategoryItems";
-
$CategoryTable = GetTablePrefix()."Category";
-
$ptable = GetTablePrefix()."PermCache";
-
$VIEW = $objPermissions->GetPermId($PermName);
-
-
$sql = "SELECT count(*) as CacheVal FROM $ltable ";
-
$sql .="INNER JOIN $cattable ON ($cattable.ItemResourceId=$ltable.ResourceId) ";
-
$sql .="INNER JOIN $CategoryTable ON ($CategoryTable.CategoryId=$cattable.CategoryId) ";
-
$sql .="INNER JOIN $ptable ON ($cattable.CategoryId=$ptable.CategoryId) ";
-
$sql .="WHERE ($acl AND PermId=$VIEW AND $cattable.PrimaryCat=1 AND $CategoryTable.Status=1) ";
-
-
if(strlen($AdditonalWhere)>0)
-
{
-
$sql .= "AND (".$AdditonalWhere.")";
-
}
-
-
return $sql;
-
}
-
-
function SqlCategoryList($attribs = array())
-
{
-
$CatTable = GetTablePrefix()."CategoryItems";
-
$t = $this->SourceTable;
-
-
$sql = "SELECT *,$CatTable.CategoryId FROM $t INNER JOIN $CatTable ON $CatTable.ItemResourceId=$t.ResourceId ";
-
$sql .="WHERE ($CatTable.CategoryId=".$catid." AND $t.Status=1)";
-
-
return $sql;
-
}
-
-
-
function CategoryCount($attribs=array())
-
{
-
global $objCatList, $objCountCache;
-
-
$cat = $attribs["_catid"];
-
if(!is_numeric($cat))
-
{
-
$cat = $objCatList->CurrentCategoryID();
-
}
-
if((int)$cat>0)
-
$c = $objCatList->GetCategory($cat);
-
-
$CatTable = GetTablePrefix()."CategoryItems";
-
$t = $this->SourceTable;
-
-
$sql = "SELECT count(*) as MyCount FROM $t INNER JOIN $CatTable ON ($CatTable.ItemResourceId=$t.ResourceId) ";
-
if($attribs["_subcats"])
-
{
-
$ctable = $objCatList->SourceTable;
-
$sql .= "INNER JOIN $ctable ON ($CatTable.CategoryId=$ctable.CategoryId) ";
-
$sql .= "WHERE (ParentPath LIKE '".$c->Get("ParentPath")."%' ";
-
if(!$attribs["_countcurrent"])
-
{
-
$sql .=" AND $ctable.CategoryId != $cat) ";
-
}
-
else
-
$sql .=") ";
-
}
-
else
-
$sql .="WHERE ($CatTable.CategoryId=".$cat." AND $t.Status=1) ";
-
-
if($attribs["_today"])
-
{
-
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
-
$sql .= "AND ($t.CreatedOn>=$today) ";
-
}
-
//echo $sql."
\n";
-
$rs = $this->adodbConnection->Execute($sql);
-
$ret = "";
-
if($rs && !$rs->EOF)
-
$ret = (int)$rs->fields["MyCount"];
-
return $ret;
-
}
-
-
function SqlGlobalCount($attribs=array())
-
{
-
global $objSession;
-
-
$p = $this->BasePermission.".VIEW";
-
$t = $this->SourceTable;
-
if($attribs["_today"])
-
{
-
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
-
$where = "($t.CreatedOn>=$today)";
-
}
-
-
if($attribs["_grouponly"])
-
{
-
$GroupList = $objSession->Get("GroupList");
-
}
-
else
-
$GroupList = NULL;
-
-
$sql = $this->GetCountSQL($p,NULL,$GroupList,$where);
-
return $sql;
-
}
-
-
function DoGlobalCount($attribs)
-
{
-
global $objCountCache;
-
-
$cc = $objCountCache->GetValue($this->CacheListType("_"),$this->ItemType,$this->CacheListExtraId("_"),(int)$attribs["_today"], 3600);
-
if(!is_numeric($cc))
-
{
-
$sql = $this->SqlGlobalCount($attribs);
-
$ret = QueryCount($sql);
-
$objCountCache->SetValue($this->CacheListType("_"),$this->ItemType,$this->CacheListExtraId("_"),(int)$attribs["_today"],$ret);
-
}
-
else
-
$ret = $cc;
-
return $ret;
-
}
-
-
-
function CacheListExtraId($ListType)
-
{
-
global $objSession;
-
-
if(!strlen($ListType))
-
$ListType="_";
-
switch($ListType)
-
{
-
case "_":
-
$ExtraId = $objSession->Get("GroupList");
-
break;
-
case "category":
-
$ExtraId = $objSession->Get("GroupList");
-
break;
-
case "myitems":
-
$ExtraId = $objSession->Get("PortalUserId");
-
break;
-
case "hot":
-
$ExtraId = $objSession->Get("GroupList");
-
break;
-
case "pop":
-
$ExtraId = $objSession->Get("GroupList");
-
break;
-
case "pick":
-
$ExtraId = $objSession->Get("GroupList");
-
break;
-
case "favorites":
-
$ExtraId = $objSession->Get("PortalUserId");
-
break;
-
case "new":
-
$ExtraId = $objSession->Get("GroupList");
-
break;
-
}
-
return $ExtraId;
-
}
-
-
function CacheListType($ListType)
-
{
-
if(!strlen($ListType))
-
$ListType="_";
-
switch($ListType)
-
{
-
case "_":
-
$ListTypeId = 0;
-
break;
-
case "category":
-
$ListTypeId = 1;
-
break;
-
case "myitems":
-
$ListTypeId = 2;
-
break;
-
case "hot":
-
$ListTypeId = 3;
-
break;
-
case "pop":
-
$ListTypeId = 4;
-
break;
-
case "pick":
-
$ListTypeId = 5;
-
break;
-
case "favorites":
-
$ListTypeId = 6;
-
break;
-
case "new":
-
$ListTypeId = 8;
-
break;
-
}
-
return $ListTypeId;
-
}
-
-
function PerformItemCount($attribs=array())
-
{
-
global $objCountCache, $objSession;
-
-
$ret = "";
-
$ListType = $attribs["_listtype"];
-
if(!strlen($ListType))
-
$ListType="_";
-
-
$ListTypeId = $this->CacheListType($ListType);
-
//echo "ListType: $ListType ($ListTypeId)
\n";
-
$ExtraId = $this->CacheListExtraId($ListType);
-
switch($ListType)
-
{
-
case "_":
-
$ret = $this->DoGlobalCount($attribs);
-
break;
-
case "category":
-
$ret = $this->CategoryCount($attribs);
-
break;
-
case "myitems":
-
$sql = $this->SqlMyItems($attribs);
-
break;
-
case "hot":
-
$sql = $this->SqlHotItems($attribs);
-
break;
-
case "pop":
-
$sql = $this->SqlPopItems($attribs);
-
break;
-
case "pick":
-
$sql = $this->SqlPickItems($attribs);
-
break;
-
case "favorites":
-
$sql = $this->SqlFavorites($attribs);
-
break;
-
case "search":
-
$sql = $this->SqlSearchItems($attribs);
-
break;
-
case "new":
-
$sql = $this->SqlNewItems($attribs);
-
break;
-
}
-
//echo "SQL: $sql
";
-
if(strlen($sql))
-
{
-
if(is_numeric($ListTypeId))
-
{
-
$cc = $objCountCache->GetValue($ListTypeId,$this->ItemType,$ExtraId,(int)$attribs["_today"], 3600);
-
-
if(!is_numeric($cc) || $attribs['_nocache'] == 1)
-
{
-
$ret = QueryCount($sql);
-
$objCountCache->SetValue($ListTypeId,$this->ItemType,$ExtraId,(int)$attribs["_today"],$ret);
-
}
-
else
-
$ret = $cc;
-
}
-
else
-
$ret = QueryCount($sql);
-
}
-
-
return $ret;
-
}
-
-
function GetJoinedSQL($PermName, $CatId=NULL, $AdditionalWhere="")
-
{
-
global $objSession, $objPermissions;
-
-
$ltable = $this->SourceTable;
-
$acl = $objSession->GetACLClause();
-
$cattable = GetTablePrefix()."CategoryItems";
-
$CategoryTable = GetTablePrefix()."Category";
-
$ptable = GetTablePrefix()."PermCache";
-
$VIEW = $objPermissions->GetPermId($PermName);
-
$sql ="INNER JOIN $cattable ON ($cattable.ItemResourceId=$ltable.ResourceId) ";
-
$sql .="INNER JOIN $CategoryTable ON ($CategoryTable.CategoryId=$cattable.CategoryId) ";
-
$sql .= "INNER JOIN $ptable ON ($cattable.CategoryId=$ptable.CategoryId) ";
-
$sql .="WHERE ($acl AND PermId=$VIEW AND PrimaryCat=1 AND $CategoryTable.Status=1) ";
-
-
if(is_numeric($CatId))
-
{
-
$sql .= " AND ($CategoryTable.CategoryId=$CatId) ";
-
}
-
if(strlen($AdditionalWhere)>0)
-
{
-
$sql .= "AND (".$AdditionalWhere.")";
-
}
-
return $sql;
-
}
-
-
function CountFavorites($attribs)
-
{
-
if($attribs["_today"])
-
{
-
global $objSession, $objConfig, $objPermissions;
-
-
$acl = $objSession->GetACLClause();
-
$favtable = GetTablePrefix()."Favorites";
-
$ltable = $this->SourceTable;
-
$cattable = GetTablePrefix()."CategoryItems";
-
$CategoryTable = GetTablePrefix()."Category";
-
$ptable = GetTablePrefix()."PermCache";
-
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
-
-
$where = "PortalUserId=".$objSession->Get("PortalUserId")." AND $ltable.Status=1";
-
$where .= " AND $favtable.Modified >= $today AND ItemTypeId=".$this->ItemType;
-
$p = $this->BasePermission.".VIEW";
-
-
$sql = "SELECT $ltable.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $favtable INNER JOIN $ltable ON ($favtable.ResourceId=$ltable.ResourceId) ";
-
$sql .= $this->GetJoinedSQL($p,NULL,$where);
-
$ret = QueryCount($sql);
-
}
-
else
-
{
-
if (!$this->ListType == "favorites")
-
{
-
$this->ListType = "favorites";
-
$this->LoadFavorites($attribs);
-
$ret = $this->QueryItemCount;
-
}
-
else
-
$ret = $this->QueryItemCount;
-
}
-
return $ret;
-
}
-
-
-
-
function CountPickItems($attribs)
-
{
-
if (!$this->ListType == "pick")
-
{
-
$this->ListType = "pick";
-
$this->LoadPickItems($attribs);
-
$ret = $this->QueryItemCount;
-
}
-
else
-
$ret = $this->QueryItemCount;
-
-
return $ret;
-
}
-
-
function CountMyItems($attribs)
-
{
-
if (!$this->ListType == "myitems")
-
{
-
$this->ListType = "myitems";
-
$this->LoadMyItems($attribs);
-
$ret = $this->QueryItemCount;
-
}
-
else
-
$ret = $this->QueryItemCount;
-
-
return $ret;
-
}
-
-
function CountHotItems($attribs)
-
{
-
if (!$this->ListType == "hotitems")
-
{
-
$this->ListType = "hotitems";
-
$this->LoadHotItems($attribs);
-
$ret = $this->QueryItemCount;
-
}
-
else
-
$ret = $this->QueryItemCount;
-
-
return $ret;
-
}
-
-
function CountNewItems($attribs)
-
{
-
if (!$this->ListType == "newitems")
-
{
-
$this->ListType = "newitems";
-
$this->LoadNewItems($attribs);
-
$ret = $this->QueryItemCount;
-
}
-
else
-
$ret = $this->QueryItemCount;
-
-
return $ret;
-
}
-
-
function CountPopItems($attribs)
-
{
-
if (!$this->ListType == "popitems")
-
{
-
$this->ListType = "popitems";
-
$this->LoadPopItems($attribs);
-
$ret = $this->QueryItemCount;
-
}
-
else
-
$ret = $this->QueryItemCount;
-
-
return $ret;
-
}
-
-
-
function CountSearchItems($attribs)
-
{
-
if (!$this->ListType == "search")
-
{
-
$this->ListType = "search";
-
$this->LoadSearchItems($attribs);
-
$ret = $this->QueryItemCount;
-
}
-
else
-
$ret = $this->QueryItemCount;
-
-
return $ret;
-
}
-
-
function SqlFavorites($attribs)
-
{
-
global $objSession, $objConfig, $objPermissions;
-
-
$acl = $objSession->GetACLClause();
-
$favtable = GetTablePrefix()."Favorites";
-
$ltable = $this->SourceTable;
-
$cattable = GetTablePrefix()."CategoryItems";
-
$CategoryTable = GetTablePrefix()."Category";
-
$ptable = GetTablePrefix()."PermCache";
-
-
$where = "PortalUserId=".$objSession->Get("PortalUserId")." AND $ltable.Status=1";
-
if($attribs["_today"])
-
{
-
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
-
$where .= " AND $favtable.Modified >= $today AND ItemTypeId=".$this->ItemType;
-
}
-
$p = $this->BasePermission.".VIEW";
-
-
$sql = "SELECT $ltable.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $favtable INNER JOIN $ltable ON ($favtable.ResourceId=$ltable.ResourceId) ";
-
$sql .= $this->GetJoinedSQL($p,NULL,$where);
-
-
-
$OrderBy = $this->QueryOrderByClause(TRUE,TRUE,TRUE);
-
$sql .= " ".$OrderBy;
-
return $sql;
-
}
-
-
function LoadFavorites($attribs)
-
{
-
global $objSession, $objCountCache;
-
-
$sql = $this->SqlFavorites($attribs);
-
-
if($objSession->HasSystemPermission("DEBUG.LIST"))
-
echo htmlentities($sql,ENT_NOQUOTES)."
\n";
-
if($attribs["_shortlist"])
-
{
-
$this->PerPageVar = $this->PerPageShortVar;
-
}
-
else
-
$this->PerPageVar = $this->PerPageVarLong;
-
-
$CachedCount = $objCountCache->GetValue($this->CacheListType("favorites"),$this->ItemType,$this->CacheListExtraId("favorites"),(int)$attribs["_today"],3600);
-
if(!is_numeric($CachedCount))
-
{
-
$this->QueryItemCount = QueryCount($sql);
-
$objCountCache->SetValue($this->CacheListType("favorites"),$this->ItemType,$this->CacheListExtraId("favorites"),(int)$attribs["_today"],$this->QueryItemCount);
-
}
-
else
-
$this->QueryItemCount = (int)$CachedCount;
-
-
return $this->Query_Item($sql);
-
}
-
-
function SqlPickItems($attribs)
-
{
-
global $objSession, $objCatList;
-
-
$catid = (int)$attribs["_catid"];
-
$scope = (int)$attribs["_scope"];
-
//$JoinCats = (int)$attribs["_catinfo"] || $scope;
-
-
$TableName = $this->SourceTable;
-
if($scope)
-
{
-
if (!$catid)
-
{
-
$catid = $objCatList->CurrentCategoryID();
-
}
-
$where = "CategoryId =".$catid." AND ".$TableName.".EditorsPick=1 AND ".$TableName.".Status=1";
-
}
-
else
-
{
-
$where = $TableName.".EditorsPick=1 AND ".$TableName.".Status=1 ";
-
$catid=NULL;
-
}
-
if($attribs["_today"])
-
{
-
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
-
$where .= " AND ($TableName.CreatedOn>=$today)";
-
}
-
$CategoryTable = GetTablePrefix()."Category";
-
$sql = "SELECT $TableName.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $TableName ";
-
$p = $this->BasePermission.".VIEW";
-
$sql .= $this->GetJoinedSQL($p,$CatUd,$where);
-
-
$OrderBy = $this->QueryOrderByClause(TRUE,TRUE,TRUE);
-
$sql .= " ".$OrderBy;
-
return $sql;
-
}
-
-
function LoadPickItems($attribs)
-
{
-
global $objSession, $objCountCache;
-
-
$sql = $this->SqlPickItems($attribs);
-
if($objSession->HasSystemPermission("DEBUG.LIST"))
-
echo htmlentities($sql,ENT_NOQUOTES)."
\n";
-
-
if($attribs["_shortlist"])
-
{
-
$this->PerPageVar = $this->PerPageShortVar;
-
}
-
else
-
$this->PerPageVar = $this->PerPageVarLong;
-
-
$CachedCount = $objCountCache->GetValue($this->CacheListType("pick"),$this->ItemType,$this->CacheListExtraId("pick"),(int)$attribs["_today"],3600);
-
if(!is_numeric($CachedCount))
-
{
-
$this->QueryItemCount= QueryCount($sql);
-
$objCountCache->SetValue($this->CacheListType("pick"),$this->ItemType,$this->CacheListExtraId("pick"),(int)$attribs["_today"],$this->QueryItemCount);
-
}
-
else
-
$this->QueryItemCount=$CachedCount;
-
-
return $this->Query_Item($sql);
-
}
-
-
function SqlMyItems($attribs= array())
-
{
-
global $objSession;
-
-
$TableName = $this->SourceTable;
-
$where = " ".$TableName.".Status>-1 AND ".$TableName.".CreatedById=".$objSession->Get("PortalUserId");
-
if($attribs["_today"])
-
{
-
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
-
$where .= " AND ($TableName.CreatedOn>=$today)";
-
}
-
$CategoryTable = GetTablePrefix()."Category";
-
$sql = "SELECT $TableName.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $TableName ";
-
$p = $this->BasePermission.".VIEW";
-
$sql .= $this->GetJoinedSQL($p,$CatUd,$where);
-
-
$OrderBy = $this->QueryOrderByClause(TRUE,TRUE,TRUE);
-
$sql .= " ".$OrderBy;
-
-
return $sql;
-
}
-
-
function LoadMyItems($attribs=array())
-
{
-
global $objSession,$objCountCache;
-
$sql = $this->SqlMyItems($attribs);
-
if($objSession->HasSystemPermission("DEBUG.LIST"))
-
echo htmlentities($sql,ENT_NOQUOTES)."
\n";
-
if($attribs["_shortlist"])
-
{
-
$this->PerPageVar = $this->PerPageShortVar;
-
}
-
else
-
$this->PerPageVar = $this->PerPageVarLong;
-
-
$CachedCount = $objCountCache->GetValue($this->CacheListType("myitems"),$this->ItemType,$this->CacheListExtraId("myitems"),(int)$attribs["_today"],3600);
-
if(!is_numeric($CachedCount))
-
{
-
$this->QueryItemCount= QueryCount($sql);
-
$objCountCache->SetValue($this->CacheListType("myitems"),$this->ItemType,$this->CacheListExtraId("myitems"),(int)$attribs["_today"],$this->QueryItemCount);
-
}
-
else
-
$this->QueryItemCount=$CachedCount;
-
-
return $this->Query_Item($sql);
-
}
-
-
function SqlNewItems($attribs = array())
-
{
-
global $objSession, $objCatList;
-
-
$catid = (int)$attribs["_catid"];
-
$scope = (int)$attribs["_scope"];
-
//$JoinCats = (int)$attribs["_catinfo"] || $scope;
-
-
$TableName = $this->SourceTable;
-
if($attribs["_today"])
-
{
-
$cutoff = mktime(0,0,0,date("m"),date("d"),date("Y"));
-
}
-
else
-
{
-
if($scope)
-
{
-
if (!$catid)
-
{
-
$catid = $objCatList->CurrentCategoryID();
-
}
-
$cutoff = $this->GetNewValue($catid);
-
}
-
else
-
$cutoff = $this->GetNewValue();
-
}
-
if($scope)
-
{
-
if (!$catid)
-
{
-
$catid = $objCatList->CurrentCategoryID();
-
}
-
-
$where = "CategoryId =".$catid." AND ((".$TableName.".CreatedOn >=".$cutoff." AND ".$TableName.".NewItem != 0) OR ".$TableName.".NewItem=1 ) AND ".$TableName.".Status=1 ";
-
}
-
else
-
{
-
$where = "((".$TableName.".CreatedOn >=".$this->GetNewValue()." AND ".$TableName.".NewItem != 0) OR ".$TableName.".NewItem=1 ) AND ".$TableName.".Status=1 ";
-
}
-
-
$CategoryTable = GetTablePrefix()."Category";
-
$sql = "SELECT $TableName.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $TableName ";
-
$p = $this->BasePermission.".VIEW";
-
$sql .= $this->GetJoinedSQL($p,$CatUd,$where);
-
-
$OrderBy = $this->QueryOrderByClause(TRUE,TRUE,TRUE);
-
$sql .= " ".$OrderBy;
-
return $sql;
-
}
-
-
function LoadNewItems($attribs)
-
{
-
global $objSession,$objCountCache;
-
-
$sql = $this->SqlNewItems($attribs);
-
-
if($objSession->HasSystemPermission("DEBUG.LIST"))
-
echo htmlentities($sql,ENT_NOQUOTES)."
\n";
-
if($attribs["_shortlist"])
-
{
-
$this->PerPageVar = $this->PerPageShortVar;
-
}
-
else
-
$this->PerPageVar = $this->PerPageVarLong;
-
-
$CachedCount = $objCountCache->GetValue($this->CacheListType("new"),$this->ItemType,$this->CacheListExtraId("new"),(int)$attribs["_today"],3600);
-
if(!is_numeric($CachedCount))
-
{
-
$this->QueryItemCount= QueryCount($sql);
-
$objCountCache->SetValue($this->CacheListType("new"),$this->ItemType,$this->CacheListExtraId("new"),(int)$attribs["_today"],$this->QueryItemCount);
-
}
-
else
-
$this->QueryItemCount=$CachedCount;
-
-
-
return $this->Query_Item($sql);
-
}
-
-
function SqlPopItems($attribs)
-
{
-
global $objSession, $objCatList;
-
-
$catid = (int)$attribs["_catid"];
-
$scope = (int)$attribs["_scope"];
-
//$JoinCats = (int)$attribs["_catinfo"] || $scope;
-
-
$TableName = $this->SourceTable;
-
-
if($scope)
-
{
-
if (!$catid)
-
{
-
$catid = $objCatList->CurrentCategoryID();
-
}
-
$where = "CategoryId =".$catid." AND ((".$TableName.".Hits >=".$this->GetLinkPopValue()." AND ".$TableName.".PopItem !=0) OR ".$TableName.".PopItem=1) AND ".$TableName.".Status=1";
-
}
-
else
-
{
-
$where = "((".$TableName.".CachedRating >=".$this->GetPopValue()." AND ".$TableName.".PopItem !=0 ) OR ".$TableName.".PopItem=1) AND ".$TableName.".Status=1 ";
-
-
$where = "((".$TableName.".Hits >=".$this->GetPopValue()." AND ".$TableName.".PopItem !=0) OR ".$TableName.".PopItem=1) AND ".$TableName.".Status=1 ";
-
}
-
if($attribs["_today"])
-
{
-
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
-
$where .= " AND ($TableName.CreatedOn>=$today)";
-
}
-
$CategoryTable = GetTablePrefix()."Category";
-
$sql = "SELECT $TableName.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $TableName ";
-
$p = $this->BasePermission.".VIEW";
-
$sql .= $this->GetJoinedSQL($p,$catid,$where);
-
-
$OrderBy = $this->QueryOrderByClause(TRUE,TRUE,TRUE);
-
$sql .= " ".$OrderBy;
-
-
return $sql;
-
}
-
-
function LoadPopItems($attribs)
-
{
-
global $objSession,$objCountCache;
-
$sql = $this->SqlPopItems($attribs);
-
-
if($objSession->HasSystemPermission("DEBUG.LIST"))
-
echo htmlentities($sql,ENT_NOQUOTES)."
\n";
-
if($attribs["_shortlist"])
-
{
-
$this->PerPageVar = $this->PerPageShortVar;
-
}
-
else
-
$this->PerPageVar = $this->PerPageVarLong;
-
-
$CachedCount = $objCountCache->GetValue($this->CacheListType("pop"),$this->ItemType,$this->CacheListExtraId("pop"),(int)$attribs["_today"],3600);
-
if(!is_numeric($CachedCount))
-
{
-
$this->QueryItemCount= QueryCount($sql);
-
$objCountCache->SetValue($this->CacheListType("pop"),$this->ItemType,$this->CacheListExtraId("pop"),(int)$attribs["_today"],$this->QueryItemCount);
-
}
-
else
-
$this->QueryItemCount=$CachedCount;
-
-
return $this->Query_Item($sql);
-
}
-
-
function SqlHotItems($attribs)
-
{
-
global $objSession, $objCatList;
-
-
$catid = (int)$attribs["_catid"];
-
$scope = (int)$attribs["_scope"];
-
-
// $JoinCats = (int)$attribs["_catinfo"] || $scope;
-
-
$TableName = $this->SourceTable;
-
-
$OrderBy = $TableName.".CachedRating DESC";
-
-
if($scope)
-
{
-
if (!$catid)
-
{
-
$catid = $objCatList->CurrentCategoryID();
-
}
-
$where = "CategoryId =".$catid." AND ((".$TableName.".CachedRating >=".$this->GetHotValue()." AND ".$TableName.".PopItem !=0) OR ".$TableName.".PopItem=1) AND ".$TableName.".Status=1";
-
}
-
else
-
{
-
$where = "((".$TableName.".CachedRating >=".$this->GetPopValue()." AND ".$TableName.".PopItem !=0 ) OR ".$TableName.".PopItem=1) AND ".$TableName.".Status=1 ";
-
}
-
-
if($attribs["_today"])
-
{
-
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
-
$where .= " AND ($TableName.CreatedOn>=$today)";
-
}
-
$CategoryTable = GetTablePrefix()."Category";
-
$sql = "SELECT $TableName.*,$CategoryTable.CategoryId,$CategoryTable.CachedNavBar FROM $TableName ";
-
$p = $this->BasePermission.".VIEW";
-
$CatId = !$scope? NULL : $catid;
-
$sql .= $this->GetJoinedSQL($p,$CatId,$where);
-
-
if(strlen($OrderBy))
-
$sql .= " ORDER BY $OrderBy ";
-
-
return $sql;
-
}
-
-
function LoadHotItems($attribs)
-
{
-
global $objSession,$objCountCache;
-
-
$sql = $this->SqlHotItems($attribs);
-
if($objSession->HasSystemPermission("DEBUG.LIST"))
-
echo htmlentities($sql,ENT_NOQUOTES)."
\n";
-
-
if($attribs["_shortlist"])
-
{
-
$this->PerPageVar = $this->PerPageShortVar;
-
}
-
else
-
$this->PerPageVar = $this->PerPageVarLong;
-
-
$CachedCount = $objCountCache->GetValue($this->CacheListType("hot"),$this->ItemType,$this->CacheListExtraId("hot"),(int)$attribs["_today"], 0);
-
if(!is_numeric($CachedCount))
-
{
-
$this->QueryItemCount= QueryCount($sql);
-
$objCountCache->SetValue($this->CacheListType("hot"),$this->ItemType,$this->CacheListExtraId("hot"),(int)$attribs["_today"],$this->QueryItemCount);
-
}
-
else
-
$this->QueryItemCount=$CachedCount;
-
-
return $this->Query_Item($sql);
-
}
-
-
function SqlSearchItems($attribs = array())
-
{
-
global $objConfig, $objItemTypes, $objSession, $objPermissions, $CountVal;
-
-
$acl = $objSession->GetACLClause();
-
$this->Clear();
-
//$stable = "ses_".$objSession->GetSessionKey()."_Search";
-
$stable = $objSession->GetSearchTable();
-
$ltable = $this->SourceTable;
-
$catitems = GetTablePrefix()."CategoryItems";
-
$cattable = GetTablePrefix()."Category";
-
$ptable = GetTablePrefix()."PermCache";
-
$p = $this->BasePermission.".VIEW";
-
$i = new $this->classname();
-
-
$sql = "SELECT $cattable.CategoryId,$cattable.CachedNavbar,$ltable.*, Relevance FROM $stable ";
-
$sql .= "INNER JOIN $ltable ON ($stable.ItemId=$ltable.".$i->id_field.") ";
-
-
$where = "ItemType=".$this->ItemType." AND $ltable.Status=1";
-
-
$sql .= $this->GetJoinedSQL($p,NULL,$where);
-
$sql .= " ORDER BY EdPick DESC,Relevance DESC ";
-
-
$tmp = $this->QueryOrderByClause(FALSE,TRUE,TRUE);
-
$tmp = substr($tmp,9);
-
if(strlen($tmp))
-
{
-
$sql .= ", ".$tmp." ";
-
}
-
return $sql;
-
}
-
-
function LoadSearchItems($attribs = array())
-
{
-
global $CountVal, $objSession;
-
//echo "Loading ".get_class($this)." Search Items
";
-
$sql = $this->SqlSearchItems($attribs);
-
//echo "$sql
";
-
$this->Query_Item($sql);
-
$Keywords = GetKeywords($objSession->GetVariable("Search_Keywords"));
-
//echo "SQL Loaded ItemCount (".get_class($this).'): '.$this->NumItems().'
';
-
for($i = 0; $i < $this->NumItems(); $i++)
-
{
-
$this->Items[$i]->Keywords = $Keywords;
-
}
-
if(is_numeric($CountVal[$this->ItemType]))
-
{
-
$this->QueryItemCount = $CountVal[$this->ItemType];
-
//echo "CACHE: "; print_r($CountVal); echo "
";
-
}
-
else
-
{
-
$this->QueryItemCount = QueryCount($sql);
-
//echo "SQL: ".$sql."
";
-
$CountVal[$this->ItemType] = $this->QueryItemCount;
-
}
-
-
}
-
-
function PasteFromClipboard($TargetCat,$NameField="")
-
{
-
global $objSession,$objCatList;
-
-
$clip = $objSession->GetVariable("ClipBoard");
-
if(strlen($clip))
-
{
-
$ClipBoard = ParseClipboard($clip);
-
$IsCopy = (substr($ClipBoard["command"],0,4)=="COPY") || ($ClipBoard["source"] == $TargetCat);
-
-
$item_ids = explode(",",$ClipBoard["ids"]);
-
for($i=0;$iGetItem($item_ids[$i]);
-
if(!$IsCopy) // paste to other category then current
-
{
-
$item->MoveToCategory($ClipBoard["source"],$TargetCat);
-
$clip = str_replace("CUT","COPY",$clip);
-
$objSession->SetVariable("ClipBoard",$clip);
-
}
-
else
-
{
-
$item->CopyToNewResource($TargetCat,$NameField); // create item copy, but with new ResourceId
-
$item->AddToCategory($TargetCat);
-
UpdateCategoryCount($item->type,$TargetCat);
-
-
}
-
}
-
}
-
}
-
-
function AdminPrintItems($template)
-
{
-
// prints item listing for admin (browse/advanced view) tabs
-
$o = '';
-
-
$i = 1;
-
-
$topleft = 0;
-
$topright = 0;
-
$rightcount = 0;
-
$total_items = $this->NumItems();
-
$topleft = ceil($total_items / 2);
-
$topright = $total_items - $topleft;
-
-
for($x = 0; $x < $topleft; $x++)
-
{
-
//printingleft
-
$item = $this->Items[$x];
-
if ($i > 2)
-
{
-
$o .= "
\n";
-
$i = 1;
-
}
-
$o .= $item->AdminParseTemplate($template);
-
$i++;
-
-
//printingright
-
if ($rightcount < $topright && ( ($x + $topleft) < $total_items) )
-
{
-
$item = $this->Items[ $x + $topleft ];
-
if ($i > 2)
-
{
-
$o.="
\n";
-
$i = 1;
-
}
-
$o .= $item->AdminParseTemplate($template);
-
$i++;
-
$rightcount++;
-
}
-
}
-
$o .= "\n
\n";
-
-
return $o;
-
}
-
-
}
-
-
// -------------- NEW CLASSES -----------------------
-
-
class DBList {
-
-
// table related attributes
-
var $db = null;
-
var $table_name = '';
-
var $LiveTable = '';
-
var $EditTable = '';
-
-
-
// record related attributes
-
var $records = Array();
-
var $record_count = 0;
-
var $cur_rec = -1; // "-1" means no records, or record index otherwise
-
-
// query related attributes
-
var $SelectSQL = "SELECT * FROM %s";
-
-
function DBList()
-
{
-
// use $this->SetTable('live', 'table name');
-
// in inherited constructors to set table for list
-
$this->db =&GetADODBConnection();
-
}
-
-
function SetTable($action, $table_name = null)
-
{
-
// $action = {'live', 'restore','edit'}
-
switch($action)
-
{
-
case 'live':
-
$this->LiveTable = $table_name;
-
$this->table_name = $this->LiveTable;
-
break;
-
case 'restore':
-
$this->table_name = $this->LiveTable;
-
break;
-
case 'edit':
-
global $objSession;
-
$this->table_name = $objSession->GetEditTable($this->LiveTable);
-
break;
-
}
-
}
-
-
function Clear()
-
{
-
// no use of this method at a time :)
-
$this->records = Array();
-
$this->record_count = 0;
-
$this->cur_rec = -1;
-
}
-
-
function Query()
-
{
-
// query list
-
$sql = sprintf($this->SelectSQL, $this->table_name);
-
echo "SQL: $sql
";
-
$rs =& $this->db->Execute($sql);
-
-
if( $this->db->ErrorNo() == 0 )
-
{
-
$this->records = $rs->GetRows();
-
$this->record_count = count($this->records);
-
//$this->cur_rec = $this->record_count ? 0 : -1;
-
}
-
else
-
return false;
-
}
-
-
function ProcessList($callback_method)
-
{
-
// process list using user-defined method called
-
// with one parameter - current record fields
-
// (associative array)
-
if($this->record_count > 0)
-
{
-
$this->cur_rec = 0;
-
while($this->cur_rec < $this->record_count)
-
{
-
if( method_exists($this, $callback_method) )
-
$this->$callback_method( $this->GetCurrent() );
-
$this->cur_rec++;
-
}
-
}
-
}
-
-
function &GetCurrent()
-
{
-
// return currently processed record (with change ability)
-
return ($this->cur_rec != -1) ? $this->records[$this->cur_rec] : false;
-
}
-
-
function GetDBField($field_name)
-
{
-
$rec =& $this->GetCurrent();
-
return is_array($rec) && isset($rec[$field_name]) ? $rec[$field_name] : false;
-
}
-
}
-
-
-
?>
\ No newline at end of file