Cs-cart Ultimate 3.0.6 Seo Update Bug

OLD

/root/addons/seo/func.php


<br />
function fn_seo_update_object($object_data, $object_id, $type, $lang_code, $generate_for_company_ids = array())<br />
{<br />
fn_set_hook('seo_update_objects_pre', $object_data, $object_id, $type, $lang_code, $generate_for_company_ids);<br />
if ((isset($object_data['seo_name']) || !empty($generate_for_company_ids)) && !empty($object_id)) {<br />
  $_object_name = '';<br />
  $seo_vars = fn_get_seo_vars($type);<br />
		if (PRODUCT_TYPE == 'ULTIMATE' && isset($object_data['company_id'])) {<br />
			$object_company_id = $object_data['company_id'];<br />
		} else {<br />
			$object_company_id = '';<br />
  }<br />
		if (!empty($generate_for_company_ids)) {<br />
			$generate_for_company_ids = array_merge($generate_for_company_ids, array($object_company_id));<br />
  } else {<br />
   $generate_for_company_ids = array($object_company_id);<br />
  }<br />
  $generate_for_company_ids = array_unique($generate_for_company_ids);<br />
		foreach ($generate_for_company_ids as $_company_id) {<br />
		 $company_name = false;<br />
		 if (empty($object_data['seo_name'])) {<br />
		  $object_data['seo_name'] = db_get_field('SELECT name FROM ?:seo_names WHERE object_id = ?i AND company_id = ?i AND type = ?s', $object_id, $_company_id, $type);<br />
		  $company_name = true;<br />
		 }<br />
			if ($object_company_id == $_company_id) {<br />
				if (!empty($object_data['seo_name'])) {<br />
					$_object_name = $object_data['seo_name'];<br />
				} elseif (!empty($object_data[$seo_vars['description']])) {<br />
					$_object_name = $object_data[$seo_vars['description']];<br />
				}<br />
			} else {<br />
				$_object_name = db_get_field('SELECT name FROM ?:seo_names WHERE object_id = ?s AND company_id = ?i AND type = ?s', $object_id, $_company_id, $type);<br />
				if (empty($_object_name) && !empty($object_data[$seo_vars['description']])) {<br />
					$_object_name = $object_data[$seo_vars['description']];<br />
				}<br />
			}<br />
			fn_create_seo_name($object_id, $type, $_object_name, 0, '', $_company_id, fn_get_corrected_seo_lang_code($lang_code));<br />
   if ($company_name) {<br />
	unset($object_data['seo_name']);<br />
   }<br />
		}<br />
}<br />
}<br />

```<br />
<br />
<br />
NEW<br />
/root/addons/seo/func.php<br />
<br />
```php
<br />
fn_set_hook('seo_update_objects_pre', $object_data, $object_id, $type, $lang_code, $generate_for_company_ids);<br />
if ((isset($object_data['seo_name']) || !empty($generate_for_company_ids)) && !empty($object_id)) {<br />
  $_object_name = '';<br />
  $seo_vars = fn_get_seo_vars($type);<br />
			if (PRODUCT_TYPE == 'ULTIMATE' && isset($object_data['company_id'])) {<br />
					$object_company_id = $object_data['company_id'];<br />
			} else {<br />
					$object_company_id = '';<br />
  }<br />
			if (!empty($generate_for_company_ids)) {<br />
					$generate_for_company_ids = array_merge($generate_for_company_ids, array($object_company_id));<br />
  } else {<br />
   $generate_for_company_ids = array($object_company_id);<br />
  }<br />
  $generate_for_company_ids = array_unique($generate_for_company_ids);<br />
  $seo_name = isset($object_data['seo_name']) ? $object_data['seo_name'] : null;<br />
			foreach ($generate_for_company_ids as $_company_id) {<br />
					if (!isset($object_data['seo_name']) || (PRODUCT_TYPE == 'ULTIMATE' && !(defined('COMPANY_ID') && COMPANY_ID == $_company_id))) {<br />
							if (empty($object_data['seo_name'])) {<br />
									$object_data['seo_name'] = db_get_field('SELECT name FROM ?:seo_names WHERE object_id = ?i AND company_id = ?i AND type = ?s AND lang_code = ?s', $object_id, $_company_id, $type, fn_get_corrected_seo_lang_code($lang_code));<br />
							}<br />
					}<br />
					if ($object_company_id == $_company_id) {<br />
							if (!empty($object_data['seo_name'])) {<br />
									$_object_name = $object_data['seo_name'];<br />
							} elseif (!empty($object_data[$seo_vars['description']])) {<br />
									$_object_name = $object_data[$seo_vars['description']];<br />
							}<br />
					} else {<br />
							$_object_name = db_get_field('SELECT name FROM ?:seo_names WHERE object_id = ?s AND company_id = ?i AND type = ?s AND lang_code = ?s', $object_id, $_company_id, $type, fn_get_corrected_seo_lang_code($lang_code));<br />
							if (empty($_object_name) && !empty($object_data[$seo_vars['description']])) {<br />
									$_object_name = $object_data[$seo_vars['description']];<br />
							}<br />
					}<br />
					fn_create_seo_name($object_id, $type, $_object_name, 0, '', $_company_id, fn_get_corrected_seo_lang_code($lang_code));<br />
					if ($seo_name === null) {<br />
							unset($object_data['seo_name']);<br />
					} else {<br />
							$object_data['seo_name'] = $seo_name;<br />
					}<br />
			}<br />
}<br />
}<br />

```<br />
<br />
http://forum.cs-cart.com/tracker/issue-3769-seo-bug/