Index: branches/5.0.x/in-link/units/links/link_tag_processor.php
===================================================================
diff -u -N
--- branches/5.0.x/in-link/units/links/link_tag_processor.php (revision 12746)
+++ branches/5.0.x/in-link/units/links/link_tag_processor.php (revision 0)
@@ -1,459 +0,0 @@
-Application->GetVar($this->Prefix.'_id');
- if ($object->isLoaded() && $id && ($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', null, Array ('raise_warnings' => 0));
- /* @var $listing_type kDBList */
-
- $params['lst_id'] = $listing_type->isLoaded() ? $listing_type->GetID() : $this->Application->Parser->GetParam('key');
-
- return $this->Application->ProcessParsedTag('m', 'Link', $params);
- }
-
- /**
- * 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();
-
- // save user and time
- if (!$this->Application->isAdmin && $this->Application->LoggedIn()) {
- $resource_id = $object->GetDBField('ResourceId');
- $user_id = $this->Application->RecallVar('user_id');
-
- $link_visit = $this->Application->recallObject('l-visit', null, Array ('skip_autoload' => true));
- /* @var $link_visit kDBItem */
-
- $link_visit->Load( Array ('ResourceId' => $resource_id, 'PortalUserId' => $user_id) );
- if ($link_visit->isLoaded()) {
- // for existing visits update date
- $link_visit->SetDBField('VisitTimestamp_date', adodb_mktime());
- $link_visit->SetDBField('VisitTimestamp_time', adodb_mktime());
- }
- else {
- // for new visits set user & link, visit will be set as default value
- $link_visit->SetDBField('ResourceId', $resource_id);
- $link_visit->SetDBField('PortalUserId', $user_id);
- }
-
- $status = $link_visit->isLoaded() ? $link_visit->Update() : $link_visit->Create();
- }
-
- $url = $object->GetDBField('Url');
- if (!preg_match('/^(http|ftp|mailto:)(.*)/U', $url)) {
- $url = 'http://'.$url;
- }
-
- $this->Application->Redirect('external:'.$url);
- }
-
- /**
- * Returns formatted address (from custom fields) for using with google
- *
- * @param Array $params
- * @return string
- */
- function GetGoogleAddress($params)
- {
- $object =& $this->getObject();
-
- if (isset($params['display_info']) && $params['display_info']) {
- $ret = $object->GetField('cust_LinkAddress') ? $object->GetField('cust_LinkAddress').'
' : '';
- $ret .= $object->GetField('cust_LinkCity') ? $object->GetField('cust_LinkCity').',' : '';
- $ret .= $object->GetField('cust_LinkState') ? $object->GetField('cust_LinkState') : '';
- $ret .= $object->GetField('cust_LinkZipCode') ? $object->GetField('cust_LinkZipCode').'
' : '';
- $ret .= $object->GetField('cust_LinkCountry') ? $object->GetField('cust_LinkCountry').'
' : '';
- $ret .= $object->GetField('cust_LinkPhone') ? ''.$this->Application->Phrase('lu_fld_LinkPhone').': '.$object->GetField('cust_LinkPhone') : '';
-
- return $ret;
- }
-
- $ret = $object->GetField('cust_LinkAddress') ? $object->GetField('cust_LinkAddress').',' : '';
- $ret .= $object->GetField('cust_LinkCity') ? $object->GetField('cust_LinkCity').',' : '';
- $ret .= $object->GetField('cust_LinkState') ? $object->GetField('cust_LinkState').',' : '';
- $ret .= $object->GetField('cust_LinkZipCode') ? $object->GetField('cust_LinkZipCode').',' : '';
- $ret .= $object->GetField('cust_LinkCountry') ? $object->GetField('cust_LinkCountry') : '';
-
- return $ret;
- }
-
- /**
- * Returns timestamp of last link visit for logged in users only.
- *
- * @param Array $params
- * @return string
- */
- function LastVisited($params)
- {
- if (!$this->Application->LoggedIn()) {
- // we don't gather link visit statistics for Guests
- return '';
- }
-
- static $link_visited = Array ();
-
- $object =& $this->getObject();
- /* @var $object kDBList */
-
- if (!isset($link_visited[$this->Special])) {
- $resource_ids = $object->GetCol('ResourceId');
- $user_id = $this->Application->RecallVar('user_id');
-
- $table_name = $this->Application->getUnitOption('l-visit', 'TableName');
- $sql = 'SELECT VisitTimestamp, ResourceId
- FROM '.$table_name.'
- WHERE (PortalUserId = '.$user_id.') AND (ResourceId IN ('.implode(',', $resource_ids).'))';
- $link_visited[$this->Special] = $this->Conn->GetCol($sql, 'ResourceId');
- }
-
- if (!isset($link_visited[$this->Special][$object->GetDBField('ResourceId')])) {
- // link has no visit information for current user
- return '';
- }
-
- $link_visit = $link_visited[$this->Special][$object->GetDBField('ResourceId')];
-
- if (isset($params['formatted']) && $params['formatted']) {
- // format the date
- $lang =& $this->Application->recallObject('lang.current');
-
- if (isset($params['display_time']) && $params['display_time']) {
- $display_format = $lang->GetDBField('DateFormat').' @ '.$lang->GetDBField('TimeFormat');
- }
- else {
- $display_format = $lang->GetDBField('DateFormat');
- }
-
- return adodb_date($display_format, $link_visit);
- }
-
- return $link_visit;
- }
-
- /**
- * Checks if specified Custom Fields and condition are true
- *
- * @param Array $params
- * @return string
- */
- function HasValue($params)
- {
- $condition = isset($params['condition']) ? strtolower($params['condition']) : false;
- $fields = isset($params['fields']) ? $params['fields'] : false;
- if (!$fields || !in_array($condition, Array('or', 'and'))) {
- // required parameters not passed
- return false;
- }
-
- $fields = explode(',', $fields);
-
- $object =& $this->getObject();
- /* @var $object kDBList */
-
- switch ($condition) {
- case 'or':
- foreach ($fields as $field) {
- if (strlen($object->GetDBField($field))) {
- return true;
- }
- }
- break;
-
- case 'and':
- foreach ($fields as $field) {
- if (!strlen($object->GetDBField($field))) {
- return false;
- }
- }
- break;
- }
-
- return $condition == 'and' ? true : false;
- }
-
- /**
- * Gets and parses custom details template or default one
- *
- * @param Array $params
- * @return string
- */
- function DisplayDetailTemplate($params)
- {
- $object =& $this->getObject($params);
- /* @var $object kDBItem */
-
- $template_name = $object->GetDBField('CustomTemplate');
- if (!$template_name || !$this->Application->TemplatesCache->TemplateExists($template_name)) {
- $template_name = $params['default_template'];
- }
-
- $block_params['name'] = $template_name;
-
- // parse template
- return $this->Application->ParseBlock($block_params);
- }
-
- /**
- * Changes title preset of "Duplicate checker" section to show current grouping
- *
- * @param Array $params
- */
- function ModifyUnitConfig($params)
- {
- $grid = array_key_exists('grid', $params) ? $params['grid'] : false;
- if ($grid != 'Duplicates') {
- // only for "Duplicate Checker" section
- return ;
- }
-
- $link_helper =& $this->Application->recallObject('LinkHelper');
- /* @var $link_helper LinkHelper */
-
- // 1. get current grouping
- $grouping = $link_helper->getGrouping( $this->getPrefixSpecial() );
-
- // 2. replace field names in grouping with their corresponding column titles
- $grids = $this->Application->getUnitOption($this->Prefix, 'Grids');
- foreach ($grouping as $index => $group_field) {
- $group_field = preg_replace('/^l[\d]+_/', '', $group_field); // remove ml prefix
- $grouping[$index] = $this->Application->Phrase($grids[$grid]['Fields'][$group_field]['title']);
- }
-
- // 3. patch resulting title preset
- $concat_with = "' " . $this->Application->Phrase('la_and') . " '";
- $title_presets = $this->Application->getUnitOption($this->Prefix, 'TitlePresets');
- $title_presets['duplicate_links'] = str_replace('%s', "'" . implode($concat_with, $grouping) . "'", $title_presets['duplicate_links']);
-
- $this->Application->setUnitOption($this->Prefix, 'TitlePresets', $title_presets);
- }
-
- /**
- * Allows to modify block params & current list record before PrintList parses record
- *
- * @param kDBList $object
- * @param Array $block_params
- */
- function PrepareListElementParams(&$object, &$block_params)
- {
- $grid = array_key_exists('grid', $block_params) ? $block_params['grid'] : false;
- if ($grid != 'Duplicates') {
- // only for "Duplicate Checker" section
- return ;
- }
-
- static $grouping = null;
-
- if (!isset($grouping)) {
- $link_helper =& $this->Application->recallObject('LinkHelper');
- /* @var $link_helper LinkHelper */
-
- // 1. get current grouping
- $grouping = $link_helper->getGrouping( $this->getPrefixSpecial() );
- }
-
- $fields_hash =& $object->getCurrentRecord();
-
- $key_fields = Array ();
- foreach ($grouping as $group_field) {
- $key_fields[$group_field] = $fields_hash[$group_field];
- }
-
- $fields_hash['LinkId'] = base64_encode( serialize($key_fields) );
- }
-}
\ No newline at end of file