Spade
Mini Shell
| Directory:~$ /home/lmsyaran/www/administrator/components/com_hikamarket/ |
| [Home] [System Details] [Kill Me] |
<?php
/**
* @package HikaMarket for Joomla!
* @version 3.1.1
* @author Obsidev S.A.R.L.
* @copyright (C) 2011-2020 OBSIDEV. All rights reserved.
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
*/
defined('_JEXEC') or die('Restricted access');
?><?php
if(version_compare(JVERSION, '2.5.0', '<')) {
echo '<html><body><h1>This extension works with
Joomla 2.5 or newer.</h1>'.
'<h2>Please install the latest version of
Joomla.</h2>'.
'installation abort...</body></html>';
exit;
}
$version = explode('.',PHP_VERSION);
if($version[0] < 5) {
echo '<html><body><h1>This extension works with PHP
5 or newer.</h1>'.
'<h2>Please contact your web hosting provider to update your
PHP version</h2>'.
'installation abort...</body></html>';
exit;
}
class hikamarketInstall {
private $level = 'Multivendor';
private $version = '3.1.1';
private $freshinstall = true;
private $update = false;
private $fromLevel = '';
private $fromVersion = '';
private $db;
public function __construct() {
$this->db = JFactory::getDBO();
$this->db->setQuery('SELECT COUNT(*) as `count` FROM
`'.hikamarket::table('config').'` WHERE
`config_namekey` IN
('.$this->db->Quote('version').','.$this->db->Quote('level').')');
$results = $this->db->loadResult();
if($results == 2)
$this->freshinstall = false;
}
public function addPref() {
$conf = JFactory::getConfig();
$this->level = ucfirst($this->level);
$allPref = array(
'level' => $this->level
,'version' => $this->version
,'show_footer' => '1'
,'installcomplete' => '0'
,'Frontedition' => '0'
,'Multivendor' => '1'
,'frontend_edition' => '1'
);
$sep = '';
$query = 'INSERT IGNORE INTO
`'.HIKAMARKET_DBPREFIX.'config`
(`config_namekey`,`config_value`,`config_default`) VALUES ';
foreach($allPref as $n => $v) {
$query .=
$sep.'('.$this->db->Quote($n).','.$this->db->Quote($v).','.$this->db->Quote($v).')';
$sep = ',';
}
$this->db->setQuery($query);
$this->db->execute();
$allPref = array(
'market.product_creation.html' => 1,
'market.product_creation.subject' =>
'MARKET_PRODUCT_CREATION_SUBJECT',
'market.product_creation.published' => 0,
'market.product_modification.html' => 1,
'market.product_modification.subject' =>
'MARKET_PRODUCT_MODIFICATION_SUBJECT',
'market.product_modification.published' => 0,
'market.product_approval.html' => 1,
'market.product_approval.subject' =>
'MARKET_PRODUCT_APPROVAL_SUBJECT',
'market.product_approval.published' => 1,
'market.vendor_admin_registration.html' => 1,
'market.vendor_admin_registration.subject' =>
'MARKET_VENDOR_ADMIN_REGISTRATION_SUBJECT',
'market.vendor_admin_registration.published' => 0,
'market.vendor_registration.html' => 1,
'market.vendor_registration.subject' =>
'MARKET_VENDOR_REGISTRATION_SUBJECT',
'market.vendor_registration.published' => 0,
'market.vendor_payment_request.html' => 1,
'market.vendor_payment_request.subject' =>
'MARKET_VENDOR_PAYMENT_REQUEST_SUBJECT',
'market.vendor_payment_request.published' => 0,
);
if(!empty($allPref)) {
$sep = '';
$query = 'INSERT IGNORE INTO `#__hikashop_config`
(`config_namekey`,`config_value`,`config_default`) VALUES ';
foreach($allPref as $n => $v) {
$query .=
$sep.'('.$this->db->Quote($n).','.$this->db->Quote($v).','.$this->db->Quote($v).')';
$sep = ',';
}
$this->db->setQuery($query);
$this->db->execute();
}
}
public function updatePref() {
$this->db->setQuery('SELECT `config_namekey`, `config_value`
FROM `'.HIKAMARKET_DBPREFIX.'config` WHERE `config_namekey` IN
(\'version\',\'level\')', 0, 2);
$res = $this->db->loadObjectList('config_namekey');
if($res['version']->config_value == $this->version
&& $res['level']->config_value == $this->level)
return true;
$this->update = true;
$this->fromLevel = $res['level']->config_value;
$this->fromVersion = $res['version']->config_value;
$query = 'REPLACE INTO `'.HIKAMARKET_DBPREFIX.'config`
(`config_namekey`,`config_value`) VALUES
(\'level\','.$this->db->Quote($this->level).'),(\'version\','.$this->db->Quote($this->version).'),(\'installcomplete\',\'0\')';
$this->db->setQuery($query);
$this->db->execute();
}
public function updateSQL() {
$structs = array(
'user' => array(
'user_vendor_id' => 'INT(10) NOT NULL DEFAULT
0',
'user_vendor_access' => 'text NOT NULL DEFAULT
\'\''
),
'product' => array(
'product_status' => 'VARCHAR(255) NOT NULL DEFAULT
\'\'',
'product_vendor_params' => 'TEXT NOT NULL DEFAULT
\'\''
),
'order' => array(
'order_parent_id' => 'INT(10) NOT NULL DEFAULT
0',
'order_vendor_id' => 'INT(10) NOT NULL DEFAULT
0',
'order_vendor_price' => 'decimal(12,5) NOT NULL
DEFAULT \'0.00000\'',
'order_vendor_paid' => 'INT(10) NOT NULL DEFAULT
0',
'order_vendor_params' => 'TEXT NOT NULL DEFAULT
\'\''
),
'order_product' => array(
'order_product_parent_id' => 'INT(10) NOT NULL
DEFAULT 0',
'order_product_vendor_price' => 'decimal(12,5) NOT
NULL DEFAULT \'0.00000\'',
),
'discount' => array(
'discount_target_vendor' => 'INT(10) NOT NULL DEFAULT
0'
),
'characteristic' => array(
'characteristic_vendor_id' => 'INT(10) NOT NULL
DEFAULT 0'
),
'shipping' => array(
'shipping_vendor_id' => 'INT(10) NOT NULL DEFAULT
0'
),
'payment' => array(
'payment_vendor_id' => 'INT(10) NOT NULL DEFAULT
0'
),
'plugin' => array(
'plugin_vendor_id' => 'INT(10) NOT NULL DEFAULT
0'
),
);
foreach($structs as $table => &$v) {
$sql = array();
$current =
$this->db->getTableColumns(hikamarket::table('shop.'.$table));
foreach($v as $col => $colSql) {
if(!isset($current[$col])) {
$sql[] = 'ADD COLUMN `' . $col . '` ' . $colSql;
}
}
if(!empty($sql)) {
$query = 'ALTER TABLE
`'.hikamarket::table('shop.'.$table).'`
'.implode(',', $sql);
$this->db->setQuery($query);
try {
$this->db->execute();
}catch(Exception $e) { }
unset($query);
}
unset($sql);
}
$this->db->setQuery('SELECT COUNT(*) FROM
`'.hikamarket::table('shop.field').'` WHERE field_table
= ' . $this->db->Quote('plg.hikamarket.vendor'));
$countMarketFields = $this->db->loadResult();
if($countMarketFields == 0) {
$query = 'INSERT IGNORE INTO
`'.hikamarket::table('shop.field').'` ' .
<<<EOD
(`field_table`, `field_realname`, `field_namekey`, `field_type`,
`field_value`, `field_published`, `field_ordering`, `field_options`,
`field_core`, `field_required`, `field_backend`, `field_frontcomp`,
`field_default`, `field_backend_listing`) VALUES
('plg.hikamarket.vendor', 'Company',
'vendor_address_company', 'text', '', 1, 5,
'a:5:{s:12:"errormessage";s:0:"";s:4:"cols";s:0:"";s:4:"rows";s:0:"";s:4:"size";s:0:"";s:6:"format";s:0:"";}',
1, 0, 1, 1, '', 0),
('plg.hikamarket.vendor', 'Street',
'vendor_address_street', 'text', '', 1, 6,
'a:5:{s:12:"errormessage";s:0:"";s:4:"cols";s:0:"";s:4:"rows";s:0:"";s:4:"size";s:0:"";s:6:"format";s:0:"";}',
1, 1, 1, 1, '', 0),
('plg.hikamarket.vendor', 'Complement',
'vendor_address_street2', 'text', '', 0, 7,
'a:5:{s:12:"errormessage";s:0:"";s:4:"cols";s:0:"";s:4:"rows";s:0:"";s:4:"size";s:0:"";s:6:"format";s:0:"";}',
1, 0, 1, 1, '', 0),
('plg.hikamarket.vendor', 'Post code',
'vendor_address_post_code', 'text', '', 1, 8,
'a:5:{s:12:"errormessage";s:0:"";s:4:"cols";s:0:"";s:4:"rows";s:0:"";s:4:"size";s:0:"";s:6:"format";s:0:"";}',
1, 0, 1, 1, '', 0),
('plg.hikamarket.vendor', 'City',
'vendor_address_city', 'text', '', 1, 9,
'a:5:{s:12:"errormessage";s:0:"";s:4:"cols";s:0:"";s:4:"rows";s:0:"";s:4:"size";s:0:"";s:6:"format";s:0:"";}',
1, 1, 1, 1, '', 0),
('plg.hikamarket.vendor', 'Telephone',
'vendor_address_telephone', 'text', '', 1,
10,
'a:5:{s:12:"errormessage";s:0:"";s:4:"cols";s:0:"";s:4:"rows";s:0:"";s:4:"size";s:0:"";s:6:"format";s:0:"";}',
1, 1, 1, 1, '', 0),
('plg.hikamarket.vendor', 'Fax',
'vendor_address_fax', 'text', '', 0, 12,
'a:5:{s:12:"errormessage";s:0:"";s:4:"cols";s:0:"";s:4:"rows";s:0:"";s:4:"size";s:0:"";s:6:"format";s:0:"";}',
1, 0, 1, 1, '', 0),
('plg.hikamarket.vendor', 'State',
'vendor_address_state', 'zone', '', 1, 13,
'a:6:{s:12:"errormessage";s:0:"";s:4:"cols";s:0:"";s:4:"rows";s:0:"";s:9:"zone_type";s:5:"state";s:4:"size";s:0:"";s:6:"format";s:0:"";}',
1, 1, 1, 1, 'state_Rh__ne_1375', 0),
('plg.hikamarket.vendor', 'Country',
'vendor_address_country', 'zone', '', 1, 14,
'a:6:{s:12:"errormessage";s:0:"";s:4:"cols";s:0:"";s:4:"rows";s:0:"";s:9:"zone_type";s:7:"country";s:4:"size";s:0:"";s:6:"format";s:0:"";}',
1, 1, 1, 1, 'country_France_73', 0),
('plg.hikamarket.vendor', 'VAT number',
'vendor_address_vat', 'text', '', 1, 15,
'a:6:{s:12:"errormessage";s:0:"";s:4:"cols";s:0:"";s:4:"rows";s:0:"";s:9:"zone_type";s:7:"country";s:4:"size";s:0:"";s:6:"format";s:0:"";}',
1, 0, 1, 1, '', 0);
EOD;
$this->db->setQuery($query);
$this->db->execute();
}
$this->db->setQuery('SELECT COUNT(*) FROM
`'.hikamarket::table('shop.characteristic').'` WHERE
characteristic_parent_id = 0 AND characteristic_alias = ' .
$this->db->Quote('vendor'));
$countVendorCharacteristics = $this->db->loadResult();
if($countVendorCharacteristics == 0) {
$query = 'INSERT IGNORE INTO
`'.hikamarket::table('shop.characteristic').'` '.
'(`characteristic_parent_id`, `characteristic_ordering`,
`characteristic_value`, `characteristic_alias`) VALUES '.
'(0, 0, ' . $this->db->Quote('Vendor') .
', ' . $this->db->Quote('vendor') .
')';
$this->db->setQuery($query);
$this->db->execute();
}
if($this->freshinstall) {
$e = $this->db->Quote('');
$query = 'INSERT IGNORE INTO
`'.hikamarket::table('vendor').'` '.
'(`vendor_id`,`vendor_admin_id`,`vendor_published`,`vendor_name`,`vendor_email`,`vendor_currency_id`,`vendor_description`,`vendor_access`,`vendor_shippings`,`vendor_params`)
VALUES '.
'(1,0,1,'.$e.','.$e.',0,'.$e.','.$this->db->Quote('*').','.$e.','.$e.')';
$this->db->setQuery($query);
$this->db->execute();
}
if($this->freshinstall) {
$vendorCategory = new stdClass();
$vendorCategory->category_type = 'vendor';
$vendorCategory->category_name = 'Vendor category';
$vendorCategory->category_namekey = 'vendor';
$categoryClass = hikamarket::get('shop.class.category');
$categoryClass->save($vendorCategory);
}
if(!$this->update)
return true;
if(version_compare($this->fromVersion, '1.1.0',
'<')) {
$this->addColumns('vendor', '`vendor_template_id` INT(
11 ) NOT NULL DEFAULT 0 AFTER `vendor_params`');
}
if(version_compare($this->fromVersion, '1.1.1',
'<')) {
$this->db->setQuery('SELECT `config_namekey`, `config_value`
FROM `'.HIKAMARKET_DBPREFIX.'config` WHERE `config_namekey` IN
(\'allow_registration\',\'vendor_auto_published\')',
0, 2);
$res = $this->db->loadObjectList('config_namekey');
if(isset($res['vendor_auto_published']) &&
isset($res['allow_registration']) &&
(int)$res['vendor_auto_published']->config_value == 1
&& (int)$res['allow_registration']->config_value == 1)
{
$this->db->setQuery('UPDATE
'.HIKAMARKET_DBPREFIX.'config` SET config_value = 2 WHERE
config_namekey = \'allow_registration\'');
$this->db->execute();
}
}
if(version_compare($this->fromVersion, '1.1.3',
'<')) {
$this->addColumns('vendor', array(
'`vendor_site_id` VARCHAR(255) NOT NULL DEFAULT
\'\'',
'`vendor_average_score` decimal(16,5) NOT NULL DEFAULT
\'0.00000\'',
'`vendor_total_vote` INT NOT NULL DEFAULT 0'
));
}
if(version_compare($this->fromVersion, '1.3.0',
'<')) {
$this->addColumns('vendor', '`vendor_image`
VARCHAR(255) NOT NULL DEFAULT \'\'');
}
if(version_compare($this->fromVersion, '1.3.1',
'<')) {
$this->addColumns('vendor', array(
'`vendor_zone_id` INT(10) UNSIGNED NOT NULL DEFAULT 0',
'`vendor_terms` TEXT NOT NULL DEFAULT \'\''
));
$marketConfig = hikamarket::config();
if($marketConfig->get('market_mode') ==
'commission') {
$query = 'UPDATE
`'.hikamarket::table('shop.order').'` '.
' SET order_vendor_price = (order_vendor_price -
order_full_price) '.
' WHERE order_type =
'.$this->db->Quote('subsale') . ' AND
order_vendor_paid = 0';
$this->db->setQuery($query);
$this->db->execute();
}
}
if(version_compare($this->fromVersion, '1.4.0',
'<')) {
$this->addColumns('fee', array(
'`fee_min_price` decimal(16,5) NOT NULL DEFAULT
\'0.00000\'',
'`fee_fixed` decimal(16,5) NOT NULL DEFAULT
\'0.00000\''
));
}
if(version_compare($this->fromVersion, '1.4.1',
'<')) {
$this->addColumns('vendor', '`vendor_alias`
VARCHAR(255) NOT NULL DEFAULT \'\' AFTER `vendor_name`');
$this->addColumns('fee', '`fee_group` int(10) UNSIGNED
NOT NULL DEFAULT \'0\'');
}
if(version_compare($this->fromVersion, '1.4.2',
'<')) {
$this->addColumns('vendor', '`vendor_canonical`
VARCHAR(255) NOT NULL DEFAULT \'\' AFTER `vendor_alias`');
}
if(version_compare($this->fromVersion, '1.6.0',
'<')) {
$tables = array(
array(
'id' => 'shipping_id',
'params' => 'shipping_params',
'table' => 'shop.shipping',
'param_key' => 'shipping_vendor_filter',
'vendor_key' => 'shipping_vendor_id'
),
array(
'id' => 'payment_id',
'params' => 'payment_params',
'table' => 'shop.payment',
'param_key' => 'payment_vendor_id',
'vendor_key' => 'payment_vendor_id'
)
);
foreach($tables as $p) {
$query = 'SELECT '.$p['id'].',
'.$p['params'].' FROM ' .
hikamarket::table($p['table']) . ' WHERE
'.$p['params'].' LIKE
\'%'.$p['param_key'].'%\'';
$this->db->setQuery($query);
$res = $this->db->loadObjectList($p['id']);
$update = array();
foreach($res as $k => $r) {
$params = hikamarket::unserialize($r->{$p['params']});
if(empty($params->{$p['param_key']}))
continue;
$update[(int)$k] = $params->{$p['param_key']};
}
if(!empty($update)) {
$data = array();
foreach($update as $k => $v) {
$data[] = (int)$k . ',' . (int)$v;
}
$query = 'INSERT INTO ' .
hikamarket::table($p['table']) . '
('.$p['id'].',
'.$p['vendor_key'].') VALUES (' .
implode('),(', $data) . ') '.
'ON DUPLICATE KEY UPDATE
'.$p['vendor_key'].' =
VALUES('.$p['vendor_key'].')';
$this->db->setQuery($query);
$this->db->execute();
}
}
$query = 'ALTER TABLE `#__hikamarket_vendor` CHANGE
`vendor_template_id` `vendor_template_id` VARCHAR( 255 ) NOT NULL DEFAULT
\'\';';
$this->db->setQuery($query);
try { $this->db->execute(); }
catch(Exception $e) {}
$query = 'CREATE TABLE IF NOT EXISTS
`#__hikamarket_customer_vendor` '.
' (`customer_id` INT(10) NOT NULL, `vendor_id` INT(10) NOT NULL,
PRIMARY KEY (`customer_id`,`vendor_id`)) '.
' ENGINE=MyISAM DEFAULT CHARSET=utf8;';
$this->db->setQuery($query);
try { $this->db->execute(); }
catch(Exception $e) {}
}
if(version_compare($this->fromVersion, '1.6.6',
'<')) {
if(version_compare($this->fromVersion, '1.6.4',
'>=')) {
$query = 'DELETE FROM `#__hikamarket_customer_vendor` WHERE
1';
$this->db->setQuery($query);
try { $this->db->execute(); }
catch(Exception $e) {}
}
$query = 'INSERT IGNORE INTO `#__hikamarket_customer_vendor`
(customer_id, vendor_id) '.
' SELECT DISTINCT order_user_id, order_vendor_id FROM
`#__hikashop_order` AS o '.
' WHERE o.order_type = ' .
$this->db->Quote('subsale') . ' AND o.order_vendor_id
> 1 ';
$this->db->setQuery($query);
try { $this->db->execute(); }
catch(Exception $e) {}
}
if(version_compare($this->fromVersion, '2.0.0',
'<')) {
$query = 'CREATE TABLE IF NOT EXISTS
`#__hikamarket_order_transaction` ('.
' `order_transaction_id` INT(10) UNSIGNED NOT NULL
AUTO_INCREMENT,'.
' `order_id` INT(10) UNSIGNED NOT NULL,'.
' `vendor_id` INT(10) UNSIGNED NOT NULL,'.
' `order_transaction_created` INT(11) NOT NULL DEFAULT 0,'.
' `order_transaction_status` varchar(255) NOT NULL DEFAULT
\'\','.
' `order_transaction_price` decimal(12,5) NOT NULL DEFAULT
\'0.00000\','.
' `order_transaction_currency_id` INT(10) UNSIGNED NOT NULL
DEFAULT \'0\','.
' `order_transaction_paid` INT(10) UNSIGNED NOT NULL DEFAULT
0,'.
' `order_transaction_valid` INT(4) UNSIGNED NOT NULL DEFAULT
0,'.
' PRIMARY KEY (`order_transaction_id`)'.
') ENGINE=MyISAM DEFAULT CHARSET=utf8;';
$this->db->setQuery($query);
try { $this->db->execute(); }
catch(Exception $e) {}
$updateHelper = hikamarket::get('helper.update');
$updateHelper->processMigration_Transaction();
}
if(version_compare($this->fromVersion, '2.1.0',
'<')) {
$query = 'CREATE TABLE IF NOT EXISTS `#__hikamarket_vendor_user`
('.
' `vendor_id` INT(10) NOT NULL,'.
' `user_id` INT(10) NOT NULL,'.
' `user_access` TEXT NULL,'.
' `ordering` INT(10) NOT NULL DEFAULT 1,'.
' PRIMARY KEY (`vendor_id`, `user_id`)'.
') ENGINE=MyISAM DEFAULT CHARSET=utf8;';
$this->db->setQuery($query);
try { $this->db->execute(); }
catch(Exception $e) {}
}
if(version_compare($this->fromVersion, '3.0.0',
'<')) {
$this->addColumns('vendor', array(
'`vendor_location_lat` DECIMAL(9, 6) NULL',
'`vendor_location_long` DECIMAL(9, 6) NULL'
));
$config = hikamarket::config();
$vendor_statistics = $config->get('vendor_statistics',
null);
if(!empty($vendor_statistics)) {
$vendor_statistics =
hikamarket::unserialize(base64_decode($vendor_statistics));
$lst =
array('products_count','sales_sum','sales_avg','order_total_unpaid','orders_history','sales_count','last_orders','product_compare','geo_sales','serial_count');
$cpt = 0;
foreach($lst as $l) {
if(!isset($vendor_statistics[$l])) continue;
$vendor_statistics[$l]['order'] = $cpt++;
}
$query = 'UPDATE `#__hikamarket_config` SET config_value = '
.
$this->db->Quote(base64_encode(serialize($vendor_statistics))).'
WHERE config_namekey = \'vendor_statistics\'';
$this->db->setQuery($query);
try{$this->db->execute();}catch(Exception $e){}
}
}
if(version_compare($this->fromVersion, '3.1.1',
'<')) {
$query = 'ALTER TABLE
`'.hikamarket::table('vendor').'` MODIFY COLUMN
`vendor_location_lat` DECIMAL(9, 6) NULL';
$this->db->setQuery($query);
try { $this->db->execute(); } catch(Exception $e) {}
$query = 'ALTER TABLE
`'.hikamarket::table('vendor').'` MODIFY COLUMN
`vendor_location_long` DECIMAL(9, 6) NULL';
$this->db->setQuery($query);
try { $this->db->execute(); } catch(Exception $e) {}
}
}
protected function addColumns($table, $columns) {
if(!is_array($columns))
$columns = array($columns);
$query = 'ALTER TABLE `'.hikamarket::table($table).'` ADD
'.implode(', ADD', $columns).';';
$this->db->setQuery($query);
$err = false;
try {
$this->db->execute();
}catch(Exception $e) {
$err = true;
}
if(!$err)
return true;
if($err && count($columns) > 1) {
foreach($columns as $col) {
$query = 'ALTER TABLE `'.hikamarket::table($table).'`
ADD '.$col.';';
$this->db->setQuery($query);
$err = 0;
try {
$this->db->execute();
}catch(Exception $e) {
$err++;
}
}
if($err < count($columns))
return true;
}
$app = JFactory::getApplication();
$app->enqueueMessage('Error while adding column for the table
"'.htmlentities($table).'"',
'error');
return false;
}
public function displayInfo() {
$url =
'index.php?option='.HIKAMARKET_COMPONENT.'&ctrl=update&task=install&fromversion='.$this->fromVersion.'&update='.(int)$this->update.'&freshinstall='.(int)$this->freshinstall;
echo '
<div style="background:#f6f6f6;border:2px solid
#aabb33;max-width:100%;text-align:left;border-radius:6px;padding:20px
30px;margin:5px 0px 10px;">
<h2><img
src="'.HIKAMARKET_IMAGES.'icon-48/hikamarket.png"
alt=""/> '.HIKAMARKET_NAME.' 3.1.1
<small>'.JText::_('HIKAM_INSTALL_FOR').'
HikaShop</small></h2>
<p style="font-size:14px;">
'.JText::_('HIKAM_INSTALL_MSG1').'<br/>
'.JText::_('HIKAM_INSTALL_MSG2').'
</p>
<a href="'.$url.'" style="color:#fff;
background-color:#aabb33;border:1px solid #8da521;padding:10px
18px;font-size:18px;line-height:1.42;border-radius:4px;text-align:center;display:inline-block;text-decoration:none
!important;">
'.JText::_('HIKAM_INSTALL_CONTINUE').' »
</a>
</div>';
}
}
class hikamarketUninstall {
private $db;
public function __construct(){
$this->db = JFactory::getDBO();
$this->db->setQuery('DELETE FROM `#__hikamarket_config` WHERE
`config_namekey` = \'li\'');
$this->db->execute();
$this->db->setQuery('DELETE FROM `#__menu` WHERE link LIKE
\'%com_hikamarket%\'');
$this->db->execute();
}
public function unpublishModules(){
$this->db->setQuery('UPDATE `#__modules` SET `published` = 0
WHERE `module` LIKE \'%hikamarket%\'');
$this->db->execute();
}
public function unpublishPlugins(){
$this->db->setQuery('UPDATE `#__extensions` SET `enabled` = 0
WHERE `type` = \'plugin\' AND `element` LIKE
\'%hikamarket%\' AND `folder` NOT LIKE
\'%hikamarket%\'');
$this->db->execute();
}
}
class com_hikamarketInstallerScript {
public function install($parent) {
if(!defined('DS'))
define('DS', DIRECTORY_SEPARATOR);
include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_hikamarket'.DS.'helpers'.DS.'helper.php');
$lang = JFactory::getLanguage();
$lang->load(HIKAMARKET_COMPONENT,JPATH_SITE);
$installClass = new hikamarketInstall();
$installClass->addPref();
$installClass->updatePref();
$installClass->updateSQL();
$installClass->displayInfo();
return true;
}
public function update($parent) {
if(!defined('DS'))
define('DS', DIRECTORY_SEPARATOR);
include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_hikamarket'.DS.'helpers'.DS.'helper.php');
$lang = JFactory::getLanguage();
$lang->load(HIKAMARKET_COMPONENT,JPATH_SITE);
$installClass = new hikamarketInstall();
$installClass->addPref();
$installClass->updatePref();
$installClass->updateSQL();
$installClass->displayInfo();
return true;
}
public function uninstall($parent) {
$uninstallClass = new hikamarketUninstall();
$uninstallClass->unpublishModules();
$uninstallClass->unpublishPlugins();
}
public function preflight($type, $parent) {
if(!defined('DS'))
define('DS', DIRECTORY_SEPARATOR);
$hikashopFile =
rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_hikashop'.DS.'helpers'.DS.'helper.php';
if(!file_exists($hikashopFile)) {
echo '<h1>This extension works with
HikaShop.</h1>'.
'<h2>Please install HikaShop (starter, essential or
business) before installing HikaMarket.</h2>'.
'installation abort.';
$app = JFactory::getApplication();
$app->enqueueMessage('Cannot install HikaMarket without
HikaShop', 'warning');
return false;
}
include_once($hikashopFile);
$hikashopConfig = hikashop_config();
if(version_compare($hikashopConfig->get('version',
'1.0'), '4.2.0', '<')) {
echo '<h1>This extension works with HikaShop 4.2.0 or
newer.</h1>'.
'<h2>Please install the latest version of HikaShop
before.</h2>'.
'installation abort.';
$app = JFactory::getApplication();
if($type == 'update')
$app->enqueueMessage('Cannot update HikaMarket 3.1.1 without
HikaShop 4.2.0 or newer', 'warning');
else
$app->enqueueMessage('Cannot install HikaMarket 3.1.1 without
HikaShop 4.2.0 or newer', 'warning');
$joomConf = JFactory::getConfig();
$debug = $joomConf->get('debug');
if($debug) {
$app->enqueueMessage('Cannot install HikaMarket 3.1.1 without
HikaShop 4.2.0 or newer', 'error');
}
return false;
}
return true;
}
public function postflight($type, $parent) {
return true;
}
}