Index: trunk/kernel/include/item.php =================================================================== diff -u -r389 -r440 --- trunk/kernel/include/item.php (.../item.php) (revision 389) +++ trunk/kernel/include/item.php (.../item.php) (revision 440) @@ -4,977 +4,976 @@ class clsItem extends clsParsedItem { - var $type; - var $Reviews; - var $Related; - var $Images; - var $PrimaryCat; - var $IsNew = FALSE; - var $IsHot = FALSE; - var $IsPop = FALSE; - var $Keywords; - var $OpenTagVar; - var $CloseTagVar; - var $AdminParser; - var $CustomFields; - var $FieldClass; - var $CustomLoaded=0; - var $ReviewSortOrder; - var $ReviewPerPageVar; + var $type; + var $Reviews; + var $Related; + var $Images; + var $PrimaryCat; + var $IsNew = FALSE; + var $IsHot = FALSE; + var $IsPop = FALSE; + var $Keywords; + var $OpenTagVar; + var $CloseTagVar; + var $AdminParser; + var $CustomFields; + var $FieldClass; + var $CustomLoaded=0; + var $ReviewSortOrder; + var $ReviewPerPageVar; - function clsItem($FullItem=FALSE) - { - $this->clsParsedItem(); - if($FullItem==TRUE) - { - $this->Reviews = new clsItemReviewList(); - $this->Related = new clsRelationshipList(); - } - $this->Images = new clsImageList(); - $this->CustomFields = array(); - $this->FieldClass = new clsCustomFieldList(); - } + function clsItem($FullItem=FALSE) + { + $this->clsParsedItem(); + if($FullItem==TRUE) + { + $this->Reviews = new clsItemReviewList(); + $this->Related = new clsRelationshipList(); + } + $this->Images = new clsImageList(); + $this->CustomFields = array(); + $this->FieldClass = new clsCustomFieldList(); + } - function ClearCacheData() - { - } - - /* item reviews */ - function &GetItemReviews($Page=1) - { - $res_id = $this->Get("ResourceId"); - $this->Reviews->itemID=$res_id; - $this->Reviews->PerPageVar = $this->ReviewPerPageVar; - $this->Reviews->Page = $Page; - $this->Reviews->GetReviewList("Status=1",$this->ReviewSortOrder); - return $this->Reviews; - } + function ClearCacheData() + { + } - function ReviewCount($TodayOnly=FALSE) - { + /* item reviews */ + function &GetItemReviews($Page=1) + { + $res_id = $this->Get("ResourceId"); + $this->Reviews->itemID=$res_id; + $this->Reviews->PerPageVar = $this->ReviewPerPageVar; + $this->Reviews->Page = $Page; + $this->Reviews->GetReviewList("Status=1",$this->ReviewSortOrder); + return $this->Reviews; + } - if(is_numeric($this->Get("CachedReviewsQty")) && !$TodayOnly) - return (int)$this->Get("CachedReviewsQty"); + function ReviewCount($TodayOnly=FALSE) + { - $this->Reviews->itemID=$this->Get("ResourceId"); - return (int)$this->Reviews->GetItemReviewCount($TodayOnly); - } - - function ReviewsLoaded() - { - if($this->Reviews->itemID==$this->Get("ResourceId")) - { - return $this->Reviews->ItemCount(); - } - else - return 0; - } + if(is_numeric($this->Get("CachedReviewsQty")) && !$TodayOnly) + return (int)$this->Get("CachedReviewsQty"); - function &AddReview($createdBy,$reviewText,$isPending,$ip=NULL,$ForceIP=0, $Module="") - { - $this->Reviews->itemID=$this->Get("ResourceId"); - if($ip == NULL) - $ip = $_SERVER["REMOTE_ADDR"]; + $this->Reviews->itemID=$this->Get("ResourceId"); + return (int)$this->Reviews->GetItemReviewCount($TodayOnly); + } - $CreatedOn = mktime(0,0,0,adodb_date("m"),adodb_date("d"),adodb_date("Y")); - $Status=1; - if($isPending) - $Status=2; + function ReviewsLoaded() + { + if($this->Reviews->itemID==$this->Get("ResourceId")) + { + return $this->Reviews->ItemCount(); + } + else + return 0; + } - $AutoModule = GetModuleByAction(); // determine module name by action - if( $Module && ($AutoModule != $Module) ) $AutoModule = $Module; - - $r = $this->Reviews->AddReview($CreatedOn,$reviewText,$Status,$ip,0,$this->Get("ResourceId"),$this->type,$createdBy,0,$AutoModule); - $this->Increment("CachedReviewsQty"); - return $r; - } + function &AddReview($createdBy,$reviewText,$isPending,$ip=NULL,$ForceIP=0, $Module="", $CreatedOn = 0) + { + $this->Reviews->itemID=$this->Get("ResourceId"); + if($ip == NULL) + $ip = $_SERVER["REMOTE_ADDR"]; - function ReviewIPExists($ip) - { - return ip_exists($ip,$this->Get("ResourceId"),$this->Reviews->SourceTable); - } + if(!$CreatedOn) + $CreatedOn = mktime(0,0,0,adodb_date("m"),adodb_date("d"),adodb_date("Y")); + $Status = 1; + if($isPending) + $Status = 2; - function DeleteReview($reviewID) - { - $r = $this->Reviews->GetReview($reviewID); - if(is_object($r)) - { - $r->Delete(); - $this->Decrement("CachedReviewsQty"); - } - } + $AutoModule = GetModuleByAction(); // determine module name by action + if( $Module && ($AutoModule != $Module) ) $AutoModule = $Module; - function DeleteReviews() - { - $res_id = $this->Get("ResourceId"); - if($res_id) - { - $sql = "DELETE FROM ".GetTablePrefix()."ItemReview WHERE ResourceId=$res_id"; - $this->adodbConnection->Execute($sql); - unset($this->Reviews); - $this->Reviews = new clsItemReviewList($res_id); - } - } + $r = $this->Reviews->AddReview($CreatedOn,$reviewText,$Status,$ip,0,$this->Get("ResourceId"),$this->type,$createdBy,0,$AutoModule); + $this->Increment("CachedReviewsQty"); + return $r; + } - /* item custom fields */ + function ReviewIPExists($ip) + { + return ip_exists($ip,$this->Get("ResourceId"),$this->Reviews->SourceTable); + } - function LoadCustomFields() - { - if(!$this->CustomLoaded && $this->Get("ResourceId")>0) - { - $this->FieldClass = new clsCustomFieldList(); - $this->FieldClass->Type = $this->type; - $this->FieldClass->LoadFieldsAndValues($this->Get("ResourceId")); - foreach($this->FieldClass->Items as $f) - { - $this->CustomFields[$f->Get("FieldName")] = $f->HasField('Value') ? $f->Get('Value') : ''; - } - $this->CustomLoaded = 1; - } - } + function DeleteReview($reviewID) + { + $r = $this->Reviews->GetReview($reviewID); + if(is_object($r)) + { + $r->Delete(); + $this->Decrement("CachedReviewsQty"); + } + } - function SetCustomField($fieldname,$value) - { - // echo "Setting CF [$fieldname] = [$value]
"; - if(!$this->CustomLoaded) - $this->LoadCustomFields(); - $this->CustomFields[$fieldname] = $value; - } + function DeleteReviews() + { + $res_id = $this->Get("ResourceId"); + if($res_id) + { + $sql = "DELETE FROM ".GetTablePrefix()."ItemReview WHERE ResourceId=$res_id"; + $this->adodbConnection->Execute($sql); + unset($this->Reviews); + $this->Reviews = new clsItemReviewList($res_id); + } + } - function SaveCustomFields() - { - //echo "Saving CFs
"; - if(!(int)$this->Get("ResourceId")) - return TRUE; - - if(!$this->CustomLoaded) - return TRUE; - - $data = new clsCustomDataList(); - $data->LoadResource($this->Get("ResourceId")); - foreach($this->FieldClass->Items as $f) - { - $value = $this->CustomFields[$f->Get("FieldName")]; - $data->SetFieldValue($f->Get("CustomFieldId"),$this->Get("ResourceId"),$value); - } - $data->SaveData(); - unset($data); - } + /* item custom fields */ - function GetCustomFieldValue($fieldname,$default="") - { - if(!$this->CustomLoaded) - $this->LoadCustomFields(); - if(isset($this->CustomFields[$fieldname])) - { - $ret = $this->CustomFields[$fieldname]; - } - else - $ret = $default; - return $ret; - } + function LoadCustomFields() + { + if(!$this->CustomLoaded && $this->Get("ResourceId")>0) + { + $this->FieldClass = new clsCustomFieldList(); + $this->FieldClass->Type = $this->type; + $this->FieldClass->LoadFieldsAndValues($this->Get("ResourceId")); + foreach($this->FieldClass->Items as $f) + { + $this->CustomFields[$f->Get("FieldName")] = $f->HasField('Value') ? $f->Get('Value') : ''; + } + $this->CustomLoaded = 1; + } + } + function SetCustomField($fieldname,$value) + { + // echo "Setting CF [$fieldname] = [$value]
"; + if(!$this->CustomLoaded) + $this->LoadCustomFields(); + $this->CustomFields[$fieldname] = $value; + } - function DeleteCustomData() - { - $cdata = new clsCustomDataList(); - $cdata->DeleteResource($this->Get("ResourceId")); - } + function SaveCustomFields() + { + //echo "Saving CFs
"; + if(!(int)$this->Get("ResourceId")) + return TRUE; - function Delete($RecordOnly=FALSE) - { - global $objFavorites; + if(!$this->CustomLoaded) + return TRUE; - if($RecordOnly==FALSE) - { - $this->DeleteReviews(); - $this->DeleteRelations(); - $this->DeleteCustomData(); - if($this->NoResourceId==0) - { - if($this->UsingTempTable()==FALSE) - { - if(is_object($this->Images)) - $this->Images->DeleteResource($this->Get("ResourceId")); - $objFavorites->DeleteItem($this->Get("ResourceId")); - } - } - } - parent::Delete(); - } + $data = new clsCustomDataList(); + $data->LoadResource($this->Get("ResourceId")); + foreach($this->FieldClass->Items as $f) + { + $value = $this->CustomFields[$f->Get("FieldName")]; + $data->SetFieldValue($f->Get("CustomFieldId"),$this->Get("ResourceId"),$value); + } + $data->SaveData(); + unset($data); + } - /* item relationships */ - function GetRelatedItems() - { - global $objConfig; + function GetCustomFieldValue($fieldname,$default="") + { + if(!$this->CustomLoaded) + $this->LoadCustomFields(); + if(isset($this->CustomFields[$fieldname])) + { + $ret = $this->CustomFields[$fieldname]; + } + else + $ret = $default; + return $ret; + } - $where = "SourceId = ".$this->Get("ResourceId"); - $where .= " OR (TargetId=".$this->Get("ResourceId")." AND Type=1)"; - $orderBy = $objConfig->Get("Relation_Sortfield")." ".$objConfig->Get("Relation_Sortorder"); - $orderBy = trim($orderBy); - $this->Related->Clear(); - $res = $this->Related->LoadRelated($where,$orderBy); - return $res; - } - function &RelationObject() - { - return $this->Related; - } + function DeleteCustomData() + { + $cdata = new clsCustomDataList(); + $cdata->DeleteResource($this->Get("ResourceId")); + } - function DeleteRelations() - { - $res_id = $this->Get("ResourceId"); - if($res_id) - { - $sql = "DELETE FROM ".GetTablePrefix()."Relationship WHERE SourceId=$res_id OR TargetId=$res_id"; - $this->adodbConnection->Execute($sql); - unset($this->Reviews); - $this->Related = new clsRelationshipList($res_id); - } - } + function Delete($RecordOnly=FALSE) + { + global $objFavorites; + if($RecordOnly==FALSE) + { + $this->DeleteReviews(); + $this->DeleteRelations(); + $this->DeleteCustomData(); + if($this->NoResourceId==0) + { + if($this->UsingTempTable()==FALSE) + { + if(is_object($this->Images)) + $this->Images->DeleteResource($this->Get("ResourceId")); + $objFavorites->DeleteItem($this->Get("ResourceId")); + } + } + } + parent::Delete(); + } - /* keyword highlighting for searches */ + /* item relationships */ + function GetRelatedItems() + { + global $objConfig; - function HighlightField($field) - { - global $objConfig; + $where = "SourceId = ".$this->Get("ResourceId"); + $where .= " OR (TargetId=".$this->Get("ResourceId")." AND Type=1)"; + $orderBy = $objConfig->Get("Relation_Sortfield")." ".$objConfig->Get("Relation_Sortorder"); + $orderBy = trim($orderBy); + $this->Related->Clear(); + $res = $this->Related->LoadRelated($where,$orderBy); + return $res; + } - if(/*!strlen($OpenTag) || !strlen($CloseTag) ||*/ !is_array($this->Keywords)) - { - //echo "Missing something
\n"; - return $this->Get($field); - } - - if(strlen($this->OpenTagVar)) - $OpenTag = $objConfig->Get($this->OpenTagVar); - if(strlen($this->CloseTagVar)) - $CloseTag = $objConfig->Get($this->CloseTagVar); + function &RelationObject() + { + return $this->Related; + } - $k = array_merge($this->Keywords["required"],$this->Keywords["normal"]); - if(count($k)) - { - $result = HighlightKeywords($k, $this->Get($field), $OpenTag, $CloseTag); - } - else - { - $result = $this->Get($field); - //echo "No Keywords
\n"; - } - return $result; - } - - function HighlightText($text) - { - global $objConfig; + function DeleteRelations() + { + $res_id = $this->Get("ResourceId"); + if($res_id) + { + $sql = "DELETE FROM ".GetTablePrefix()."Relationship WHERE SourceId=$res_id OR TargetId=$res_id"; + $this->adodbConnection->Execute($sql); + unset($this->Reviews); + $this->Related = new clsRelationshipList($res_id); + } + } - if(strlen($this->OpenTagVar)) - $OpenTag = $objConfig->Get($this->OpenTagVar); - if(strlen($this->CloseTagVar)) - $CloseTag = $objConfig->Get($this->CloseTagVar); - if(!strlen($OpenTag) || !strlen($CloseTag) || !is_array($this->Keywords)) { - return $text; - } - $k = array_merge($this->Keywords["required"],$this->Keywords["normal"]); - if(count($k)) - { - $result = HighlightKeywords($k,$text, $OpenTag, $CloseTag); - } - else - $result = $text; + /* keyword highlighting for searches */ - return $result; - } + function HighlightField($field) + { + global $objConfig; - /* item status functions */ + if(/*!strlen($OpenTag) || !strlen($CloseTag) ||*/ !is_array($this->Keywords)) + { + //echo "Missing something
\n"; + return $this->Get($field); + } - function Is($name) - { - $var = "m_" . $name; - return ( isset($this->$var) && $this->$var ) ? true : false; - } + if(strlen($this->OpenTagVar)) + $OpenTag = $objConfig->Get($this->OpenTagVar); + if(strlen($this->CloseTagVar)) + $CloseTag = $objConfig->Get($this->CloseTagVar); - function IsHotItem() - { - switch($this->Get("HotItem")) - { - case ALWAYS: - return TRUE; - break; - case NEVER: - return FALSE; - break; - case AUTO: - return $this->IsHot; - break; - } - } + $k = array_merge($this->Keywords["required"],$this->Keywords["normal"]); + if(count($k)) + { + $result = HighlightKeywords($k, $this->Get($field), $OpenTag, $CloseTag); + } + else + { + $result = $this->Get($field); + //echo "No Keywords
\n"; + } + return $result; + } - function SetHotItem() - { - $this->IsHot = FALSE; - } + function HighlightText($text) + { + global $objConfig; - function IsNewItem() - { - switch($this->Get("NewItem")) - { - case ALWAYS: - return TRUE; - break; - case NEVER: - return FALSE; - break; - case AUTO: - return $this->IsNew; - break; - } - } + if(strlen($this->OpenTagVar)) + $OpenTag = $objConfig->Get($this->OpenTagVar); + if(strlen($this->CloseTagVar)) + $CloseTag = $objConfig->Get($this->CloseTagVar); - function SetNewItem() - { - $this->IsNew = FALSE; - } + if(!strlen($OpenTag) || !strlen($CloseTag) || !is_array($this->Keywords)) { + return $text; + } + $k = array_merge($this->Keywords["required"],$this->Keywords["normal"]); + if(count($k)) + { + $result = HighlightKeywords($k,$text, $OpenTag, $CloseTag); + } + else + $result = $text; - function IsPopItem() - { - switch($this->Get("PopItem")) - { - case ALWAYS: - return TRUE; - break; - case NEVER: - return FALSE; - break; - case AUTO: - return $this->IsPop; - break; - } - } + return $result; + } - function SetPopItem() - { - $this->IsPop = FALSE; - } + /* item status functions */ - function SetFromArray($data, $dirty = false) - { - parent::SetFromArray($data, $dirty); - if(is_array($data)) - { - if(array_key_exists("NewItem",$data)) - { - $this->SetNewItem(); - } - if(array_key_exists("HotItem",$data)) - { - $this->SetHotItem(); - } - if(array_key_exists("PopItem",$data)) - { - $this->SetPopItem(); - } - } - } + function Is($name) + { + $var = "m_" . $name; + return ( isset($this->$var) && $this->$var ) ? true : false; + } - function Validate() - { - /* skeleton*/ - return true; - } + function IsHotItem() + { + switch($this->Get("HotItem")) + { + case ALWAYS: + return TRUE; + break; + case NEVER: + return FALSE; + break; + case AUTO: + return $this->IsHot; + break; + } + } - function LoadFromDatabase($Id, $IdField = null) // custom IdField by Alex) - { - /* skeleton */ - parent::LoadFromDatabase($Id, $IdField); - } + function SetHotItem() + { + $this->IsHot = FALSE; + } + function IsNewItem() + { + switch($this->Get("NewItem")) + { + case ALWAYS: + return TRUE; + break; + case NEVER: + return FALSE; + break; + case AUTO: + return $this->IsNew; + break; + } + } + function SetNewItem() + { + $this->IsNew = FALSE; + } - //Changes priority - function MoveDown() - { - $this->Decrement("Priority"); - } + function IsPopItem() + { + switch($this->Get("PopItem")) + { + case ALWAYS: + return TRUE; + break; + case NEVER: + return FALSE; + break; + case AUTO: + return $this->IsPop; + break; + } + } - function MoveUp() - { - $this->Increment("Priority"); - } + function SetPopItem() + { + $this->IsPop = FALSE; + } - function CheckPermission($permissionName) - { - //Check permission and if needs approval set approval - global $objSession,$objCatList; + function SetFromArray($data, $dirty = false) + { + parent::SetFromArray($data, $dirty); + if(is_array($data)) + { + if(array_key_exists("NewItem",$data)) + { + $this->SetNewItem(); + } + if(array_key_exists("HotItem",$data)) + { + $this->SetHotItem(); + } + if(array_key_exists("PopItem",$data)) + { + $this->SetPopItem(); + } + } + } - $perm = $this->BasePermission; - if(strlen($perm)>0) - $perm .= "."; - $perm .= $permissionName; + function Validate() + { + /* skeleton*/ + return true; + } - //get an instance of the forum category - $cat =& $objCatList->GetCategory($this->Get("CategoryId")); - if(!is_object($cat)) - { - return FALSE; - } - else - { - return ($cat->HasPermission($perm,$objSession->Get("GroupId"))); - } - } + function LoadFromDatabase($Id, $IdField = null) // custom IdField by Alex) + { + /* skeleton */ + parent::LoadFromDatabase($Id, $IdField); + } - function SubmitVote($voteRating, $voteNotes) - { - global $Errors; - global $REMOTE_ADDR; - if($this->rating_ip_exists($REMOTE_ADDR)) - { -// $Errors->AddError("error.already_voted","","","",get_class($this),"SubmitVote"); - return false; - } - $vote = new clsItemRating(NULL); - $vote->Set("ItemId",$this->UniqueId()); - $vote->Set("RatingValue",$voteRating); - if(!$vote->Create()) - return false; - $NumVotes = (int)$this->Get("CachedVotesQty"); - $CurrentRating = (int)$this->Get("CachedRating"); + //Changes priority + function MoveDown() + { + $this->Decrement("Priority"); + } - $Rating = (($NumVotes * $CurrentRating) + $voteRating)/($NumVotes+1); - $this->Set("CachedRating",$Rating); - $this->Update(); - $this->Increment("CachedVotesQty"); - } + function MoveUp() + { + $this->Increment("Priority"); + } - function rating_ip_exists($ip) - { - $count = 0; - $id = $this->Get("ResourceId"); - $sql = "SELECT count(*) as DupCount FROM ItemRating WHERE IPAddress='$ip' and ItemId=$id"; - $adodbConnection = GetADODBConnection(); - $rs = $adodbConnection->Execute($sql); - if($rs) - { - $count = $rs->fields["DupCount"]; - } - return ($count>0); - //return FALSE; - } + function CheckPermission($permissionName) + { + //Check permission and if needs approval set approval + global $objSession,$objCatList; - function PurgeRatings() - { - global $objConfig; + $perm = $this->BasePermission; + if(strlen($perm)>0) + $perm .= "."; + $perm .= $permissionName; - $expired=time()-86400*$objConfig->Get("Timeout_Rating"); - $query="DELETE FROM ItemRating WHERE CreatedOn<$expired"; - $this->adodbConnection->Execute($query); - } + //get an instance of the forum category + $cat =& $objCatList->GetCategory($this->Get("CategoryId")); + if(!is_object($cat)) + { + return FALSE; + } + else + { + return ($cat->HasPermission($perm,$objSession->Get("GroupId"))); + } + } - function GetThumbnailImage() - { - if($this->Images->NumItems()==0) - $this->Images->GetResourceImages($this->Get("ResourceId")); - return $this->Images->GetResourceThumbnail($this->Get("ResourceId")); - } + function SubmitVote($voteRating, $voteNotes) + { + global $Errors; + global $REMOTE_ADDR; - function GetImage($number) - { - return $this->Images->GetImageByResource($this->Get("ResourceId"),$number); - } + if($this->rating_ip_exists($REMOTE_ADDR)) + { + // $Errors->AddError("error.already_voted","","","",get_class($this),"SubmitVote"); + return false; + } + $vote = new clsItemRating(NULL); + $vote->Set("ItemId",$this->UniqueId()); + $vote->Set("RatingValue",$voteRating); + if(!$vote->Create()) + return false; - function GetImageByName($name) - { - if(!is_object($this->Images)) - $this->Images = new clsImageList(); - return $this->Images->GetImageByName($this->Get("ResourceId"),$name); - } + $NumVotes = (int)$this->Get("CachedVotesQty"); + $CurrentRating = (int)$this->Get("CachedRating"); - function &GetDefaultImage() - { - return $this->Images->GetDefaultImage($this->Get("ResourceId")); - } + $Rating = (($NumVotes * $CurrentRating) + $voteRating)/($NumVotes+1); + $this->Set("CachedRating",$Rating); + $this->Update(); + $this->Increment("CachedVotesQty"); + } - function CreatePendingCopy() - { - $OrgId = $this->IdField(); - $this->Dirty(); - $this->Set("OrgId",$OrgId); - $this->UnsetIdField(); - $this->Set("ResourceId",0); - $this->Set("Status",-2); - $this->Create(); - } - - function AddFavorite($PortalUserId=NULL) - { - global $objSession, $objFavorites; + function rating_ip_exists($ip) + { + $count = 0; + $id = $this->Get("ResourceId"); + $sql = "SELECT count(*) as DupCount FROM ItemRating WHERE IPAddress='$ip' and ItemId=$id"; + $adodbConnection = GetADODBConnection(); + $rs = $adodbConnection->Execute($sql); + if($rs) + { + $count = $rs->fields["DupCount"]; + } + return ($count>0); + //return FALSE; + } - $res = FALSE; - if($objSession->HasCatPermission("FAVORITES")) - { - if(!$PortalUserId) - $PortalUserId = $objSession->Get("PortalUserId"); - if($PortalUserId==$objSession->Get("PortalUserId") || $objSession->HasSystemPermission("ADMIN")) - { - $objFavorites->AddFavorite($PortalUserId,$this->Get("ResourceId"), $this->type); - $res = TRUE; - } - } - return $res; - } + function PurgeRatings() + { + global $objConfig; - function DeleteFavorite($PortalUserId=NULL) - { - global $objSession, $objFavorites; + $expired=time()-86400*$objConfig->Get("Timeout_Rating"); + $query="DELETE FROM ItemRating WHERE CreatedOn<$expired"; + $this->adodbConnection->Execute($query); + } - $res = FALSE; + function GetThumbnailImage() + { + if($this->Images->NumItems()==0) + $this->Images->GetResourceImages($this->Get("ResourceId")); + return $this->Images->GetResourceThumbnail($this->Get("ResourceId")); + } - if($objSession->HasCatPermission("FAVORITES")) - { - if(!$PortalUserId) - $PortalUserId = $objSession->Get("PortalUserId"); - //echo $PortalUserId." ".$objSession->Get("PortalUserId"); - if($PortalUserId==$objSession->Get("PortalUserId") || $objSession->HasSystemPermission("ADMIN")) - { - $objFavorites->DeleteFavorite($PortalUserId,$this->Get("ResourceId")); - $res = TRUE; - } - } - return $res; - } + function GetImage($number) + { + return $this->Images->GetImageByResource($this->Get("ResourceId"),$number); + } - function IsFavorite($PortalUserId=NULL) - { - global $objSession, $objFavorites; + function GetImageByName($name) + { + if(!is_object($this->Images)) + $this->Images = new clsImageList(); + return $this->Images->GetImageByName($this->Get("ResourceId"),$name); + } - $res = FALSE; - - - if($objSession->HasCatPermission("FAVORITES")) - { - if(!$PortalUserId) - $PortalUserId = $objSession->Get("PortalUserId"); - - if($PortalUserId==$objSession->Get("PortalUserId") || $objSession->HasSystemPermission("ADMIN")) - { - $i = $objFavorites->GetFavoriteObject($PortalUserId,$this->Get("ResourceId")); - - if(is_object($i)) - { - $res = TRUE; - } - else - $res = FALSE; - } - } - - return $res; - } - - function CheckBanned() - { - global $objBanList; - - $objBanList->LoadItemRules($this->type); - $found = FALSE; - $MatchedRule = 0; - foreach($objBanList->Items as $b) - { - $field = $b->Get("ItemField"); - if($this->FieldExists($field)) - { - $ThisValue = strtolower($this->Get($field)); - $TestValue = strtolower($b->Get("ItemValue")); - switch($b->Get("ItemVerb")) - { - case 0: /* any */ - $found = TRUE; - break; - case 1: /* is */ - if($ThisValue==$TestValue) - $found = TRUE; - break; - case 2: /* is not */ - if($ThisValue != $TestValue) - $found = TRUE; - break; - case 3: /* contains */ - if(strstr($ThisValue,$TestValue)) - $found = TRUE; - break; - case 4: /* not contains */ - if(!strstr($ThisValue,$TestValue)) - $found = TRUE; - break; - case 5: /* Greater Than */ - if($TestValue > $ThisValue) - $found = TRUE; - break; - case 6: /* Less Than */ - if($TestValue < $ThisValue) - $found = TRUE; - break; - case 7: /* exists */ - if(strlen($ThisValue)>0) - $found = TRUE; - break; - case 8: /* unique */ - if($this->ValueExists($field,$ThisValue)) - $found = TRUE; - break; - } - } - if($found) - { - if($b->Get("RuleType")==0) - { - $MatchedRule = $b->Get("RuleId"); - } - else - { - $MatchedRule = 0; - } - break; - } - } - return $MatchedRule; - } + function &GetDefaultImage() + { + return $this->Images->GetDefaultImage($this->Get("ResourceId")); + } + + function CreatePendingCopy() + { + $OrgId = $this->IdField(); + $this->Dirty(); + $this->Set("OrgId",$OrgId); + $this->UnsetIdField(); + $this->Set("ResourceId",0); + $this->Set("Status",-2); + $this->Create(); + } + + function AddFavorite($PortalUserId=NULL) + { + global $objSession, $objFavorites; + + $res = FALSE; + if($objSession->HasCatPermission("FAVORITES")) + { + if(!$PortalUserId) + $PortalUserId = $objSession->Get("PortalUserId"); + if($PortalUserId==$objSession->Get("PortalUserId") || $objSession->HasSystemPermission("ADMIN")) + { + $objFavorites->AddFavorite($PortalUserId,$this->Get("ResourceId"), $this->type); + $res = TRUE; + } + } + return $res; + } + + function DeleteFavorite($PortalUserId=NULL) + { + global $objSession, $objFavorites; + + $res = FALSE; + + if($objSession->HasCatPermission("FAVORITES")) + { + if(!$PortalUserId) + $PortalUserId = $objSession->Get("PortalUserId"); + //echo $PortalUserId." ".$objSession->Get("PortalUserId"); + if($PortalUserId==$objSession->Get("PortalUserId") || $objSession->HasSystemPermission("ADMIN")) + { + $objFavorites->DeleteFavorite($PortalUserId,$this->Get("ResourceId")); + $res = TRUE; + } + } + return $res; + } + + function IsFavorite($PortalUserId=NULL) + { + global $objSession, $objFavorites; + + $res = FALSE; + + + if($objSession->HasCatPermission("FAVORITES")) + { + if(!$PortalUserId) + $PortalUserId = $objSession->Get("PortalUserId"); + + if($PortalUserId==$objSession->Get("PortalUserId") || $objSession->HasSystemPermission("ADMIN")) + { + $i = $objFavorites->GetFavoriteObject($PortalUserId,$this->Get("ResourceId")); + + if(is_object($i)) + { + $res = TRUE; + } + else + $res = FALSE; + } + } + + return $res; + } + + function CheckBanned() + { + global $objBanList; + + $objBanList->LoadItemRules($this->type); + $found = FALSE; + $MatchedRule = 0; + foreach($objBanList->Items as $b) + { + $field = $b->Get("ItemField"); + if($this->FieldExists($field)) + { + $ThisValue = strtolower($this->Get($field)); + $TestValue = strtolower($b->Get("ItemValue")); + switch($b->Get("ItemVerb")) + { + case 0: /* any */ + $found = TRUE; + break; + case 1: /* is */ + if($ThisValue==$TestValue) + $found = TRUE; + break; + case 2: /* is not */ + if($ThisValue != $TestValue) + $found = TRUE; + break; + case 3: /* contains */ + if(strstr($ThisValue,$TestValue)) + $found = TRUE; + break; + case 4: /* not contains */ + if(!strstr($ThisValue,$TestValue)) + $found = TRUE; + break; + case 5: /* Greater Than */ + if($TestValue > $ThisValue) + $found = TRUE; + break; + case 6: /* Less Than */ + if($TestValue < $ThisValue) + $found = TRUE; + break; + case 7: /* exists */ + if(strlen($ThisValue)>0) + $found = TRUE; + break; + case 8: /* unique */ + if($this->ValueExists($field,$ThisValue)) + $found = TRUE; + break; + } + } + if($found) + { + if($b->Get("RuleType")==0) + { + $MatchedRule = $b->Get("RuleId"); + } + else + { + $MatchedRule = 0; + } + break; + } + } + return $MatchedRule; + } } /* clsItem */ -class clsCatItem extends clsItem +class clsCatItem extends clsItem { function clsCatItem($FullItem=FALSE) { $this->clsItem($FullItem); } - - function Delete($RecordOnly=FALSE) - { - global $objFavorites; - parent::Delete($RecordOnly); - if($RecordOnly==FALSE) - { - $this->RemoveFromAllCategories(); - } - } - /* category membership functions */ + function Delete($RecordOnly=FALSE) + { + global $objFavorites; - function AssignPrimaryCategory($SourceTable) - { - $catid = 0; - $sql = "SELECT * FROM $SourceTable WHERE ItemResourceId=".$this->Get("ResourceId")." LIMIT 1"; - $rs = $this->adodbConnection->Execute($sql); - if($rs && !$rs->EOF) - { - $catid = $rs->fields["CategoryId"]; - $this->SetPrimaryCategory($catid,$SourceTable); - } - return $catid; - } + parent::Delete($RecordOnly); + if($RecordOnly==FALSE) + { + $this->RemoveFromAllCategories(); + } + } + /* category membership functions */ - function GetPrimaryCategory($SourceTable = "") - { - if(is_numeric($this->PrimaryCat)) - return $this->PrimaryCat; + function AssignPrimaryCategory($SourceTable) + { + $catid = 0; + $sql = "SELECT * FROM $SourceTable WHERE ItemResourceId=".$this->Get("ResourceId")." LIMIT 1"; + $rs = $this->adodbConnection->Execute($sql); + if($rs && !$rs->EOF) + { + $catid = $rs->fields["CategoryId"]; + $this->SetPrimaryCategory($catid,$SourceTable); + } + return $catid; + } - $this->PrimaryCat=""; - if( strlen($SourceTable) == 0 ) $SourceTable = GetTablePrefix()."CategoryItems"; - $res_id = $this->HasField('ResourceId') ? $this->Get('ResourceId') : 0; - $sql = "SELECT * FROM $SourceTable WHERE ItemResourceId=".$res_id." AND PrimaryCat=1"; - $rs = $this->adodbConnection->Execute($sql); - if($rs && !$rs->EOF) - { - $this->PrimaryCat=$rs->fields["CategoryId"]; - return $this->PrimaryCat; - } - else - { - $this->AssignPrimaryCategory($SourceTable); - return $this->PrimaryCat; - } - } + function GetPrimaryCategory($SourceTable = "") + { + if(is_numeric($this->PrimaryCat)) + return $this->PrimaryCat; - function SetPrimaryCategory($CategoryId,$SourceTable = "") - { - if(strlen($SourceTable)==0) - $SourceTable = GetTablePrefix()."CategoryItems"; - - $rs = $this->adodbConnection->Execute('SELECT * FROM '.$SourceTable.' WHERE CategoryId='.$CategoryId.' AND ItemResourceId='.$this->Get("ResourceId")); - $this->adodbConnection->Execute("UPDATE $SourceTable SET PrimaryCat=0 WHERE ItemResourceId=".$this->Get("ResourceId")); - $this->adodbConnection->Execute("UPDATE $SourceTable SET PrimaryCat=1 WHERE CategoryId=$CategoryId AND ItemResourceId=".$this->Get("ResourceId")); - - $this->PrimaryCat=$CategoryId; - } - - function CategoryMemberCount($SourceTable="") - { - if(strlen($SourceTable)==0) - $SourceTable = GetTablePrefix()."CategoryItems"; + $this->PrimaryCat=""; + if( strlen($SourceTable) == 0 ) $SourceTable = GetTablePrefix()."CategoryItems"; + $res_id = $this->HasField('ResourceId') ? $this->Get('ResourceId') : 0; + $sql = "SELECT * FROM $SourceTable WHERE ItemResourceId=".$res_id." AND PrimaryCat=1"; + $rs = $this->adodbConnection->Execute($sql); + if($rs && !$rs->EOF) + { + $this->PrimaryCat=$rs->fields["CategoryId"]; + return $this->PrimaryCat; + } + else + { + $this->AssignPrimaryCategory($SourceTable); + return $this->PrimaryCat; + } + } - $sql = "SELECT count(*) as CatCount FROM $SourceTable WHERE ItemResourceId=".$this->Get("ResourceId"); - if($this->debuglevel) - echo $sql."
\n"; - - $rs = $this->adodbConnection->Execute($sql); - $count = 0; - if($rs && !$rs->EOF) - $count = $rs->fields["CatCount"]; - return $count; - } + function SetPrimaryCategory($CategoryId,$SourceTable = "") + { + if(strlen($SourceTable)==0) + $SourceTable = GetTablePrefix()."CategoryItems"; - function CategoryMemberList($SourceTable="") - { - $cats = array(); - if(strlen($SourceTable)==0) - $SourceTable = GetTablePrefix()."CategoryItems"; + $rs = $this->adodbConnection->Execute('SELECT * FROM '.$SourceTable.' WHERE CategoryId='.$CategoryId.' AND ItemResourceId='.$this->Get("ResourceId")); + $this->adodbConnection->Execute("UPDATE $SourceTable SET PrimaryCat=0 WHERE ItemResourceId=".$this->Get("ResourceId")); + $this->adodbConnection->Execute("UPDATE $SourceTable SET PrimaryCat=1 WHERE CategoryId=$CategoryId AND ItemResourceId=".$this->Get("ResourceId")); - $sql = "SELECT * FROM $SourceTable WHERE ItemResourceId=".$this->Get("ResourceId"); - - if($this->debuglevel) - echo $sql."
\n"; - - $rs = $this->adodbConnection->Execute($sql); - while($rs && !$rs->EOF) - { - $cats[] = $rs->fields["CategoryId"]; - $rs->MoveNext(); - } - $catlist = implode(",",$cats); - return $catlist; - } + $this->PrimaryCat=$CategoryId; + } - function AddToCategory($CatId,$SourceTable="",$PrimaryValue=NULL) - { - global $objSession, $objCatList; + function CategoryMemberCount($SourceTable="") + { + if(strlen($SourceTable)==0) + $SourceTable = GetTablePrefix()."CategoryItems"; - if(!$SourceTable) - $SourceTable = GetTablePrefix()."CategoryItems"; + $sql = "SELECT count(*) as CatCount FROM $SourceTable WHERE ItemResourceId=".$this->Get("ResourceId"); + if($this->debuglevel) + echo $sql."
\n"; - if($this->type>0) - { - $Primary = 0; - if(is_numeric($PrimaryValue)) - { - $Primary = $PrimaryValue; - if($Primary==1) - $this->PrimaryCat = $CatId; - } - else - { - if(!is_numeric($this->GetPrimaryCategory())) - { - $Primary =1; - $this->PrimaryCat = $CatId; - } - } + $rs = $this->adodbConnection->Execute($sql); + $count = 0; + if($rs && !$rs->EOF) + $count = $rs->fields["CatCount"]; + return $count; + } - // check if not exists - - $db =& $this->adodbConnection; - $sql = sprintf('SELECT * FROM %s WHERE CategoryId = %s AND ItemResourceId = %s', $SourceTable, $CatId, $this->Get("ResourceId")); - $rs = $db->Execute($sql); + function CategoryMemberList($SourceTable="") + { + $cats = array(); + if(strlen($SourceTable)==0) + $SourceTable = GetTablePrefix()."CategoryItems"; - if (is_object($rs)) { - if($rs->RecordCount() == 0 ) - { - $sql = "INSERT INTO $SourceTable (CategoryId,ItemResourceId, PrimaryCat) VALUES ('$CatId','".$this->Get("ResourceId")."',$Primary)"; - if($this->debuglevel) - echo $sql."
\n"; - $this->adodbConnection->Execute($sql); - } - } - - $c = $objCatList->GetCategory($CatId); - } - } + $sql = "SELECT * FROM $SourceTable WHERE ItemResourceId=".$this->Get("ResourceId"); - function RemoveFromCategory($CatId,$SourceTable="",$Force=0) - { - global $objSession, $objCatList; + if($this->debuglevel) + echo $sql."
\n"; - if(strlen($SourceTable)==0) - $SourceTable = GetTablePrefix()."CategoryItems"; + $rs = $this->adodbConnection->Execute($sql); + while($rs && !$rs->EOF) + { + $cats[] = $rs->fields["CategoryId"]; + $rs->MoveNext(); + } + $catlist = implode(",",$cats); + return $catlist; + } - if($this->type>0) - { - $primary = $this->GetPrimaryCategory(); - if(($primary==$CatId && $this->CategoryMemberCount($SourceTable)>1) || ($primary != $CatId) || $Force) - { - $sql = "DELETE FROM $SourceTable WHERE CategoryId=$CatId AND ItemResourceId=".$this->Get("ResourceId"); - if($objSession->HasSystemPermission("DEBUG.LIST")) - echo $sql."
\n"; + function AddToCategory($CatId,$SourceTable="",$PrimaryValue=NULL) + { + global $objSession, $objCatList; - $this->adodbConnection->Execute($sql); - $c = $objCatList->GetCategory($CatId); - $c->ClearCacheData(); - } - } - } + if(!$SourceTable) + $SourceTable = GetTablePrefix()."CategoryItems"; - function MoveToCategory($OldCatId,$NewCatId,$SourceTable="") - { - if(strlen($SourceTable)==0) - $SourceTable = GetTablePrefix()."CategoryItems"; + if($this->type>0) + { + $Primary = 0; + if(is_numeric($PrimaryValue)) + { + $Primary = $PrimaryValue; + if($Primary==1) + $this->PrimaryCat = $CatId; + } + else + { + if(!is_numeric($this->GetPrimaryCategory())) + { + $Primary =1; + $this->PrimaryCat = $CatId; + } + } - $sql = "UPDATE $SourceTable SET CategoryId=$NewCatId WHERE CategoryId=$OldCatId AND ItemResourceId=".$this->Get("ResourceId"); - if($this->debuglevel) - echo $sql."
\n"; - - $this->adodbConnection->Execute($sql); - } + // check if not exists - function DeleteCategoryItems($CatId,$SourceTable = "") - { - if(strlen($SourceTable)==0) - $SourceTable = GetTablePrefix()."CategoryItems"; + $db =& $this->adodbConnection; + $sql = sprintf('SELECT * FROM %s WHERE CategoryId = %s AND ItemResourceId = %s', $SourceTable, $CatId, $this->Get("ResourceId")); + $rs = $db->Execute($sql); - $CatCount = $this->CategoryMemberCount($SourceTable); - if($CatCount>1) - { - $this->RemoveFromCategory($CatId,$SourceTable); - $this->ClearCacheData(); - } - else - { - $this->Delete(); - $sql = "DELETE FROM $SourceTable WHERE CategoryId=$CatId AND ItemResourceId=".$this->Get("ResourceId"); - if($this->debuglevel) - echo $sql."
\n"; + if (is_object($rs)) { + if($rs->RecordCount() == 0 ) + { + $sql = "INSERT INTO $SourceTable (CategoryId,ItemResourceId, PrimaryCat) VALUES ('$CatId','".$this->Get("ResourceId")."',$Primary)"; + if($this->debuglevel) + echo $sql."
\n"; + $this->adodbConnection->Execute($sql); + } + } - $this->adodbConnection->Execute($sql); - } - } - function RemoveFromAllCategories($SourceTable = "") - { - if(strlen($SourceTable)==0) - $SourceTable = GetTablePrefix()."CategoryItems"; + $c = $objCatList->GetCategory($CatId); + } + } - if($this->type>0) - { - $sql = "SELECT * FROM $SourceTable WHERE ResourceId=".$this->Get("ResourceId"); - $rs = $this->adodbConnection->Execute($sql); - while ($rs && !$rs->EOF) - { - $CategoryId = $rs->fields["CategoryId"]; - $rs->MoveNext(); - } - $sql = "DELETE FROM $SourceTable WHERE ResourceId=".$this->Get("ResourceId"); - if($this->debuglevel) - echo $sql."
\n"; - - $this->adodbConnection->Execute($sql); - } - } - - function CopyToNewResource($TargetCat = NULL,$NameField="Name") - { - global $objSession; + function RemoveFromCategory($CatId,$SourceTable="",$Force=0) + { + global $objSession, $objCatList; - $CatList = $this->CategoryMemberList(); - - $Cats = explode(",",$CatList); - //echo "Target: $TargetCat
"; - $OldId = $this->Get("ResourceId"); - $this->UnsetIdField(); - $this->Dirty(); - if(!is_numeric($this->Get("OrgId"))) - $this->UnsetField("OrgId"); - $this->UnsetField("ResourceId"); - if(is_numeric($TargetCat) && strlen($NameField)) - { - $OldName = $this->Get($NameField); - 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; - $Names = CategoryItemNameCount($TargetCat,$this->tablename,$NameField,$Name); - if(count($Names)>0) - { - $NameCount = count($Names); - $found = FALSE; - $NewName = "Copy of $Name"; - - if(!in_array("Copy of $Name",$Names)) - { - $found = TRUE; - } - else - { - for($x=2;$x<$NameCount+2;$x++) - { + if(strlen($SourceTable)==0) + $SourceTable = GetTablePrefix()."CategoryItems"; - $NewName = "Copy ".$x." of ".$Name; - if(!in_array($NewName,$Names)) - { - $found = TRUE; - break; - } - - } - } - if(!$found) - { - $NameCount++; - $NewName = "Copy $NameCount of $Name"; - } - $this->Set($NameField,$NewName); - } - } - $this->Create(); - // copy relationships - $NewId = $this->Get("ResourceId"); - $reldata = new clsRelationshipList($TargetCat,$this->IdField()); - $reldata->CopyToResource($OldId,$NewId); - - // copy reviews - $rdata = new clsItemReviewList(); - $rdata->CopyToItemId($OldId,$NewId); - unset($rdata); - - // copy custom fields - $cdata = new clsCustomDataList(); - $cdata->CopyResource($OldId,$NewId); - unset($cdata); - - // copy images - if(is_object($this->Images)) - $this->Images->CopyResource($OldId,$NewId); + if($this->type>0) + { + $primary = $this->GetPrimaryCategory(); + if(($primary==$CatId && $this->CategoryMemberCount($SourceTable)>1) || ($primary != $CatId) || $Force) + { + $sql = "DELETE FROM $SourceTable WHERE CategoryId=$CatId AND ItemResourceId=".$this->Get("ResourceId"); + if($objSession->HasSystemPermission("DEBUG.LIST")) + echo $sql."
\n"; - $this->AddToCategory($TargetCat, '', 0); // insert (but with duplicate records check) - //echo "ok"; - if(is_numeric($TargetCat)) - { - if(is_array($Cats)) - { - if(!in_array($TargetCat,$Cats)) - { - $this->AddToCategory($TargetCat, 0); // insert - } - } - $this->SetPrimaryCategory($TargetCat); // 2 updates - } - } + $this->adodbConnection->Execute($sql); + $c = $objCatList->GetCategory($CatId); + $c->ClearCacheData(); + } + } + } - - + function MoveToCategory($OldCatId,$NewCatId,$SourceTable="") + { + if(strlen($SourceTable)==0) + $SourceTable = GetTablePrefix()."CategoryItems"; + + $sql = "UPDATE $SourceTable SET CategoryId=$NewCatId WHERE CategoryId=$OldCatId AND ItemResourceId=".$this->Get("ResourceId"); + if($this->debuglevel) + echo $sql."
\n"; + + $this->adodbConnection->Execute($sql); + } + + function DeleteCategoryItems($CatId,$SourceTable = "") + { + if(strlen($SourceTable)==0) + $SourceTable = GetTablePrefix()."CategoryItems"; + + $CatCount = $this->CategoryMemberCount($SourceTable); + if($CatCount>1) + { + $this->RemoveFromCategory($CatId,$SourceTable); + $this->ClearCacheData(); + } + else + { + $this->Delete(); + $sql = "DELETE FROM $SourceTable WHERE CategoryId=$CatId AND ItemResourceId=".$this->Get("ResourceId"); + if($this->debuglevel) + echo $sql."
\n"; + + $this->adodbConnection->Execute($sql); + } + } + function RemoveFromAllCategories($SourceTable = "") + { + if(strlen($SourceTable)==0) + $SourceTable = GetTablePrefix()."CategoryItems"; + + if($this->type>0) + { + $sql = "SELECT * FROM $SourceTable WHERE ResourceId=".$this->Get("ResourceId"); + $rs = $this->adodbConnection->Execute($sql); + while ($rs && !$rs->EOF) + { + $CategoryId = $rs->fields["CategoryId"]; + $rs->MoveNext(); + } + $sql = "DELETE FROM $SourceTable WHERE ResourceId=".$this->Get("ResourceId"); + if($this->debuglevel) + echo $sql."
\n"; + + $this->adodbConnection->Execute($sql); + } + } + + function CopyToNewResource($TargetCat = NULL,$NameField="Name") + { + global $objSession; + + $CatList = $this->CategoryMemberList(); + + $Cats = explode(",",$CatList); + //echo "Target: $TargetCat
"; + $OldId = $this->Get("ResourceId"); + $this->UnsetIdField(); + $this->Dirty(); + if(!is_numeric($this->Get("OrgId"))) + $this->UnsetField("OrgId"); + $this->UnsetField("ResourceId"); + if(is_numeric($TargetCat) && strlen($NameField)) + { + $OldName = $this->Get($NameField); + 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; + $Names = CategoryItemNameCount($TargetCat,$this->tablename,$NameField,$Name); + if(count($Names)>0) + { + $NameCount = count($Names); + $found = FALSE; + $NewName = "Copy of $Name"; + + if(!in_array("Copy of $Name",$Names)) + { + $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"; + } + $this->Set($NameField,$NewName); + } + } + $this->Create(); + // copy relationships + $NewId = $this->Get("ResourceId"); + $reldata = new clsRelationshipList($TargetCat,$this->IdField()); + $reldata->CopyToResource($OldId,$NewId); + + // copy reviews + $rdata = new clsItemReviewList(); + $rdata->CopyToItemId($OldId,$NewId); + unset($rdata); + + // copy custom fields + $cdata = new clsCustomDataList(); + $cdata->CopyResource($OldId,$NewId); + unset($cdata); + + // copy images + if(is_object($this->Images)) + $this->Images->CopyResource($OldId,$NewId); + + $this->AddToCategory($TargetCat, '', 0); // insert (but with duplicate records check) + //echo "ok"; + if(is_numeric($TargetCat)) + { + if(is_array($Cats)) + { + if(!in_array($TargetCat,$Cats)) + { + $this->AddToCategory($TargetCat, 0); // insert + } + } + $this->SetPrimaryCategory($TargetCat); // 2 updates + } + } + } ?> \ No newline at end of file