Index: trunk/kernel/include/itemreview.php
===================================================================
diff -u -r667 -r676
--- trunk/kernel/include/itemreview.php (.../itemreview.php) (revision 667)
+++ trunk/kernel/include/itemreview.php (.../itemreview.php) (revision 676)
@@ -1,1235 +1,618 @@
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."
";
-
$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]
";
-
$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
";
-
$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 .= "<<";
-
}
-
-
-
for($p=$StartPage;$p<=$EndPage;$p++)
-
{
-
if($p!=$this->Page)
-
{
-
$UpdateVar["rp"]=$p;
-
$href = $page."?env=".BuildEnv();
-
$o .= " $p ";
-
}
-
else
-
{
-
$o .= "$p";
-
}
-
}
-
if($EndPage<$NumPages && $EndPage>0)
-
{
-
$UpdateVar["rp"]=$this->Page+$PagesToList;
-
$next_url = $page."?env=".BuildEnv();
-
$o .= " >>";
-
}
-
unset($UpdateVar,$var_list_update["t"] );
-
return $o;
-
}
-
-
-
} /*clsItemReviewList*/
-
-
?>
\ No newline at end of file