Application->GetVar($this->Prefix.'_id'); if ($object->isLoaded() && $object->GetID() != $id) { $object->Load($id); } } return $object; } function getListingInfo($resource_id, $field = null) { $sql = 'SELECT * FROM '.$this->Application->getUnitOption('ls', 'TableName').' WHERE ItemResourceId = '.$resource_id; $listing_info = $this->Conn->GetRow($sql); return isset($field) ? $listing_info[$field] : $listing_info; } /** * Detects listing enhancement status (enhanced or not) * * @param Array $params * @return int */ function LinkIsEnhanced($params) { $object =& $this->getObject(); /* @var $object kDBItem */ if ($object->GetDBField('Status') == STATUS_PENDING || $object->GetDBField('Status') == STATUS_PENDING_EDITING) { return false; } $listing_type_id = $this->getListingInfo($object->GetDBField('ResourceId'), 'ListingTypeId'); $this->Application->SetVar('lst_id', $listing_type_id); // compatibility with old-theme return $listing_type_id ? 1 : 0; } /** * Detects if enhancement is pending approval * * @param Array $params * @return int */ function EnhancementIsPending($params) { $object =& $this->getObject(); /* @var $object kDBItem */ $status = $this->getListingInfo($object->GetDBField('ResourceId'), 'Status'); return $status == STATUS_PENDING ? 1 : 0; } function ListingTypeField($params) { $object =& $this->getObject(); /* @var $object kDBItem */ $lst_id = $this->getListingInfo($object->GetDBField('ResourceId'), 'ListingTypeId'); $lst_object =& $this->Application->recallObject('lst', null, Array('skip_autoload' => true)); $lst_object->Load($lst_id); return $lst_object->GetField( $this->SelectParam($params, 'name,field') ); } function EnhancementField($params) { $object =& $this->getObject(); /* @var $object kDBItem */ $listing_id = $this->getListingInfo($object->GetDBField('ResourceId'), 'ListingId'); $listing_object =& $this->Application->recallObject('ls', null, Array('skip_autoload' => true)); $listing_object->Load($listing_id); return $listing_object->GetField( $this->SelectParam($params, 'name,field') ); } function IsRenewalPeriod($params) { $object =& $this->getObject(); /* @var $object kDBItem */ $listing_info = $this->getListingInfo($object->GetDBField('ResourceId')); $sql = 'SELECT RenewalReminder FROM '.$this->Application->getUnitOption('lst', 'TableName').' WHERE ListingTypeId = '.$listing_info['ListingTypeId']; $renewal_interval = $this->Conn->GetOne($sql) * 3600 * 24; return ($listing_info['ExpiresOn'] - adodb_mktime() < $renewal_interval) ? 1 : 0; } function FirstListingType($params) { static $first = true; if ($first) { $first = false; return true; } else { return false; } } function IsReocurringEnhancement($params) { $params['name'] = 'Recurring'; return $this->ListingTypeField($params); } function EnhanceUsingInCommerce($params) { if (!$this->Application->isModuleEnabled('In-Commerce')) { return 0; } $object =& $this->getObject(); /* @var $object kDBItem */ $listtype_id = $this->getListingInfo($object->GetDBField('ResourceId'), 'ListingTypeId'); $lst_object =& $this->Application->recallObject('lst', null, Array('skip_autoload' => true)); $lst_object->Load($listtype_id); return $lst_object->GetDBField('EnableBuying'); } function ClickLink($params) { $object =& $this->getObject($params); return $this->Application->HREF($params['t'], '', Array('l_id' => $object->GetID(), 'pass'=>'all,l' )); } function ListRelatedLinks($params) { return $this->PrintList2($params); } function LinkLink($params) { return $this->ItemLink($params, 'link'); } function ListingDescription($params) { $listing_type =& $this->Application->recallObject('lst'); /* @var $listing_type kDBItem */ return $listing_type->GetDBField('Description'); } function ListingTypeDetailsLink($params) { $listing_type =& $this->Application->recallObject('lst'); $params['lst_id'] = $listing_type->GetID(); return $this->Application->ProcessParsedTag('m', 'Link', $params); } function GroupTitle($params) { $object =& $this->getObject($params); $grouping = $this->Application->RecallVar($this->getPrefixSpecial().'_dupe_fields'); $grouping = explode('|', substr($grouping, 1, -1)); $ret = ''; foreach ($grouping as $group_field) { $ret .= $object->GetField($group_field).', '; } return preg_replace('/(.*), $/', '\\1', $ret); } /** * Register hit & go to link url * * @param Array $params */ function FollowLocation($params) { $object =& $this->getObject(); /* @var $object kCatDBItem */ if (!$object->isLoaded()) { trigger_error('No Link ID for redirect', E_USER_ERROR); } $object->RegisterHit(); $url = $object->GetDBField('Url'); if (!preg_match('/^(http|ftp|mailto:)(.*)/U', $url)) { $url = 'http://'.$url; } $this->Application->Redirect('external:'.$url); } } ?>