Index: trunk/kernel/include/itemreview.php =================================================================== diff -u -N -r642 -r667 --- trunk/kernel/include/itemreview.php (.../itemreview.php) (revision 642) +++ trunk/kernel/include/itemreview.php (.../itemreview.php) (revision 667) @@ -1,618 +1,1235 @@ -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*/ - -?> +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