Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Sun, Feb 2, 2:44 AM

in-portal

Index: trunk/kernel/include/parseditem.php
===================================================================
--- trunk/kernel/include/parseditem.php (revision 675)
+++ trunk/kernel/include/parseditem.php (revision 676)
@@ -1,5917 +1,2959 @@
<?php
-
global $ItemTypePrefixes;
-
-
$ItemTypePrefixes = array();
-
$ItemTagFiles = array();
-
-
function RegisterPrefix($class,$prefix,$file)
-
{
-
global $ItemTypePrefixes, $ItemTagFiles;
-
-
$ItemTypePrefixes[$class] = $prefix;
-
$ItemTagFiles[$prefix] = $file;
-
}
-
-
class clsParsedItem extends clsItemDB
-
{
-
var $TagPrefix;
-
var $Parser;
-
var $AdminParser;
-
-
function clsParsedItem($id=NULL)
-
{
-
global $TemplateRoot;
-
-
$this->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 = "<td width=\"$percentsOn%\" bgcolor=\"$OnColor\"><img src=\"img/s.gif\"></td><td width=\"$percentsOff%\" bgcolor=\"$OffColor\"><img src=\"img/s.gif\"></td>";
-
}
-
else
-
$ret = "<td width=\"100%\" bgcolor=\"$OnColor\"><img src=\"img/s.gif\"></td>";
-
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 = "<img src=\"$img_src\" border=\"0\" alt=\"".(10*$rel)."\">";
-
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 .= "<IMG src=\"$url\" $extra_attribs >";
-
$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 = "<IMG $extra_attribs SRC=\"".$this->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 = "<IMG src=\"$url\" $extra_attribs >";
-
}
-
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."<br>";
-
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,"<inp:");
-
while($next_tag)
-
{
-
$end_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,"<inp:");
-
}
-
array_pop($this->AdminParser->stack);
-
}
-
return $html;
-
}
-
-
function ParseTemplateText($text)
-
{
-
$html = $text;
-
$search = "<inp:".$this->TagPrefix;
-
//$next_tag = strpos($html,"<inp:");
-
$next_tag = strpos($html,$search);
-
-
-
while($next_tag)
-
{
-
$closer = strpos(strtolower($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 = "</inp>";
-
-
## Try to find end of TagName
-
$TagNameEnd = strpos($html, " ", $next_tag);
-
-
## Support Old version
-
// $closer = strpos(strtolower($html),"</inp>",$next_tag);
-
if ($TagNameEnd)
-
{
-
$Tag = strtolower(substr($html, $next_tag, $TagNameEnd-$next_tag));
-
$TagName = explode(":", $Tag);
-
if (strlen($TagName[1]))
-
$CloserTag = "</inp:".$TagName[1].">";
-
}
-
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<br>';
-
//$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 <br>\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 <br>\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)."<BR>";
-
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 <b>$i</b>:<br>";
-
$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."<br>\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;$x<count($this->Items);$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 [<b>".get_class($this).'</b>], sql: ['.$sql.']<br>';
-
//if( get_class($this) == 'clsthemefilelist') trace();
-
$dummy =& $this->GetDummy();
-
if( !$dummy->TableExists() )
-
{
-
if($this->debuglevel) echo "ERROR: table <b>".$dummy->tablename."</b> missing.<br>";
-
$this->Clear();
-
return false;
-
}
-
-
if($rows>-1 && $offset>-1)
-
{
-
//print_pre(debug_backtrace());
-
//echo "<b>Executing SelectLimit</b> $sql <b>Offset:</b> $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");
-
if($this->debuglevel) {
-
echo '<br><br>'.$sql.'<br><br>';
-
echo "Error: ".$this->adodbConnection->ErrorMsg()."<br>";
-
}
-
$this->Clear();
-
return false;
-
}
-
-
$this->Clear();
-
-
if($this->debuglevel > 0)
-
{
-
echo "This SQL: $sql<br><br>";
-
if( ($this->debuglevel > 1) && ($result->RecordCount() > 0) )
-
{
-
echo '<pre>'.print_r($result->GetRows(), true).'</pre>';
-
$result->MoveFirst();
-
}
-
}
-
//echo "SQL: $sql<br><br>";
-
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)."<br>\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)."<br>\n";
-
$this->adodbConnection->Execute($insert);
-
//echo $insert."<br>";
-
}
-
-
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 <b>CopyFromEditTable</b> in class <b>".get_class($this).'</b><br>';
-
//echo $sql."<BR>";
-
-
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)."<br>\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)."<br>\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<br>\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).")<br>";
-
$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."<br>\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 "=====<br>";
-
echo "Class <b>".get_class($this)."</b>: Page ".$this->Page." of $NumPages<br>";
-
echo "PerPage: $PerPage<br>";
-
echo "Items Queries: ".$this->QueryItemCount."<br>";
-
echo "=====<br>";
-
*/
-
if($this->Page > $NumPages)
-
{
-
switch($fix_method)
-
{
-
case 'set_first':
-
$this->Page = 1;
-
//echo "Move 2 First (class <b>".get_class($this)."</b>)<br>";
-
break;
-
case 'set_last':
-
$this->Page = $NumPages;
-
//echo "Move 2 Last (class <b>".get_class($this)."</b>)<br>";
-
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 .= "<A HREF=\"$prev_url\">&lt;&lt;</A>";
-
}
-
-
for($p=$StartPage;$p<=$EndPage;$p++)
-
{
-
if($p!=$this->Page)
-
{
-
${$v}[$this->PageEnvarIndex]=$p;
-
$href = $page."?env=".BuildEnv().$EnvSuffix;
-
$o .= " <A HREF=\"$href\">$p</A> ";
-
}
-
else
-
{
-
$o .= " <SPAN class=\"current-page\">$p</SPAN>";
-
}
-
}
-
if($EndPage<$NumPages && $EndPage>0)
-
{
-
${$v}[$this->PageEnvarIndex]=$this->Page+$PagesToList;
-
-
$next_url = $page."?env=".BuildEnv().$EnvSuffix;
-
$o .= "<A HREF=\"$next_url\"> &gt;&gt;</A>";
-
}
-
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 .= '<a href="'.$prev_url.'">&lt;&lt;</a>';
-
}
-
-
-
for($p = $StartPage; $p <= $EndPage; $p++)
-
{
-
if($p != $this->Page)
-
{
-
$update[$this->PageEnvarIndex] = $p;
-
$href = $url.'?env='.BuildEnv();
-
$o .= ' <a href="'.$href.'" class="NAV_URL">'.$p.'</a> ';
-
}
-
else
-
{
-
$o .= '<SPAN class="CURRENT_PAGE">'.$p.'</SPAN>';
-
}
-
}
-
if($EndPage < $NumPages)
-
{
-
$update[$this->PageEnvarIndex] = $this->Page + 10;
-
$next_url = $url.'?env='.BuildEnv();
-
$o .= '<a href="'.$next_url.'"> &gt;&gt;</a>';
-
}
-
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;$i<count($NewCatList);$i++)
-
{
-
$cat = $NewCatList[$i];
-
if(!in_array($cat,$CurrentList))
-
$ins_list[] = $cat;
-
}
-
for($i=0;$i<count($CurrentList);$i++)
-
{
-
$cat = $CurrentList[$i];
-
if(!in_array($cat,$NewCatList))
-
$del_list[] = $cat;
-
}
-
for($i=0;$i<count($ins_list);$i++)
-
{
-
$cat = $ins_list[$i];
-
$item->AddToCategory($cat);
-
}
-
for($i=0;$i<count($del_list);$i++)
-
{
-
$cat = $del_list[$i];
-
$item->RemoveFromCategory($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; $x<count($this->Query_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."<br><br>\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)<br>\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<br>";
-
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)."<br>\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)."<br>\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)."<br>\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)."<br>\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)."<br>\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)."<br>\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 <b>".get_class($this)."</b> Search Items<br>";
-
$sql = $this->SqlSearchItems($attribs);
-
//echo "$sql<br>";
-
$this->Query_Item($sql);
-
$Keywords = GetKeywords($objSession->GetVariable("Search_Keywords"));
-
//echo "SQL Loaded ItemCount (<b>".get_class($this).'</b>): '.$this->NumItems().'<br>';
-
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: <pre>"; print_r($CountVal); echo "</pre><BR>";
-
}
-
else
-
{
-
$this->QueryItemCount = QueryCount($sql);
-
//echo "<b>SQL</b>: ".$sql."<br><br>";
-
$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;$i<count($item_ids);$i++)
-
{
-
$item = $this->GetItem($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 = '<table border="0" cellspacing="2" width="100%"><tbody><tr>';
-
-
$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 .= "</tr>\n<tr>";
-
$i = 1;
-
}
-
$o .= $item->AdminParseTemplate($template);
-
$i++;
-
-
//printingright
-
if ($rightcount < $topright && ( ($x + $topleft) < $total_items) )
-
{
-
$item = $this->Items[ $x + $topleft ];
-
if ($i > 2)
-
{
-
$o.="</tr>\n<tr>";
-
$i = 1;
-
}
-
$o .= $item->AdminParseTemplate($template);
-
$i++;
-
$rightcount++;
-
}
-
}
-
$o .= "\n</tr></tbody></table>\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<br>";
-
$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
Property changes on: trunk/kernel/include/parseditem.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.36
\ No newline at end of property
+1.37
\ No newline at end of property
Index: trunk/kernel/include/searchitems.php
===================================================================
--- trunk/kernel/include/searchitems.php (revision 675)
+++ trunk/kernel/include/searchitems.php (revision 676)
@@ -1,1477 +1,739 @@
<?php
-
/* search string syntax:
-
+<word> : <word> is required
-
-<word> : <word> cannot exist in the searched field
-
"word word" : contents between the quotes are treated as a single entity
-
+/-"word word" is supported
-
ignore words are not case sensitive
-
*/
-
class clsSearchLog extends clsItemDB
-
{
-
function clsSearchLog($id=NULL)
-
{
-
$this->clsItemDB();
-
$this->tablename = GetTablePrefix()."SearchLog";
-
$this->id_field = "SearchLogId";
-
$this->NoResourceId = 1;
-
if($id)
-
$this->LoadFromDatabase($id);
-
}
-
-
function LoadFromDatabase($Id)
-
{
-
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;
-
-
$this->SetFromArray($data);
-
$this->Clean();
-
return true;
-
}
-
}
-
-
class clsSearchLogList extends clsItemCollection
-
{
-
var $Page;
-
var $PerPageVar;
-
-
function clsSearchLogList()
-
{
-
$this->clsItemCollection();
-
$this->SourceTable = GetTablePrefix()."SearchLog";
-
$this->classname = "clsSearchLog";
-
$this->Page=1;
-
$this->PerPageVar = "Perpage_SearchLog";
-
$this->AdminSearchFields = array("Keyword");
-
}
-
-
function UpdateKeyword($keyword,$SearchType)
-
{
-
$sql = "UPDATE ".$this->SourceTable." SET Indices = Indices+1 WHERE Keyword='$keyword' AND SearchType=$SearchType";
-
//echo $sql."<br>\n";
-
$this->adodbConnection->Execute($sql);
-
if($this->adodbConnection->Affected_Rows()==0)
-
{
-
//echo "Creating Keyword record..<br>\n";
-
$k = new clsSearchLog();
-
$k->Set("Keyword",$keyword);
-
$k->Set("Indices",1);
-
$k->Set("SearchType",$SearchType);
-
$k->Create();
-
}
-
}
-
-
function AddKeywords($Keywords)
-
{
-
if(is_array($Keywords))
-
{
-
for($i=0;$i<count($Keywords);$i++)
-
{
-
$this->UpdateKeyword($Keywords[$i]);
-
}
-
}
-
else
-
$this->UpdateKeyword($Keywords);
-
}
-
}
-
-
class clsEmailLog extends clsItemDB
-
{
-
function clsEmailLog($id=NULL)
-
{
-
$this->clsItemDB();
-
$this->tablename = GetTablePrefix()."SearchLog";
-
$this->id_field = "SearchLogId";
-
$this->NoResourceId = 1;
-
if($id)
-
$this->LoadFromDatabase($id);
-
}
-
-
function LoadFromDatabase($Id)
-
{
-
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;
-
-
$this->SetFromArray($data);
-
$this->Clean();
-
return true;
-
}
-
}
-
-
class clsEmailLogList extends clsItemCollection
-
{
-
var $Page;
-
var $PerPageVar;
-
-
function clsEmailLogList()
-
{
-
$this->clsItemCollection();
-
$this->SourceTable = GetTablePrefix()."SearchLog";
-
$this->classname = "clsEmailLog";
-
$this->Page=1;
-
$this->PerPageVar = "Perpage_EmailsL";
-
$this->AdminSearchFields = array("event", "fromuser", "addressto", "subject");
-
}
-
-
function UpdateKeyword($keyword,$SearchType)
-
{
-
$sql = "UPDATE ".$this->SourceTable." SET Indices = Indices+1 WHERE Keyword='$keyword' AND SearchType=$SearchType";
-
//echo $sql."<br>\n";
-
$this->adodbConnection->Execute($sql);
-
if($this->adodbConnection->Affected_Rows()==0)
-
{
-
//echo "Creating Keyword record..<br>\n";
-
$k = new clsSearchLog();
-
$k->Set("Keyword",$keyword);
-
$k->Set("Indices",1);
-
$k->Set("SearchType",$SearchType);
-
$k->Create();
-
}
-
}
-
-
function AddKeywords($Keywords)
-
{
-
if(is_array($Keywords))
-
{
-
for($i=0;$i<count($Keywords);$i++)
-
{
-
$this->UpdateKeyword($Keywords[$i]);
-
}
-
}
-
else
-
$this->UpdateKeyword($Keywords);
-
}
-
}
-
-
class clsSearchResults extends clsItemCollection
-
{
-
var $ResultTable;
-
var $FieldList;
-
var $FieldWeight;
-
var $WhereClauses;
-
var $SourceTable;
-
var $Relationships;
-
var $Ignored_Words;
-
var $CatClause;
-
var $Keywords;
-
var $Phrase = "";
-
var $SearchType;
-
var $RequiredRelevance;
-
var $PctRelevance;
-
var $PctPop;
-
var $PctRating;
-
-
function clsSearchResults($SearchSource,$DataClass)
-
{
-
global $objConfig;
-
-
$this->clsItemCollection();
-
$this->SourceTable = $SearchSource;
-
$this->SetResultTable($SearchSource,$DataClass);
-
$this->FieldList = array();
-
$this->Relationships = array();
-
$this->Ignored_Words = array();
-
$this->WhereClauses = array();
-
$this->FieldWeight = array();
-
$this->Keywords = GetKeywords("");
-
$this->SearchType = 0; //simple
-
$this->RequiredRelevance=0;
-
$this->PctRelevance = $objConfig->Get("SearchRel_DefaultKeyword")/100;
-
$this->PctPop = $objConfig->Get("SearchRel_DefaultPop")/100;
-
$this->PctRating = $objConfig->Get("SearchRel_DefaultRating")/100;
-
}
-
-
function SetResultTable($SearchSource,$DataClass)
-
{
-
global $objSession;
-
-
$this->ResultTable = $objSession->GetSearchTable();
-
$this->classname= $DataClass;
-
}
-
-
function LoadSearchResults($Start=0,$PerPage=NULL)
-
{
-
if($PerPage)
-
{
-
$limit = "LIMIT $Start,$PerPage";
-
}
-
$sql = "SELECT * FROM ".$this->ResultTable." ".$limit;
-
-
$this->Clear();
-
$rs = $this->adodbConnection->Execute($sql);
-
return $this->Query_Item($sql);
-
}
-
-
function SetCategoryClause($whereclause)
-
{
-
$this->CatClause=$whereclause;
-
}
-
-
function AddRelationship($JoinTable,$JoinExpression=NULL)
-
{
-
-
$this->Relationships[$JoinTable]=$JoinExpression;
-
}
-
-
function SetKeywords($keywords)
-
{
-
$this->Phrase=$keywords;
-
$this->keywords = GetKeywords($keywords);
-
}
-
-
function AddSimpleCustomFields()
-
{
-
$sql = "SELECT * FROM ".GetTablePrefix()."SearchConfig WHERE TableName='".$this->SourceTable."' AND SimpleSearch=1 AND CustomFieldId>0";
-
//echo $sql;
-
foreach($this->Relationships as $Table=>$clause)
-
{
-
if(strlen($Table)>0 && $Table != "Category")
-
$sql .= " OR TableName='".$Table."'";
-
}
-
$ctable = GetTablePrefix()."CustomMetaData";
-
$rs = $this->adodbConnection->Execute($sql);
-
$CustomJoined = FALSE;
-
while($rs && !$rs->EOF)
-
{
-
$x = $rs->fields["CustomFieldId"];
-
$t = $ctable." as c".$x;
-
$join = "(c$x.ResourceId=".GetTablePrefix().$this->SourceTable.".ResourceId AND c$x.CustomFieldId=".$rs->fields["CustomFieldId"].")";
-
$this->AddRelationship($t,$join);
-
$f = "c".$x.".Value ";
-
$this->FieldList[] = $f;
-
$this->FieldWeight[$f] = $rs->fields["Priority"];
-
$rs->MoveNext();
-
}
-
}
-
-
function AddSimpleFields()
-
{
-
$sql = "SELECT * FROM ".GetTablePrefix()."SearchConfig WHERE TableName='".$this->SourceTable."' AND SimpleSearch=1 AND CustomFieldId=0";
-
//echo $sql;
-
foreach($this->Relationships as $Table=>$clause)
-
{
-
if(strlen($Table)>0 && $Table != "Category")
-
$sql .= " OR TableName='".$Table."'";
-
}
-
$rs = $this->adodbConnection->Execute($sql);
-
-
while($rs && !$rs->EOF)
-
{
-
$f = GetTablePrefix().$rs->fields["TableName"].".".$rs->fields["FieldName"];
-
$this->FieldList[] = $f;
-
$this->FieldWeight[$f] = $rs->fields["Priority"];
-
$rs->MoveNext();
-
}
-
$this->AddSimpleCustomFields();
-
}
-
-
function AddSearchWhereClause($FieldName)
-
{
-
$req_where = "";
-
/* build required keywords string */
-
-
if(count($this->keywords["required"])>0)
-
{
-
$required = $this->keywords["required"];
-
for($i=0;$i<count($required);$i++)
-
{
-
if(strlen($required[$i])>0)
-
{
-
if($i>0)
-
{
-
$or =" AND ";
-
}
-
else
-
$or = "";
-
$w .= $or." ".$FieldName." LIKE '%".$required[$i]."%'";
-
}
-
}
-
if(strlen($w)>0)
-
{
-
$req_where = "(". $w.")";
-
}
-
else
-
$req_where = "";
-
}
-
$w = "";
-
$not_where="";
-
if(count($this->keywords["notallowed"])>0)
-
{
-
$words = $this->keywords["notallowed"];
-
for($i=0;$i<count($words);$i++)
-
{
-
if(strlen($words[$i])>0)
-
{
-
if($i>0)
-
{
-
$or =" AND ";
-
}
-
else
-
$or = "";
-
$w .= $or." ".$FieldName." NOT LIKE '%".$words[$i]."%'";
-
}
-
}
-
if(strlen($w)>0)
-
{
-
$not_where = "(".$w.")";
-
}
-
else
-
$not_where = "";
-
}
-
-
$w="";
-
$normal = $this->keywords["normal"];
-
if(count($normal)>0)
-
{
-
for($i=0;$i<count($normal);$i++)
-
{
-
if (strlen($normal[$i])>0)
-
{
-
if($i>0)
-
{
-
$or =" OR ";
-
}
-
else
-
$or = "";
-
$w .= "$or $FieldName LIKE '%".$normal[$i]."%'";
-
}
-
}
-
if(count($required)>0)
-
$w .= " OR ";
-
for($i=0;$i<count($required);$i++)
-
{
-
if(strlen($required[$i])>0)
-
{
-
if($i>0)
-
{
-
$or = " OR ";
-
}
-
else
-
$or="";
-
$w .= "$or $FieldName LIKE '%".$required[$i]."%'";
-
}
-
}
-
if(strlen($w)>0)
-
{
-
$where = "(".$w.")";
-
}
-
else
-
$where = "";
-
}
-
-
$complete= BuildWhereClause($where,$req_where,$not_where);
-
$this->WhereClauses[$FieldName]="(".$complete.")";
-
$this->Ignored_Words=$this->keywords["ignored"];
-
}
-
-
function PerformSearch($ItemType,$OrderBy=NULL,$InitTable=FALSE, $idlist=NULL)
-
{
-
static $SelectSQL, $OldItemType;
-
global $objSession, $objItemTypes;
-
//echo "perfirming Simple Search<br>";
-
//echo "Old Item Type: $OldItemType New: $ItemType <br>\n";
-
if($ItemType != $OldItemType)
-
$SelectSQL = "";
-
$OldItemType = $ItemType;
-
-
$ctype = $objItemTypes->GetItem($ItemType);
-
$idField = $ctype->Get("SourceTable")."Id";
-
$this->SourceTable = GetTablePrefix().$ctype->Get("SourceTable");
-
$result=0;
-
$PopField = $ctype->Get("PopField");
-
$RateField = $ctype->Get("RateField");
-
-
//print_pre($this->keywords);
-
-
if(!strlen($SelectSQL))
-
{
-
$typestr = str_pad($ItemType,2,"0",STR_PAD_LEFT);
-
$SelectSQL = "SELECT ";
-
$ifs = array();
-
$weightsum = 0;
-
foreach($this->FieldWeight as $w)
-
$weightsum += $w;
-
$wordcount = count($this->keywords["normal"])+count($this->keywords["required"]);
-
$single = ($wordcount == 1);
-
foreach($this->FieldList as $f)
-
{
-
$weight = (int)$this->FieldWeight[$f];
-
$s = array();
-
-
if(!$single)
-
{
-
$full = trim(implode(" ",$this->keywords["normal"]));
-
$s[] = " (IF ($f LIKE '%$full%', ".$weightsum.", 0))";
-
}
-
foreach($this->keywords["normal"] as $k)
-
{
-
if($k != $full || $single)
-
{
-
$temp = " (IF ($f LIKE '%$k%', ".$weight.", 0))";
-
$s[] = $temp;
-
}
-
}
-
-
foreach($this->keywords["required"] as $k)
-
{
-
if($this->RequiredRelevance>0)
-
$weight = $this->FieldWeight[$f] + ($this->FieldWeight[$f]*($this->RequiredRelevance/100));
-
-
if($k != $full || $single)
-
{
-
$s[] = " (IF ($f LIKE '%$k%', ".$weight.", 0))";
-
}
-
}
-
// echo "<PRE>";print_r($s); echo "</PRE>";
-
$txt = implode("+",$s);
-
//echo $txt."<br>\n";
-
$ifs[] = $txt;
-
unset($s);
-
}
-
// echo "<PRE>";print_r($ifs); echo "</PRE>";
-
-
/* add relevance formula for weighting hits & popularity */
-
-
if($weightsum==0)
-
$weightsum=1;
-
-
if(strlen($PopField)>0 && $this->PctPop>0)
-
{
-
$popcalc = " + ((($PopField + 1) / (max($PopField)+1)*".$this->PctPop."))";
-
}
-
else
-
$popcalc = "";
-
-
if(strlen($RateField)>0 && $this->PctRating>0)
-
{
-
$ratecalc = " + ((($RateField + 1) / (max($RateField)+1)*".$this->PctRating."))";
-
}
-
else
-
$ratecalc = "";
-
-
if($this->PctRelevance>0)
-
{
-
$relcalc = "(((".implode("+",$ifs).")/$weightsum)*".$this->PctRelevance.")";
-
}
-
else
-
$relcalc = "0";
-
-
$SelectSQL .= $relcalc.$popcalc.$ratecalc." as Relevance, ";
-
-
$SelectSQL .= $this->SourceTable.".".$idField." as ItemId, ".$this->SourceTable.".ResourceId as ResourceId, CONCAT($typestr) as ItemType, EditorsPick as EdPick FROM ".$this->SourceTable." ";
-
-
foreach($this->Relationships as $JoinTable=>$OnClause)
-
{
-
$SelectSQL .= "LEFT JOIN $JoinTable ON $OnClause ";
-
}
-
$first=1;
-
$where=0;
-
-
foreach($this->FieldList as $field)
-
{
-
if(strpos($field,"as")>0)
-
{
-
$fparts = explode("as",$field,2);
-
$f = $fparts[1];
-
$this->AddSearchWhereClause($field);
-
}
-
else {
-
$this->AddSearchWhereClause($field);
-
}
-
}
-
-
$SelectSQL .= " WHERE ";
-
$SelectSQL .= implode(" or ",$this->WhereClauses);
-
-
if(is_array($idlist))
-
{
-
$SelectSQL .= " AND (ResourceId IN (".implode(",",$idlist)."))";
-
}
-
}
-
$SelectSQL .= "GROUP BY $idField ";
-
//echo $SelectSQL."<br><br>\n";
-
if($InitTable)
-
{
-
$this->adodbConnection->Execute("DROP TABLE IF EXISTS ".$this->ResultTable);
-
//$indexSQL = "(INDEX(Relevance), INDEX(ItemId), INDEX(ItemType), INDEX sorting (EdPick,Relevance)) ";
-
$full_sql = "CREATE TABLE ".$this->ResultTable." ".$indexSQL.$SelectSQL;
-
//echo $full_sql."<br>\n";
-
$this->adodbConnection->Execute($full_sql);
-
//echo $this->adodbConnection->ErrorMsg()."<br>\n";
-
$objSession->SetVariable("Search_Keywords",$this->Phrase);
-
}
-
else
-
{
-
$full_sql = "INSERT INTO ".$this->ResultTable." (Relevance,ItemId,ResourceId,ItemType,EdPick) ".$SelectSQL;
-
//echo "[<b>".htmlspecialchars($full_sql)."</b>]<br>\n";
-
$this->adodbConnection->Execute($full_sql);
-
//echo $this->adodbConnection->ErrorMsg()."<br>\n";
-
}
-
//Here we need to remove found items which was found by HTML tags matching keywords
-
//$this->adodbConnection->Execute("DELETE FROM ".$this->ResultTable." WHERE ItemId = 13 AND ItemType = 4");
-
}
-
-
function BuildIndexes()
-
{
-
$sql = "ALTER TABLE ".$this->ResultTable." ADD INDEX (Relevance), ";
-
$sql .="ADD INDEX (ItemId), ";
-
$sql .="ADD INDEX (ItemType), ";
-
$sql .=" ADD INDEX sorting (EdPick,Relevance)";
-
//echo $sql;
-
$this->adodbConnection->Execute($sql);
-
}
-
-
function Result_IdList()
-
{
-
/* returns an array contain a resource ID list */
-
$sql = "SELECT DISTINCT(ResourceId) FROM ".$this->ResultTable;
-
$rs = $this->adodbConnection->Execute($sql);
-
$result = array();
-
while($rs && !$rs->EOF)
-
{
-
$result[] = $rs->fields["ResourceId"];
-
$rs->MoveNext();
-
}
-
return $result;
-
}
-
}
-
-
function count_words($string)
-
{
-
// below line added to make contiguous spaces count as one space
-
if(strlen($string))
-
{
-
$string = eregi_replace(" +", " ", $string);
-
return substr_count($string," ")+1;
-
}
-
else
-
return 0;
-
}
-
-
function GetKeywords($phrase)
-
{
-
global $KeywordIgnore;
-
-
if(count($KeywordIgnore)==0)
-
GetIgnoreList();
-
$keywords["normal"]= array();
-
$keywords["required"]= array();
-
$keywords["notallowed"] = array();
-
$keywords["ignored"] = array();
-
if(!strlen($phrase))
-
return $keywords;
-
$w_array = array();
-
$phrase=trim($phrase);
-
//if(count_words($phrase)>1)
-
// $keywords["normal"][] = $phrase;
-
$t_len = strlen($phrase);
-
$ce=0;
-
for ($i=0; $i<$t_len; $i++)
-
{ #search for next special tag
-
switch ($phrase[$i])
-
{
-
case "\"":
-
$exact_match_close = strpos($phrase,"\"", $i+1);
-
if(!$exact_match_close)
-
break;
-
$exact_word=substr($phrase, $i+1, ($exact_match_close-$i)-1);
-
$i=$exact_match_close;
-
if($exact_word)
-
{
-
if(strlen($token)==0)
-
$token="|";
-
$w_array[$ce]=$token.addslashes($exact_word);
-
$token="";
-
$ce++;
-
$exact_word="";
-
}
-
break;
-
-
case "+":
-
if(strlen($exact_word)==0)
-
{
-
$token = "+";
-
}
-
else
-
$exact_word .= "+";
-
break;
-
case "-":
-
if(strlen($exact_word)==0)
-
{
-
$token = "-";
-
}
-
else
-
$exact_word .="-";
-
break;
-
case " ":
-
case ",":
-
if($exact_word)
-
{
-
if(strlen($token)==0)
-
$token="|";
-
if($token=="|")
-
{
-
if($KeywordIgnore[strtolower($exact_word)]==1)
-
{
-
$w_array[$ce]= "=".addslashes($exact_word);
-
$ce++;
-
}
-
else
-
{
-
$w_array[$ce]=$token.addslashes($exact_word);
-
$ce++;
-
}
-
}
-
else
-
{
-
$w_array[$ce]=$token.addslashes($exact_word);
-
$ce++;
-
}
-
$token="";
-
$exact_word="";
-
}
-
break;
-
-
default:
-
$exact_word.=$phrase[$i];
-
}
-
}
-
if($exact_word)
-
{
-
if(strlen($token)==0)
-
$token="|";
-
if($KeywordIgnore[strtolower($exact_word)]==1 && ($token =="|" || $token=="="))
-
{
-
$w_array[$ce]= "=".addslashes($exact_word);
-
$ce++;
-
}
-
else
-
{
-
$w_array[$ce]=$token.addslashes($exact_word);
-
$ce++;
-
}
-
}
-
for ($i=0;$i<count($w_array);$i++)
-
{
-
$keyword = $w_array[$i];
-
switch(substr($keyword,0,1))
-
{
-
case "|":
-
$keywords["normal"][]=substr($keyword,1);
-
break;
-
case "+":
-
$keywords["required"][] = substr($keyword,1);
-
break;
-
case "-":
-
$keywords["notallowed"][] = substr($keyword,1);
-
break;
-
case "=":
-
$keywords["ignored"][] = substr($keyword,1);
-
break;
-
}
-
}
-
return($keywords);
-
}
-
-
function BuildWhereClause($normal,$required,$notallowed)
-
{
-
$return="";
-
-
$return = $required;
-
-
if(strlen($return)>0 && strlen($notallowed)>0)
-
{
-
$return .= " AND ";
-
}
-
$return .= $notallowed;
-
if(strlen($return)>0 && strlen($normal)>0)
-
{
-
$return .= " AND ";
-
}
-
$return .= $normal;
-
return $return;
-
}
-
-
function GetIgnoreList()
-
{
-
global $KeywordIgnore;
-
-
$adodbConnection = &GetADODBConnection();
-
-
$rs = $adodbConnection->Execute("SELECT * FROM ".GetTablePrefix()."IgnoreKeywords");
-
while($rs && !$rs->EOF)
-
{
-
$KeywordIgnore[strtolower($rs->fields["keyword"])]=1;
-
$rs->MoveNext();
-
}
-
// foreach($KeywordIgnore as $word=>$dummy)
-
// echo $word.",";
-
// echo "<br>\n";
-
}
-
-
?>
\ No newline at end of file
Property changes on: trunk/kernel/include/searchitems.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.10
\ No newline at end of property
+1.11
\ No newline at end of property
Index: trunk/kernel/include/category.php
===================================================================
--- trunk/kernel/include/category.php (revision 675)
+++ trunk/kernel/include/category.php (revision 676)
@@ -1,4635 +1,2319 @@
<?php
define('TYPE_CATEGORY', 0);
$DownloadId=0;
RegisterPrefix("clsCategory","cat","kernel/include/category.php");
-
-
class clsCategory extends clsItem
-
{
-
var $Permissions;
-
-
-
function clsCategory($CategoryId=NULL)
-
{
-
global $objSession;
-
-
-
$this->clsItem(TRUE);
- //$this->adodbConnection = &GetADODBConnection();
-
$this->tablename = GetTablePrefix()."Category";
-
$this->type=1;
-
$this->BasePermission ="CATEGORY";
-
$this->id_field = "CategoryId";
-
$this->TagPrefix = "cat";
-
-
$this->debuglevel=0;
-
/* keyword highlighting */
-
$this->OpenTagVar = "Category_Highlight_OpenTag";
-
$this->CloseTagVar = "Category_Highlight_CloseTag";
-
-
if($CategoryId!=NULL)
-
{
-
$this->LoadFromDatabase($CategoryId);
-
$this->Permissions = new clsPermList($CategoryId,$objSession->Get("GroupId"));
-
-
}
-
else
-
{
-
$this->Permissions = new clsPermList();
-
-
}
-
}
-
-
function ClearCacheData()
-
{
-
$env = "':m".$this->Get("CategoryId")."%'";
-
DeleteTagCache("m_itemcount","Category%");
-
DeleteTagCache("m_list_cats","",$env);
-
}
-
-
-
function Delete()
-
{
-
global $CatDeleteList;
-
-
if(!is_array($CatDeleteList))
-
$CatDeleteList = array();
-
if($this->UsingTempTable()==FALSE)
-
{
-
$this->Permissions->Delete_CatPerms($this->Get("CategoryId"));
-
$sql = "DELETE FROM ".GetTablePrefix()."CountCache WHERE CategoryId=".$this->Get("CategoryId");
-
$this->adodbConnection->Execute($sql);
-
$CatDeleteList[] = $this->Get("CategoryId");
-
if($this->Get("CreatedById")>0)
-
$this->SendUserEventMail("CATEGORY.DELETE",$this->Get("CreatedById"));
-
$this->SendAdminEventMail("CATEGORY.DELETE");
-
-
parent::Delete();
-
$this->ClearCacheData();
-
}
-
else
-
{
-
parent::Delete();
-
}
-
}
-
-
-
function Update($UpdatedBy=NULL)
-
{
-
parent::Update($UpdatedBy);
-
if($this->tablename==GetTablePrefix()."Category")
-
$this->ClearCacheData();
-
}
-
-
function Create()
-
{
-
if((int)$this->Get("CreatedOn")==0)
-
$this->Set("CreatedOn",date("U"));
-
parent::Create();
-
if($this->tablename==GetTablePrefix()."Category")
-
$this->ClearCacheData();
-
}
-
-
function SetParentId($value)
-
{
-
//Before we set a parent verify that propsed parent is not our child.
-
//Otherwise it will cause recursion.
-
-
$id = $this->Get("CategoryId");
-
$path = $this->Get("ParentPath");
-
$sql = sprintf("SELECT CategoryId From ".GetTablePrefix()."Category WHERE ParentPath LIKE '$path%' AND CategoryId = %d ORDER BY ParentPath",$value);
-
$rs = $this->adodbConnection->SelectLimit($sql,1,0);
-
if(!$rs->EOF)
-
{
-
return;
-
}
-
$this->Set("ParentId",$value);
-
}
-
-
function Approve()
-
{
-
global $objSession;
-
-
if($this->Get("CreatedById")>0)
-
$this->SendUserEventMail("CATEGORY.APPROVE",$this->Get("CreatedById"));
-
$this->SendAdminEventMail("CATEGORY.APPROVE");
-
$this->Set("Status", 1);
-
$this->Update();
-
}
-
-
function Deny()
-
{
-
global $objSession;
-
-
if($this->Get("CreatedById")>0)
-
$this->SendUserEventMail("CATEGORY.DENY",$this->Get("CreatedById"));
-
$this->SendAdminEventMail("CATEGORY.DENY");
-
-
$this->Set("Status", 0);
-
$this->Update();
-
}
-
-
-
function IsEditorsPick()
-
{
-
return $this->Is("EditorsPick");
-
}
-
-
function SetEditorsPick($value)
-
{
-
$this->Set("EditorsPick", $value);
-
}
-
-
function GetSubCats($limit=NULL, $target_template=NULL, $separator=NULL, $anchor=NULL, $ending=NULL, $class=NULL)
-
{
-
global $m_var_list, $m_var_list_update, $var_list, $var_list_update;
-
-
$sql = "SELECT CategoryId, Name from ".GetTablePrefix()."Category where ParentId=".$this->Get("CategoryId")." AND Status=1 ORDER BY Priority";
-
if(isset($limit))
-
{
-
$rs = $this->adodbConnection->SelectLimit($sql, $limit, 0);
-
}
-
else
-
{
-
$rs = $this->adodbConnection->Execute($sql);
-
}
-
$count=1;
-
-
$class_name = is_null($class)? "catsub" : $class;
-
-
-
while($rs && !$rs->EOF)
-
{
-
-
if(!is_null($target_template))
-
{
-
$var_list_update["t"] = $target_template;
-
}
-
$m_var_list_update["cat"] = $rs->fields["CategoryId"];
-
$m_var_list_update["p"] = "1";
-
$cat_name = $rs->fields['Name'];
-
if (!is_null($anchor))
-
$ret .= "<a class=\"$class_name\" href=\"".GetIndexURL()."?env=" . BuildEnv() . "\">$cat_name</a>";
-
else
-
$ret .= "<span=\"$class_name\">$cat_name</span>";
-
-
$rs->MoveNext();
-
if(!$rs->EOF)
-
{
-
$ret.= is_null($separator)? ", " : $separator;
-
}
-
}
-
if(strlen($ret))
-
$ret .= is_null($ending)? " ..." : $ending;
-
-
unset($var_list_update["t"], $m_var_list_update["cat"], $m_var_list_update["p"]);
-
-
return $ret;
-
}
-
-
function Validate()
-
{
-
global $objSession;
-
-
$dataValid = true;
-
if(!isset($this->m_Type))
-
{
-
$Errors->AddError("error.fieldIsRequired",'Type',"","","clsCategory","Validate");
-
$dataValid = false;
-
}
-
-
if(!isset($this->m_Name))
-
{
-
$Errors->AddError("error.fieldIsRequired",'Name',"","","clsCategory","Validate");
-
$dataValid = false;
-
}
-
-
if(!isset($this->m_Description))
-
{
-
$Errors->AddError("error.fieldIsRequired",'Description',"","","clsCategory","Validate");
-
$dataValid = false;
-
}
-
-
if(!isset($this->m_Visible))
-
{
-
$Errors->AddError("error.fieldIsRequired",'Visible',"","","clsCategory","Validate");
-
$dataValid = false;
-
}
-
-
if(!isset($this->m_CreatedById))
-
{
-
$Errors->AddError("error.fieldIsRequired",'CreatedBy',"","","clsCategory","Validate");
-
$dataValid = false;
-
}
-
return $dataValid;
-
}
-
-
function UpdateCachedPath()
-
{
-
if($this->UsingTempTable()==TRUE)
-
return;
-
$Id = $this->Get("CategoryId");
-
$Id2 = $Id;
-
$NavPath = "";
-
$path = array();
-
do
-
{
-
$rs = $this->adodbConnection->Execute("SELECT ParentId,Name from ".$this->tablename." where CategoryId='$Id2'");
-
$path[] = $Id2;
-
$nav[] = $rs->fields["Name"];
-
if ($rs && !$rs->EOF)
-
{
-
//echo $path;
-
$Id2 = $rs->fields["ParentId"];
-
-
}
-
else
-
$Id2="0"; //to prevent infinite loop
-
} while ($Id2 != "0");
-
$parentpath = "|".implode("|",array_reverse($path))."|";
-
$NavBar = implode(">",array_reverse($nav));
-
//echo "<BR>\n";
-
//$rs = $this->adodbConnection->Execute("update Category set ParentPath='$path' where CategoryId='$Id'");
-
if($this->Get("ParentPath")!=$parentpath || $this->Get("CachedNavbar")!=$NavBar)
-
{
-
$this->Set("ParentPath",$parentpath);
-
$this->Set("CachedNavbar",$NavBar);
-
$this->Update();
-
}
-
}
-
-
function GetCachedNavBar()
-
{
-
$res = $this->Get("CachedNavbar");
-
if(!strlen($res))
-
{
-
$this->UpdateCachedPath();
-
$res = $this->Get("CachedNavbar");
-
}
-
return $res;
-
}
-
function Increment_Count()
-
{
-
$this->Increment("CachedDescendantCatsQty");
-
}
-
-
function Decrement_Count()
-
{
-
$this->Decrement("CachedDescendantCatsQty");
-
$this->Update();
-
}
-
-
function LoadFromDatabase($Id)
-
{
-
global $objSession, $Errors, $objConfig;
-
if($Id==0)
-
return FALSE;
-
-
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 CategoryId = '%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();
-
}
-
else
-
return false;
-
return true;
-
}
-
-
function SetNewItem()
-
{
-
global $objConfig;
-
-
$value = $this->Get("CreatedOn");
-
-
$cutoff = adodb_date("U") - ($objConfig->Get("Category_DaysNew") * 86400);
-
$this->IsNew = FALSE;
-
if($value>$cutoff)
-
$this->IsNew = TRUE;
-
return $this->IsNew;
-
}
-
-
-
function LoadFromResourceId($Id)
-
{
-
global $objSession, $Errors;
-
if(!isset($Id))
-
{
-
$Errors->AddError("error.AppError",NULL,'Internal error: LoadFromDatabase id',"",get_class($this),"LoadFromResourceId");
-
return false;
-
}
-
$sql = sprintf("SELECT * FROM ".$this->tablename." WHERE ResourceId = '%s'",$Id);
-
$result = $this->adodbConnection->Execute($sql);
-
if ($result === false)
-
{
-
$Errors->AddError("error.DatabaseError",NULL,$adodbConnection->ErrorMsg(),"",get_class($this),"LoadFromResourceId");
-
return false;
-
}
-
$data = $result->fields;
-
if(is_array($data))
-
$this->SetFromArray($data);
-
else
-
return false;
-
return true;
-
}
-
-
function GetParentField($fieldname,$skipvalue,$default)
-
{
-
/* this function moves up the category tree until a value for $field other than
-
$skipvalue is returned. if no matches are made, then $default is returned */
-
-
$path = $this->Get("ParentPath");
-
$path = substr($path,1,-1); //strip off the first & last tokens
-
$aPath = explode("|",$path);
-
$aPath = array_slice($aPath,0,-1);
-
$ParentPath = implode("|",$aPath);
-
$sql = "SELECT $fieldname FROM category WHERE $fieldname != '$skipvalue' AND ParentPath LIKE '$ParentPath' ORDER BY ParentPath DESC";
-
$rs = $this->adodbConnection->execute($sql);
-
if($rs && !$rs->EOF)
-
{
-
$ret = $rs->fields[$fieldname];
-
}
-
else
-
$ret = $default;
-
$update = "UPDATE ".$this->SourceTable." SET $fieldname='$ret' WHERE CategoryId=".$this->Get("CategoryId");
-
$this->adodbConnection->execute($update);
-
return $ret;
-
}
-
-
-
-
function GetCustomField($fieldName)
-
{
-
global $objSession, $Errors;
-
-
if(!isset($this->m_CategoryId))
-
{
-
$Errors->AddError("error.appError","Get field is required in order to set custom field values","","",get_class($this),"GetCustomField");
-
return false;
-
}
-
-
return GetCustomFieldValue($this->m_CategoryId,"category",$fieldName);
-
}
-
-
function SetCustomField($fieldName, $value)
-
{
-
global $objSession, $Errors;
-
-
if(!isset($this->m_CategoryId))
-
{
-
$Errors->AddError("error.appError","Set field is required in order to set custom field values","","",get_class($this),"SetCustomField");
-
return false;
-
}
-
return SetCustomFieldValue($this->m_CategoryId,"category",$fieldName,$value);
-
}
-
-
function LoadPermissions($first=1)
-
{
-
/* load all permissions for group on this category */
-
$this->Permissions->CatId=$this->Get("CategoryId");
-
if($this->Permissions->NumItems()==0)
-
{
-
$cats = explode("|",substr($this->Get("ParentPath"),1,-1));
-
if(is_array($cats))
-
{
-
$cats = array_reverse($cats);
-
$cats[] = 0;
-
foreach($cats as $catid)
-
{
-
$this->Permissions->LoadCategory($catid);
-
}
-
}
-
}
-
if($this->Permissions->NumItems()==0)
-
{
-
if($first==1)
-
{
-
$this->Permissions->GroupId=NULL;
-
$this->LoadPermissions(0);
-
}
-
}
-
}
-
-
function PermissionObject()
-
{
-
return $this->Permissions;
-
}
-
-
function PermissionItemObject($PermissionName)
-
{
-
$p = $this->Permissions->GetPermByName($PermissionName);
-
return $p;
-
}
-
-
function HasPermission($PermissionName,$GroupID)
-
{
-
global $objSession;
-
-
$perm = $this->PermissionValue($PermissionName,$GroupID);
-
// echo "Permission $PermissionName for $GroupID is $perm in ".$this->Get("CategoryId")."<br>\n";
-
if(!$perm)
-
{
-
$perm=$objSession->HasSystemPermission("ROOT");
-
}
-
return ($perm==1);
-
}
-
-
function PermissionValue($PermissionName,$GroupID)
-
{
-
//$this->LoadPermissions();
-
$ret=NULL;
-
//echo "Looping though ".count($this->Permissions)." permissions Looking for $PermissionName of $GroupID<br>\n";
-
if($this->Permissions->GroupId != $GroupID)
-
{
-
$this->Permissions->Clear();
-
$this->Permissions->GroupId = $GroupID;
-
}
-
-
$this->Permissions->CatId=$this->Get("CategoryId");
-
$ret = $this->Permissions->GetPermissionValue($PermissionName);
-
if($ret == NULL)
-
{
-
$cats = explode("|",substr($this->Get("ParentPath"),1,-1));
-
-
if(is_array($cats))
-
{
-
$cats = array_reverse($cats);
-
$cats[] = 0;
-
foreach($cats as $catid)
-
{
-
$this->Permissions->LoadCategory($catid);
-
$ret = $this->Permissions->GetPermissionValue($PermissionName);
-
if(is_numeric($ret))
-
break;
-
}
-
}
-
}
-
return $ret;
-
}
-
-
function SetPermission($PermName,$GroupID,$Value,$Type=0)
-
{
-
global $objSession, $objPermissions, $objGroups;
-
-
if($this->Permissions->GroupId != $GroupID)
-
{
-
$this->Permissions->Clear();
-
$this->Permissions->GroupId = $GroupID;
-
}
-
-
if($objSession->HasSystemPermission("GRANT"))
-
{
-
$current = $this->PermissionValue($PermName,$GroupID);
-
-
if($current == NULL)
-
{
-
$this->Permissions->Add_Permission($this->Get("CategoryId"),$GroupId,$PermName,$Value,$Type);
-
}
-
else
-
{
-
$p = $this->Permissions->GetPermByName($PermName);
-
if($p->Inherited==FALSE)
-
{
-
$p->Set("PermissionValue",$Value);
-
$p->Update();
-
}
-
else
-
$this->Permissions->Add_Permission($this->Get("CategoryId"),$GroupId,$PermName,$Value,$Type);
-
}
-
if($PermName == "CATEGORY.VIEW")
-
{
-
$Groups = $objGroups->GetAllGroupList();
-
$ViewList = $this->Permissions->GetGroupPermList($this,"CATEGORY.VIEW",$Groups);
-
$this->SetViewPerms("CATEGORY.VIEW",$ViewList,$Groups);
-
$this->Update();
-
}
-
}
-
}
-
-
function SetViewPerms($PermName,$acl,$allgroups)
-
{
-
global $objPermCache;
-
-
$dacl = array();
-
if(!is_array($allgroups))
-
{
-
global $objGroups;
-
$allgroups = $objGroups->GetAllGroupList();
-
}
-
-
for($i=0;$i<count($allgroups);$i++)
-
{
-
$g = $allgroups[$i];
-
if(!in_array($g,$acl))
-
$dacl[] = $g;
-
}
-
if(count($acl)<count($dacl))
-
{
-
$aval = implode(",",$acl);
-
$dval = "";
-
}
-
else
-
{
-
$dval = implode(",",$dacl);
-
$aval = "";
-
}
-
if(strlen($aval)==0 && strlen($dval)==0)
-
{
-
$aval = implode(",",$allgroups);
-
}
-
$PermId = $this->Permissions->GetPermId($PermName);
-
$pc = $objPermCache->GetPerm($this->Get("CategoryId"),$PermId);
-
if(is_object($pc))
-
{
-
$pc->Set("ACL",$aval);
-
$pc->Set("DACL",$dval);
-
$pc->Update();
-
}
-
else
-
$objPermCache->AddPermCache($this->Get("CategoryId"),$PermId,$aval,$dval);
-
-
//$this->Update();
-
}
-
-
function GetACL($PermName)
-
{
-
global $objPermCache;
-
-
$ret = "";
-
$PermId = $this->Permissions->GetPermId($PermName);
-
$pc = $objPermCache->GetPerm($this->Get("CategoryId"),$PermId);
-
if(is_object($pc))
-
{
-
$ret = $this->Get("ACL");
-
}
-
return $ret;
-
}
-
-
-
function UpdateACL()
-
{
-
global $objGroups, $objPermCache;
-
-
$glist = $objGroups->GetAllGroupList();
-
-
$ViewList = $this->Permissions->GetGroupPermList($this,"CATEGORY.VIEW",$glist);
-
$perms = $this->Permissions->GetAllViewPermGroups($this,$glist);
-
//echo "<PRE>";print_r($perms); echo "</PRE>";
-
foreach($perms as $PermName => $l)
-
{
-
$this->SetViewPerms($PermName,$l,$glist);
-
}
-
}
-
-
function Cat_Link()
-
{
-
global $m_var_list_update;
-
-
$m_var_list_update["cat"] = $this->Get("CategoryId");
-
$ret = GetIndexURL()."?env=".BuildEnv();
-
unset($m_var_list_update["cat"]);
-
return $ret;
-
}
-
-
function Parent_Link()
-
{
-
global $m_var_list_update;
-
-
$m_var_list_update["cat"] = $this->Get("ParentId");
-
$ret = GetIndexURL()."?env=".BuildEnv();
-
unset($m_var_list_update["cat"]);
-
return $ret;
-
}
-
-
function Admin_Parent_Link($page=NULL)
-
{
-
global $m_var_list_update;
-
-
if(!strlen($page))
-
$page = $_SERVER["PHP_SELF"];
-
$m_var_list_update["cat"] = $this->Get("ParentId");
-
$ret = $page."?env=".BuildEnv();
-
unset($m_var_list_update["cat"]);
-
return $ret;
-
}
-
-
function StatusIcon()
-
{
-
global $imagesURL;
-
-
$ret = $imagesURL."/itemicons/";
-
-
switch($this->Get("Status"))
-
{
-
case STATUS_DISABLED:
-
$ret .= "icon16_cat_disabled.gif";
-
break;
-
case STATUS_PENDING:
-
$ret .= "icon16_cat_pending.gif";
-
break;
-
case STATUS_ACTIVE:
-
$img = "icon16_cat.gif";
-
if($this->IsPopItem())
-
$img = "icon16_cat_pop.gif";
-
if($this->IsHotItem())
-
$img = "icon16_cat_hot.gif";
-
if($this->IsNewItem())
-
$img = "icon16_cat_new.gif";
-
if($this->Is("EditorsPick"))
-
$img = "icon16_car_pick.gif";
-
$ret .= $img;
-
break;
-
}
-
return $ret;
-
}
-
-
function SubCatCount()
-
{
-
$ret = $this->Get("CachedDescendantCatsQty");
-
-
$sql = "SELECT COUNT(*) as SubCount FROM ".$this->tablename." WHERE ParentPath LIKE '".$this->Get("ParentPath")."%' AND CategoryId !=".$this->Get("CategoryId");
-
$rs = $this->adodbConnection->Execute($sql);
-
if($rs && !$rs->EOF)
-
{
-
$val = $rs->fields["SubCount"];
-
if($val != $this->Get("CachedDescendantCatsQty"))
-
{
-
$this->Set("CachedDescendantCatsQty",$val);
-
$this->Update();
-
}
-
$ret = $this->Get("CachedDescendantCatsQty");
-
}
-
return $ret;
-
}
-
-
function GetSubCatIds()
-
{
-
$sql = "SELECT CategoryId FROM ".$this->tablename." WHERE ParentPath LIKE '".$this->Get("ParentPath")."%' AND CategoryId !=".$this->Get("CategoryId");
-
$rs = $this->adodbConnection->Execute($sql);
-
$ret = array();
-
while($rs && !$rs->EOF)
-
{
-
$ret[] = $rs->fields["CategoryId"];
-
$rs->MoveNext();
-
}
-
return $ret;
-
}
-
-
function GetParentIds()
-
{
-
$Parents = array();
-
$ParentPath = $this->Get("ParentPath");
-
if(strlen($ParentPath))
-
{
-
$ParentPath = substr($ParentPath,1,-1);
-
$Parents = explode("|",$ParentPath);
-
}
-
return $Parents;
-
}
-
-
function ItemCount($ItemType="")
-
{
-
global $objItemTypes,$objCatList,$objCountCache;
-
-
if(!is_numeric($ItemType))
-
{
-
$TypeId = $objItemTypes->GetItemTypeValue($ItemType);
-
}
-
else
-
$TypeId = (int)$ItemType;
-
-
//$path = $this->Get("ParentPath");
-
//$path = substr($path,1,-1);
-
//$path = str_replace("|",",",$path);
-
$path = implode(",",$this->GetSubCatIds());
-
if(strlen($path))
-
{
-
$path = $this->Get("CategoryId").",".$path;
-
}
-
else
-
$path = $this->Get("CategoryId");
-
-
$res = TableCount(GetTablePrefix()."CategoryItems","CategoryId IN ($path)",FALSE);
-
-
return $res;
-
}
-
-
function ParseObject($element)
-
{
-
global $objConfig, $objCatList, $rootURL, $var_list, $var_list_update, $m_var_list_update, $objItemTypes,$objCountCache;
-
$extra_attribs = ExtraAttributes($element->attributes);
-
-
//print_r($element);
-
if(strtolower($element->name)==$this->TagPrefix)
-
{
-
$field = strtolower( $element->GetAttributeByName('_field') );
-
switch($field)
-
{
-
case "name":
-
case "Name":
-
/*
-
@field:cat.name
-
@description:Category name
-
*/
-
$ret = $this->HighlightField("Name");
-
break;
-
case "description":
-
/*
-
@field:cat.description
-
@description:Category Description
-
*/
-
$ret = ($this->Get("Description"));
-
$ret = $this->HighlightText($ret);
-
break;
-
case "cachednavbar":
-
/*
-
@field:cat.cachednavbar
-
@description: Category cached navbar
-
*/
-
$ret = $this->HighlightField("CachedNavbar");
-
if(!strlen($ret))
-
{
-
$this->UpdateCachedPath();
-
$ret = $this->HighlightField("CachedNavbar");
-
}
-
break;
-
case "image":
-
/*
-
@field:cat.image
-
@description:Return an image associated with the category
-
@attrib:_default:bool:If true, will return the default image if the requested image does not exist
-
@attrib:_name::Return the image with this name
-
@attrib:_thumbnail:bool:If true, return the thumbnail version of the image
-
@attrib:_imagetag:bool:If true, returns a complete image tag. exta html attributes are passed to the image tag
-
*/
-
$default = $element->GetAttributeByName('_primary');
-
$name = $element->GetAttributeByName('_name');
-
if(strlen($name))
-
{
-
$img = $this->GetImageByName($name);
-
}
-
else
-
{
-
if($default)
-
$img = $this->GetDefaultImage();
-
}
-
if($img)
-
{
-
if( $element->GetAttributeByName('_thumbnail') )
-
{
-
$url = $img->parsetag("thumb_url");
-
}
-
else
-
$url = $img->parsetag("image_url");
-
-
}
-
else
-
{
-
$url = $element->GetAttributeByName('_defaulturl');
-
}
-
-
if( $element->GetAttributeByName('_imagetag') )
-
{
-
if(strlen($url))
-
{
-
$ret = "<IMG src=\"$url\" $extra_attribs >";
-
}
-
else
-
$ret = "";
-
}
-
else
-
$ret = $url;
-
break;
-
case "createdby":
-
/*
-
@field:cat.createdby
-
@description:parse a user field of the user that created the category
-
@attrib:_usertag::User field to return (defaults to login ID)
-
*/
-
$field = $element->GetAttributeByName('_usertag');
-
if(!strlen($field))
-
{
-
$field = "user_login";
-
}
-
$u = $objUsers->GetUser($this->Get("CreatedById"));
-
$ret = $u->parsetag($field);
-
break;
-
case "custom":
-
/*
-
@field:cat.custom
-
@description:Returns a custom field
-
@attrib:_customfield::field name to return
-
@attrib:_default::default value
-
*/
-
$field = $element->GetAttributeByName('_customfield');
-
$default = $element->GetAttributeByName('_default');
-
$ret = $this->GetCustomFieldValue($field,$default);
-
break;
-
-
case "catsubcats":
-
/*
-
@field:cat.catsubcats
-
@description:Returns a list of subcats of current category
-
@attrib:_limit:int:Number of categories to return
-
@attrib:_separator::Separator between categories
-
@attrib:_anchor:bool:Make an anchor (only if template is not specified)
-
@attrib:_TargetTemplate:tpl:Target template
-
@attrib:_Ending::Add special text at the end of subcategory list
-
@attrib:_Class::Specify stly sheet class for anchors (if used) or "span" object
-
*/
-
$limit = ((int)$element->attributes["_limit"]>0)? $element->attributes["_limit"] : NULL;
-
$separator = $element->attributes["_separator"];
-
$anchor = (int)($element->attributes["_anchor"])? 1 : NULL;
-
$template = strlen($element->attributes["_TargetTemplate"])? $element->attributes["_TargetTemplate"] : NULL;
-
$ending = strlen($element->attributes["_ending"])? $element->attributes["_ending"] : NULL;
-
$class = strlen($element->attributes["_class"])? $element->attributes["_class"] : NULL;
-
-
$ret = $this->GetSubCats($limit, $template, $separator, $anchor, $ending, $class);
-
-
break;
-
-
case "date":
-
/*
-
@field:cat.date
-
@description:Returns the date/time the category was created
-
@attrib:_tz:bool:Convert the date to the user's local time
-
@attrib:_part::Returns part of the date. The following options are available: month,day,year,time_24hr,time_12hr
-
*/
-
$d = $this->Get("CreatedOn");
-
-
if( $element->GetAttributeByName('_tz') )
-
{
-
$d = GetLocalTime($d,$objSession->Get("tz"));
-
}
-
-
$part = strtolower( $element->GetAttributeByName('_part') );
-
if(strlen($part))
-
{
-
$ret = ExtractDatePart($part,$d);
-
}
-
else
-
{
-
if(!is_numeric($d))
-
{
-
$ret = "";
-
}
-
else
-
$ret = LangDate($d);
-
}
-
break;
-
case "link":
-
/*
-
@field:cat.link
-
@description:Returns a URL setting the category to the current category
-
@attrib:_template:tpl:Template URL should point to
-
@attrib:_mod_template:tpl:Template INSIDE a module to which the category belongs URL should point to
-
*/
-
if ( strlen( $element->GetAttributeByName('_mod_template') ) ){
-
//will prefix the template with module template root path depending on category
-
$ids = $this->GetParentIds();
-
$tpath = GetModuleArray("template");
-
$roots = GetModuleArray("rootcat");
-
-
// get template path of module, by searching for moudle name
-
// in this categories first parent category
-
// and then using found moudle name as a key for module template paths array
-
$path = $tpath[array_search ($ids[0], $roots)];
-
$t = $path . $element->GetAttributeByName('_mod_template');
-
}
-
else
-
$t = $element->GetAttributeByName('_template');
-
-
-
if(strlen($t))
-
{
-
$var_list_update["t"] = $t;
-
}
-
else
-
$var_list_update["t"] = $var_list["t"];
-
$m_var_list_update["cat"] = $this->Get("CategoryId");
-
$ret = GetIndexURL()."?env=" . BuildEnv();
-
unset($m_var_list_update["cat"], $var_list_update["t"]);
-
break;
-
case "adminlink":
-
$m_var_list_update["cat"] = $this->Get("CategoryId");
-
$m_var_list_update["p"] = 1;
-
$ret = $_SERVER["PHP_SELF"]."?env=" . BuildEnv();
-
unset($m_var_list_update["cat"]);
-
unset($m_var_list_update["p"]);
-
return $ret;
-
break;
-
case "customlink":
-
$t = $this->GetCustomFieldValue("indextemplate","");
-
if(strlen($t))
-
{
-
$var_list_update["t"] = $t;
-
}
-
else
-
$var_list_update["t"] = $var_list["t"];
-
$m_var_list_update["cat"] = $this->Get("CategoryId");
-
$ret = GetIndexURL()."?env=" . BuildEnv();
-
unset($m_var_list_update["cat"], $var_list_update["t"]);
-
break;
-
case "link_selector":
-
$m_var_list_update["cat"] = $this->Get("CategoryId");
-
$ret = $_SERVER["PHP_SELF"]."?env=" . BuildEnv();
-
-
// pass through selector
-
if( isset($_REQUEST['Selector']) ) $ret .= '&Selector='.$_REQUEST['Selector'];
-
-
// pass new status
-
if( isset($_REQUEST['new']) ) $ret .= '&new='.$_REQUEST['new'];
-
-
unset($m_var_list_update["cat"]);
-
return $ret;
-
break;
-
case "admin_icon":
-
if( $element->GetAttributeByName('fulltag') )
-
{
-
$ret = "<IMG $extra_attribs SRC=\"".$this->StatusIcon()."\">";
-
}
-
else
-
$ret = $this->StatusIcon();
-
break;
-
case "subcats":
-
/*
-
@field:cat.subcats
-
@description: Loads category's subcategories into a list and renders using the m_list_cats global tag
-
@attrib:_subcattemplate:tpl:Template used to render subcategory list elements
-
@attrib: _columns:int: Numver of columns to display the categories in (defaults to 1)
-
@attrib: _maxlistcount:int: Maximum number of categories to list
-
@attrib: _FirstItemTemplate:tpl: Template used for the first category listed
-
@attrib: _LastItemTemplate:tpl: Template used for the last category listed
-
@attrib: _NoTable:bool: If set to 1, the categories will not be listed in a table. If a table is used, all HTML attributes are passed to the TABLE tag
-
*/
-
$attr = array();
-
$attr["_catid"] = $this->Get("CategoryId");
-
$attr["_itemtemplate"] = $element->GetAttributeByName('_subcattemplate');
-
if( $element->GetAttributeByName('_notable') )
-
$attr["_notable"]=1;
-
$ret = m_list_cats($attr);
-
break;
-
case "subcatcount":
-
/*
-
@field:cat.subcatcount
-
@description:returns number of subcategories
-
*/
-
$GroupOnly = $element->GetAttributeByName('_grouponly') ? 1 : 0;
-
$txt = "<inp:m_itemcount _CatId=\"".$this->Get("CategoryId")."\" _SubCats=\"1\" ";
-
$txt .="_CategoryCount=\"1\" _ItemType=\"1\" _GroupOnly=\"$GroupOnly\" />";
-
$tag = new clsHtmlTag($txt);
-
$ret = $tag->Execute();
-
break;
-
case "itemcount":
-
/*
-
@field:cat.itemcount
-
@description:returns the number of items in the category
-
@attrib:_itemtype::name of item type to count, or all items if not set
-
*/
-
$typestr = $element->GetAttributeByName('_itemtype');
-
if(strlen($typestr))
-
{
-
$type = $objItemTypes->GetTypeByName($typestr);
-
if(is_object($type))
-
{
-
$TypeId = $type->Get("ItemType");
-
$GroupOnly = $element->GetAttributeByName('_grouponly') ? 1 : 0;
-
$txt = "<inp:m_itemcount _CatId=\"".$this->Get("CategoryId")."\" _SubCats=\"1\" ";
-
$txt .=" _ListType=\"category\" _CountCurrent=\"1\" _ItemType=\"$TypeId\" _GroupOnly=\"$GroupOnly\" />";
-
$tag = new clsHtmlTag($txt);
-
$ret = $tag->Execute();
-
}
-
else
-
$ret = "";
-
}
-
else
-
{
-
$ret = (int)$objCountCache->GetCatListTotal($this->Get("CategoryId"));
-
}
-
break;
-
case "totalitems":
-
/*
-
@field:cat.totalitems
-
@description:returns the number of items in the category and all subcategories
-
*/
-
$ret = $this->ItemCount();
-
break;
-
-
case 'modified':
-
$ret = '';
-
$date = $this->Get('Modified');
-
if(!$date) $date = $this->Get('CreatedOn');
-
if( $element->GetAttributeByName('_tz') )
-
{
-
$date = GetLocalTime($date,$objSession->Get("tz"));
-
}
-
-
$part = strtolower($element->GetAttributeByName('_part') );
-
if(strlen($part))
-
{
-
$ret = ExtractDatePart($part,$date);
-
}
-
else
-
{
-
$ret = ($date <= 0) ? '' : LangDate($date);
-
}
-
break;
-
-
case "itemdate":
-
/*
-
@field:cat.itemdate
-
@description:Returns the date the cache count was last updated
-
@attrib:_itemtype:Item name to check
-
@attrib:_tz:bool:Convert the date to the user's local time
-
@attrib:_part::Returns part of the date. The following options are available: month,day,year,time_24hr,time_12hr
-
*/
-
$typestr = $element->GetAttributeByName('_itemtype');
-
$type = $objItemTypes->GetTypeByName($typestr);
-
if(is_object($type))
-
{
-
$TypeId = $type->Get("ItemType");
-
$cc = $objCountCache->GetCountObject(1,$TypeId,$this->get("CategoryId"),0);
-
if(is_object($cc))
-
{
-
$date = $cc->Get("LastUpdate");
-
}
-
else
-
$date = "";
-
-
//$date = $this->GetCacheCountDate($TypeId);
-
if( $element->GetAttributeByName('_tz') )
-
{
-
$date = GetLocalTime($date,$objSession->Get("tz"));
-
}
-
-
$part = strtolower($element->GetAttributeByName('_part') );
-
if(strlen($part))
-
{
-
$ret = ExtractDatePart($part,$date);
-
}
-
else
-
{
-
if($date<=0)
-
{
-
$ret = "";
-
}
-
else
-
$ret = LangDate($date);
-
}
-
}
-
else
-
$ret = "";
-
break;
-
case "new":
-
/*
-
@field:cat.new
-
@description:returns text if category's status is "new"
-
@attrib:_label:lang: Text to return if status is new
-
*/
-
if($this->IsNewItem())
-
{
-
$ret = $element->GetAttributeByName('_label');
-
if(!strlen($ret))
-
$ret = "lu_new";
-
$ret = language($ret);
-
}
-
else
-
$ret = "";
-
break;
-
case "pick":
-
/*
-
@field:cat.pick
-
@description:returns text if article's status is "hot"
-
@attrib:_label:lang: Text to return if status is "hot"
-
*/
-
if($this->Get("EditorsPick")==1)
-
{
-
$ret = $element->GetAttributeByName('_label');
-
if(!strlen($ret))
-
$ret = "lu_pick";
-
$ret = language($ret);
-
}
-
else
-
$ret = "";
-
break;
-
-
case "parsetag":
-
/*
-
@field:cat.parsetag
-
@description:returns a tag output with this categoriy set as a current category
-
@attrib:_tag:: tag name
-
*/
-
-
$tag = new clsHtmlTag();
-
$tag->name = $element->GetAttributeByName('_tag');
-
$tag->attributes = $element->attributes;
-
$tag->attributes["_catid"] = $this->Get("CategoryId");
-
$ret = $tag->Execute();
-
break;
-
-
-
/*
-
@field:cat.relevance
-
@description:Displays the category relevance in search results
-
@attrib:_displaymode:: How the relevance should be displayed<br>
-
<UL>
-
<LI>"Numerical": Show the decimal value
-
<LI>"Bar": Show the HTML representing the relevance. Returns two HTML cells &lg;td&lt; with specified background colors
-
<LI>"Graphical":Show image representing the relevance
-
</UL>
-
@attrib:_onimage::Zero relevance image shown in graphical display mode. Also used as prefix to build other images (i.e. prefix+"_"+percentage+".file_extension"
-
@attrib:_OffBackGroundColor::Off background color of HTML cell in bar display mode
-
@attrib:_OnBackGroundColor::On background color of HTML cell in bar display mode
-
*/
-
-
}
-
if( !isset($ret) ) $ret = parent::ParseObject($element);
-
-
}
-
return $ret;
-
}
-
-
-
function parsetag($tag)
-
{
-
global $objConfig,$objUsers, $m_var_list, $m_var_list_update;
-
if(is_object($tag))
-
{
-
$tagname = $tag->name;
-
}
-
else
-
$tagname = $tag;
-
-
switch($tagname)
-
{
-
case "cat_id":
-
return $this->Get("CategoryId");
-
break;
-
case "cat_parent":
-
return $this->Get("ParentId");
-
break;
-
case "cat_fullpath":
-
return $this->Get("CachedNavbar");
-
break;
-
case "cat_name":
-
return $this->Get("Name");
-
break;
-
case "cat_desc":
-
return $this->Get("Description");
-
break;
-
case "cat_priority":
-
if($this->Get("Priority")!=0)
-
{
-
return (int)$this->Get("Priority");
-
}
-
else
-
return "";
-
break;
-
case "cat_pick":
-
if ($this->Get("EditorsPick"))
-
return "pick";
-
break;
-
case "cat_status":
-
return $this->Get("Status");
-
break;
-
case "cat_Pending":
-
return $this->Get("Name");
-
break;
-
-
case "cat_pop":
-
if($this->IsPopItem())
-
return "pop";
-
break;
-
case "cat_new":
-
if($this->IsNewItem())
-
return "new";
-
break;
-
case "cat_hot":
-
if($this->IsHotItem())
-
return "hot";
-
break;
-
case "cat_metakeywords":
-
return $this->Get("MetaKeywords");
-
break;
-
case "cat_metadesc":
-
return $this->Get("MetaDescription");
-
break;
-
case "cat_createdby":
-
return $objUsers->GetUserName($this->Get("CreatedById"));
-
break;
-
case "cat_resourceid":
-
return $this->Get("ResourceId");
-
break;
-
case "cat_sub_cats":
-
return $this->GetSubCats($objConfig->Get("SubCat_ListCount"));
-
break;
-
case "cat_link":
-
return $this->Cat_Link();
-
break;
-
case "subcat_count":
-
return $this->SubCatCount();
-
break;
-
case "cat_itemcount":
-
return (int)$this->GetTotalItemCount();
-
break;
-
case "cat_link_admin":
-
$m_var_list_update["cat"] = $this->Get("CategoryId");
-
$m_var_list_update["p"] = 1;
-
$ret = $_SERVER["PHP_SELF"]."?env=" . BuildEnv();
-
unset($m_var_list_update["cat"]);
-
unset($m_var_list_update["p"]);
-
return $ret;
-
break;
-
case "cat_admin_icon":
-
$ret = $this->StatusIcon();
-
return $ret;
-
break;
-
case "cat_link_selector":
-
$m_var_list_update["cat"] = $this->Get("CategoryId");
-
$ret = $_SERVER["PHP_SELF"]."?env=" . BuildEnv();
-
unset($m_var_list_update["cat"]);
-
return $ret;
-
break;
-
-
case "cat_link_edit":
-
$m_var_list_update["id"] = $this->Get("CategoryId");
-
$ret = "addcategory.php?env=" . BuildEnv();
-
unset($m_var_list_update["id"]);
-
return $ret;
-
break;
-
-
case "cat_date":
-
return LangDate($this->Get("CreatedOn"));
-
break;
-
case "cat_num_cats":
-
return $this->Get("CachedDescendantCatsQty");
-
break;
-
case "cell_back":
-
if ($m_var_list_update["cat_cell"]=="#cccccc")
-
{
-
$m_var_list_update["cat_cell"]="#ffffff";
-
return "#ffffff";
-
}
-
else
-
{
-
$m_var_list_update["cat_cell"]="#cccccc";
-
return "#cccccc";
-
}
-
break;
-
default:
-
return "Undefined:$tagname";
-
}
-
}
-
-
function ParentNames()
-
{
-
global $objCatList;
-
-
if(strlen($this->Get("CachedNavbar"))==0)
-
{
-
$nav = "";
-
//echo "Rebuilding Navbar..<br>\n";
-
if(strlen($this->Get("ParentPath"))==0)
-
{
-
$this->UpdateCachedPath();
-
}
-
$cats = explode("|",substr($this->Get("ParentPath"),1,-1));
-
-
foreach($cats as $catid)
-
{
-
$cat =& $objCatList->GetCategory($catid);
-
if(is_object($cat))
-
{
-
if(strlen($cat->Get("Name")))
-
$names[] = $cat->Get("Name");
-
-
}
-
}
-
$nav = implode(">", $names);
-
$this->Set("CachedNavbar",$nav);
-
$this->Update();
-
}
-
$res = explode(">",$this->Get("CachedNavbar"));
-
return $res;
-
}
-
-
function UpdateCacheCounts()
-
{
-
global $objItemTypes;
-
-
$CatId = $this->Get("CategoryId");
-
-
if($CatId>0)
-
{
-
//echo "Updating count for ".$this->Get("CachedNavbar")."<br>\n";
-
UpdateCategoryCount(0,$CatId);
-
}
-
}
-
-
/**
-
* @return void
-
* @param int $date
-
* @desc Set Modified field for category & all it's parent categories
-
*/
-
function SetLastUpdate($date)
-
{
-
$parents = $this->Get('ParentPath');
-
$parents = substr($parents, 1, strlen($parents) - 2 );
-
$parents = explode('|', $parents);
-
-
$db =&GetADODBConnection();
-
$sql = 'UPDATE '.$this->tablename.' SET Modified = '.$date.' WHERE CategoryId IN ('.implode(',', $parents).')';
-
$db->Execute($sql);
-
}
-
-
-
}
-
-
class clsCatList extends clsItemList //clsItemCollection
-
{
-
//var $Page; // no need because clsItemList class used instead of clsItemCollection
-
//var $PerPageVar;
-
-
function clsCatList()
-
{
-
global $m_var_list;
-
$this->clsItemCollection();
-
$this->classname="clsCategory";
-
$this->AdminSearchFields = array("Name","Description");
-
$this->Page = (int)$m_var_list["p"];
-
$this->PerPageVar = "Perpage_Category";
-
$this->SourceTable = GetTablePrefix()."Category";
-
$this->BasePermission="CATEGORY";
-
$this->DefaultPerPage = 20;
-
}
-
-
function SaveNewPage()
-
{
-
global $m_var_list;
-
$m_var_list["p"] = $this->Page;
-
}
-
-
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 $ptable ON ($ltable.CategoryId=$ptable.CategoryId) ";
-
$sql .="WHERE ($acl AND PermId=$VIEW AND $ltable.Status=1) ";
-
-
if(strlen($AdditonalWhere)>0)
-
{
-
$sql .= "AND (".$AdditonalWhere.")";
-
}
-
return $sql;
-
}
-
-
function CountCategories($attribs)
-
{
-
global $objSession;
-
-
$cat = $attribs["_catid"];
-
if(!is_numeric($cat))
-
{
-
$cat = $this->CurrentCategoryID();
-
}
-
if((int)$cat>0)
-
$c = $this->GetCategory($cat);
-
-
if($attribs["_subcats"] && $cat>0)
-
{
-
$ParentWhere = "(ParentPath LIKE '".$c->Get("ParentPath")."%' AND ".$this->SourceTable.".CategoryId != $cat)";
-
}
-
if($attribs["_today"])
-
{
-
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
-
$TodayWhere = "(CreatedOn>=$today)";
-
}
-
if($attribs["_grouponly"])
-
{
-
$GroupList = $objSession->Get("GroupList");
-
}
-
else
-
$GroupList = NULL;
-
-
$where = "";
-
if(strlen($ParentWhere))
-
{
-
$where = $ParentWhere;
-
}
-
if(strlen($TodayWhere))
-
{
-
if(strlen($where))
-
$where .=" AND ";
-
$where .= $TodayWhere;
-
}
-
$sql = $this->GetCountSQL("CATEGORY.VIEW",$cat,$GroupList,$where);
-
-
// echo "SQL: ".$sql."<BR>";
-
-
$rs = $this->adodbConnection->Execute($sql);
-
if($rs && !$rs->EOF)
-
{
-
$ret = $rs->fields["CacheVal"];
-
}
-
else
-
$ret = 0;
-
-
return $ret;
-
}
-
-
function CurrentCategoryID()
-
{
-
global $m_var_list;
-
return (int)$m_var_list["cat"];
-
}
-
-
function NumCategories()
-
{
-
return $this->NumItems();
-
}
-
-
function &CurrentCat()
-
{
-
//return $this->GetCategory($this->CurrentCategoryID());
-
return $this->GetItem($this->CurrentCategoryID());
-
}
-
-
function &GetCategory($CatID)
-
{
-
return $this->GetItem($CatID);
-
}
-
-
function GetByResource($ResId)
-
{
-
return $this->GetItemByField("ResourceId",$ResId);
-
}
-
-
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";
-
}
-
-
$FieldVar = "Category_Sortfield";
-
$OrderVar = "Category_Sortorder";
-
-
if(is_object($objSession))
-
{
-
if(strlen($objSession->GetPersistantVariable($FieldVar))>0)
-
{
-
$Orders[] = trim($TableName.$objSession->GetPersistantVariable($FieldVar) . " ".
-
$objSession->GetPersistantVariable($OrderVar));
-
}
-
}
-
-
$FieldVar = "Category_Sortfield2";
-
$OrderVar = "Category_Sortorder2";
-
-
if(is_object($objSession))
-
{
-
if(strlen($objSession->GetPersistantVariable($FieldVar))>0)
-
{
-
$Orders[] = trim($TableName.$objSession->GetPersistantVariable($FieldVar) . " ".
-
$objSession->GetPersistantVariable($OrderVar));
-
}
-
}
-
-
-
if(count($Orders)>0)
-
{
-
$OrderBy = "ORDER BY ".implode(", ",$Orders);
-
}
-
else
-
$OrderBy="";
-
return $OrderBy;
-
}
-
-
-
function LoadCategories($where="", $orderBy = "", $no_limit = true, $fix_method = 'set_first')
-
{
-
// load category list using $where clause
-
// apply ordering specified in $orderBy
-
// show all cats ($no_limit = true) or only from current page ($no_limit = false)
-
// in case if stored page is greather then page count issue page_fixing with
-
// method specified (see "FixInvalidPage" method for details)
-
$PerPage = $this->GetPerPage();
-
-
$this->QueryItemCount = TableCount($this->SourceTable,$where,0);
-
if($no_limit == false)
-
{
-
$this->FixInvalidPage($fix_method);
-
$Start = ($this->Page-1) * $PerPage;
-
$limit = "LIMIT ".$Start.",".$PerPage;
-
}
-
else
-
$limit = NULL;
-
-
return $this->Query_Category($where, $orderBy, $limit);
-
}
-
-
function Query_Category($whereClause="",$orderByClause="",$limit=NULL)
-
{
-
global $m_var_list, $objSession, $Errors, $objPermissions;
-
$GroupID = $objSession->Get("GroupID");
-
$resultset = array();
-
-
$table = $this->SourceTable;
-
$ptable = GetTablePrefix()."PermCache";
-
$CAT_VIEW = $objPermissions->GetPermId("CATEGORY.VIEW");
-
if(!$objSession->HasSystemPermission("ADMIN"))
-
{
-
$sql = "SELECT * FROM $table INNER JOIN $ptable ON ($ptable.CategoryId=$table.CategoryId)";
-
$acl_where = $objSession->GetACLClause();
-
if(strlen($whereClause))
-
{
-
$sql .= " WHERE ($acl_where) AND PermId=$CAT_VIEW AND ".$whereClause;
-
}
-
else
-
$sql .= " WHERE ($acl_where) AND PermId=$CAT_VIEW ";
-
}
-
else
-
{
-
$sql ="SELECT * FROM $table ".($whereClause ? "WHERE $whereClause" : '');
-
}
-
$sql .=" ".$orderByClause;
-
-
if(isset($limit) && strlen(trim($limit)))
-
$sql .= " ".$limit;
-
if($objSession->HasSystemPermission("DEBUG.LIST"))
-
echo $sql;
-
-
return $this->Query_item($sql);
-
}
-
-
function CountPending()
-
{
-
return TableCount($this->SourceTable,"Status=".STATUS_PENDING,0);
-
}
-
-
function GetPageLinkList($dest_template=NULL,$page="",$PagesToList=10,$HideEmpty=TRUE)
-
{
-
global $objConfig, $m_var_list_update, $var_list_update, $var_list;
-
-
if(!strlen($page))
-
$page = GetIndexURL();
-
-
$PerPage = $this->GetPerPage();
-
$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>$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)
-
{
-
$m_var_list_update["p"] = $this->Page-$PagesToList;
-
$prev_url = $page."?env=".BuildEnv();
-
$o .= "<A HREF=\"$prev_url\">&lt;&lt;</A>";
-
}
-
-
-
for($p=$StartPage;$p<=$EndPage;$p++)
-
{
-
if($p!=$this->Page)
-
{
-
$m_var_list_update["p"]=$p;
-
$href = $page."?env=".BuildEnv();
-
$o .= " <A HREF=\"$href\" >$p</A> ";
-
}
-
else
-
{
-
$o .= "$p";
-
}
-
}
-
if($EndPage<$NumPages && $EndPage>0)
-
{
-
$m_var_list_update["p"]=$this->Page+$PagesToList;
-
$next_url = $page."?env=".BuildEnv();
-
$o .= "<A HREF=\"$next_url\"> &gt;&gt;</A>";
-
}
-
unset($m_var_list_update,$var_list_update["t"] );
-
return $o;
-
}
-
-
function GetAdminPageLinkList($url)
-
{
-
global $objConfig, $m_var_list_update, $var_list_update, $var_list;
-
-
$PerPage = $this->GetPerPage();
-
$NumPages = ceil($this->GetNumPages($PerPage));
-
$o = "";
-
-
if($this->Page>1)
-
{
-
$m_var_list_update["p"]=$this->Page-1;
-
$prev_url = $url."?env=".BuildEnv();
-
unset($m_var_list_update["p"]);
-
$o .= "<A HREF=\"$prev_url\" class=\"NAV_URL\"><<</A>";
-
}
-
-
if($this->Page<$NumPages)
-
{
-
$m_var_list_update["p"]=$this->Page+1;
-
$next_url = $url."?env=".BuildEnv();
-
unset($m_var_list_update["p"]);
-
}
-
-
for($p=1;$p<=$NumPages;$p++)
-
{
-
if($p != $this->Page)
-
{
-
$m_var_list_update["p"]=$p;
-
$href = $url."?env=".BuildEnv();
-
unset($m_var_list_update["p"]);
-
$o .= " <A HREF=\"$href\" class=\"NAV_URL\">$p</A> ";
-
}
-
else
-
$o .= "<SPAN class=\"CURRENT_PAGE\">$p</SPAN>";
-
}
-
-
if($this->Page < $NumPages)
-
$o .= "<A HREF=\"$next_url\" class=\"NAV_URL\">>></A>";
-
-
return $o;
-
}
-
-
function Search_Category($orderByClause)
-
{
-
global $objSession, $objConfig, $Errors;
-
-
$PerPage = $this->GetPerPage();
-
$Start = ($this->Page-1) * $PerPage;
-
$objResults = new clsSearchResults("Category","clsCategory");
-
$this->Clear();
-
$this->Categories = $objResults->LoadSearchResults($Start,$PerPage);
-
-
return $this->Categories;
-
}
-
-
-
function GetSubCats($ParentCat)
-
{
-
return $this->Query_Category("ParentId=".$ParentCat,"");
-
}
-
-
function AllSubCats($ParentCat)
-
{
-
$c =& $this->GetCategory($ParentCat);
-
$sql = "SELECT * FROM ".$this->SourceTable." WHERE ParentPath LIKE '".$c->Get("ParentPath")."%'";
-
$rs = $this->adodbConnection->Execute($sql);
-
$subcats = array();
-
while($rs && !$rs->EOF)
-
{
-
if($rs->fields["CategoryId"]!=$ParentCat)
-
{
-
$subcats[] = $rs->fields["CategoryId"];
-
}
-
$rs->MoveNext();
-
}
-
if($ParentCat>0)
-
{
-
if($c->Get("CachedDescendantCatsQty")!=count($subcats))
-
{
-
$c->Set("CachedDescendantCatsQty",count($subcats));
-
}
-
}
-
return $subcats;
-
}
-
-
function cat_navbar($admin=0, $cat, $target_template, $separator = " > ", $LinkLeaf = FALSE,
-
$root = 0,$RootTemplate="",$modcat=0, $ModTemplate="", $LinkRoot = FALSE)
-
{
-
// draw category navigation bar (at top)
-
global $Errors, $var_list_update, $var_list, $m_var_list_update, $m_var_list, $objConfig;
-
-
$selector = isset($_REQUEST['Selector']) ? '&Selector='.$_REQUEST['Selector'] : '';
-
$new = isset($_REQUEST['new']) ? '&new='.$_REQUEST['new'] : '';
-
-
$nav = "";
-
$m_var_list_update["p"]=1;
-
if(strlen($target_template)==0)
-
$target_template = $var_list["t"];
-
-
-
if($cat == 0)
-
{
-
$cat_name = language($objConfig->Get("Root_Name"));
-
if ($LinkRoot)
-
{
-
$var_list_update["t"] = strlen($RootTemplate)? $RootTemplate : $target_template;
-
$nav = "<a class=\"navbar\" href=\"".GetIndexURL()."?env=". BuildEnv().$selector.$new."\">$cat_name</a>"; }
-
else
-
$nav = "<span class=\"NAV_CURRENT_ITEM\">$cat_name</span>";
-
}
-
else
-
{
-
$nav = array();
-
$c =& $this->GetCategory($cat);
-
$nav_unparsed = $c->Get("ParentPath");
-
if(strlen($nav_unparsed)==0)
-
{
-
$c->UpdateCachedPath();
-
$nav_unparsed = $c->Get("ParentPath");
-
}
-
//echo " Before $nav_unparsed ";
-
if($root)
-
{
-
$r =& $this->GetCategory($root);
-
$rpath = $r->Get("ParentPath");
-
$nav_unparsed = substr($nav_unparsed,strlen($rpath),-1);
-
$cat_name = $r->Get("Name");
-
$m_var_list_update["cat"] = $root;
-
if($cat == $catid && !$LinkLeaf)
-
{
-
$nav[] = "<span class=\"NAV_CURRENT_ITEM\" >".$cat_name."</span>"; //href=\"browse.php?env=". BuildEnv() ."\"
-
}
-
else
-
{
-
if ($admin == 1)
-
{
-
$nav[] = "<a class=\"control_link\" href=\"".$_SERVER["PHP_SELF"]."?env=". BuildEnv().$selector.$new."\">".$cat_name."</a>";
-
}
-
else
-
{
-
if(strlen($RootTemplate))
-
{
-
$var_list_update["t"] = $RootTemplate;
-
}
-
else
-
{
-
$var_list_update["t"] = $target_template;
-
}
-
$nav[] = "<a class=\"navbar\" href=\"".GetIndexURL()."?env=". BuildEnv().$selector.$new."\">".$cat_name."</a>";
-
}
-
}
-
}
-
else
-
{
-
$nav_unparsed = substr($nav_unparsed,1,-1);
-
$cat_name = language($objConfig->Get("Root_Name"));
-
$m_var_list_update["cat"] = 0;
-
if($cat == 0)
-
{
-
$nav[] = "<span class=\"NAV_CURRENT_ITEM\" >".$cat_name."</span>"; //href=\"browse.php?env=". BuildEnv() ."\"
-
}
-
else
-
{
-
if ($admin == 1)
-
{
-
$nav[] = "<a class=\"control_link\" href=\"".$_SERVER["PHP_SELF"]."?env=". BuildEnv().$selector.$new."\">".$cat_name."</a>";
-
}
-
else
-
{
-
if(strlen($RootTemplate))
-
{
-
$var_list_update["t"] = $RootTemplate;
-
}
-
else
-
$var_list_update["t"] = $target_template;
-
$nav[] = "<a class=\"navbar\" href=\"".GetIndexURL()."?env=". BuildEnv().$selector.$new."\">".$cat_name."</a>";
-
}
-
}
-
-
}
-
//echo " After $nav_unparsed <br>\n";
-
if(strlen($target_template)==0)
-
$target_template = $var_list["t"];
-
-
$cats = explode("|", $nav_unparsed);
-
foreach($cats as $catid)
-
{
-
if($catid)
-
{
-
$c =& $this->GetCategory($catid);
-
if(is_object($c))
-
{
-
$cat_name = $c->Get("Name");
-
-
$m_var_list_update["cat"] = $catid;
-
if($catid==$modcat && strlen($ModTemplate)>0)
-
{
-
$t = $ModTemplate;
-
}
-
else
-
$t = $target_template;
-
if($cat == $catid && !$LinkLeaf)
-
{
-
$nav[] = "<span class=\"NAV_CURRENT_ITEM\" >".$cat_name."</span>";
-
}
-
else
-
{
-
if ($admin == 1)
-
{
-
$nav[] = "<a class=\"control_link\" href=\"".$_SERVER["PHP_SELF"]."?env=". BuildEnv().$selector.$new."\">".$cat_name."</a>";
-
}
-
else
-
{
-
$var_list_update["t"] = $t;
-
$nav[] = "<a class=\"navbar\" href=\"".GetIndexURL()."?env=". BuildEnv().$selector.$new."\">".$cat_name."</a>";
-
unset($var_list_update["t"]);
-
}
-
}
-
unset($m_var_list_update["cat"]);
-
}
-
}
-
}
-
$nav = implode($separator, $nav);
-
}
-
return $nav;
-
}
-
-
function &Add($ParentId, $Name, $Description, $CreatedOn, $EditorsPick, $Status, $Hot, $New, $Pop,
-
$Priority, $MetaKeywords,$MetaDesc)
-
{
-
global $objSession;
-
-
$UserId = $objSession->Get("UserId");
-
-
$d = new clsCategory(NULL);
-
$d->tablename = $this->SourceTable;
-
if($d->UsingTempTable())
-
$d->Set("CategoryId",-1);
-
$d->idfield = "CategoryId";
-
$d->Set(array("ParentId", "Name", "Description", "CreatedOn", "EditorsPick", "Status", "HotItem",
-
"NewItem","PopItem", "Priority", "MetaKeywords", "MetaDescription", "CreatedById"),
-
array($ParentId, $Name, $Description, $CreatedOn, $EditorsPick, $Status, $Hot, $New,
-
$Pop, $Priority, $MetaKeywords,$MetaDesc, $UserId));
-
-
$d->Create();
-
if($Status==1)
-
{
-
$d->SendUserEventMail("CATEGORY.ADD",$objSession->Get("PortalUserId"));
-
$d->SendAdminEventMail("CATEGORY.ADD");
-
}
-
else
-
{
-
$d->SendUserEventMail("CATEGORY.ADD.PENDING",$objSession->Get("PortalUserId"));
-
$d->SendAdminEventMail("CATEGORY.ADD.PENDING");
-
}
-
$d->UpdateCachedPath();
-
//RunUp($ParentId, "Increment_Count");
-
-
return $d;
-
}
-
-
function &Edit_Category($CategoryId, $Name, $Description, $CreatedOn, $EditorsPick, $Status, $Hot,
-
$NewItem, $Pop, $Priority, $MetaKeywords,$MetaDesc)
-
{
-
$d =& $this->GetCategory($CategoryId);
-
$d->Set(array("Name", "Description", "CreatedOn", "EditorsPick", "Status", "HotItem",
-
"NewItem", "PopItem", "Priority", "MetaKeywords","MetaDescription"),
-
array($Name, $Description, $CreatedOn, $EditorsPick, $Status, $Hot, $NewItem,
-
$Pop, $Priority, $MetaKeywords,$MetaDesc));
-
$d->Update();
-
$d->UpdateCachedPath();
-
return $d;
-
-
}
-
-
function Move_Category($Id, $ParentTo)
-
{
-
global $objCatList;
-
-
$d =& $this->GetCategory($Id);
-
$oldparent = $d->Get("ParentId");
-
$ChildList = $d->GetSubCatIds();
-
-
/*
-
echo "Target Parent Id: $ParentTo <br>\n";
-
echo "<PRE>";print_r($ChildList); echo "</PRE>";
-
echo "Old Parent: $oldparent <br>\n";
-
echo "ID: $Id <br>\n";
-
*/
-
/* sanity checks */
-
-
if(!in_array($ParentTo,$ChildList) && $oldparent != $ParentTo && $oldparent != $Id &&
-
$Id != $ParentTo)
-
{
-
$d->Set("ParentId", $ParentTo);
-
$d->Update();
-
$d->UpdateCachedPath();
-
RunUp($oldparent, "Decrement_Count");
-
RunUp($ParentTo, "Increment_Count");
-
RunDown($ParentTo, "UpdateCachedPath");
-
return TRUE;
-
}
-
else
-
{
-
global $Errors;
-
$Errors->AddAdminUserError("la_error_move_subcategory");
-
return FALSE;
-
}
-
die();
-
}
-
-
function Copy_CategoryTree($Id, $ParentTo)
-
{
-
global $PastedCatIds;
-
-
$new = $this->Copy_Category($Id, $ParentTo);
-
if($new)
-
{
-
$PastedCatIds[$Id] = $new;
-
$sql = "SELECT CategoryId from ".GetTablePrefix()."Category where ParentId=$Id";
-
$result = $this->adodbConnection->Execute($sql);
-
if ($result && !$result->EOF)
-
{
-
while(!$result->EOF)
-
{
-
$this->Copy_CategoryTree($result->fields["CategoryId"], $new);
-
$result->MoveNext();
-
}
-
}
-
}
-
return $new;
-
}
-
-
function Copy_Category($Id, $ParentTo)
-
{
-
global $objGroups;
-
-
-
$src = $this->GetCategory($Id);
-
$Children = $src->GetSubCatIds();
-
if($Id==$ParentTo || in_array($ParentTo,$Children))
-
{
-
/* sanity error here */
-
global $Errors;
-
$Errors->AddAdminUserError("la_error_copy_subcategory");
-
return 0;
-
}
-
$dest = $src;
-
$dest->Set("ParentId", $ParentTo);
-
if ($src->get("ParentId") == $ParentTo)
-
{
-
$OldName = $src->Get("Name");
-
if(substr($OldName,0,5)=="Copy ")
-
{
-
$parts = explode(" ",$OldName,4);
-
if($parts[2]=="of" && is_numeric($parts[1]))
-
{
-
$Name = $parts[3];
-
}
-
else
-
if($parts[1]=="of")
-
{
-
$Name = $parts[2]." ".$parts[3];
-
}
-
else
-
$Name = $OldName;
-
}
-
else
-
$Name = $OldName;
-
//echo "New Name: $Name<br>";
-
$dest->Set("Name", $Name);
-
$Names = CategoryNameCount($ParentTo,$Name);
-
//echo "Names Count: ".count($Names)."<br>";
-
if(count($Names)>0)
-
{
-
$NameCount = count($Names);
-
$found = FALSE;
-
$NewName = "Copy of $Name";
-
-
if(!in_array($NewName,$Names))
-
{
-
//echo "Matched on $NewName in:<br>\n";
-
$found = TRUE;
-
}
-
else
-
{
-
for($x=2;$x<$NameCount+2;$x++)
-
{
-
-
$NewName = "Copy ".$x." of ".$Name;
-
if(!in_array($NewName,$Names))
-
{
-
$found = TRUE;
-
break;
-
}
-
-
}
-
}
-
if(!$found)
-
{
-
$NameCount++;
-
$NewName = "Copy $NameCount of $Name";
-
}
-
//echo "New Name: $NewName<br>";
-
$dest->Set("Name",$NewName);
-
}
-
-
}
-
$dest->UnsetIdField();
-
$dest->Set("CachedDescendantCatsQty",0);
-
$dest->Set("ResourceId",NULL);
-
$dest->Create();
-
$dest->UpdateCachedPath();
-
$p = new clsPermList();
-
$p->Copy_Permissions($src->Get("CategoryId"),$dest->Get("CategoryId"));
-
$glist = $objGroups->GetAllGroupList();
-
$view = $p->GetGroupPermList($dest, "CATEGORY.VIEW", $glist);
-
$dest->SetViewPerms("CATEGORY.VIEW",$view,$glist);
-
RunUp($ParentTo, "Increment_Count");
-
return $dest->Get("CategoryId");
-
}
-
-
function Delete_Category($Id)
-
{
-
global $objSession;
-
-
$d =& $this->GetCategory($Id);
-
-
if(is_object($d))
-
{
-
if($d->Get("CategoryId")==$Id)
-
{
-
$d->SendUserEventMail("CATEGORY.DELETE",$objSession->Get("PortalUserId"));
-
$d->SendAdminEventMail("CATEGORY.DELETE");
-
$p =& $this->GetCategory($d->Get("ParentId"));
-
RunDown($d->Get("CategoryId"), "Delete");
-
RunUp($p->Get("CategoryId"), "Decrement_Count");
-
RunUp($d->Get("CategoryId"),"ClearCacheData");
-
-
}
-
}
-
}
-
-
function PasteFromClipboard($TargetCat)
-
{
-
global $objSession;
-
-
$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;$i<count($item_ids);$i++)
-
{
-
$ItemId = $item_ids[$i];
-
$item = $this->GetItem($item_ids[$i]);
-
if(!$IsCopy)
-
{
-
$this->Move_Category($ItemId, $TargetCat);
-
$clip = str_replace("CUT","COPY",$clip);
-
$objSession->SetVariable("ClipBoard",$clip);
-
}
-
else
-
{
-
$this->Copy_CategoryTree($ItemId,$TargetCat);
-
}
-
}
-
}
-
}
-
-
-
function NumChildren($ParentID)
-
{
-
$cat_filter = "m_cat_filter";
-
global $$cat_filter;
-
-
$filter = $$cat_filter;
-
$adodbConnection = &GetADODBConnection();
-
-
$sql = "SELECT COUNT(Name) as children from ".$this->SourceTable." where ParentId=" . $ParentID . $filter;
-
$result = $adodbConnection->Execute($sql);
-
return $result->fields["children"];
-
}
-
-
function UpdateMissingCacheData()
-
{
-
$rs = $this->adodbConnection->Execute("SELECT * FROM ".$this->SourceTable." WHERE ParentPath IS NULL or ParentPath=''");
-
while($rs && !$rs->EOF)
-
{
-
$c = new clsCategory(NULL);
-
$data = $rs->fields;
-
$c->SetFromArray($data);
-
$c->UpdateCachedPath();
-
$rs->MoveNext();
-
}
-
-
$rs = $this->adodbConnection->Execute("SELECT * FROM ".$this->SourceTable." WHERE CachedNavbar IS NULL or CachedNavBar=''");
-
while($rs && !$rs->EOF)
-
{
-
$c = new clsCategory(NULL);
-
$data = $rs->fields;
-
$c->SetFromArray($data);
-
$c->UpdateCachedPath();
-
$rs->MoveNext();
-
}
-
}
-
-
function CopyFromEditTable($idfield)
-
{
-
global $objGroups, $objSession, $objPermList;
-
-
$objPermList = new clsPermList();
-
$edit_table = $objSession->GetEditTable($this->SourceTable);
-
-
$sql = "SELECT * FROM $edit_table";
-
$rs = $this->adodbConnection->Execute($sql);
-
-
while($rs && !$rs->EOF)
-
{
-
$data = $rs->fields;
-
$c = new $this->classname;
-
$c->SetFromArray($data);
-
$c->Dirty();
-
-
if($c->Get("CategoryId")>0)
-
{
-
$c->Update();
-
}
-
else
-
{
-
$c->UnsetIdField();
-
$c->Create();
-
$sql = "UPDATE ".GetTablePrefix()."Permissions SET CatId=".$c->Get("CategoryId")." WHERE CatId=-1";
-
$this->adodbConnection->Execute($sql);
-
}
-
$c->UpdateCachedPath();
-
$c->UpdateACL();
-
$c->SendUserEventMail("CATEGORY.MODIFY",$objSession->Get("PortalUserId"));
-
$c->SendAdminEventMail("CATEGORY.MODIFY");
-
$c->Related = new clsRelationshipList();
-
if(is_object($c->Related))
-
{
-
$r = $c->Related;
-
$r->CopyFromEditTable($c->Get("ResourceId"));
-
}
-
-
//RunDown($c->Get("CategoryId"),"UpdateCachedPath");
-
//RunDown($c->Get("CategoryId"),"UpdateACL");
-
unset($c);
-
unset($r);
-
$rs->MoveNext();
-
}
-
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table");
-
-
//$this->UpdateMissingCacheData();
-
}
-
-
function PurgeEditTable($idfield)
-
{
-
parent::PurgeEditTable($idfield);
-
$sql = "DELETE FROM ".GetTablePrefix()."Permissions WHERE CatId=-1";
-
$this->adodbConnection->Execute($sql);
-
}
-
-
function GetExclusiveType($CatId)
-
{
-
global $objItemTypes, $objConfig;
-
-
$itemtype = NULL;
-
$c =& $this->GetItem($CatId);
-
$path = $c->Get("ParentPath");
-
foreach($objItemTypes->Items as $Type)
-
{
-
$RootVar = $Type->Get("ItemName")."_Root";
-
$RootId = $objConfig->Get($RootVar);
-
if((int)$RootId)
-
{
-
$rcat = $this->GetItem($RootId);
-
$rpath = $rcat->Get("ParentPath");
-
$p = substr($path,0,strlen($rpath));
-
//echo $rpath." vs. .$p [$path]<br>\n";
-
if($rpath==$p)
-
{
-
$itemtype = $Type;
-
break;
-
}
-
}
-
}
-
return $itemtype;
-
}
-
}
-
-
function RunUp($Id, $function, $Param=NULL)
-
{
-
global $objCatList;
-
-
$d = $objCatList->GetCategory($Id);
-
$ParentId = $d->Get("ParentId");
-
if ($ParentId == 0)
-
{
-
if($Param == NULL)
-
{
-
$d->$function();
-
}
-
else
-
{
-
$d->$function($Param);
-
}
-
}
-
else
-
{
-
RunUp($ParentId, $function, $Param);
-
if($Param == NULL)
-
{
-
$d->$function();
-
}
-
else
-
{
-
$d->$function($Param);
-
}
-
-
}
-
-
}
-
-
function RunDown($Id, $function, $Param=NULL)
-
{
-
global $objCatList;
-
-
$adodbConnection = &GetADODBConnection();
-
$sql = "select CategoryId from ".GetTablePrefix()."Category where ParentId='$Id'";
-
$rs = $adodbConnection->Execute($sql);
-
-
while($rs && !$rs->EOF)
-
{
-
RunDown($rs->fields["CategoryId"], $function, $Param);
-
$rs->MoveNext();
-
}
-
$d = $objCatList->GetCategory($Id);
-
if($Param == NULL)
-
{
-
$d->$function();
-
}
-
else
-
$d->$function($Param);
-
}
-
?>
\ No newline at end of file
Property changes on: trunk/kernel/include/category.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.11
\ No newline at end of property
+1.12
\ No newline at end of property
Index: trunk/kernel/include/itemreview.php
===================================================================
--- trunk/kernel/include/itemreview.php (revision 675)
+++ trunk/kernel/include/itemreview.php (revision 676)
@@ -1,1235 +1,618 @@
<?php
-
-
function ip_exists($ip,$id,$SourceTable)
-
{
-
$count = 0;
-
$sql = "SELECT count(*) as DupCount FROM $SourceTable WHERE IPAddress='$ip' and ItemId=$id";
-
$adodbConnection = &GetADODBConnection();
-
$rs = $adodbConnection->Execute($sql);
-
if($rs)
-
{
-
$count = $rs->fields["DupCount"];
-
}
-
return ($count>0);
-
}
-
-
RegisterPrefix("clsItemReview","review","kernel/include/itemreview.php");
-
-
class clsItemReview extends clsParsedItem
-
{
-
function clsItemReview($ReviewId=NULL,$table="ItemReview")
-
{
-
$this->clsParsedItem();
-
$this->tablename = $table;
-
$this->id_field = "ReviewId";
-
$this->type=-20;
-
$this->NoResourceId=1;
-
$this->TagPrefix = "review";
-
-
if($ReviewId!=NULL)
-
$this->LoadFromDatabase($ReviewId);
-
}
-
-
function Validate()
-
{
-
global $Errors;
-
-
$dataValid = true;
-
if(!isset($this->m_CreatedOn))
-
{
-
$Errors->AddError("error.fieldIsRequired",'CreatedOn',"","",get_class($this),"Validate");
-
$dataValid = false;
-
}
-
-
if(!isset($this->m_ReviewText))
-
{
-
$Errors->AddError("error.fieldIsRequired",'ReviewText',"","",get_class($this),"Validate");
-
$dataValid = false;
-
}
-
-
if(!isset($this->m_Pending))
-
{
-
$Error->AddError("error.fieldIsRequired",'Pending',"","",get_class($this),"Validate");
-
$dataValid = false;
-
}
-
-
if(!isset($this->m_IPAddress))
-
{
-
$Error->AddError("error.fieldIsRequired",'IPAddress',"","",get_class($this),"Validate");
-
$dataValid = false;
-
}
-
-
if(!isset($this->m_ItemId))
-
{
-
$Error->AddError("error.fieldIsRequired",'ItemId',"","",get_class($this),"Validate");
-
$dataValid = false;
-
}
-
-
if(!isset($this->m_CreatedById))
-
{
-
$Error->AddError("error.fieldIsRequired",'CreatedBy',"","",get_class($this),"Validate");
-
$dataValid = false;
-
}
-
-
return $dataValid;
-
}
-
-
function LoadFromDatabase($Id)
-
{
-
global $objSession, $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 ReviewId = '%s'",$Id);
-
if( $GLOBALS['debuglevel'] ) echo $sql."<br>";
-
$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 MoveUp()
-
{
-
$this->Increment("Priority");
-
}
-
-
function MoveDown()
-
{
-
$this->Decrement("Priority");
-
}
-
-
function ParseObject($element)
-
{
-
global $objConfig, $objCatList, $rootURL, $objUsers;
-
-
$extra_attribs = ExtraAttributes($element->attributes);
-
-
if(strtolower($element->name)==$this->TagPrefix)
-
{
-
$field = strtolower($element->attributes["_field"]);
-
switch($field)
-
{
-
case "id":
-
/*
-
@field:review.id
-
@description: review id
-
*/
-
$ret = $this->Get("ReviewId");
-
break;
-
case "item_id":
-
/*
-
@field:review.item_id
-
@description: ID of the item being reviewed
-
*/
-
$ret = $this->Get("ItemId");
-
break;
-
case "text":
-
/*
-
@field:review.text
-
@description:Review text
-
*/
-
if($this->Get("TextFormat")==0 || $element->attribues["_textonly"])
-
{
-
$ret = inp_htmlize($this->Get("ReviewText"));
-
}
-
else
-
{
-
$ret = $this->Get("ReviewText");
-
}
-
break;
-
case "ip":
-
/*
-
@field:review.ip
-
@description:IP address of remote host submitting the review
-
*/
-
$ret = $this->Get("IPAddress");
-
break;
-
case "pending":
-
/*
-
@field:review.pending
-
@description: Returns the review pening status
-
*/
-
$ret = $this->Get("Pending");
-
break;
-
case "item_type":
-
/*
-
@field:review.item_type
-
@description:Returns the name of the reviewed item type
-
*/
-
$type =& $objItemTypes->GetItem($this->Get("ItemType"));
-
if(is_object($type))
-
$ret = $type->Get("ItemName");
-
break;
-
case "date":
-
/*
-
@field:review.date
-
@description:Returns the date/time the review was created
-
@attrib:_tz:bool:Convert the date to the user's local time
-
@attrib:_part::Returns part of the date. The following options are available: month,day,year,time_24hr,time_12hr
-
*/
-
$d = $this->Get("CreatedOn");
-
if($element->attributes["_tz"])
-
{
-
$d = GetLocalTime($d,$objSession->Get("tz"));
-
}
-
-
$part = strtolower($element->attributes["_part"]);
-
if(strlen($part))
-
{
-
$ret = ExtractDatePart($part,$d);
-
}
-
else
-
{
-
if($d<=0)
-
{
-
$ret = "";
-
}
-
else
-
$ret = LangDate($d);
-
}
-
break;
-
case "reviewer":
-
/*
-
@field:revier.reviewer
-
@description:Parse a user tag for the user submitting the review
-
@attrib:_usertag::User tag to parse, defaults to the users login name
-
*/
-
$userfield = $element->attributes["_usertag"];
-
if(!strlen($userfield))
-
{
-
$userfield = "login";
-
}
-
if($this->Get("CreatedById")>0)
-
{
-
$u =& $objUsers->GetItem($this->Get("CreatedById"));
-
$e = new clsHtmlTag();
-
$e->name = $u->TagPrefix;
-
$e->attributes = $element->attributes;
-
$e->attributes["_field"] = $userfield;
-
$ret = $u->ParseObject($e);
-
}
-
else
-
if($userfield=="login")
-
$ret = "root";
-
break;
-
default:
-
$tag = $this->TagPrefix."_".$field;
-
$ret = "Undefined: ".$tag->name;
-
break;
-
}
-
}
-
else
-
{
-
$ret = $element->Execute();
-
}
-
return $ret;
-
}
-
-
function parsetag($tag)
-
{
-
global $objConfig, $objUsers, $objItemTypes;
-
if(is_object($tag))
-
{
-
$tagname = $tag->name;
-
}
-
else
-
$tagname = $tag;
-
switch($tagname)
-
{
-
case "review_id":
-
return $this->Get("ReviewId");
-
break;
-
case "review_item_id":
-
return $this->Get("ItemId");
-
break;
-
case "review_text":
-
return $this->Get("ReviewText");
-
break;
-
case "review_ip_address":
-
return $this->Get("IPAddress");
-
break;
-
case "review_pending":
-
return $this->Get("Pending");
-
break;
-
case "review_item_type":
-
$type =& $objItemTypes->GetItem($this->Get("ItemType"));
-
$res = $type->Get("ItemName");
-
return $res;
-
break;
-
case "review_created_date":
-
return LangDate($this->Get("CreatedOn"));
-
break;
-
case "review_created_time":
-
if($this->Get("CreatedOn")<=0)
-
return "";
-
return adodb_date($objConfig->TimeFormat(), $this->Get("CreatedOn"));
-
break;
-
-
case "review_created_date_month":
-
return adodb_date("m", $this->Get("CreatedOn"));
-
break;
-
case "review_created_date_day":
-
return adodb_date("d", $this->Get("CreatedOn"));
-
break;
-
case "review_created_date_year":
-
return adodb_date("Y", $this->Get("CreatedOn"));
-
break;
-
default:
-
if (substr($tagname, 0, 16) == "review_createdby")
-
{
-
/* parse the created by user */
-
$u = $objUsers->GetUser($this->Get("CreatedById"));
-
$usertag = substr($tag,17);
-
return $u->parsetag($usertag);
-
}
-
else
-
return "Undefined:$tagname";
-
break;
-
}
-
}
-
-
function SendUserEventMail($Suffix,$ToUserId,$LangId=NULL)
-
{
-
global $objItemTypes, $objMessageList;
-
-
$type =& $objItemTypes->GetItem($this->Get("ItemType"));
-
$res = $type->Get("ItemName");
-
$EventName = $res.$Suffix;
-
-
$Event =& $objMessageList->GetEmailEventObject($EventName,0,$LangId);
-
if(is_object($Event))
-
{
-
if($Event->Get("Enabled")=="1")
-
{
-
$Event->Item = $this;
-
return $Event->SendToUser($ToUserId);
-
}
-
}
-
}
-
-
function SendAdminEventMail($EventName,$LangId=NULL)
-
{
-
global $objItemTypes, $objMessageList;
-
-
$type =& $objItemTypes->GetItem($this->Get("ItemType"));
-
$res = $type->Get("ItemName");
-
$EventName = $res; //.$Suffix;
-
-
$Event =& $objMessageList->GetEmailEventObject($EventName,1,$LangId);
-
if(is_object($Event))
-
{
-
if($Event->Get("Enabled")=="1")
-
{
-
$Event->Item = $this;
-
return $Event->SendAdmin($ToUserId);
-
}
-
}
-
}
-
} /*clsIItemReview*/
-
-
class clsItemReviewList extends clsItemCollection
-
{
-
var $itemID;
-
var $Page;
-
var $PerPageVar;
-
-
function clsItemReviewList($id=NULL)
-
{
-
$this->clsItemCollection();
-
$this->classname = "clsItemReview";
-
$this->SourceTable = GetTablePrefix()."ItemReview";
-
$this->Page = 1;
-
$this->PerPageVar = "Perpage_Review";
-
if(isset($id))
-
$this->itemID=$id;
-
$this->AdminSearchFields = array("ReviewText");
-
}
-
-
function ItemCount()
-
{
-
return $this->NumItems();
-
}
-
-
function GetReview($ID)
-
{
-
return $this->GetItem($ID);
-
}
-
-
function GetReviewList($StatusWhere = "Status=1", $OrderBy=NULL)
-
{
-
$this->Clear();
-
$where = "ItemId=".$this->itemID;
-
$sql = "SELECT * FROM ".$this->SourceTable." WHERE ";
-
if(strlen($StatusWhere))
-
$where .= " AND ".$StatusWhere;
-
$sql .= $where;
-
if(strlen($OrderBy))
-
$sql .= " ORDER BY ".$OrderBy;
-
$Limit = $this->GetLimitSQL();
-
if(strlen($Limit))
-
$sql .= " ".$Limit;
-
$this->QueryItemCount=TableCount($this->SourceTable,$where,0);
-
return $this->Query_item($sql);
-
}
-
-
function GetItemReviewCount($TodayOnly = FALSE)
-
{
-
$sql = "SELECT count(*) as ItemCount FROM ".$this->SourceTable." WHERE ItemId=".$this->itemID." AND Status=1";
-
if($TodayOnly)
-
{
-
$today = mktime(0,0,0,date("m"),date("d"),date("Y"));
-
$where .= " AND CreatedOn>=$today";
-
}
-
$rs = $this->adodbConnection->execute($sql);
-
$count=0;
-
if($rs)
-
$count = $rs->fields["ItemCount"];
-
return (int)$count;
-
}
-
-
function ip_exists($ip,$id)
-
{
-
return ip_exists($ip,id,$this->SourceTable);
-
}
-
-
function GetLimitSQL()
-
{
-
global $objConfig;
-
if($this->Page<1)
-
$this->Page=1;
-
$PerPage = $objConfig->Get($this->PerPageVar);
-
if(is_numeric($PerPage))
-
{
-
$Start = ($this->Page-1)*$PerPage;
-
$limit = "LIMIT ".$Start.",".$PerPage;
-
}
-
else
-
$limit = NULL;
-
return $limit;
-
}
-
-
-
function Query_Review($whereClause=NULL,$orderByClause=NULL)
-
{
-
global $Errors;
-
-
$this->Clear();
-
$sql = "SELECT * FROM ".$this->SourceTable." ";
-
-
if(isset($whereClause) && strlen(trim($whereClause))>0)
-
$sql = sprintf("%s WHERE %s",$sql,$whereClause);
-
-
if(isset($orderByClause) && strlen(trim($orderByClause))>0)
-
$sql = sprintf("%s ORDER BY %s",$sql,$orderByClause);
-
-
return $this->Query_Item($sql);
-
}
-
-
function &AddReview($CreatedOn,$ReviewText, $Status, $IPAddress,
-
$Priority, $ItemId,$ItemType,$CreatedById,$TextFormat=0,$Module)
-
{
-
global $objSession;
-
-
$r = new clsItemReview(NULL,$this->SourceTable);
-
-
$ReviewText = str_replace("env=".$objSession->GetSessionKey(), "env=",$ReviewText);
-
//$r->debuglevel = 1;
-
-
$r->Set(array("CreatedOn","ReviewText","Status", "IPAddress",
-
"Priority","ItemId","ItemType","CreatedById","TextFormat","Module"),
-
array($CreatedOn,$ReviewText,$Status, $IPAddress,
-
$Priority, $ItemId,$ItemType,$CreatedById,$TextFormat,$Module));
-
$r->Create();
-
array_push($this->Items,$r);
-
if($Status==1)
-
{
-
$r->SendUserEventMail("REVIEW.ADD",$CreatedById);
-
$r->SendAdminEventMail("REVIEW.ADD");
-
}
-
else
-
{
-
$r->SendUserEventMail("REVIEW.ADD.PENDING",$CreatedById);
-
$r->SendAdminEventMail("REVIEW.ADD.PENDING");
-
}
-
-
return $r;
-
}
-
-
function EditReview($ReviewId,$CreatedOn,$ReviewText, $Status,
-
$IPAddress, $Priority, $ItemId,$ItemType,$CreatedById,$TextFormat,$Module)
-
{
-
global $objSession;
-
-
$r = $this->GetItem($ReviewId);
-
if($CreatedById==0)
-
$CreatedById = $r->Get("CreatedById");
-
$r->Set(array("ReviewId","CreatedOn","ReviewText","Status",
-
"IPAddress", "Priority", "ItemId","ItemType","CreatedById","TextFormat","Module"),
-
array($ReviewId,$CreatedOn,$ReviewText,$Status,
-
$IPAddress, $Priority, $ItemId,$ItemType,$CreatedById,$TextFormat,$Module));
-
$r->Update();
-
//$r->SendUserEventMail("REVIEW.MODIFY",$objSession->Get("PortalUserId"));
-
$r->SendAdminEventMail("REVIEW.MODIFY");
-
return $r;
-
}
-
-
function DeleteReview($ReviewId)
-
{
-
$r = $this->GetItem($ReviewId);
-
$r->Delete();
-
}
-
-
function CopyToItemId($OldId,$NewId)
-
{
-
$this->Clear();
-
$this->Query_Review("ItemId=$OldId","");
-
if($this->NumItems()>0)
-
{
-
foreach($this->Items as $i)
-
{
-
$i->Set("ItemId",$NewId);
-
$i->UnsetIdField();
-
$i->Create();
-
}
-
}
-
}
-
-
function CopyFromEditTable($ResourceId)
-
{
-
global $objSession;
-
//echo "ToLive [Reviews]<br>";
-
$edit_table = $objSession->GetEditTable($this->SourceTable);
-
$idlist = array();
-
$sql = "SELECT * FROM $edit_table";
-
$this->Clear();
-
// get all items in edit-table
-
$rs = $this->adodbConnection->Execute($sql);
-
while($rs && !$rs->EOF)
-
{
-
$data =& $rs->fields;
-
-
$c = $this->AddItemFromArray($data);
-
-
$c->Dirty();
-
if($data["ReviewId"]>0)
-
{
-
$c->Update();
-
}
-
else
-
{
-
$c->UnsetIdField();
-
$c->Create();
-
}
-
$idlist[] = $c->Get("ReviewId");
-
$rs->MoveNext();
-
}
-
//print_pre($idlist);
-
$sql = "DELETE FROM ".$this->SourceTable." WHERE ItemId=$ResourceId ".(count($idlist) > 0 ? "AND ReviewId NOT IN (".implode(",",$idlist).")" : "");
-
//echo "DEL REVIEW SQL: $sql<br>";
-
$this->adodbConnection->Execute($sql);
-
@$this->adodbConnection->Execute("DROP TABLE IF EXISTS ".$edit_table);
-
}
-
-
-
function GetPageLinkList(&$UpdateVar,$dest_template=NULL,$page = NULL,$PagesToList=10,$HideEmpty=TRUE)
-
{
-
global $objConfig, $var_list_update, $var_list;
-
-
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>$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)
-
{
-
$UpdateVar["rp"] = $this->Page-$PagesToList;
-
$prev_url = $page."?env=".BuildEnv();
-
$o .= "<A HREF=\"$prev_url\">&lt;&lt;</A>";
-
}
-
-
-
for($p=$StartPage;$p<=$EndPage;$p++)
-
{
-
if($p!=$this->Page)
-
{
-
$UpdateVar["rp"]=$p;
-
$href = $page."?env=".BuildEnv();
-
$o .= " <A HREF=\"$href\" >$p</A> ";
-
}
-
else
-
{
-
$o .= "$p";
-
}
-
}
-
if($EndPage<$NumPages && $EndPage>0)
-
{
-
$UpdateVar["rp"]=$this->Page+$PagesToList;
-
$next_url = $page."?env=".BuildEnv();
-
$o .= "<A HREF=\"$next_url\"> &gt;&gt;</A>";
-
}
-
unset($UpdateVar,$var_list_update["t"] );
-
return $o;
-
}
-
-
-
} /*clsItemReviewList*/
-
-
?>
\ No newline at end of file
Property changes on: trunk/kernel/include/itemreview.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.10
\ No newline at end of property
+1.11
\ No newline at end of property
Index: trunk/kernel/include/config.php
===================================================================
--- trunk/kernel/include/config.php (revision 675)
+++ trunk/kernel/include/config.php (revision 676)
@@ -1,1024 +1,513 @@
<?php
-
require_once($pathtoroot."kernel/include/adodb/adodb.inc.php");
-
-
class clsConfig
-
{
-
var $config;
-
var $m_dirty_session;
-
var $m_IsDirty;
-
var $m_DirtyFields;
-
var $m_VarType;
-
var $adodbConnection;
-
-
function clsConfig()
-
{
-
$this->m_IsDirty=false;
-
$this->adodbConnection = &GetADODBConnection();
-
$this->config = array();
-
$this->m_IsDefault = array();
-
$this->VarType = array();
-
}
-
-
function SetDebugLevel($value)
-
{
-
}
-
-
-
function Load()
-
{
-
if(is_object($this->adodbConnection))
-
{
-
LogEntry("Config Load Start\n");
-
$sql = "select VariableName, VariableValue from ".GetTablePrefix()."ConfigurationValues";
-
$rs = $this->adodbConnection->Execute($sql);
-
unset($this->config);
-
#this->config=array();
-
$count=0;
-
while($rs && !$rs->EOF)
-
{
-
$this->config[$rs->fields["VariableName"]] = $rs->fields["VariableValue"];
-
$this->m_VarType[$rs->fields["VariableName"]] = 0;
-
// $this->Set($rs->fields["VariableName"],$rs->fields["VariableValue"],0);
-
if( defined('ADODB_EXTENSION') && constant('ADODB_EXTENSION') > 0 )
-
{
-
adodb_movenext($rs);
-
}
-
else
-
$rs->MoveNext();
-
$count++;
-
}
-
LogEntry("Config Load End - $count Variables\n");
-
}
-
unset($this->m_DirtyFields);
-
$this->m_IsDirty=false;
-
}
-
-
function Get($property)
-
{
-
return isset($this->config[$property]) ? $this->config[$property] : '';
-
}
-
-
function Set($property, $value,$type=0,$force=FALSE)
-
{
-
if(is_array($this->config) && strlen($property)>0)
-
{
-
if(array_key_exists($property,$this->config))
-
{
-
$current = $this->config[$property];
-
$changed = ($current != $value);
-
}
-
else
-
$changed = true;
-
}
-
else
-
$changed = false;
-
$this->config[$property]=$value;
-
$this->m_IsDirty = ($this->m_IsDirty or $changed or $force);
-
if($changed || $force)
-
{
-
$this->m_DirtyFields[$property] = $value;
-
}
-
$this->m_VarType[$property] = $type;
-
}
-
-
function Save()
-
{
-
if($this->m_IsDirty==TRUE)
-
{
-
foreach($this->m_DirtyFields as $field=>$value)
-
{
-
if($this->m_VarType[$field]==0)
-
{
-
// $sql = sprintf("UPDATE ".GetTablePrefix()."ConfigurationValues SET VariableValue=%s WHERE VariableName=%s", $this->adodbConnection->qstr($value), $this->adodbConnection->qstr($field));
-
$sql = 'UPDATE '.GetTablePrefix().'ConfigurationValues SET VariableValue="'.addslashes($value).'" WHERE VariableName="'.addslashes($field).'"';
-
// echo $sql."<br>\n";
-
-
$rs = $this->adodbConnection->execute($sql);
-
}
-
}
-
}
-
$this->m_IsDirty=FALSE;
-
unset($this->m_DirtyFields);
-
}
-
-
function TimeFormat()
-
{
-
if($this->Get("ampm_time")=="1")
-
{
-
$format = "g:i:s A";
-
}
-
else
-
$format = "H:i:s";
-
return $format;
-
}
-
-
/* vartype should be either 1 or 2, 1 = perstant data, 2 = session data */
-
function GetDirtySessionValues($VarType)
-
{
-
$result = array();
-
-
if(is_array($this->m_DirtyFields))
-
{
-
foreach($this->m_DirtyFields as $property=>$values)
-
{
-
if($this->m_VarType[$property]==$VarType)
-
$result[$property] = $values;
-
}
-
}
-
return $result;
-
}
-
-
function GetConfigValues($postfix = '')
-
{
-
// return only varibles, that match specified criteria
-
if(!$postfix) return $this->config;
-
$result = Array();
-
$postfix_len = $postfix ? strlen($postfix) : 0;
-
foreach($this->config as $config_var => $var_value)
-
{
-
if( substr($config_var, - $postfix_len) == $postfix )
-
$result[$config_var] = $var_value;
-
}
-
return $result;
-
}
-
}/* clsConfig */
-
-
/*
-
To create the configuration forms in the admin section, populate the table ConfigurationAdmin and
-
ConfigurationValues.
-
-
The tables are fairly straight-forward. The fields of concern in the ConfigurationValues table is
-
ModuleOwner and Section. ModuleOwner should either be the module name or In-Portal for kernel related stuff.
-
(Items which should appear under 'System Configuration').
-
-
The Section field determines the NavMenu section the value is associated with. For example,
-
in-portal:configure_general refers to items listed under System Configuration->General.
-
-
In the ConfigurationAdmin table, ensure the VariableName field is the same as the one in ConfigurationValues
-
(this is the field that creates the natural join.) The prompt field is the text displayed to the left of the form element
-
in the table. This should contain LANGUAGE ELEMENT IDENTIFIERS that are plugged into the Language function.
-
-
The element_type field describes the type of form element is associated with this item. Possible values are:
-
- text : textbox
-
- checkbox : a simple checkbox
-
- select : creates a dropdown box. In this case, the ValueList field should be populated with a comma-separated list
-
in name=value,name=value format (each element is translated to:
-
<option VALUE="[value]">[name]</option>
-
-
To add dynamic data to this list, enclose an SQL statement with <SQL></SQL> tags for example:
-
<SQL>SELECT FieldLabel as OptionName, FieldName as OptionValue FROM <prefix>CustomField WHERE <prefix>.CustomFieldType=3></SQL>
-
-
note the specific field labels OptionName and OptionValue. They are required by the parser.
-
use the <prefix> tag to insert the system's table prefix into the sql statement as appropriate
-
-
*/
-
class clsConfigAdminItem
-
{
-
var $name;
-
var $heading;
-
var $prompt;
-
var $ElementType;
-
var $ValueList; /* comma-separated list in name=value pair format*/
-
var $ValidationRules;
-
var $default_value;
-
var $adodbConnection;
-
var $NextItem=NULL;
-
var $Section;
-
-
function clsConfigAdminItem($config_name=NULL)
-
{
-
$this->adodbConnection = &GetADODBConnection();
-
if($config_name)
-
$this->LoadSetting($config_name);
-
}
-
-
function LoadSetting($config_name)
-
{
-
$sql = "SELECT * FROM ".GetTablePrefix()."ConfigurationAdmin INNER JOIN ".GetTablePrefix()."ConfigurationValues Using(VariableName) WHERE ".GetTablePrefix()."ConfigurationAdmin.VariableName='".$config_name."'";
-
$rs = $this->adodbConnection->Execute($sql);
-
if($rs && !$rs->EOF)
-
{
-
$this->name = $rs->fields["VariableName"];
-
$this->heading = $rs->fields["heading"];
-
$this->prompt = $rs->fields["prompt"];
-
$this->ElementType = $rs->fields["element_type"];
-
$this->ValidationRules=$rs->fields["validation"];
-
$this->default_value = $rs->fields["VariableValue"];
-
$this->ValueList=$rs->fields["ValueList"];
-
$this->Section = $rs->fields["Section"];
-
}
-
}
-
-
function explode_sql($sql)
-
{
-
$s = "";
-
-
$rs = $this->adodbConnection->Execute($sql);
-
-
while ($rs && !$rs->EOF)
-
{
-
if(strlen(trim($rs->fields["OptionName"]))>0 && strlen(trim($rs->fields["OptionValue"]))>0)
-
{
-
if(strlen($s))
-
$s .= ",";
-
$s .= $rs->fields["OptionName"]."="."+".$rs->fields["OptionValue"];
-
}
-
$rs->MoveNext();
-
}
-
return $s;
-
}
-
-
function replace_sql($string)
-
{
-
$string = str_replace("<PREFIX>",GetTablePrefix(),$string);
-
-
$start = strpos($string,"<SQL>");
-
-
while($start)
-
{
-
$end = strpos($string,"</SQL>");
-
if(!$end)
-
{
-
$end = strlen($string);
-
}
-
$len = $end - $start;
-
$sql = substr($string,$start+5,$len-5);
-
-
$sql_val = $this->explode_sql($sql);
-
$s = substr($string,0,$start) . $sql_val . substr($string,$end+5);
-
-
$string = $s;
-
$start = strpos($string,"<SQL>");
-
}
-
return $string;
-
}
-
-
function ItemFormElement($StartFrom=1)
-
{
-
global $objConfig;
-
static $TabIndex;
-
-
if (empty($TabIndex))
-
$TabIndex = $StartFrom;
-
-
$o = "";
-
if($objConfig->Get($this->name)!="")
-
$this->default_value = $objConfig->Get($this->name);
-
$this->default_value=inp_htmlize($this->default_value);
-
switch($this->ElementType)
-
{
-
case "text":
-
$o .= "<INPUT TYPE=\"TEXT\" tabindex=\"".($TabIndex++)."\" NAME=\"".$this->name."\" ";
-
$o .= "VALUE=\"".$this->default_value."\">";
-
break;
-
case "checkbox":
-
$o .= "<INPUT TYPE=\"checkbox\" NAME=\"".$this->name."\" tabindex=\"".($TabIndex++)."\"";
-
if($this->default_value)
-
{
-
$o .= " CHECKED>";
-
}
-
else
-
$o .= ">";
-
-
break;
-
case "password":
-
-
/* To exclude config form from populating with Root (md5) password */
-
if ($this->Section == "in-portal:configure_users")
-
$this->default_value = "";
-
-
$o .= "<INPUT TYPE=\"PASSWORD\" tabindex=\"".($TabIndex++)."\" NAME=\"".$this->name."\" ";
-
$o .= "VALUE=\"".$this->default_value."\">";
-
break;
-
case "textarea":
-
$o .= "<TEXTAREA tabindex=\"".($TabIndex++)."\" ".$this->ValueList." name=\"".$this->name."\">".$this->default_value."</TEXTAREA>";
-
break;
-
case "label":
-
if($this->default_value)
-
{
-
$o .= $this->default_value;
-
}
-
break;
-
case "radio":
-
$radioname = $this->name;
-
-
$ValList = $this->replace_sql($this->ValueList);
-
-
$TabIndex++;
-
$localTabIndex = $TabIndex;
-
$TabIndex++;
-
-
$val = explode(",",$ValList);
-
for($i=0;$i<=count($val);$i++)
-
{
-
if(strlen($val[$i]))
-
{
-
$parts = explode("=",$val[$i]);
-
$s = $parts[1];
-
if(strlen($s)==0)
-
$s="";
-
-
$o .= "<input type=\"radio\" tabindex=\"".($localTabIndex)."\" name=\"".$this->name."\" VALUE=\"".$parts[0]."\"";
-
if($this->default_value==$parts[0])
-
{
-
$o .= " CHECKED>";
-
}
-
else
-
$o .= ">";
-
if(substr($s,0,1)=="+")
-
{
-
$o .= $s;
-
}
-
else
-
$o .= prompt_language($s);
-
}
-
}
-
-
break;
-
case "select":
-
$o .= "<SELECT NAME=\"".$this->name."\" tabindex=\"".($TabIndex++)."\">";
-
$ValList = $this->replace_sql($this->ValueList);
-
$val = explode(",",$ValList);
-
for($i=0;$i<=count($val);$i++)
-
{
-
if(strlen($val[$i]))
-
{
-
$parts = explode("=",$val[$i]);
-
$s = $parts[1];
-
if(strlen($s)==0)
-
$s="";
-
$selected = "";
-
if($this->default_value==$parts[0])
-
$selected = " SELECTED";
-
if(substr($s,0,1)=="+")
-
{
-
$o .= "<OPTION VALUE=\"".$parts[0]."\" $selected>".substr($s,1)."</OPTION>";
-
}
-
else
-
{
-
if(strlen($s))
-
$o .= "<OPTION VALUE=\"".$parts[0]."\" $selected>".admin_language($s)."</OPTION>";
-
}
-
}
-
}
-
$o .= "</SELECT>";
-
}
-
return $o;
-
}
-
-
function GetPrompt()
-
{
-
$ret = prompt_language($this->prompt);
-
return $ret;
-
}
-
}
-
-
class clsConfigAdmin
-
{
-
var $module;
-
var $section;
-
var $Items;
-
-
function clsConfigAdmin($module="",$section="",$Inst=FALSE)
-
{
-
$this->module = $module;
-
$this->section = $section;
-
$this->Items= array();
-
if(strlen($module) && strlen($section))
-
$this->LoadItems(TRUE,$Inst);
-
}
-
-
function Clear()
-
{
-
unset($this->Items);
-
$this->Items = array();
-
}
-
-
function NumItems()
-
{
-
if(is_array($this->Items))
-
{
-
return count($this->Items);
-
}
-
else
-
return 0;
-
}
-
-
function LoadItems($CheckNextItems=TRUE, $inst=FALSE)
-
{
-
$this->Clear();
-
if(!$inst)
-
{
-
$sql = "SELECT * FROM ".GetTablePrefix()."ConfigurationAdmin INNER JOIN ".GetTablePrefix()."ConfigurationValues Using(VariableName)
-
WHERE ModuleOwner='".$this->module."' AND Section='".$this->section."' ORDER BY DisplayOrder ASC";
-
}
-
else
-
{
-
-
$sql = "SELECT * FROM ".GetTablePrefix()."ConfigurationAdmin INNER JOIN ".GetTablePrefix()."ConfigurationValues Using(VariableName)
-
WHERE ModuleOwner='".$this->module."' AND Section='".$this->section."' AND Install=1 ORDER BY DisplayOrder ASC";
-
}
-
if( $GLOBALS['debuglevel'] ) echo $sql."<br>\n";
-
$adodbConnection = &GetADODBConnection();
-
$rs = $adodbConnection->Execute($sql);
-
while($rs && !$rs->EOF)
-
{
-
$data = $rs->fields;
-
if(is_object($i) && $CheckNextItems)
-
{
-
$last = $i->prompt;
-
unset($i);
-
}
-
$i = new clsConfigAdminItem(NULL);
-
$i->name = $data["VariableName"];
-
$i->default_value = $data["VariableValue"];
-
$i->heading = $data["heading"];
-
$i->prompt = $data["prompt"];
-
$i->ElementType = $data["element_type"];
-
$i->ValueList = $data["ValueList"];
-
$i->ValidationRules = isset($data['validaton']) ? $data['validaton'] : '';
-
$i->Section = $data["Section"];
-
-
if(strlen($last)>0)
-
{
-
if($i->prompt==$last)
-
{
-
$this->Items[count($this->Items)-1]->NextItem=$i;
-
}
-
else
-
{
-
$i->NextItem=NULL;
-
array_push($this->Items,$i);
-
}
-
}
-
else
-
{
-
$i->NextItem=NULL;
-
array_push($this->Items,$i);
-
}
-
//unset($i);
-
$rs->MoveNext();
-
}
-
}
-
-
function SaveItems($POSTVARS, $force=FALSE)
-
{
-
global $objConfig;
-
-
foreach($this->Items as $i)
-
{
-
if($i->ElementType != "label")
-
{
-
if($i->ElementType != "checkbox")
-
{
-
$objConfig->Set($i->name,stripslashes($POSTVARS[$i->name]));
-
}
-
else
-
{
-
if($POSTVARS[$i->name]=="on")
-
{
-
$value=1;
-
}
-
else
-
$value = (int)$POSTVARS[$i->name];
-
$objConfig->Set($i->name,stripslashes($value),0,$force);
-
}
-
}
-
}
-
$objConfig->Save();
-
}
-
-
function GetHeadingList()
-
{
-
$res = array();
-
foreach($this->Items as $i)
-
{
-
$res[$i->heading]=1;
-
}
-
reset($res);
-
return array_keys($res);
-
}
-
-
function GetHeadingItems($heading)
-
{
-
$res = array();
-
foreach($this->Items as $i)
-
{
-
if($i->heading==$heading)
-
array_push($res,$i);
-
}
-
return $res;
-
}
-
}
?>
\ No newline at end of file
Property changes on: trunk/kernel/include/config.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.10
\ No newline at end of property
+1.11
\ No newline at end of property

Event Timeline