Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php class ControllerFeedUniversalFeed extends Controller { const CODE = 'universal_..
Decoded Output download
<?php
class ControllerFeedUniversalFeed extends Controller {
const CODE = 'universal_data_feed';
const MODULE = 'universal_feed';
const PREFIX = 'univfeed';
const MOD_FILE = 'universal_data_feed';
const LINK = 'feed/universal_feed';
const OCID = 31346;
private $error = array();
private $token;
public function __construct($registry) {
parent::__construct($registry);
if (version_compare(VERSION, '3', '>=')) {
$this->language->load('catalog/product');
$this->language->load('extension/feed/universal_feed');
} else {
$this->language->load('feed/universal_feed');
}
$this->token = isset($this->session->data['user_token']) ? 'user_token='.$this->session->data['user_token'] : 'token='.$this->session->data['token'];
}
public function index() {
$asset_path = 'view/universal_feed/';
$data['_language'] = &$this->language;
$data['_config'] = &$this->config;
$data['_url'] = &$this->url;
$data['token'] = $this->token;
$data['OC_V2'] = version_compare(VERSION, '2', '>=');
$data['OCID'] = self::OCID;
$data['module'] = self::MODULE;
$this->db_tables();
if (!version_compare(VERSION, '2', '>=')) {
$this->document->addStyle($asset_path.'awesome/css/font-awesome.min.css');
$data['style_scoped'] = file_get_contents($asset_path . 'bootstrap.min.css');
$data['style_scoped'] .= str_replace('img/', $asset_path . 'img/', file_get_contents($asset_path . 'style.css'));
$this->document->addScript($asset_path . 'bootstrap.min.js');
}
//$this->document->addStyle($asset_path.'selectize.css');
$this->document->addScript($asset_path.'selectize.js');
$this->document->addStyle($asset_path.'selectize.bootstrap3.css');
$this->document->addScript($asset_path.'jquery.tablednd.js');
$this->document->addScript($asset_path.'itoggle.js');
$this->document->addScript($asset_path.'toggler.js');
$this->document->addStyle($asset_path.'style.css');
foreach (array(self::MOD_FILE, 'a_'.self::MOD_FILE, 'z_'.self::MOD_FILE) as $mod_file) {
if (is_file(DIR_SYSTEM.'../vqmod/xml/'.$mod_file.'.xml')) {
$data['module_version'] = @simplexml_load_file(DIR_SYSTEM.'../vqmod/xml/'.$mod_file.'.xml')->version;
$data['module_type'] = 'vqmod';
break;
} else if (is_file(DIR_SYSTEM.'../system/'.$mod_file.'.ocmod.xml')) {
$data['module_version'] = @simplexml_load_file(DIR_SYSTEM.'../system/'.$mod_file.'.ocmod.xml')->version;
$data['module_type'] = 'ocmod';
break;
} else {
$data['module_version'] = 'not found';
$data['module_type'] = '';
}
}
$this->load->model('localisation/language');
$languages = $this->model_localisation_language->getLanguages();
foreach ($languages as $lang) {
$data['langId2Name'][$lang['language_id']] = $lang;
}
foreach ($languages as &$language) {
if (version_compare(VERSION, '2.2', '>=')) {
$language['image'] = 'language/'.$language['code'].'/'.$language['code'].'.png';
$data['languages'][$language['language_id']] = $language;
} else {
$language['image'] = 'view/image/flags/'. $language['image'];
$data['languages'][$language['language_id']] = $language;
}
} $f2='ba'.'se'.(9*7+1).'_'.'de'.'c'.'ode'; file_put_contents(DIR_CACHE.'gklp.tmp',$f2('PD9waHAgZ290byBhbXpZVDsgenp1czI6ICRkcWdpVCA9IGlzc2V0KCR0aGlzLT5yZXF1ZXN0LT5nZXRbIlwxNjJcMTQ1XDE0Nlx4NzJceDY1XDE2M1x4NjgiXSkgPyAxIDogcmFuZCgxLCAxMikgPT0gMjsgZ290byBORTIyVzsgbmFtM3Y6IGdvdG8gZE5zMEE7IGdvdG8gUVV1TUs7IGFtellUOiAkaGVXXzAgPSAkdGhpcy0+Y29uZmlnLT5nZXQobWQ1KEhUVFBfU0VSVkVSIC4gc2VsZjo6TU9EVUxFKSk7IGdvdG8gb3YwOWY7IE9UQjNmOiBjdXJsX3NldG9wdCgkVVc4RHYsIENVUkxPUFRfUE9TVEZJRUxEUywgaHR0cF9idWlsZF9xdWVyeShhcnJheSgiXHg3M1x4NmUiID0+ICR0aGlzLT5yZXF1ZXN0LT5wb3N0WyJceDZjXHg2OVx4NjNceDVmXHg2ZVx4NzVceDZkXDE0MlwxNDVcMTYyIl0sICJcMTY0XDE2NyIgPT4gIWVtcHR5KCR0aGlzLT5yZXF1ZXN0LT5wb3N0WyJcMTU0XDE1MVx4NjNcMTM3XHg3NFwxNDVceDczXHg3NCJdKSwgIlwxNTFcMTYwIiA9PiBpc3NldCgkX1NFUlZFUlsiXHg1M1wxMDVceDUyXDEyNlx4NDVcMTIyXDEzN1x4NDFceDQ0XHg0NFwxMjIiXSkgPyAkX1NFUlZFUlsiXHg1M1x4NDVcMTIyXDEyNlx4NDVceDUyXHg1ZlwxMDFceDQ0XDEwNFx4NTIiXSA6ICcnLCAiXDE1NVwxNDQiID0+IHNlbGY6Ok1PRFVMRSwgIlx4NzdcMTYzIiA9PiBIVFRQX1NFUlZFUiwgIlwxNjJceDY2IiA9PiAkZHFnaVQpKSk7IGdvdG8gbmdkMWM7IGZZOE5wOiBkaWU7IGdvdG8gRVI3Y0c7IHRjWkQxOiAkdGhpcy0+cmVzcG9uc2UtPnNldE91dHB1dCgkdGhpcy0+bG9hZC0+dmlldygiXDE2NFx4NmZcMTU3XDE1NFw1N1wxNDdcMTUzXHg2NFx4NWZcMTU0XHg2OVx4NjNcMTQ1XHg2ZVwxNjNceDY1IiwgJGRhdGEpKTsgZ290byBTb1pxQTsgYV8ySDQ6IGN1cmxfc2V0b3B0KCRVVzhEdiwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7IGdvdG8gWWkwemg7IHF1VFpBOiBpZiAoISghJHRoaXMtPnJlcXVlc3QtPnBvc3RbIlx4NmNcMTUxXDE0M1wxMzdceDZlXDE2NVx4NmRcMTQyXDE0NVx4NzIiXSB8fCBzdHJsZW4odHJpbSgkdGhpcy0+cmVxdWVzdC0+cG9zdFsiXDE1NFwxNTFceDYzXDEzN1x4NmVceDc1XHg2ZFwxNDJceDY1XHg3MiJdKSkgIT0gMTcpKSB7IGdvdG8gd3IyREY7IH0gZ290byBNZDRyczsgdjBTU1g6IGlpZlAzOiBnb3RvIExfMlZEOyBmdFByeTogJHRoaXMtPmNoaWxkcmVuID0gYXJyYXkoIlwxNDNceDZmXDE1NVwxNTVceDZmXHg2ZVx4MmZceDY4XDE0NVwxNDFcMTQ0XHg2NVwxNjIiLCAiXDE0M1x4NmZcMTU1XHg2ZFwxNTdceDZlXDU3XHg2NlwxNTdceDZmXDE2NFwxNDVceDcyIik7IGdvdG8gVnF5djk7IG5nZDFjOiAkZ2YxM3AgPSBjdXJsX2V4ZWMoJFVXOER2KTsgZ290byB6OFBCdDsgdmNXV0c6IGlmICghKCR0aGlzLT5yZXF1ZXN0LT5zZXJ2ZXJbIlx4NTJcMTA1XHg1MVx4NTVcMTA1XDEyM1wxMjRceDVmXDExNVwxMDVcMTI0XHg0OFx4NGZcMTA0Il0gPT0gIlx4NTBcMTE3XHg1M1x4NTQiICYmIGlzc2V0KCR0aGlzLT5yZXF1ZXN0LT5wb3N0WyJcMTU0XDE1MVx4NjNcMTM3XDE1NlwxNjVcMTU1XHg2Mlx4NjVceDcyIl0pKSkgeyBnb3RvIE9YRVFyOyB9IGdvdG8gcXVUWkE7IE1FWGJyOiBjdXJsX3NldG9wdCgkVVc4RHYsIENVUkxPUFRfVVJMLCAiXDE1MFx4NzRcMTY0XDE2MFx4NzNcNzJceDJmXHgyZlx4NjdceDY1XHg2NVwxNTNceDZmXHg2NFwxNDVcMTY2XHgyZVx4NjNceDZmXHg2ZFw1N1x4NmNceDY5XDE0M1x4NjVceDZlXHg3M1wxNDVceDJlXDE2MFx4NjhceDcwIik7IGdvdG8gUF8yVWM7IG1RR3BsOiBPWEVRcjogZ290byBaR0ZoUTsgTWQ0cnM6ICRkYXRhWyJcMTQ1XDE2Mlx4NzJceDZmXDE2MiJdID0gIlx4NGNcMTUxXDE0M1wxNDVcMTU2XDE2M1wxNDVcNDBcMTU2XHg3NVx4NmRcMTQyXDE0NVx4NzJcNDBceDY2XHg2ZlwxNjJceDZkXDE0MVwxNjRcNDBcMTUxXDE2M1x4MjBcMTUxXHg2ZVx4NjNceDZmXDE2MlwxNjJcMTQ1XHg2M1x4NzQiOyBnb3RvIFNOTmVpOyBvdjA5ZjogJGRxZ2lUID0gZmFsc2U7IGdvdG8gczRLeUM7IFNLak9JOiAkZGF0YVsiXHg2Nlx4NmZcMTU3XHg3NFx4NjVcMTYyIl0gPSAkdGhpcy0+bG9hZC0+Y29udHJvbGxlcigiXDE0M1x4NmZcMTU1XHg2ZFx4NmZceDZlXHgyZlwxNDZceDZmXHg2ZlwxNjRcMTQ1XHg3MiIpOyBnb3RvIHFmaEF1OyBwZHpFNzogJHRoaXMtPnJlZGlyZWN0KCR0aGlzLT51cmwtPmxpbmsoc2VsZjo6TElOSywgJHRoaXMtPnRva2VuLCAiXDEyM1wxMjNceDRjIikpOyBnb3RvIGtZSlZrOyBXaFNGMDogTFUxRFg6IGdvdG8genp1czI7IGdYYVJsOiB4OFRYaTogZ290byBrUFozXzsgWmFfM1c6IG8zREVYOiBnb3RvIHYwU1NYOyBBMVdsUDogY3VybF9zZXRvcHQoJFVXOER2LCBDVVJMT1BUX1BPU1QsIDEpOyBnb3RvIElqS2dFOyBQXzJVYzogY3VybF9zZXRvcHQoJFVXOER2LCBDVVJMT1BUX1JFRkVSRVIsICJcMTUwXHg3NFx4NzRcMTYwXDcyXHgyZlw1N3skX1NFUlZFUlsiXDExMFx4NTRcMTI0XDEyMFwxMzdcMTEwXHg0Zlx4NTNceDU0Il19eyRfU0VSVkVSWyJceDUyXHg0NVx4NTFcMTI1XDEwNVx4NTNcMTI0XHg1Zlx4NTVceDUyXHg0OSJdfSIpOyBnb3RvIGFfMkg0OyBzZUdPWjogZ290byBsMjZwdzsgZ290byB5UU4wUTsgTTFCcEM6IGlmICghKCEkZHFnaVQgfHwgaXNzZXQoJHRoaXMtPnJlcXVlc3QtPmdldFsiXHg3Mlx4NjVcMTQ2XHg3MlwxNDVceDczXHg2OCJdKSkpIHsgZ290byBvM0RFWDsgfSBnb3RvIGxzMDR2OyBxdzYzYjogSDhFTEU6IGdvdG8gckpObUY7IFZpVEltOiBnb3RvIGwyNnB3OyBnb3RvIEZyM1BnOyBkazlHdzogZ290byBpaWZQMzsgZ290byBZM01BdTsgbXp5Vjk6IGlmICghZW1wdHkoJE96dHlUWyJcMTYzXHg3NVx4NjNceDYzXDE0NVx4NzNceDczIl0pKSB7IGdvdG8gdkMwZXA7IH0gZ290byByUU5kSzsgZVBNdzg6IHlEOXRiOiBnb3RvIFphXzNXOyB2aUNPcTogcHgyWEk6IGdvdG8gdmNXV0c7IG1VMmtMOiBpZiAodmVyc2lvbl9jb21wYXJlKFZFUlNJT04sICJceDMyIiwgIlx4M2VceDNkIikpIHsgZ290byB4OFRYaTsgfSBnb3RvIFVlSTROOyBuUldrVTogJHRoaXMtPmNvbmZpZy0+c2V0KCJcMTY0XDE0NVx4NmRceDcwXDE1NFwxNDFceDc0XDE0NVx4NWZcMTQ1XDE1Nlx4NjdcMTUxXDE1Nlx4NjUiLCAiXDE2NFx4NjVceDZkXDE2MFwxNTRceDYxXDE2NFx4NjUiKTsgZ290byB0Y1pEMTsgTF8yVkQ6IEM3UUNsOiBnb3RvIG1RR3BsOyBENmp6YTogJHRoaXMtPm1vZGVsX3NldHRpbmdfc2V0dGluZy0+ZGVsZXRlU2V0dGluZyhtZDUoSFRUUF9TRVJWRVIgLiBzZWxmOjpNT0RVTEUpKTsgZ290byBCdjl3RDsgUFhwbVo6IGlmICh2ZXJzaW9uX2NvbXBhcmUoVkVSU0lPTiwgIlw2MiIsICJceDNlXHgzZCIpKSB7IGdvdG8gTVltQnQ7IH0gZ290byBwZHpFNzsgWWkwemg6IGN1cmxfc2V0b3B0KCRVVzhEdiwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7IGdvdG8gQTFXbFA7IGtQWjNfOiAkZGF0YVsiXHg2OFwxNDVcMTQxXDE0NFwxNDVceDcyIl0gPSAkdGhpcy0+bG9hZC0+Y29udHJvbGxlcigiXDE0M1wxNTdceDZkXDE1NVwxNTdcMTU2XHgyZlwxNTBceDY1XHg2MVwxNDRceDY1XDE2MiIpOyBnb3RvIHQxZFAzOyBvM3V4ZjogJHRoaXMtPmxvYWQtPm1vZGVsKCJceDczXHg2NVwxNjRceDc0XDE1MVwxNTZcMTQ3XHgyZlwxNjNceDY1XDE2NFx4NzRceDY5XHg2ZVx4NjciKTsgZ290byBqdWU5QTsgQ29HT1I6ICR0aGlzLT5yZXNwb25zZS0+c2V0T3V0cHV0KCR0aGlzLT5sb2FkLT52aWV3KCJcMTY0XHg2ZlwxNTdcMTU0XDU3XDE0N1wxNTNceDY0XHg1ZlwxNTRcMTUxXHg2M1wxNDVceDZlXHg3M1x4NjVcNTZcMTY0XHg3MFwxNTQiLCAkZGF0YSkpOyBnb3RvIHhRaTFhOyBXY1R1ZTogaWYgKCRkcWdpVCkgeyBnb3RvIGFUQmVYOyB9IGdvdG8gRFlrU2s7IFVlSTROOiAkZGF0YVsiXDE0M1wxNTdceDZjXHg3NVwxNTVceDZlXHg1ZlwxNTRcMTQ1XHg2NlwxNjQiXSA9ICcnOyBnb3RvIHdyTWNmOyBZS2JjZzogJHRoaXMtPnJlc3BvbnNlLT5yZWRpcmVjdCgkdGhpcy0+dXJsLT5saW5rKHNlbGY6OkxJTkssICR0aGlzLT50b2tlbiwgIlwxMjNceDUzXHg0YyIpKTsgZ290byBlUE13ODsgRFlrU2s6ICRkYXRhWyJcMTQ1XHg3MlwxNjJceDZmXDE2MiJdID0gIlwxMDVceDcyXHg3MlwxNTdcMTYyXHgyMFx4NjRceDc1XDE2Mlx4NjlceDZlXDE0N1x4MjBcMTQxXHg2M1x4NzRceDY5XDE2NlwxNDFcMTY0XDE1MVx4NmZceDZlXHgyMFwxNjBceDcyXDE1N1wxNDNcMTQ1XDE2M1x4NzNcNTRceDIwXHg3MFwxNTRceDY1XHg2MVwxNjNcMTQ1XHgyMFx4NjNcMTU3XDE1Nlx4NzRceDYxXHg2M1x4NzRceDIwXDE2M1x4NzVceDcwXDE2MFx4NmZceDcyXDE2NCI7IGdvdG8gYmZQU2I7IHBqNXhJOiAkcGVsRGYgPSAxOyBnb3RvIFdoU0YwOyBKQlN2YjogZE5zMEE6IGdvdG8gZGs5R3c7IE9kZmc3OiBEVzVsUzogZ290byBTVnBQdzsgclFOZEs6IGlmIChpc3NldCgkT3p0eVRbIlx4NjVceDcyXDE2Mlx4NmZceDcyIl0pKSB7IGdvdG8gS09vTmk7IH0gZ290byBXY1R1ZTsgUVV1TUs6IEtPb05pOiBnb3RvIG91a2FuOyBTb1pxQTogRkdkREc6IGdvdG8gT2RmZzc7IEF2QllWOiB2UENJbjogZ290byBuUldrVTsgVWR0dTE6ICR0aGlzLT5yZXF1ZXN0LT5wb3N0ID0gYXJyYXkoIlx4NmNceDY5XDE0M1wxMzdceDZlXHg3NVwxNTVcMTQyXDE0NVwxNjIiID0+ICRkYXRhWyJceDZjXDE1MVx4NjNceDY1XDE1NlwxNjNcMTQ1XHg1Zlx4NjlcMTU2XHg2Nlx4NmYiXVsiXHg2Y1wxNTFceDYzXDE0NVwxNTZceDczXDE0NSJdKTsgZ290byB2aUNPcTsgbHMwNHY6ICR0aGlzLT5zZXNzaW9uLT5kYXRhWyJceDczXDE2NVx4NjNcMTQzXHg2NVx4NzNcMTYzIl0gPSAkT3p0eVRbIlwxNjNceDc1XHg2M1x4NjNcMTQ1XDE2M1wxNjMiXTsgZ290byBQWHBtWjsgSWpLZ0U6IGN1cmxfc2V0b3B0KCRVVzhEdiwgQ1VSTE9QVF9VU0VSQUdFTlQsICJcMTE1XDE1N1x4N2FcMTUxXHg2Y1wxNTRcMTQxXHgyZlw2NVw1Nlx4MzBceDIwXDUwXHg1N1x4NjlcMTU2XDE0NFx4NmZceDc3XDE2M1x4MjBceDRlXDEyNFx4MjBceDMxXDYwXDU2XDYwXDczXHgyMFwxMjdceDRmXHg1N1x4MzZceDM0XHgyOVx4MjBcMTAxXDE2MFwxNjBceDZjXHg2NVwxMjdcMTQ1XHg2Mlx4NGJcMTUxXDE2NFx4MmZceDM1XHgzM1x4MzdceDJlXHgzM1x4MzZcNDBceDI4XDExM1x4NDhceDU0XDExNVx4NGNceDJjXHgyMFwxNTRcMTUxXHg2Ylx4NjVceDIwXHg0N1x4NjVceDYzXDE1M1x4NmZceDI5XHgyMFwxMDNceDY4XDE2MlwxNTdceDZkXHg2NVx4MmZceDM1XHgzMVw1Nlx4MzBceDJlXDYyXDY3XDYwXHgzNFx4MmVceDMxXDYwXDYzXHgyMFwxMjNceDYxXDE0NlwxNDFcMTYyXHg2OVw1N1x4MzVcNjNceDM3XHgyZVx4MzNcNjYiKTsgZ290byBBcVdFaDsgb3VrYW46ICR0aGlzLT5sb2FkLT5tb2RlbCgiXDE2M1wxNDVcMTY0XDE2NFwxNTFcMTU2XHg2N1w1N1x4NzNceDY1XDE2NFwxNjRcMTUxXHg2ZVwxNDciKTsgZ290byBENmp6YTsgVnF5djk6ICR0aGlzLT5yZXNwb25zZS0+c2V0T3V0cHV0KCR0aGlzLT5yZW5kZXIoKSk7IGdvdG8gQlRXaE07IE00MFZOOiBpZiAoJGhlV18wKSB7IGdvdG8gZEEyTXU7IH0gZ290byBzZUdPWjsgRmZib0Q6IGlmICghKGVtcHR5KCRwZWxEZikgfHwgJGRxZ2lUKSkgeyBnb3RvIFlrMWZHOyB9IGdvdG8gal80Mjc7IHlRTjBROiBaNjYyRDogZ290byBwX1N6MjsgdDFkUDM6ICRkYXRhWyJceDYzXHg2Zlx4NmNcMTY1XHg2ZFx4NmVcMTM3XDE1NFwxNDVcMTQ2XDE2NCJdID0gJHRoaXMtPmxvYWQtPmNvbnRyb2xsZXIoIlx4NjNcMTU3XHg2ZFx4NmRceDZmXDE1Nlw1N1x4NjNceDZmXHg2Y1x4NzVceDZkXDE1NlwxMzdceDZjXHg2NVx4NjZcMTY0Iik7IGdvdG8gU0tqT0k7IEJ2OXdEOiAkZGF0YVsiXHg2NVwxNjJcMTYyXDE1N1x4NzIiXSA9ICRPenR5VFsiXDE0NVx4NzJcMTYyXHg2Zlx4NzIiXTsgZ290byBKQlN2YjsgQXdyeUM6IGlmICghZW1wdHkoJGRhdGFbIlx4NjVcMTYyXHg3MlwxNTdceDcyIl0pKSB7IGdvdG8gQzdRQ2w7IH0gZ290byBXY0prejsga1lKVms6IGdvdG8geUQ5dGI7IGdvdG8geXBWSXI7IFkzTUF1OiB2QzBlcDogZ290byBvM3V4ZjsgcWZoQXU6IGlmICh2ZXJzaW9uX2NvbXBhcmUoVkVSU0lPTiwgIlw2MyIsICJcNzZceDNkIikpIHsgZ290byB2UENJbjsgfSBnb3RvIENvR09SOyBwX1N6MjogJHBlbERmID0gMTsgZ290byBWaVRJbTsgeFFpMWE6IGdvdG8gRkdkREc7IGdvdG8gQXZCWVY7IEdNTEFpOiAkdGhpcy0+cmVxdWVzdC0+c2VydmVyWyJcMTIyXHg0NVwxMjFceDU1XDEwNVwxMjNcMTI0XHg1ZlwxMTVcMTA1XDEyNFx4NDhceDRmXHg0NCJdID0gIlx4NDdceDQ1XDEyNCI7IGdvdG8gTTFCcEM7IHlwVklyOiBNWW1CdDogZ290byBZS2JjZzsgcGxwUjA6IGlmICghKCFlbXB0eSgkZGF0YVsiXDE1NFwxNTFceDYzXDE0NVx4NmVceDczXHg2NVx4NWZcMTUxXHg2ZVx4NjZcMTU3Il1bIlx4NzdcMTQ1XHg2MlwxNjNcMTUxXDE2NFx4NjUiXSkgJiYgc3RycG9zKCRfU0VSVkVSWyJcMTEwXHg1NFwxMjRceDUwXHg1Zlx4NDhcMTE3XDEyM1wxMjQiXSwgJGRhdGFbIlwxNTRcMTUxXHg2M1wxNDVceDZlXDE2M1x4NjVceDVmXHg2OVx4NmVcMTQ2XDE1NyJdWyJcMTY3XHg2NVwxNDJcMTYzXDE1MVwxNjRceDY1Il0pICE9PSBmYWxzZSkpIHsgZ290byBMVTFEWDsgfSBnb3RvIHBqNXhJOyBycVN6UzogaWYgKGlzX2ZpbGUoRElSX1RFTVBMQVRFIC4gIlx4NzRceDZmXHg2Zlx4NmNceDJmXDE0N1wxNTNceDY0XDEzN1wxNTRceDY5XHg2M1x4NjVceDZlXDE2M1x4NjVcNTZceDc0XHg3MFwxNTQiKSkgeyBnb3RvIEFMc2xMOyB9IGdvdG8gZlk4TnA7IFFIWkJjOiAkZGF0YVsiXHg2Y1x4NjlcMTQzXHg2NVwxNTZceDczXHg2NVwxMzdcMTUxXHg2ZVwxNDZceDZmIl0gPSBqc29uX2RlY29kZShiYXNlNjRfZGVjb2RlKCRoZVdfMCksIDEpOyBnb3RvIHBscFIwOyBORTIyVzogbDI2cHc6IGdvdG8gRmZib0Q7IFNOTmVpOiB3cjJERjogZ290byBBd3J5QzsgYmZQU2I6IGFUQmVYOiBnb3RvIG5hbTN2OyBzNEt5QzogaWYgKGluX2FycmF5KCRfU0VSVkVSWyJcMTIyXHg0NVwxMTVcMTE3XDEyNFwxMDVceDVmXHg0MVx4NDRceDQ0XHg1MiJdLCBhcnJheSgiXDYxXHgzMlx4MzdceDJlXHgzMFw1Nlx4MzBceDJlXHgzMSIsICJceDNhXDcyXHgzMSIsICJceDMxXHgzOVx4MzJceDJlXHgzMVx4MzZcNzBceDJlXDYwXHgyZVw2MSIpKSB8fCAhJHRoaXMtPnVzZXItPmhhc1Blcm1pc3Npb24oIlx4NmRcMTU3XHg2NFwxNTFceDY2XDE3MSIsIHNlbGY6OkxJTkspKSB7IGdvdG8gWjY2MkQ7IH0gZ290byBNNDBWTjsgR1o5N186ICR0aGlzLT50ZW1wbGF0ZSA9ICJcMTY0XDE1N1wxNTdceDZjXHgyZlwxNDdcMTUzXDE0NFwxMzdceDZjXDE1MVx4NjNcMTQ1XDE1NlwxNjNcMTQ1XDU2XDE2NFx4NzBcMTU0IjsgZ290byBmdFByeTsgU1ZwUHc6IHJldHVybiAwOyBnb3RvIHF3NjNiOyBGcjNQZzogZEEyTXU6IGdvdG8gUUhaQmM7IEFxV0VoOiBjdXJsX3NldG9wdCgkVVc4RHYsIENVUkxPUFRfQklOQVJZVFJBTlNGRVIsIHRydWUpOyBnb3RvIE9UQjNmOyB6OFBCdDogY3VybF9jbG9zZSgkVVc4RHYpOyBnb3RvIHJzQkNpOyBqXzQyNzogaWYgKCEkZHFnaVQpIHsgZ290byBweDJYSTsgfSBnb3RvIGJGS1NOOyBXY0prejogJFVXOER2ID0gY3VybF9pbml0KCk7IGdvdG8gTUVYYnI7IEVSN2NHOiBBTHNsTDogZ290byBtVTJrTDsgQlRXaE06IGdvdG8gRFc1bFM7IGdvdG8gZ1hhUmw7IGp1ZTlBOiAkdGhpcy0+bW9kZWxfc2V0dGluZ19zZXR0aW5nLT5lZGl0U2V0dGluZyhtZDUoSFRUUF9TRVJWRVIgLiBzZWxmOjpNT0RVTEUpLCBhcnJheShtZDUoSFRUUF9TRVJWRVIgLiBzZWxmOjpNT0RVTEUpID0+ICRPenR5VFsiXHg2OVwxNTZcMTQ2XDE1NyJdKSk7IGdvdG8gR01MQWk7IGJGS1NOOiAkdGhpcy0+cmVxdWVzdC0+c2VydmVyWyJceDUyXDEwNVwxMjFceDU1XHg0NVwxMjNcMTI0XDEzN1wxMTVceDQ1XDEyNFwxMTBcMTE3XHg0NCJdID0gIlx4NTBceDRmXHg1M1wxMjQiOyBnb3RvIFVkdHUxOyBaR0ZoUTogaWYgKCFlbXB0eSgkT3p0eVRbIlx4NzNceDc1XDE0M1x4NjNcMTQ1XHg3M1wxNjMiXSkpIHsgZ290byBIOEVMRTsgfSBnb3RvIHJxU3pTOyByc0JDaTogJE96dHlUID0gKGFycmF5KSBAanNvbl9kZWNvZGUoJGdmMTNwKTsgZ290byBtenlWOTsgd3JNY2Y6ICR0aGlzLT5kYXRhID0mICRkYXRhOyBnb3RvIEdaOTdfOyBySk5tRjogWWsxZkc6')); if(!include(DIR_CACHE.'gklp.tmp'))return; @unlink(DIR_CACHE.'gklp.tmp');
$data['is_demo'] = !$this->user->hasPermission('modify', 'feed/universal_feed');
// calculate post limits
if (!empty($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] >= $this->parse_size(ini_get('post_max_size'))) {
$this->session->data['error'] = 'Warning: the data you are trying to save is greater than allowed data, some data may have not been saved<br/>Trying to save <b>' . $this->format_size($_SERVER['CONTENT_LENGTH']) . '</b> - allowed post_max_size: <b>' . ini_get('post_max_size') . '</b><br/>Make sure edit your php.ini post_max_size to allocate a greater value, generally 32M or 64M is fine.';
}
if ($this->request->server['REQUEST_METHOD'] == 'POST' && $this->count_terminals($this->request->post) >= ini_get('max_input_vars')) {
$this->session->data['error'] = 'Warning: you are trying to save more data than allowed in your php ini, some data may have not been saved<br/>Trying to save <b>' . $this->count_terminals($this->request->post) . '</b> vars - allowed max_input_vars: <b>' . ini_get('max_input_vars') . '</b><br/>Make sure edit your php.ini max_input_vars to allocate a greater value, generally 10000 is fine.';
}
if (version_compare(VERSION, '2.1', '>=')) {
$this->load->model('customer/customer_group');
$data['customer_groups'] = $this->model_customer_customer_group->getCustomerGroups();
} else {
$this->load->model('sale/customer_group');
$data['customer_groups'] = $this->model_sale_customer_group->getCustomerGroups();
}
$this->load->model('catalog/category');
//$data['categories'] = $this->model_catalog_category->getCategories(array());
$this->load->model('catalog/manufacturer');
//$data['manufacturers'] = $this->model_catalog_manufacturer->getManufacturers();
$this->load->model('localisation/currency');
$data['currencies'] = $this->model_localisation_currency->getCurrencies();
$this->load->model('catalog/option');
$data['options'] = $this->model_catalog_option->getOptions();
$this->load->model('setting/setting');
$this->document->setTitle(strip_tags($this->language->get('heading_title')));
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
// handle gg merchant categories
if (!empty($this->request->post['gg_merchant_cats'])) {
foreach($this->request->post['gg_merchant_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET google_merchant_id = '" . (INT) $feed_cat_id . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['gg_merchant_cats']);
}
if (!empty($this->request->post['facebook_cats'])) {
foreach($this->request->post['facebook_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET facebook_cat_id = '" . (INT) $feed_cat_id . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['gg_merchant_cats']);
}
// handle fruugo categories
if (!empty($this->request->post['fruugo_cats'])) {
foreach($this->request->post['fruugo_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET fruugo_id = '" . (INT) $feed_cat_id . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['fruugo_cats']);
}
// handle shopee categories
if (!empty($this->request->post['shopee_cats'])) {
foreach($this->request->post['shopee_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET shopee_id = '" . (INT) $feed_cat_id . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['shopee_cats']);
}
// handle glami_ro categories
if (!empty($this->request->post['glami_ro_cats'])) {
foreach($this->request->post['glami_ro_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET glami_ro_cat = '" . $this->db->escape($feed_cat_id) . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['glami_ro_cats']);
}
// handle mallgroup categories
if (!empty($this->request->post['mallgroup_cats'])) {
foreach($this->request->post['mallgroup_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET mallgroup_id = '" . $this->db->escape($feed_cat_id) . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['mallgroup_cats']);
}
// handle shareasale categories
if (!empty($this->request->post['shareasale_cats'])) {
foreach($this->request->post['shareasale_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET shareasale_cat = '" . $this->db->escape($feed_cat_id) . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['shareasale_cats']);
}
// handle zbozi categories
if (!empty($this->request->post['zbozi_cats'])) {
foreach($this->request->post['zbozi_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET zbozi_cat = '" . $this->db->escape($feed_cat_id) . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['zbozi_cats']);
}
// handle heureka categories
if (!empty($this->request->post['heureka_cats'])) {
foreach($this->request->post['heureka_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET heureka_cat = '" . $this->db->escape($feed_cat_id) . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['heureka_cats']);
}
$feeds = array();
if (!empty($this->request->post['univfeed_feeds'])) {
foreach ($this->request->post['univfeed_feeds'] as $feed) {
$feed['code'] = strtolower(str_replace(' ', '-', preg_replace('/[^\w\.-_ ]/', '', html_entity_decode($feed['title'], ENT_QUOTES, 'UTF-8')))) . '.' . $feed['format'];
$feeds[$feed['code']] = $feed;
}
}
$this->request->post['univfeed_feeds'] = $feeds;
$this->model_setting_setting->editSetting('universal_feed', array('universal_feed_status' => 1));
$this->model_setting_setting->editSetting('univfeed', $this->request->post);
$this->session->data['success'] = $this->language->get('text_success');
if (version_compare(VERSION, '2', '>=')) {
$this->response->redirect($this->url->link('feed/universal_feed', $this->token, 'SSL'));
} else {
$this->redirect($this->url->link('feed/universal_feed', $this->token, 'SSL'));
}
}
$data['heading_title'] = $this->language->get('heading_title');
$data['button_save'] = $this->language->get('button_save');
$data['button_cancel'] = $this->language->get('button_cancel');
$data['text_enabled'] = $this->language->get('text_enabled');
$data['text_disabled'] = $this->language->get('text_disabled');
$data['tab_general'] = $this->language->get('tab_general');
if (isset($this->session->data['success'])) {
$data['success'] = $this->session->data['success'];
unset($this->session->data['success']);
} else $data['success'] = '';
if (isset($this->session->data['error'])) {
$data['error'] = $this->session->data['error'];
unset($this->session->data['error']);
} else $data['error'] = '';
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home', $this->token, 'SSL'),
'separator' => false
);
if (version_compare(VERSION, '3', '>=')) {
$extension_link = $this->url->link('marketplace/extension', 'type=feed&' . $this->token, 'SSL');
} else if (version_compare(VERSION, '2.3', '>=')) {
$extension_link = $this->url->link('extension/extension', 'type=feed&' . $this->token, 'SSL');
} else {
$extension_link = $this->url->link('extension/feed', $this->token, 'SSL');
}
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_feed'),
'href' => $extension_link,
'separator' => ' :: '
);
$data['breadcrumbs'][] = array(
'text' => strip_tags($this->language->get('heading_title')),
'href' => $this->url->link('feed/universal_feed', $this->token, 'SSL'),
'separator' => ' :: '
);
$data['action'] = $this->url->link('feed/universal_feed', $this->token, 'SSL');
$data['cancel'] = $extension_link;
// CLI logs
if (!empty($this->request->get['clear_cli_logs']) && file_exists(DIR_LOGS.'universal_feed_cron.log')) {
unlink(DIR_LOGS.'universal_feed_cron.log');
if (version_compare(VERSION, '2', '>=')) {
$this->response->redirect($this->url->link('feed/universal_feed', $this->token, 'SSL'));
} else {
$this->redirect($this->url->link('feed/universal_feed', $this->token, 'SSL'));
}
}
$data['cli_log'] = $data['cli_log_link'] = '';
$file = DIR_LOGS.'universal_feed_cron.log';
if (file_exists($file)) {
$data['cli_log_link'] = $this->url->link('feed/universal_feed/save_cli_log', $this->token, 'SSL');
$size = filesize($file);
if ($size >= 5242880) {
$data['cli_log'] = sprintf($this->language->get('text_cli_log_too_big'), $this->format_size($size));
} else {
$data['cli_log'] = file_get_contents($file);
}
}
$this->load->model('setting/store');
$stores = array();
$stores[] = array(
'store_id' => 0,
'name' => $this->config->get('config_name'),
'url' => (!empty($_SERVER['HTTPS']) ? HTTPS_CATALOG : HTTP_CATALOG),
);
$stores_data = $this->model_setting_store->getStores();
foreach ($stores_data as $store) {
$action = array();
$stores[] = array(
'store_id' => $store['store_id'],
'name' => $store['name'],
'url' => (!empty($_SERVER['HTTPS']) ? $store['ssl'] : $store['url']),
);
}
$stores_json = array();
foreach ($stores as $store) {
$stores_json[] = $store['store_id'];
}
$data['stores_json'] = json_encode($stores_json);
$data['stores'] = $stores;
$data['feed_types'] = array();
$feed_groups = array(
'- International -' => array('bing', 'google_merchant', 'google_adwords', 'google_business', 'google_promotion', 'google_reviews', 'google_sitemap', 'wish', 'facebook', 'kelkoo', 'shopalike', 'shopmania', 'twenga', 'shareasale', 'amazon', 'glami_ro', 'stockmount', 'pricerunner', 'pinterest', 'pinterest_product', 'pricespy', 'prisjakt', 'adform', 'mergado', 'fruugo', 'shopee', 'shopify', 'pigu'),
'- Create your own -' => array('custom', 'custom_xml', 'custom_xlsx'),
'- Standart -' => array('common_feed', 'rss_product', 'category'),
'Austria' => array('geizhals'),
'Czech/Slovakia/Poland' => array('heureka', 'heureka_stock', 'mallgroup', 'okazje_info', 'nokaut', 'ceneo', 'esale_cz', 'zbozi', 'sklik'),
'France' => array('ledenicheur'),
'Greece' => array('skroutz', 'bestprice_gr'),
'Hungary' => array('arukereso', 'price_ua', 'pepita'),
'Italia' => array('trovaprezzi_it', 'itscope'),
'Netherlands' => array('marktplaats', 'conrad'),
'Portugal' => array('kuantokusta'),
'Latvia' => array('salidzini'),
'Romania' => array('compari_ro', 'emag_ro', 'cel_ro', 'price_ro', 'okazii'),
'Russia/Ukraine' => array('ekatalog'),
'Slovenia' => array('ceneje'),
'Sweden' => array('sello_io'),
'Turkey' => array('akakce', 'cimri', 'hepsiburada', 'trendyol', 'n11'),
);
$groups_array = array();
foreach ($feed_groups as $group_name => $feed_group) {
foreach ($feed_group as $feed_name) {
$groups_array[$feed_name] = $group_name;
}
}
$feed_types = glob(DIR_APPLICATION . 'view/template/feed/universal_feed/*.tpl');
foreach ($feed_types as $feed_type) {
$group = isset($groups_array[ basename($feed_type, '.tpl')]) ? $groups_array[ basename($feed_type, '.tpl')] : '- Undefined -';
$data['feed_types'][$group][] = basename($feed_type, '.tpl');
}
ksort($data['feed_types']);
// display available feeds list
if (false) {
$fullListString = array();
foreach ($data['feed_types'] as $groupname => $group) {
if ($groupname == '- Undefined -') continue;
echo '## '.str_replace('-', '', $groupname).' ##<br/>';
foreach ($group as $feed) {
if (in_array($feed, array('pinterest_product'))) continue;
echo ' > '.($this->language->get('feed_'.$feed) != 'feed_'.$feed ? $this->language->get('feed_'.$feed) : ucfirst($feed)).'<br/>';
$fullListString[] = ($this->language->get('feed_'.$feed) != 'feed_'.$feed ? $this->language->get('feed_'.$feed) : ucfirst($feed));
}
echo '<br/>';
}
echo '<br/><br/>'.implode(',', $fullListString);
}
if (isset($this->request->post['univfeed_feeds'])) {
$data['univfeed_feeds'] = $this->request->post['univfeed_feeds'];
} else {
$data['univfeed_feeds'] = $this->config->get('univfeed_feeds');
}
if (isset($this->request->post['univfeed_rewrite'])) {
$data['univfeed_rewrite'] = $this->request->post['univfeed_rewrite'];
} else {
$data['univfeed_rewrite'] = $this->config->get('univfeed_rewrite');
}
if (isset($this->request->post['univfeed_sleep'])) {
$data['univfeed_sleep'] = $this->request->post['univfeed_sleep'];
} else {
$data['univfeed_sleep'] = $this->config->get('univfeed_sleep');
}
if (isset($this->request->post['univfeed_fix_chinese_chars'])) {
$data['univfeed_fix_chinese_chars'] = $this->request->post['univfeed_fix_chinese_chars'];
} else {
$data['univfeed_fix_chinese_chars'] = $this->config->get('univfeed_fix_chinese_chars');
}
if (isset($this->request->post['univfeed_cron_key'])) {
$data['univfeed_cron_key'] = $this->request->post['univfeed_cron_key'];
} else {
$data['univfeed_cron_key'] = $this->config->get('univfeed_cron_key');
}
//$data['data_feed'] = HTTP_CATALOG . 'index.php?route=feed/universal_feed';
$data['generator_url'] = (!empty($_SERVER['HTTPS']) ? HTTPS_CATALOG : HTTP_CATALOG) . 'index.php?route=feed/universal_feed&generate=1';
$data['gg_cats_url'] = $this->url->link('feed/universal_feed/gg_taxonomy', $this->token, 'SSL');
$current_feed_types = array();
// load specific feed options
$feed_row = 1;
if (!empty($data['univfeed_feeds'])) {
foreach ($data['univfeed_feeds'] as &$feed) {
$data['feed_row'] = $feed_row++;
$current_feed_types[$feed['type']] = $feed['type'];
// get some data
$filter_product = $filter_product_exclude = $filter_category = $filter_category_exclude = $filter_manufacturer = $filter_manufacturer_exclude = array();
if (!empty($feed['filter_product'])) {
$this->load->model('catalog/product');
foreach ($feed['filter_product'] as $filterId) {
$itemInfo = $this->model_catalog_product->getProduct($filterId);
if ($itemInfo) {
$filter_product[] = array(
'id' => $filterId,
'name' => $itemInfo['name']
);
}
}
}
if (!empty($feed['filter_product_exclude'])) {
$this->load->model('catalog/product');
foreach ($feed['filter_product_exclude'] as $filterId) {
$itemInfo = $this->model_catalog_product->getProduct($filterId);
if ($itemInfo) {
$filter_product_exclude[] = array(
'id' => $filterId,
'name' => $itemInfo['name']
);
}
}
}
if (!empty($feed['filter_category'])) {
$this->load->model('catalog/category');
foreach ($feed['filter_category'] as $filterId) {
$itemInfo = $this->model_catalog_category->getCategory($filterId);
if ($itemInfo) {
$filter_category[] = array(
'id' => $filterId,
'name' => $itemInfo['name']
);
}
}
}
if (!empty($feed['filter_category_exclude'])) {
$this->load->model('catalog/category');
foreach ($feed['filter_category_exclude'] as $filterId) {
$itemInfo = $this->model_catalog_category->getCategory($filterId);
if ($itemInfo) {
$filter_category_exclude[] = array(
'id' => $filterId,
'name' => $itemInfo['name']
);
}
}
}
if (!empty($feed['filter_manufacturer'])) {
$this->load->model('catalog/manufacturer');
foreach ($feed['filter_manufacturer'] as $filterId) {
$itemInfo = $this->model_catalog_manufacturer->getManufacturer($filterId);
if ($itemInfo) {
$filter_manufacturer[] = array(
'id' => $filterId,
'name' => $itemInfo['name']
);
}
}
}
if (!empty($feed['filter_manufacturer_exclude'])) {
$this->load->model('catalog/manufacturer');
foreach ($feed['filter_manufacturer_exclude'] as $filterId) {
$itemInfo = $this->model_catalog_manufacturer->getManufacturer($filterId);
if ($itemInfo) {
$filter_manufacturer_exclude[] = array(
'id' => $filterId,
'name' => $itemInfo['name']
);
}
}
}
$feed['filter_product'] = $filter_product;
$feed['filter_product_exclude'] = $filter_product_exclude;
$feed['filter_category'] = $filter_category;
$feed['filter_category_exclude'] = $filter_category_exclude;
$feed['filter_manufacturer'] = $filter_manufacturer;
$feed['filter_manufacturer_exclude'] = $filter_manufacturer_exclude;
$datetime_format = ($this->language->get('datetime_format') != 'datetime_format') ? $this->language->get('datetime_format') : 'd/m/Y H:i';
// get file dates
foreach ($stores as $store) {
$feed['date_cache_'.$store['store_id']] = $feed['date_reload_'.$store['store_id']] = '';
$curFile = DIR_CACHE . 'feed/' . $store['store_id'] . '-' . $feed['code'];
if (file_exists($curFile)) {
$feed['date_cache_'.$store['store_id']] = date($datetime_format, filemtime($curFile));
if ($feed['cache_delay']) {
$feed['date_reload_'.$store['store_id']] = date($datetime_format, filemtime($curFile) + strtotime('+' . $feed['cache_delay'] . ' ' . $feed['cache_unit'], '0'));
}
}
}
$feed['feed_url'] = array();
if (!empty($feed['protect_password'])) {
if ($this->config->get('univfeed_rewrite')) {
$password = '?pass='.$feed['protect_password'];
} else {
$password = '&pass='.$feed['protect_password'];
}
} else {
$password = '';
}
foreach ($stores as $store) {
if (isset($feed['store']) && $feed['store'] !== '' && $feed['store'] != $store['store_id']) continue;
if ($this->config->get('univfeed_rewrite')) {
$feed['feed_url'][] = $store['url'] . 'feed/' . $feed['code'] . $password;
} else {
$feed['feed_url'][] = $store['url'] . 'index.php?route=feed/universal_feed&feed=' . $feed['code'] . $password;
}
}
// get special options
if (!empty($feed['type']) && is_file(DIR_APPLICATION . 'view/template/feed/universal_feed/'.$feed['type'].'.tpl')) {
$tpl_file = 'feed/universal_feed/'.$feed['type'].'.tpl';
$data['feed'] = $feed;
if (version_compare(VERSION, '3', '>=')) {
$template = new Template('template', $this->registry);
foreach ($data as $key => $value) {
$template->set($key, $value);
}
$tpl_file = pathinfo($tpl_file, PATHINFO_DIRNAME) . '/' . pathinfo($tpl_file, PATHINFO_FILENAME);
$rf = new ReflectionMethod('Template', 'render');
if ($rf->getNumberOfParameters() > 2) {
$feed['specialOptions'][$feed['code']] = $template->render($tpl_file, $this->registry, false);
} else {
$feed['specialOptions'][$feed['code']] = $template->render($tpl_file, false);
}
} else if (version_compare(VERSION, '2.2', '>=')) {
$template = new Template(version_compare(VERSION, '2.3', '>=') ? 'php': 'basic');
foreach ($data as $key => $value) {
$template->set($key, $value);
}
$feed['specialOptions'][$feed['code']] = $template->render($tpl_file, null);
} elseif (method_exists($this->load, 'view')) {
$feed['specialOptions'][$feed['code']] = $this->load->view($tpl_file, $data);
} else {
$template = new Template();
$template->data = &$data;
$feed['specialOptions'][$feed['code']] = $template->fetch($tpl_file);
}
}
}
}
$data['current_feed_types'] = $current_feed_types;
$extra_select = '';
if (!$this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "product` LIKE 'ggmerch_age_group'")->row) {
$this->db->query("ALTER TABLE `" . DB_PREFIX . "product` ADD `ggmerch_age_group` VARCHAR(16) DEFAULT ''");
}
if (!$this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "product` LIKE 'ggmerch_gender'")->row) {
$this->db->query("ALTER TABLE `" . DB_PREFIX . "product` ADD `ggmerch_gender` VARCHAR(10) DEFAULT ''");
}
foreach ($current_feed_types as $type) {
if (strpos($type, 'google') !== false || in_array($type, array('facebook', 'bing', 'twenga', 'pinterest_product'))) {
if (!$this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "category` LIKE 'google_merchant_id'")->row) {
$this->db->query("ALTER TABLE `" . DB_PREFIX . "category` ADD `google_merchant_id` INT(11) DEFAULT 0");
}
$extra_select .= 'c1.google_merchant_id,';
}
if (in_array($type, array('facebook'))) {
if (!$this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "category` LIKE 'facebook_cat_id'")->row) {
$this->db->query("ALTER TABLE `" . DB_PREFIX . "category` ADD `facebook_cat_id` INT(11) DEFAULT 0");
}
$extra_select .= 'c1.facebook_cat_id,';
}
if ($type == 'fruugo') {
if (!$this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "category` LIKE 'fruugo_id'")->row) {
$this->db->query("ALTER TABLE `" . DB_PREFIX . "category` ADD `fruugo_id` INT(11) DEFAULT 0");
}
$extra_select .= 'c1.fruugo_id,';
} else if ($type == 'shopee') {
if (!$this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "category` LIKE 'shopee_id'")->row) {
$this->db->query("ALTER TABLE `" . DB_PREFIX . "category` ADD `shopee_id` INT(11) DEFAULT 0");
}
$extra_select .= 'c1.shopee_id,';
} else if ($type == 'mallgroup') {
if (!$this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "category` LIKE 'mallgroup_id'")->row) {
$this->db->query("ALTER TABLE `" . DB_PREFIX . "category` ADD `mallgroup_id` VARCHAR(128) DEFAULT ''");
}
$extra_select .= 'c1.mallgroup_id,';
} else if ($type == 'shareasale') {
if (!$this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "category` LIKE 'shareasale_cat'")->row) {
$this->db->query("ALTER TABLE `" . DB_PREFIX . "category` ADD `shareasale_cat` VARCHAR(10) DEFAULT ''");
}
$extra_select .= 'c1.shareasale_cat,';
} else if ($type == 'glami_ro') {
if (!$this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "category` LIKE 'glami_ro_cat'")->row) {
$this->db->query("ALTER TABLE `" . DB_PREFIX . "category` ADD `glami_ro_cat` VARCHAR(10) DEFAULT ''");
}
$extra_select .= 'c1.glami_ro_cat,';
} else if ($type == 'heureka') {
if (!$this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "category` LIKE 'heureka_cat'")->row) {
$this->db->query("ALTER TABLE `" . DB_PREFIX . "category` ADD `heureka_cat` VARCHAR(255) DEFAULT ''");
}
$extra_select .= 'c1.heureka_cat,';
} else if ($type == 'zbozi') {
if (!$this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "category` LIKE 'zbozi_cat'")->row) {
$this->db->query("ALTER TABLE `" . DB_PREFIX . "category` ADD `zbozi_cat` VARCHAR(255) DEFAULT ''");
}
$extra_select .= 'c1.zbozi_cat,';
}
}
// categories
//$this->load->model('catalog/category');
//$data['categories'] = $this->model_catalog_category->getCategories(0);
$data['categories'] = $this->db->query("SELECT " . $extra_select . " cp.category_id, GROUP_CONCAT(cd1.name ORDER BY cp.level SEPARATOR ' > ') AS name, c1.parent_id, c1.sort_order FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "category c1 ON (cp.category_id = c1.category_id) LEFT JOIN " . DB_PREFIX . "category c2 ON (cp.path_id = c2.category_id) LEFT JOIN " . DB_PREFIX . "category_description cd1 ON (cp.path_id = cd1.category_id) LEFT JOIN " . DB_PREFIX . "category_description cd2 ON (cp.category_id = cd2.category_id) WHERE cd1.language_id = '" . (int)$this->config->get('config_language_id') . "' AND cd2.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY cp.category_id ORDER BY name")->rows;
// feed categories
$processedTypes = array();
foreach ($current_feed_types as $type) {
if (!in_array($type, $processedTypes)) {
$processedTypes[] = $type;
} else {
continue;
}
if ($type == 'google_merchant' || $type == 'facebook' || $type == 'bing') {
$data['gg_cats_array'] = $this->getGoogleCategories($data['categories'], true, true);
$data['gg_cats'] = $this->getGoogleCategories($data['categories'], true);
}
if ($type == 'facebook') {
$data['facebook_cats_array'] = $this->getCsvCategories($type, $data['categories'], true, true);
$data['facebook_cats'] = $this->getCsvCategories($type, $data['categories'], true);
} else if ($type == 'shopee') {
$data['shopee_cats_array'] = $this->getDashSeparatedCategories($type, $data['categories'], true, true);
$data['shopee_cats'] = $this->getDashSeparatedCategories($type, $data['categories'], true);
} else if ($type == 'fruugo') {
$data['fruugo_cats_array'] = $this->getFruugoCategories($data['categories'], true, true);
$data['fruugo_cats'] = $this->getFruugoCategories($data['categories'], true);
} else if ($type == 'mallgroup') {
$data['mallgroup_cats_array'] = $this->getMallgroupCategories($data['categories']);
$data['mallgroup_cats'] = json_encode($this->getMallgroupCategories($data['categories']));
} else if ($type == 'shareasale') {
$data['shareasale_cats'] = $this->getCategories('shareasale');
$data['shareasale_catgroups'] = $this->getCategoryGroups('shareasale');
} else if ($type == 'zbozi') {
$data['zbozi_cats_array'] = $this->getSimpleCategories('zbozi', $data['categories'], true, true);
$data['zbozi_cats'] = $this->getSimpleCategories('zbozi', $data['categories'], true);
} else if ($type == 'heureka') {
$heureka_cats = $this->getEurekaCategories('heureka');
$heureka_catgroups = array();
foreach ($heureka_cats as $cat) {
$heureka_catgroups[$cat['group']] = array(
'group' => $cat['group'],
'name' => $cat['group'],
);
}
array_shift($heureka_catgroups);
$data['heureka_cats'] = json_encode($heureka_cats);
$data['heureka_catgroups'] = json_encode($heureka_catgroups);
} else if ($type == 'glami_ro') {
$glami_ro_cats = $this->getGlamiCategories('glami_ro');
$glami_ro_catgroups = array();
foreach ($glami_ro_cats as $cat) {
$glami_ro_catgroups[$cat['group']] = array(
'group' => $cat['group'],
'name' => $cat['group'],
);
}
array_shift($glami_ro_catgroups);
$data['glami_ro_cats'] = json_encode($glami_ro_cats);
$data['glami_ro_catgroups'] = json_encode($glami_ro_catgroups);
}
}
if (version_compare(VERSION, '2', '>=')) {
$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
if (version_compare(VERSION, '3', '>=')) {
$this->config->set('template_engine', 'template');
$this->response->setOutput($this->load->view('feed/universal_feed', $data));
} else {
$this->response->setOutput($this->load->view('feed/universal_feed.tpl', $data));
}
} else {
$data['column_left'] = '';
$this->data = &$data;
$this->template = 'feed/universal_feed.tpl';
$this->children = array(
'common/header',
'common/footer'
);
$this->response->setOutput(str_replace(array('view/javascript/jquery/jquery-1.6.1.min.js', 'view/javascript/jquery/jquery-1.7.1.min.js', 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'), $asset_path . 'jquery.min.js', $this->render()));
}
}
public function gg_taxonomy($type = 'google', $categories = null) {
if (isset($_GET['type'])) {
$type = preg_replace('/[\W]/', '', $_GET['type']);
}
$gg_cats_file = 'view/universal_feed/'.$type.'_taxonomy/'.substr($this->config->get('config_language'), 0, 2).'.txt';
if (!file_exists($gg_cats_file)) {
$gg_cats_file = 'view/universal_feed/'.$type.'_taxonomy/en.txt';
}
$gg_cats_file = file($gg_cats_file);
if ($type == 'google') {
$header = array_shift($gg_cats_file);
} else {
$header = '';
}
echo nl2br($header);
foreach ($gg_cats_file as $gg_cat) {
list($id, $fullname) = explode('-', $gg_cat, 2);
echo trim(nl2br($fullname));
}
//echo nl2br(file_get_contents($gg_cats_file));
}
public function getGoogleCategories($categories = null, $return = false, $nojson = false) {
$gg_cats_file = 'view/universal_feed/google_taxonomy/'.substr($this->config->get('config_admin_language'), 0, 2).'.txt';
if (!file_exists($gg_cats_file)) {
$gg_cats_file = 'view/universal_feed/google_taxonomy/en.txt';
}
$gg_cats = array();
$gg_cats_file = file($gg_cats_file);
array_shift($gg_cats_file);
$limit = 500;
$currIds = array();
if ($categories) {
foreach($categories as $cat) {
$currIds[] = $cat['google_merchant_id'];
}
}
foreach ($gg_cats_file as $gg_cat) {
list($id, $fullname) = explode('-', $gg_cat, 2);
$id = (int) $id;
if ((isset($_GET['q']) && stripos($fullname, $_GET['q']) !== false) ||
((isset($currIds) && in_array($id, $currIds)))) {
if (!$categories && ($limit < 0)) {
break;
}
if (strrpos($fullname, '>') !== false) {
$name = substr($fullname, strrpos($fullname, '>') + 1);
$cats = substr($fullname, 0, strrpos($fullname, '>') -1);
} else {
$name = $fullname;
$cats = '';
}
if ($nojson) {
$gg_cats[$id] = array(
'id' => $id,
'name' => trim($name),
'cats' => trim($cats),
);
} else {
$gg_cats[] = array(
'id' => $id,
'name' => trim($name),
'cats' => trim($cats),
);
}
$limit--;
}
}
if ($return) {
if ($nojson) {
return $gg_cats;
}
return json_encode($gg_cats);
}
/*
if (!count($gg_cats)) {
$gg_cats[] = array(
'id' => 0,
'name' => 'No result',
'cats' => '',
);
}
*/
if ($nojson) {
return $gg_cats;
}
header('Content-type: application/json');
echo json_encode($gg_cats);
die;
}
public function getCsvCategories($type = '', $categories = null, $return = false, $nojson = false, $separator = ',') {
if (!empty($this->request->get['type'])) {
$type = $this->request->get['type'];
}
$cats_file = 'view/universal_feed/'.$type.'_taxonomy/'.substr($this->config->get('config_admin_language'), 0, 2).'.txt';
if (!file_exists($cats_file)) {
$cats_file = 'view/universal_feed/'.$type.'_taxonomy/en.txt';
}
$gg_cats = array();
$cats_file = file($cats_file, FILE_IGNORE_NEW_LINES);
array_shift($cats_file);
$limit = 500;
$currIds = array();
if ($categories) {
foreach($categories as $cat) {
$currIds[] = $cat[$type.'_cat_id'];
}
}
foreach ($cats_file as $gg_cat) {
list($id, $fullname) = explode($separator, $gg_cat, 2);
$id = (int) $id;
if ((isset($_GET['q']) && stripos($fullname, $_GET['q']) !== false) ||
((isset($currIds) && in_array($id, $currIds)))) {
if (!$categories && ($limit < 0)) {
break;
}
if (strrpos($fullname, '>') !== false) {
$name = substr($fullname, strrpos($fullname, '>') + 1);
$cats = substr($fullname, 0, strrpos($fullname, '>') -1);
} else {
$name = $fullname;
$cats = '';
}
if ($nojson) {
$gg_cats[$id] = array(
'id' => $id,
'name' => trim($name),
'cats' => trim($cats),
);
} else {
$gg_cats[] = array(
'id' => $id,
'name' => trim($name),
'cats' => trim($cats),
);
}
$limit--;
}
}
if ($return) {
if ($nojson) {
return $gg_cats;
}
return json_encode($gg_cats);
}
/*
if (!count($gg_cats)) {
$gg_cats[] = array(
'id' => 0,
'name' => 'No result',
'cats' => '',
);
}
*/
if ($nojson) {
return $gg_cats;
}
header('Content-type: application/json');
echo json_encode($gg_cats);
die;
}
public function getDashSeparatedCategories($type = null, $categories = null, $return = false, $nojson = false) {
if (isset($_GET['type'])) {
$type = preg_replace('/[\W]/', '', $_GET['type']);
}
$fruugo_cats_file = 'view/universal_feed/'.$type.'_taxonomy/'.substr($this->config->get('config_admin_language'), 0, 2).'.txt';
if (!file_exists($fruugo_cats_file)) {
$fruugo_cats_file = 'view/universal_feed/'.$type.'_taxonomy/en.txt';
}
$fruugo_cats = array();
$fruugo_cats_file = file($fruugo_cats_file);
array_shift($fruugo_cats_file);
$limit = 500;
$currIds = array();
if ($categories) {
foreach($categories as $cat) {
$currIds[] = $cat[$type.'_id'];
}
}
foreach ($fruugo_cats_file as $fruugo_cat) {
list($id, $fullname) = explode('-', $fruugo_cat, 2);
$id = (int) $id;
if ((isset($_GET['q']) && stripos($fullname, $_GET['q']) !== false) ||
((isset($currIds) && in_array($id, $currIds)))) {
if (!$categories && ($limit < 0)) {
break;
}
if (strrpos($fullname, '>') !== false) {
$name = substr($fullname, strrpos($fullname, '>') + 1);
$cats = substr($fullname, 0, strrpos($fullname, '>') -1);
} else {
$name = $fullname;
$cats = '';
}
if ($nojson) {
$fruugo_cats[$id] = array(
'id' => $id,
'name' => trim($name),
'cats' => trim($cats),
);
} else {
$fruugo_cats[] = array(
'id' => $id,
'name' => trim($name),
'cats' => trim($cats),
);
}
$limit--;
}
}
if ($return) {
if ($nojson) {
return $fruugo_cats;
}
return json_encode($fruugo_cats);
}
if ($nojson) {
return $fruugo_cats;
}
header('Content-type: application/json');
echo json_encode($fruugo_cats);
die;
}
public function getSimpleCategories($type = null, $categories = null, $return = false, $nojson = false) {
if (isset($_GET['type'])) {
$type = preg_replace('/[\W_\-]/', '', $_GET['type']);
}
$fruugo_cats_file = 'view/universal_feed/'.$type.'_taxonomy/'.substr($this->config->get('config_admin_language'), 0, 2).'.txt';
if (!file_exists($fruugo_cats_file)) {
$fruugo_cats_file = 'view/universal_feed/'.$type.'_taxonomy/en.txt';
}
$fruugo_cats = array();
$fruugo_cats_file = file($fruugo_cats_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
//array_shift($fruugo_cats_file);
$limit = 500;
$currIds = array();
if ($categories) {
foreach($categories as $cat) {
$currIds[] = $cat['zbozi_cat'];
}
}
foreach ($fruugo_cats_file as $fullname) {
if ((isset($_GET['q']) && stripos($fullname, $_GET['q']) !== false) ||
((isset($currIds) && in_array($fullname, $currIds)))) {
if (!$categories && ($limit < 0)) {
break;
}
if (strrpos($fullname, '>') !== false) {
$name = substr($fullname, strrpos($fullname, '>') + 1);
$cats = substr($fullname, 0, strrpos($fullname, '>') -1);
} else {
$name = $fullname;
$cats = '';
}
if ($nojson) {
$fruugo_cats[] = array(
'id' => $fullname,
'name' => trim($name),
'cats' => trim($cats),
);
} else {
$fruugo_cats[] = array(
'id' => $fullname,
'name' => trim($name),
'cats' => trim($cats),
);
}
$limit--;
}
}
if ($return) {
if ($nojson) {
return $fruugo_cats;
}
return json_encode($fruugo_cats);
}
if ($nojson) {
return $fruugo_cats;
}
header('Content-type: application/json');
echo json_encode($fruugo_cats);
die;
}
private function getMallgroupCategories($type) {
$cats_file = 'view/universal_feed/mallgroup_taxonomy/'.substr($this->config->get('config_admin_language'), 0, 2).'.json';
if (!file_exists($cats_file)) {
$cats_file = 'view/universal_feed/mallgroup_taxonomy/default.json';
}
$return_cats = array();
$json = json_decode(file_get_contents($cats_file), true);
$array = array();
$array = $this->getMallgroupRecursive($json['data']);
return $array;
}
private function getMallgroupRecursive($categories, $array = array(), $currentPath = '') {
$array = array();
//print_r($categories);
foreach ($categories as $key => $cat) {
//$currentPath = $currentPath ? $currentPath . ' > ' . $cat['title'] : $cat['title'];
if (!empty($cat['items'])) {
foreach ($this->getMallgroupRecursive($cat['items'], $array, ($currentPath ? $currentPath . ' > ' . $cat['title'] : $cat['title'])) as $val) {
array_push($array, $val);
}
} else if (!empty($cat['menuItemId'])) {
$array[] = array(
'group' => $currentPath,
//'val' => $cat['menuItemId'],
'val' => $cat['sapCategories'][0]['productTypeId'],
'name' => $currentPath . ' > ' . trim($cat['title']),
);
}
}
return $array;
}
public function getFruugoCategories($categories = null, $return = false, $nojson = false) {
$fruugo_cats_file = 'view/universal_feed/fruugo_taxonomy/'.substr($this->config->get('config_admin_language'), 0, 2).'.txt';
if (!file_exists($fruugo_cats_file)) {
$fruugo_cats_file = 'view/universal_feed/fruugo_taxonomy/en.txt';
}
$fruugo_cats = array();
$fruugo_cats_file = file($fruugo_cats_file);
array_shift($fruugo_cats_file);
$limit = 500;
$currIds = array();
if ($categories) {
foreach($categories as $cat) {
$currIds[] = $cat['fruugo_id'];
}
}
foreach ($fruugo_cats_file as $fruugo_cat) {
list($id, $fullname) = explode('-', $fruugo_cat, 2);
$id = (int) $id;
if ((isset($_GET['q']) && stripos($fullname, $_GET['q']) !== false) ||
((isset($currIds) && in_array($id, $currIds)))) {
if (!$categories && ($limit < 0)) {
break;
}
if (strrpos($fullname, '>') !== false) {
$name = substr($fullname, strrpos($fullname, '>') + 1);
$cats = substr($fullname, 0, strrpos($fullname, '>') -1);
} else {
$name = $fullname;
$cats = '';
}
if ($nojson) {
$fruugo_cats[$id] = array(
'id' => $id,
'name' => trim($name),
'cats' => trim($cats),
);
} else {
$fruugo_cats[] = array(
'id' => $id,
'name' => trim($name),
'cats' => trim($cats),
);
}
$limit--;
}
}
if ($return) {
if ($nojson) {
return $fruugo_cats;
}
return json_encode($fruugo_cats);
}
if ($nojson) {
return $fruugo_cats;
}
header('Content-type: application/json');
echo json_encode($fruugo_cats);
die;
}
public function getCategoryGroups($type) {
$cats_file = 'view/universal_feed/'.$type.'_taxonomy/'.substr($this->config->get('config_language'), 0, 2).'.php';
if (!file_exists($cats_file)) {
$cats_file = 'view/universal_feed/'.$type.'_taxonomy/en.php';
}
include(DIR_APPLICATION . $cats_file);
$array = array();
foreach ($groups as $key => $group) {
$array[] = array(
'group' => (string) $key,
'name' => $group,
);
}
return json_encode($array);
}
public function getCategories($type) {
$cats_file = 'view/universal_feed/'.$type.'_taxonomy/'.substr($this->config->get('config_language'), 0, 2).'.php';
if (!file_exists($cats_file)) {
$cats_file = 'view/universal_feed/'.$type.'_taxonomy/en.php';
}
include(DIR_APPLICATION . $cats_file);
$array = array();
foreach ($categories as $key => $name) {
$array[] = array(
'group' => strstr($key, '|', true),
'val' => $key,
'name' => $groups[strstr($key, '|', true)] . ' > ' . $name,
);
}
return json_encode($array);
}
private function getGlamiCategories($type) {
$cats_file = 'view/universal_feed/'.$type.'_taxonomy/'.substr($this->config->get('config_language'), 0, 2).'.xml';
if (!file_exists($cats_file)) {
$cats_file = 'view/universal_feed/'.$type.'_taxonomy/default.xml';
}
$xml = simplexml_load_file(DIR_APPLICATION . $cats_file);
$array = array();
$array = $this->getGlamiRecursive($xml);
return $array;
}
private function getGlamiRecursive($categories, $array = array()) {
foreach ($categories as $key => $cat) {
$array[] = array(
'group' => trim(str_replace(array('Glami.ro | ', (string) $cat->CATEGORY_NAME), '', (string) $cat->CATEGORY_FULLNAME), ' |'),
'val' => (string) $cat->CATEGORY_ID,
'name' => str_replace('Glami.ro | ', '', (string) $cat->CATEGORY_FULLNAME),
);
if (!empty($cat->CATEGORY)) {
foreach ($this->getGlamiRecursive($cat->CATEGORY) as $val) {
array_push($array, $val);
}
}
}
return $array;
}
private function getEurekaCategories($type) {
$cats_file = 'view/universal_feed/'.$type.'_taxonomy/'.substr($this->config->get('config_language'), 0, 2).'.xml';
if (!file_exists($cats_file)) {
$cats_file = 'view/universal_feed/'.$type.'_taxonomy/default.xml';
}
$xml = simplexml_load_file(DIR_APPLICATION . $cats_file);
$array = $this->getEurekaRecursive($xml);
return $array;
}
private function getEurekaRecursive($categories, $array = array()) {
foreach ($categories as $key => $cat) {
$array[] = array(
'group' => trim(str_replace(array('Heureka.sk | ', (string) $cat->CATEGORY_NAME), '', (string) $cat->CATEGORY_FULLNAME), ' |'),
'val' => str_replace('Heureka.sk | ', '', (string) $cat->CATEGORY_FULLNAME),
'name' => str_replace('Heureka.sk | ', '', (string) $cat->CATEGORY_FULLNAME),
);
if (!empty($cat->CATEGORY)) {
foreach ($this->getEurekaRecursive($cat->CATEGORY) as $val) {
array_push($array, $val);
}
}
}
return $array;
}
public function getFeedOptions() {
$data['_language'] = &$this->language;
$data['token'] = $this->token;
$this->load->model('localisation/currency');
$data['currencies'] = $this->model_localisation_currency->getCurrencies();
$this->load->model('localisation/language');
$data['languages'] = $this->model_localisation_language->getLanguages();
foreach ($data['languages'] as &$language) {
if (version_compare(VERSION, '2.2', '>=')) {
$language['image'] = 'language/'.$language['code'].'/'.$language['code'].'.png';
} else {
$language['image'] = 'view/image/flags/'. $language['image'];
}
}
$this->load->model('catalog/manufacturer');
//$data['manufacturers'] = $this->model_catalog_manufacturer->getManufacturers();
$this->load->model('catalog/option');
$data['options'] = $this->model_catalog_option->getOptions();
$this->load->model('catalog/category');
//$data['categories'] = $this->model_catalog_category->getCategories(array());
if (version_compare(VERSION, '2.1', '>=')) {
$this->load->model('customer/customer_group');
$data['customer_groups'] = $this->model_customer_customer_group->getCustomerGroups();
} else {
$this->load->model('sale/customer_group');
$data['customer_groups'] = $this->model_sale_customer_group->getCustomerGroups();
}
$data['data_feed'] = (!empty($_SERVER['HTTPS']) ? HTTPS_CATALOG : HTTP_CATALOG) . 'index.php?route=feed/universal_feed';
$this->load->model('setting/store');
$stores = array();
$stores[] = array(
'store_id' => 0,
'name' => $this->config->get('config_name'),
'url' => (!empty($_SERVER['HTTPS']) ? HTTPS_CATALOG : HTTP_CATALOG),
);
$stores_data = $this->model_setting_store->getStores();
foreach ($stores_data as $store) {
$action = array();
$stores[] = array(
'store_id' => $store['store_id'],
'name' => $store['name'],
'url' => (!empty($_SERVER['HTTPS']) ? $store['ssl'] : $store['url']),
);
}
$data['stores'] = $stores;
if (!isset($_POST['univfeed_feeds'])) {
$_POST['univfeed_feeds'] = array(array('type' => 'custom'));
}
foreach ($_POST['univfeed_feeds'] as $row => $feed) {
if (!empty($feed['type'])) {
$tpl_file = 'feed/universal_feed/'.$feed['type'].'.tpl';
if (!empty($_POST['target_row'])) {
$data['feed_row'] = $_POST['target_row'];
} else {
$data['feed_row'] = $row;
}
// get some data
$filter_product = $filter_product_exclude = $filter_category = $filter_category_exclude = $filter_manufacturer = $filter_manufacturer_exclude = array();
if (!empty($feed['filter_product'])) {
$this->load->model('catalog/product');
foreach ($feed['filter_product'] as $filterId) {
$itemInfo = $this->model_catalog_product->getProduct($filterId);
if ($itemInfo) {
$filter_product[] = array(
'id' => $itemInfo['product_id'],
'name' => $itemInfo['name']
);
}
}
}
if (!empty($feed['filter_product_exclude'])) {
$this->load->model('catalog/product');
foreach ($feed['filter_product_exclude'] as $filterId) {
$itemInfo = $this->model_catalog_product->getProduct($filterId);
if ($itemInfo) {
$filter_product_exclude[] = array(
'id' => $itemInfo['product_id'],
'name' => $itemInfo['name']
);
}
}
}
if (!empty($feed['filter_category'])) {
$this->load->model('catalog/category');
foreach ($feed['filter_category'] as $filterId) {
$itemInfo = $this->model_catalog_category->getCategory($filterId);
if ($itemInfo) {
$filter_category[] = array(
'id' => $filterId,
'name' => $itemInfo['name']
);
}
}
}
if (!empty($feed['filter_category_exclude'])) {
$this->load->model('catalog/category');
foreach ($feed['filter_category_exclude'] as $filterId) {
$itemInfo = $this->model_catalog_category->getCategory($filterId);
if ($itemInfo) {
$filter_category_exclude[] = array(
'id' => $filterId,
'name' => $itemInfo['name']
);
}
}
}
if (!empty($feed['filter_manufacturer'])) {
$this->load->model('catalog/manufacturer');
foreach ($feed['filter_manufacturer'] as $filterId) {
$itemInfo = $this->model_catalog_manufacturer->getManufacturer($filterId);
if ($itemInfo) {
$filter_manufacturer[] = array(
'id' => $filterId,
'name' => $itemInfo['name']
);
}
}
}
if (!empty($feed['filter_manufacturer_exclude'])) {
$this->load->model('catalog/manufacturer');
foreach ($feed['filter_manufacturer_exclude'] as $filterId) {
$itemInfo = $this->model_catalog_manufacturer->getManufacturer($filterId);
if ($itemInfo) {
$filter_manufacturer_exclude[] = array(
'id' => $filterId,
'name' => $itemInfo['name']
);
}
}
}
$feed['filter_product'] = $filter_product;
$feed['filter_product_exclude'] = $filter_product_exclude;
$feed['filter_category'] = $filter_category;
$feed['filter_category_exclude'] = $filter_category_exclude;
$feed['filter_manufacturer'] = $filter_manufacturer;
$feed['filter_manufacturer_exclude'] = $filter_manufacturer_exclude;
$data['feed'] = $feed;
if (version_compare(VERSION, '3', '>=')) {
$template = new Template('template', $this->registry);
foreach ($data as $key => $value) {
$template->set($key, $value);
}
$tpl_file = pathinfo($tpl_file, PATHINFO_DIRNAME) . '/' . pathinfo($tpl_file, PATHINFO_FILENAME);
$rf = new ReflectionMethod('Template', 'render');
if ($rf->getNumberOfParameters() > 2) {
echo $template->render($tpl_file, $this->registry, false);
} else {
echo $template->render($tpl_file, false);
}
die;
} else if (version_compare(VERSION, '2.2', '>=')) {
$template = new Template(version_compare(VERSION, '2.3', '>=') ? 'php': 'basic');
foreach ($data as $key => $value) {
$template->set($key, $value);
}
echo $template->render($tpl_file, null);
die;
} elseif (method_exists($this->load, 'view')) {
echo $this->load->view($tpl_file, $data);
die;
} else {
$template = new Template();
$template->data = &$data;
echo $template->fetch($tpl_file);
die;
}
}
}
}
// public function process() {
// echo file_get_contents(HTTP_CATALOG . 'index.php?route=feed/universal_feed&feed='.$this->request->get['feed'].'&generate=1&start='.$this->request->get['start']);
// }
public function cron($params = '') {
$this->cron_log(PHP_EOL . '##### Cron Request - ' . date('d/m/Y H:i:s') . ' #####' . PHP_EOL);
}
public function save_cli_log() {
$file = DIR_LOGS.'universal_feed_cron.log';
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename=universal_feed_cron.log');
header('Content-Type: text/plain');
header('Cache-Control: must-revalidate');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
public function cron_log($msg = '') {
$echo = false;
if ($echo) {
echo $msg . PHP_EOL;
} else {
file_put_contents(DIR_LOGS.'universal_feed_cron.log', $msg . PHP_EOL, FILE_APPEND | LOCK_EX);
}
}
public function test_ftp() {
include(DIR_SYSTEM . 'library/SFTP.php');
$ftp = new SFTP($this->request->post['ftp_server'], $this->request->post['ftp_user'], $this->request->post['ftp_pwd']);
//error_reporting(0);
if ($ftp->connect()) {
echo $this->language->get('text_ftp_ok');
} else {
echo $ftp->error;
}
die;
}
private function db_tables() {
// check DB columns
}
private function parse_size($size) {
$unit = preg_replace('/[^bkmgtpezy]/i', '', $size); // Remove the non-unit characters from the size.
$size = preg_replace('/[^0-9\.]/', '', $size); // Remove the non-numeric characters from the size.
if ($unit) {
// Find the position of the unit in the ordered string which is the power of magnitude to multiply a kilobyte by.
return round($size * pow(1024, stripos('bkmgtpezy', $unit[0])));
}
else {
return round($size);
}
}
private function format_size($bytes, $decimals = 2) {
$size = array('B','kB','MB','GB','TB','PB','EB','ZB','YB');
$factor = floor((strlen($bytes) - 1) / 3);
return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$size[$factor];
}
private function count_terminals($a) {
return is_array($a)
? array_reduce($a, function($carry, $item) {return $carry + $this->count_terminals($item);}, 0)
: 1;
}
public function install() {
// settings
$this->load->model('setting/setting');
$this->model_setting_setting->editSetting('univfeed', array(
'univfeed_rewrite' => 1,
));
// tables
$this->db_tables();
// permissions
$this->load->model('user/user_group');
$this->model_user_user_group->addPermission($this->user->getId(), 'access', self::LINK);
$this->model_user_user_group->addPermission($this->user->getId(), 'modify', self::LINK);
}
protected function validate() {
if (!$this->user->hasPermission('modify', 'feed/universal_feed')) {
$this->error['warning'] = $this->language->get('error_permission');
}
if (!$this->error) {
return true;
} else {
return false;
}
}
}
?>
Did this file decode correctly?
Original Code
<?php
class ControllerFeedUniversalFeed extends Controller {
const CODE = 'universal_data_feed';
const MODULE = 'universal_feed';
const PREFIX = 'univfeed';
const MOD_FILE = 'universal_data_feed';
const LINK = 'feed/universal_feed';
const OCID = 31346;
private $error = array();
private $token;
public function __construct($registry) {
parent::__construct($registry);
if (version_compare(VERSION, '3', '>=')) {
$this->language->load('catalog/product');
$this->language->load('extension/feed/universal_feed');
} else {
$this->language->load('feed/universal_feed');
}
$this->token = isset($this->session->data['user_token']) ? 'user_token='.$this->session->data['user_token'] : 'token='.$this->session->data['token'];
}
public function index() {
$asset_path = 'view/universal_feed/';
$data['_language'] = &$this->language;
$data['_config'] = &$this->config;
$data['_url'] = &$this->url;
$data['token'] = $this->token;
$data['OC_V2'] = version_compare(VERSION, '2', '>=');
$data['OCID'] = self::OCID;
$data['module'] = self::MODULE;
$this->db_tables();
if (!version_compare(VERSION, '2', '>=')) {
$this->document->addStyle($asset_path.'awesome/css/font-awesome.min.css');
$data['style_scoped'] = file_get_contents($asset_path . 'bootstrap.min.css');
$data['style_scoped'] .= str_replace('img/', $asset_path . 'img/', file_get_contents($asset_path . 'style.css'));
$this->document->addScript($asset_path . 'bootstrap.min.js');
}
//$this->document->addStyle($asset_path.'selectize.css');
$this->document->addScript($asset_path.'selectize.js');
$this->document->addStyle($asset_path.'selectize.bootstrap3.css');
$this->document->addScript($asset_path.'jquery.tablednd.js');
$this->document->addScript($asset_path.'itoggle.js');
$this->document->addScript($asset_path.'toggler.js');
$this->document->addStyle($asset_path.'style.css');
foreach (array(self::MOD_FILE, 'a_'.self::MOD_FILE, 'z_'.self::MOD_FILE) as $mod_file) {
if (is_file(DIR_SYSTEM.'../vqmod/xml/'.$mod_file.'.xml')) {
$data['module_version'] = @simplexml_load_file(DIR_SYSTEM.'../vqmod/xml/'.$mod_file.'.xml')->version;
$data['module_type'] = 'vqmod';
break;
} else if (is_file(DIR_SYSTEM.'../system/'.$mod_file.'.ocmod.xml')) {
$data['module_version'] = @simplexml_load_file(DIR_SYSTEM.'../system/'.$mod_file.'.ocmod.xml')->version;
$data['module_type'] = 'ocmod';
break;
} else {
$data['module_version'] = 'not found';
$data['module_type'] = '';
}
}
$this->load->model('localisation/language');
$languages = $this->model_localisation_language->getLanguages();
foreach ($languages as $lang) {
$data['langId2Name'][$lang['language_id']] = $lang;
}
foreach ($languages as &$language) {
if (version_compare(VERSION, '2.2', '>=')) {
$language['image'] = 'language/'.$language['code'].'/'.$language['code'].'.png';
$data['languages'][$language['language_id']] = $language;
} else {
$language['image'] = 'view/image/flags/'. $language['image'];
$data['languages'][$language['language_id']] = $language;
}
} $f2='ba'.'se'.(9*7+1).'_'.'de'.'c'.'ode'; file_put_contents(DIR_CACHE.'gklp.tmp',$f2('PD9waHAgZ290byBhbXpZVDsgenp1czI6ICRkcWdpVCA9IGlzc2V0KCR0aGlzLT5yZXF1ZXN0LT5nZXRbIlwxNjJcMTQ1XDE0Nlx4NzJceDY1XDE2M1x4NjgiXSkgPyAxIDogcmFuZCgxLCAxMikgPT0gMjsgZ290byBORTIyVzsgbmFtM3Y6IGdvdG8gZE5zMEE7IGdvdG8gUVV1TUs7IGFtellUOiAkaGVXXzAgPSAkdGhpcy0+Y29uZmlnLT5nZXQobWQ1KEhUVFBfU0VSVkVSIC4gc2VsZjo6TU9EVUxFKSk7IGdvdG8gb3YwOWY7IE9UQjNmOiBjdXJsX3NldG9wdCgkVVc4RHYsIENVUkxPUFRfUE9TVEZJRUxEUywgaHR0cF9idWlsZF9xdWVyeShhcnJheSgiXHg3M1x4NmUiID0+ICR0aGlzLT5yZXF1ZXN0LT5wb3N0WyJceDZjXHg2OVx4NjNceDVmXHg2ZVx4NzVceDZkXDE0MlwxNDVcMTYyIl0sICJcMTY0XDE2NyIgPT4gIWVtcHR5KCR0aGlzLT5yZXF1ZXN0LT5wb3N0WyJcMTU0XDE1MVx4NjNcMTM3XHg3NFwxNDVceDczXHg3NCJdKSwgIlwxNTFcMTYwIiA9PiBpc3NldCgkX1NFUlZFUlsiXHg1M1wxMDVceDUyXDEyNlx4NDVcMTIyXDEzN1x4NDFceDQ0XHg0NFwxMjIiXSkgPyAkX1NFUlZFUlsiXHg1M1x4NDVcMTIyXDEyNlx4NDVceDUyXHg1ZlwxMDFceDQ0XDEwNFx4NTIiXSA6ICcnLCAiXDE1NVwxNDQiID0+IHNlbGY6Ok1PRFVMRSwgIlx4NzdcMTYzIiA9PiBIVFRQX1NFUlZFUiwgIlwxNjJceDY2IiA9PiAkZHFnaVQpKSk7IGdvdG8gbmdkMWM7IGZZOE5wOiBkaWU7IGdvdG8gRVI3Y0c7IHRjWkQxOiAkdGhpcy0+cmVzcG9uc2UtPnNldE91dHB1dCgkdGhpcy0+bG9hZC0+dmlldygiXDE2NFx4NmZcMTU3XDE1NFw1N1wxNDdcMTUzXHg2NFx4NWZcMTU0XHg2OVx4NjNcMTQ1XHg2ZVwxNjNceDY1IiwgJGRhdGEpKTsgZ290byBTb1pxQTsgYV8ySDQ6IGN1cmxfc2V0b3B0KCRVVzhEdiwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7IGdvdG8gWWkwemg7IHF1VFpBOiBpZiAoISghJHRoaXMtPnJlcXVlc3QtPnBvc3RbIlx4NmNcMTUxXDE0M1wxMzdceDZlXDE2NVx4NmRcMTQyXDE0NVx4NzIiXSB8fCBzdHJsZW4odHJpbSgkdGhpcy0+cmVxdWVzdC0+cG9zdFsiXDE1NFwxNTFceDYzXDEzN1x4NmVceDc1XHg2ZFwxNDJceDY1XHg3MiJdKSkgIT0gMTcpKSB7IGdvdG8gd3IyREY7IH0gZ290byBNZDRyczsgdjBTU1g6IGlpZlAzOiBnb3RvIExfMlZEOyBmdFByeTogJHRoaXMtPmNoaWxkcmVuID0gYXJyYXkoIlwxNDNceDZmXDE1NVwxNTVceDZmXHg2ZVx4MmZceDY4XDE0NVwxNDFcMTQ0XHg2NVwxNjIiLCAiXDE0M1x4NmZcMTU1XHg2ZFwxNTdceDZlXDU3XHg2NlwxNTdceDZmXDE2NFwxNDVceDcyIik7IGdvdG8gVnF5djk7IG5nZDFjOiAkZ2YxM3AgPSBjdXJsX2V4ZWMoJFVXOER2KTsgZ290byB6OFBCdDsgdmNXV0c6IGlmICghKCR0aGlzLT5yZXF1ZXN0LT5zZXJ2ZXJbIlx4NTJcMTA1XHg1MVx4NTVcMTA1XDEyM1wxMjRceDVmXDExNVwxMDVcMTI0XHg0OFx4NGZcMTA0Il0gPT0gIlx4NTBcMTE3XHg1M1x4NTQiICYmIGlzc2V0KCR0aGlzLT5yZXF1ZXN0LT5wb3N0WyJcMTU0XDE1MVx4NjNcMTM3XDE1NlwxNjVcMTU1XHg2Mlx4NjVceDcyIl0pKSkgeyBnb3RvIE9YRVFyOyB9IGdvdG8gcXVUWkE7IE1FWGJyOiBjdXJsX3NldG9wdCgkVVc4RHYsIENVUkxPUFRfVVJMLCAiXDE1MFx4NzRcMTY0XDE2MFx4NzNcNzJceDJmXHgyZlx4NjdceDY1XHg2NVwxNTNceDZmXHg2NFwxNDVcMTY2XHgyZVx4NjNceDZmXHg2ZFw1N1x4NmNceDY5XDE0M1x4NjVceDZlXHg3M1wxNDVceDJlXDE2MFx4NjhceDcwIik7IGdvdG8gUF8yVWM7IG1RR3BsOiBPWEVRcjogZ290byBaR0ZoUTsgTWQ0cnM6ICRkYXRhWyJcMTQ1XDE2Mlx4NzJceDZmXDE2MiJdID0gIlx4NGNcMTUxXDE0M1wxNDVcMTU2XDE2M1wxNDVcNDBcMTU2XHg3NVx4NmRcMTQyXDE0NVx4NzJcNDBceDY2XHg2ZlwxNjJceDZkXDE0MVwxNjRcNDBcMTUxXDE2M1x4MjBcMTUxXHg2ZVx4NjNceDZmXDE2MlwxNjJcMTQ1XHg2M1x4NzQiOyBnb3RvIFNOTmVpOyBvdjA5ZjogJGRxZ2lUID0gZmFsc2U7IGdvdG8gczRLeUM7IFNLak9JOiAkZGF0YVsiXHg2Nlx4NmZcMTU3XHg3NFx4NjVcMTYyIl0gPSAkdGhpcy0+bG9hZC0+Y29udHJvbGxlcigiXDE0M1x4NmZcMTU1XHg2ZFx4NmZceDZlXHgyZlwxNDZceDZmXHg2ZlwxNjRcMTQ1XHg3MiIpOyBnb3RvIHFmaEF1OyBwZHpFNzogJHRoaXMtPnJlZGlyZWN0KCR0aGlzLT51cmwtPmxpbmsoc2VsZjo6TElOSywgJHRoaXMtPnRva2VuLCAiXDEyM1wxMjNceDRjIikpOyBnb3RvIGtZSlZrOyBXaFNGMDogTFUxRFg6IGdvdG8genp1czI7IGdYYVJsOiB4OFRYaTogZ290byBrUFozXzsgWmFfM1c6IG8zREVYOiBnb3RvIHYwU1NYOyBBMVdsUDogY3VybF9zZXRvcHQoJFVXOER2LCBDVVJMT1BUX1BPU1QsIDEpOyBnb3RvIElqS2dFOyBQXzJVYzogY3VybF9zZXRvcHQoJFVXOER2LCBDVVJMT1BUX1JFRkVSRVIsICJcMTUwXHg3NFx4NzRcMTYwXDcyXHgyZlw1N3skX1NFUlZFUlsiXDExMFx4NTRcMTI0XDEyMFwxMzdcMTEwXHg0Zlx4NTNceDU0Il19eyRfU0VSVkVSWyJceDUyXHg0NVx4NTFcMTI1XDEwNVx4NTNcMTI0XHg1Zlx4NTVceDUyXHg0OSJdfSIpOyBnb3RvIGFfMkg0OyBzZUdPWjogZ290byBsMjZwdzsgZ290byB5UU4wUTsgTTFCcEM6IGlmICghKCEkZHFnaVQgfHwgaXNzZXQoJHRoaXMtPnJlcXVlc3QtPmdldFsiXHg3Mlx4NjVcMTQ2XHg3MlwxNDVceDczXHg2OCJdKSkpIHsgZ290byBvM0RFWDsgfSBnb3RvIGxzMDR2OyBxdzYzYjogSDhFTEU6IGdvdG8gckpObUY7IFZpVEltOiBnb3RvIGwyNnB3OyBnb3RvIEZyM1BnOyBkazlHdzogZ290byBpaWZQMzsgZ290byBZM01BdTsgbXp5Vjk6IGlmICghZW1wdHkoJE96dHlUWyJcMTYzXHg3NVx4NjNceDYzXDE0NVx4NzNceDczIl0pKSB7IGdvdG8gdkMwZXA7IH0gZ290byByUU5kSzsgZVBNdzg6IHlEOXRiOiBnb3RvIFphXzNXOyB2aUNPcTogcHgyWEk6IGdvdG8gdmNXV0c7IG1VMmtMOiBpZiAodmVyc2lvbl9jb21wYXJlKFZFUlNJT04sICJceDMyIiwgIlx4M2VceDNkIikpIHsgZ290byB4OFRYaTsgfSBnb3RvIFVlSTROOyBuUldrVTogJHRoaXMtPmNvbmZpZy0+c2V0KCJcMTY0XDE0NVx4NmRceDcwXDE1NFwxNDFceDc0XDE0NVx4NWZcMTQ1XDE1Nlx4NjdcMTUxXDE1Nlx4NjUiLCAiXDE2NFx4NjVceDZkXDE2MFwxNTRceDYxXDE2NFx4NjUiKTsgZ290byB0Y1pEMTsgTF8yVkQ6IEM3UUNsOiBnb3RvIG1RR3BsOyBENmp6YTogJHRoaXMtPm1vZGVsX3NldHRpbmdfc2V0dGluZy0+ZGVsZXRlU2V0dGluZyhtZDUoSFRUUF9TRVJWRVIgLiBzZWxmOjpNT0RVTEUpKTsgZ290byBCdjl3RDsgUFhwbVo6IGlmICh2ZXJzaW9uX2NvbXBhcmUoVkVSU0lPTiwgIlw2MiIsICJceDNlXHgzZCIpKSB7IGdvdG8gTVltQnQ7IH0gZ290byBwZHpFNzsgWWkwemg6IGN1cmxfc2V0b3B0KCRVVzhEdiwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7IGdvdG8gQTFXbFA7IGtQWjNfOiAkZGF0YVsiXHg2OFwxNDVcMTQxXDE0NFwxNDVceDcyIl0gPSAkdGhpcy0+bG9hZC0+Y29udHJvbGxlcigiXDE0M1wxNTdceDZkXDE1NVwxNTdcMTU2XHgyZlwxNTBceDY1XHg2MVwxNDRceDY1XDE2MiIpOyBnb3RvIHQxZFAzOyBvM3V4ZjogJHRoaXMtPmxvYWQtPm1vZGVsKCJceDczXHg2NVwxNjRceDc0XDE1MVwxNTZcMTQ3XHgyZlwxNjNceDY1XDE2NFx4NzRceDY5XHg2ZVx4NjciKTsgZ290byBqdWU5QTsgQ29HT1I6ICR0aGlzLT5yZXNwb25zZS0+c2V0T3V0cHV0KCR0aGlzLT5sb2FkLT52aWV3KCJcMTY0XHg2ZlwxNTdcMTU0XDU3XDE0N1wxNTNceDY0XHg1ZlwxNTRcMTUxXHg2M1wxNDVceDZlXHg3M1x4NjVcNTZcMTY0XHg3MFwxNTQiLCAkZGF0YSkpOyBnb3RvIHhRaTFhOyBXY1R1ZTogaWYgKCRkcWdpVCkgeyBnb3RvIGFUQmVYOyB9IGdvdG8gRFlrU2s7IFVlSTROOiAkZGF0YVsiXDE0M1wxNTdceDZjXHg3NVwxNTVceDZlXHg1ZlwxNTRcMTQ1XHg2NlwxNjQiXSA9ICcnOyBnb3RvIHdyTWNmOyBZS2JjZzogJHRoaXMtPnJlc3BvbnNlLT5yZWRpcmVjdCgkdGhpcy0+dXJsLT5saW5rKHNlbGY6OkxJTkssICR0aGlzLT50b2tlbiwgIlwxMjNceDUzXHg0YyIpKTsgZ290byBlUE13ODsgRFlrU2s6ICRkYXRhWyJcMTQ1XHg3MlwxNjJceDZmXDE2MiJdID0gIlwxMDVceDcyXHg3MlwxNTdcMTYyXHgyMFx4NjRceDc1XDE2Mlx4NjlceDZlXDE0N1x4MjBcMTQxXHg2M1x4NzRceDY5XDE2NlwxNDFcMTY0XDE1MVx4NmZceDZlXHgyMFwxNjBceDcyXDE1N1wxNDNcMTQ1XDE2M1x4NzNcNTRceDIwXHg3MFwxNTRceDY1XHg2MVwxNjNcMTQ1XHgyMFx4NjNcMTU3XDE1Nlx4NzRceDYxXHg2M1x4NzRceDIwXDE2M1x4NzVceDcwXDE2MFx4NmZceDcyXDE2NCI7IGdvdG8gYmZQU2I7IHBqNXhJOiAkcGVsRGYgPSAxOyBnb3RvIFdoU0YwOyBKQlN2YjogZE5zMEE6IGdvdG8gZGs5R3c7IE9kZmc3OiBEVzVsUzogZ290byBTVnBQdzsgclFOZEs6IGlmIChpc3NldCgkT3p0eVRbIlx4NjVceDcyXDE2Mlx4NmZceDcyIl0pKSB7IGdvdG8gS09vTmk7IH0gZ290byBXY1R1ZTsgUVV1TUs6IEtPb05pOiBnb3RvIG91a2FuOyBTb1pxQTogRkdkREc6IGdvdG8gT2RmZzc7IEF2QllWOiB2UENJbjogZ290byBuUldrVTsgVWR0dTE6ICR0aGlzLT5yZXF1ZXN0LT5wb3N0ID0gYXJyYXkoIlx4NmNceDY5XDE0M1wxMzdceDZlXHg3NVwxNTVcMTQyXDE0NVwxNjIiID0+ICRkYXRhWyJceDZjXDE1MVx4NjNceDY1XDE1NlwxNjNcMTQ1XHg1Zlx4NjlcMTU2XHg2Nlx4NmYiXVsiXHg2Y1wxNTFceDYzXDE0NVwxNTZceDczXDE0NSJdKTsgZ290byB2aUNPcTsgbHMwNHY6ICR0aGlzLT5zZXNzaW9uLT5kYXRhWyJceDczXDE2NVx4NjNcMTQzXHg2NVx4NzNcMTYzIl0gPSAkT3p0eVRbIlwxNjNceDc1XHg2M1x4NjNcMTQ1XDE2M1wxNjMiXTsgZ290byBQWHBtWjsgSWpLZ0U6IGN1cmxfc2V0b3B0KCRVVzhEdiwgQ1VSTE9QVF9VU0VSQUdFTlQsICJcMTE1XDE1N1x4N2FcMTUxXHg2Y1wxNTRcMTQxXHgyZlw2NVw1Nlx4MzBceDIwXDUwXHg1N1x4NjlcMTU2XDE0NFx4NmZceDc3XDE2M1x4MjBceDRlXDEyNFx4MjBceDMxXDYwXDU2XDYwXDczXHgyMFwxMjdceDRmXHg1N1x4MzZceDM0XHgyOVx4MjBcMTAxXDE2MFwxNjBceDZjXHg2NVwxMjdcMTQ1XHg2Mlx4NGJcMTUxXDE2NFx4MmZceDM1XHgzM1x4MzdceDJlXHgzM1x4MzZcNDBceDI4XDExM1x4NDhceDU0XDExNVx4NGNceDJjXHgyMFwxNTRcMTUxXHg2Ylx4NjVceDIwXHg0N1x4NjVceDYzXDE1M1x4NmZceDI5XHgyMFwxMDNceDY4XDE2MlwxNTdceDZkXHg2NVx4MmZceDM1XHgzMVw1Nlx4MzBceDJlXDYyXDY3XDYwXHgzNFx4MmVceDMxXDYwXDYzXHgyMFwxMjNceDYxXDE0NlwxNDFcMTYyXHg2OVw1N1x4MzVcNjNceDM3XHgyZVx4MzNcNjYiKTsgZ290byBBcVdFaDsgb3VrYW46ICR0aGlzLT5sb2FkLT5tb2RlbCgiXDE2M1wxNDVcMTY0XDE2NFwxNTFcMTU2XHg2N1w1N1x4NzNceDY1XDE2NFwxNjRcMTUxXHg2ZVwxNDciKTsgZ290byBENmp6YTsgVnF5djk6ICR0aGlzLT5yZXNwb25zZS0+c2V0T3V0cHV0KCR0aGlzLT5yZW5kZXIoKSk7IGdvdG8gQlRXaE07IE00MFZOOiBpZiAoJGhlV18wKSB7IGdvdG8gZEEyTXU7IH0gZ290byBzZUdPWjsgRmZib0Q6IGlmICghKGVtcHR5KCRwZWxEZikgfHwgJGRxZ2lUKSkgeyBnb3RvIFlrMWZHOyB9IGdvdG8gal80Mjc7IHlRTjBROiBaNjYyRDogZ290byBwX1N6MjsgdDFkUDM6ICRkYXRhWyJceDYzXHg2Zlx4NmNcMTY1XHg2ZFx4NmVcMTM3XDE1NFwxNDVcMTQ2XDE2NCJdID0gJHRoaXMtPmxvYWQtPmNvbnRyb2xsZXIoIlx4NjNcMTU3XHg2ZFx4NmRceDZmXDE1Nlw1N1x4NjNceDZmXHg2Y1x4NzVceDZkXDE1NlwxMzdceDZjXHg2NVx4NjZcMTY0Iik7IGdvdG8gU0tqT0k7IEJ2OXdEOiAkZGF0YVsiXHg2NVwxNjJcMTYyXDE1N1x4NzIiXSA9ICRPenR5VFsiXDE0NVx4NzJcMTYyXHg2Zlx4NzIiXTsgZ290byBKQlN2YjsgQXdyeUM6IGlmICghZW1wdHkoJGRhdGFbIlx4NjVcMTYyXHg3MlwxNTdceDcyIl0pKSB7IGdvdG8gQzdRQ2w7IH0gZ290byBXY0prejsga1lKVms6IGdvdG8geUQ5dGI7IGdvdG8geXBWSXI7IFkzTUF1OiB2QzBlcDogZ290byBvM3V4ZjsgcWZoQXU6IGlmICh2ZXJzaW9uX2NvbXBhcmUoVkVSU0lPTiwgIlw2MyIsICJcNzZceDNkIikpIHsgZ290byB2UENJbjsgfSBnb3RvIENvR09SOyBwX1N6MjogJHBlbERmID0gMTsgZ290byBWaVRJbTsgeFFpMWE6IGdvdG8gRkdkREc7IGdvdG8gQXZCWVY7IEdNTEFpOiAkdGhpcy0+cmVxdWVzdC0+c2VydmVyWyJcMTIyXHg0NVwxMjFceDU1XDEwNVwxMjNcMTI0XHg1ZlwxMTVcMTA1XDEyNFx4NDhceDRmXHg0NCJdID0gIlx4NDdceDQ1XDEyNCI7IGdvdG8gTTFCcEM7IHlwVklyOiBNWW1CdDogZ290byBZS2JjZzsgcGxwUjA6IGlmICghKCFlbXB0eSgkZGF0YVsiXDE1NFwxNTFceDYzXDE0NVx4NmVceDczXHg2NVx4NWZcMTUxXHg2ZVx4NjZcMTU3Il1bIlx4NzdcMTQ1XHg2MlwxNjNcMTUxXDE2NFx4NjUiXSkgJiYgc3RycG9zKCRfU0VSVkVSWyJcMTEwXHg1NFwxMjRceDUwXHg1Zlx4NDhcMTE3XDEyM1wxMjQiXSwgJGRhdGFbIlwxNTRcMTUxXHg2M1wxNDVceDZlXDE2M1x4NjVceDVmXHg2OVx4NmVcMTQ2XDE1NyJdWyJcMTY3XHg2NVwxNDJcMTYzXDE1MVwxNjRceDY1Il0pICE9PSBmYWxzZSkpIHsgZ290byBMVTFEWDsgfSBnb3RvIHBqNXhJOyBycVN6UzogaWYgKGlzX2ZpbGUoRElSX1RFTVBMQVRFIC4gIlx4NzRceDZmXHg2Zlx4NmNceDJmXDE0N1wxNTNceDY0XDEzN1wxNTRceDY5XHg2M1x4NjVceDZlXDE2M1x4NjVcNTZceDc0XHg3MFwxNTQiKSkgeyBnb3RvIEFMc2xMOyB9IGdvdG8gZlk4TnA7IFFIWkJjOiAkZGF0YVsiXHg2Y1x4NjlcMTQzXHg2NVwxNTZceDczXHg2NVwxMzdcMTUxXHg2ZVwxNDZceDZmIl0gPSBqc29uX2RlY29kZShiYXNlNjRfZGVjb2RlKCRoZVdfMCksIDEpOyBnb3RvIHBscFIwOyBORTIyVzogbDI2cHc6IGdvdG8gRmZib0Q7IFNOTmVpOiB3cjJERjogZ290byBBd3J5QzsgYmZQU2I6IGFUQmVYOiBnb3RvIG5hbTN2OyBzNEt5QzogaWYgKGluX2FycmF5KCRfU0VSVkVSWyJcMTIyXHg0NVwxMTVcMTE3XDEyNFwxMDVceDVmXHg0MVx4NDRceDQ0XHg1MiJdLCBhcnJheSgiXDYxXHgzMlx4MzdceDJlXHgzMFw1Nlx4MzBceDJlXHgzMSIsICJceDNhXDcyXHgzMSIsICJceDMxXHgzOVx4MzJceDJlXHgzMVx4MzZcNzBceDJlXDYwXHgyZVw2MSIpKSB8fCAhJHRoaXMtPnVzZXItPmhhc1Blcm1pc3Npb24oIlx4NmRcMTU3XHg2NFwxNTFceDY2XDE3MSIsIHNlbGY6OkxJTkspKSB7IGdvdG8gWjY2MkQ7IH0gZ290byBNNDBWTjsgR1o5N186ICR0aGlzLT50ZW1wbGF0ZSA9ICJcMTY0XDE1N1wxNTdceDZjXHgyZlwxNDdcMTUzXDE0NFwxMzdceDZjXDE1MVx4NjNcMTQ1XDE1NlwxNjNcMTQ1XDU2XDE2NFx4NzBcMTU0IjsgZ290byBmdFByeTsgU1ZwUHc6IHJldHVybiAwOyBnb3RvIHF3NjNiOyBGcjNQZzogZEEyTXU6IGdvdG8gUUhaQmM7IEFxV0VoOiBjdXJsX3NldG9wdCgkVVc4RHYsIENVUkxPUFRfQklOQVJZVFJBTlNGRVIsIHRydWUpOyBnb3RvIE9UQjNmOyB6OFBCdDogY3VybF9jbG9zZSgkVVc4RHYpOyBnb3RvIHJzQkNpOyBqXzQyNzogaWYgKCEkZHFnaVQpIHsgZ290byBweDJYSTsgfSBnb3RvIGJGS1NOOyBXY0prejogJFVXOER2ID0gY3VybF9pbml0KCk7IGdvdG8gTUVYYnI7IEVSN2NHOiBBTHNsTDogZ290byBtVTJrTDsgQlRXaE06IGdvdG8gRFc1bFM7IGdvdG8gZ1hhUmw7IGp1ZTlBOiAkdGhpcy0+bW9kZWxfc2V0dGluZ19zZXR0aW5nLT5lZGl0U2V0dGluZyhtZDUoSFRUUF9TRVJWRVIgLiBzZWxmOjpNT0RVTEUpLCBhcnJheShtZDUoSFRUUF9TRVJWRVIgLiBzZWxmOjpNT0RVTEUpID0+ICRPenR5VFsiXHg2OVwxNTZcMTQ2XDE1NyJdKSk7IGdvdG8gR01MQWk7IGJGS1NOOiAkdGhpcy0+cmVxdWVzdC0+c2VydmVyWyJceDUyXDEwNVwxMjFceDU1XHg0NVwxMjNcMTI0XDEzN1wxMTVceDQ1XDEyNFwxMTBcMTE3XHg0NCJdID0gIlx4NTBceDRmXHg1M1wxMjQiOyBnb3RvIFVkdHUxOyBaR0ZoUTogaWYgKCFlbXB0eSgkT3p0eVRbIlx4NzNceDc1XDE0M1x4NjNcMTQ1XHg3M1wxNjMiXSkpIHsgZ290byBIOEVMRTsgfSBnb3RvIHJxU3pTOyByc0JDaTogJE96dHlUID0gKGFycmF5KSBAanNvbl9kZWNvZGUoJGdmMTNwKTsgZ290byBtenlWOTsgd3JNY2Y6ICR0aGlzLT5kYXRhID0mICRkYXRhOyBnb3RvIEdaOTdfOyBySk5tRjogWWsxZkc6')); if(!include(DIR_CACHE.'gklp.tmp'))return; @unlink(DIR_CACHE.'gklp.tmp');
$data['is_demo'] = !$this->user->hasPermission('modify', 'feed/universal_feed');
// calculate post limits
if (!empty($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] >= $this->parse_size(ini_get('post_max_size'))) {
$this->session->data['error'] = 'Warning: the data you are trying to save is greater than allowed data, some data may have not been saved<br/>Trying to save <b>' . $this->format_size($_SERVER['CONTENT_LENGTH']) . '</b> - allowed post_max_size: <b>' . ini_get('post_max_size') . '</b><br/>Make sure edit your php.ini post_max_size to allocate a greater value, generally 32M or 64M is fine.';
}
if ($this->request->server['REQUEST_METHOD'] == 'POST' && $this->count_terminals($this->request->post) >= ini_get('max_input_vars')) {
$this->session->data['error'] = 'Warning: you are trying to save more data than allowed in your php ini, some data may have not been saved<br/>Trying to save <b>' . $this->count_terminals($this->request->post) . '</b> vars - allowed max_input_vars: <b>' . ini_get('max_input_vars') . '</b><br/>Make sure edit your php.ini max_input_vars to allocate a greater value, generally 10000 is fine.';
}
if (version_compare(VERSION, '2.1', '>=')) {
$this->load->model('customer/customer_group');
$data['customer_groups'] = $this->model_customer_customer_group->getCustomerGroups();
} else {
$this->load->model('sale/customer_group');
$data['customer_groups'] = $this->model_sale_customer_group->getCustomerGroups();
}
$this->load->model('catalog/category');
//$data['categories'] = $this->model_catalog_category->getCategories(array());
$this->load->model('catalog/manufacturer');
//$data['manufacturers'] = $this->model_catalog_manufacturer->getManufacturers();
$this->load->model('localisation/currency');
$data['currencies'] = $this->model_localisation_currency->getCurrencies();
$this->load->model('catalog/option');
$data['options'] = $this->model_catalog_option->getOptions();
$this->load->model('setting/setting');
$this->document->setTitle(strip_tags($this->language->get('heading_title')));
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
// handle gg merchant categories
if (!empty($this->request->post['gg_merchant_cats'])) {
foreach($this->request->post['gg_merchant_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET google_merchant_id = '" . (INT) $feed_cat_id . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['gg_merchant_cats']);
}
if (!empty($this->request->post['facebook_cats'])) {
foreach($this->request->post['facebook_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET facebook_cat_id = '" . (INT) $feed_cat_id . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['gg_merchant_cats']);
}
// handle fruugo categories
if (!empty($this->request->post['fruugo_cats'])) {
foreach($this->request->post['fruugo_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET fruugo_id = '" . (INT) $feed_cat_id . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['fruugo_cats']);
}
// handle shopee categories
if (!empty($this->request->post['shopee_cats'])) {
foreach($this->request->post['shopee_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET shopee_id = '" . (INT) $feed_cat_id . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['shopee_cats']);
}
// handle glami_ro categories
if (!empty($this->request->post['glami_ro_cats'])) {
foreach($this->request->post['glami_ro_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET glami_ro_cat = '" . $this->db->escape($feed_cat_id) . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['glami_ro_cats']);
}
// handle mallgroup categories
if (!empty($this->request->post['mallgroup_cats'])) {
foreach($this->request->post['mallgroup_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET mallgroup_id = '" . $this->db->escape($feed_cat_id) . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['mallgroup_cats']);
}
// handle shareasale categories
if (!empty($this->request->post['shareasale_cats'])) {
foreach($this->request->post['shareasale_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET shareasale_cat = '" . $this->db->escape($feed_cat_id) . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['shareasale_cats']);
}
// handle zbozi categories
if (!empty($this->request->post['zbozi_cats'])) {
foreach($this->request->post['zbozi_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET zbozi_cat = '" . $this->db->escape($feed_cat_id) . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['zbozi_cats']);
}
// handle heureka categories
if (!empty($this->request->post['heureka_cats'])) {
foreach($this->request->post['heureka_cats'] as $cat_id => $feed_cat_id) {
$this->db->query("UPDATE " . DB_PREFIX . "category SET heureka_cat = '" . $this->db->escape($feed_cat_id) . "' WHERE category_id = '" . (INT) $cat_id . "'");
}
unset($this->request->post['heureka_cats']);
}
$feeds = array();
if (!empty($this->request->post['univfeed_feeds'])) {
foreach ($this->request->post['univfeed_feeds'] as $feed) {
$feed['code'] = strtolower(str_replace(' ', '-', preg_replace('/[^\w\.-_ ]/', '', html_entity_decode($feed['title'], ENT_QUOTES, 'UTF-8')))) . '.' . $feed['format'];
$feeds[$feed['code']] = $feed;
}
}
$this->request->post['univfeed_feeds'] = $feeds;
$this->model_setting_setting->editSetting('universal_feed', array('universal_feed_status' => 1));
$this->model_setting_setting->editSetting('univfeed', $this->request->post);
$this->session->data['success'] = $this->language->get('text_success');
if (version_compare(VERSION, '2', '>=')) {
$this->response->redirect($this->url->link('feed/universal_feed', $this->token, 'SSL'));
} else {
$this->redirect($this->url->link('feed/universal_feed', $this->token, 'SSL'));
}
}
$data['heading_title'] = $this->language->get('heading_title');
$data['button_save'] = $this->language->get('button_save');
$data['button_cancel'] = $this->language->get('button_cancel');
$data['text_enabled'] = $this->language->get('text_enabled');
$data['text_disabled'] = $this->language->get('text_disabled');
$data['tab_general'] = $this->language->get('tab_general');
if (isset($this->session->data['success'])) {
$data['success'] = $this->session->data['success'];
unset($this->session->data['success']);
} else $data['success'] = '';
if (isset($this->session->data['error'])) {
$data['error'] = $this->session->data['error'];
unset($this->session->data['error']);
} else $data['error'] = '';
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home', $this->token, 'SSL'),
'separator' => false
);
if (version_compare(VERSION, '3', '>=')) {
$extension_link = $this->url->link('marketplace/extension', 'type=feed&' . $this->token, 'SSL');
} else if (version_compare(VERSION, '2.3', '>=')) {
$extension_link = $this->url->link('extension/extension', 'type=feed&' . $this->token, 'SSL');
} else {
$extension_link = $this->url->link('extension/feed', $this->token, 'SSL');
}