Current File : /home/pacjaorg/public_html/km/administrator/components/com_djclassifieds/script.djclassifieds.php |
<?php
/**
* @package DJ-Classifieds
* @copyright Copyright (C) DJ-Extensions.com, All rights reserved.
* @license http://www.gnu.org/licenses GNU/GPL
* @author url: http://dj-extensions.com
* @author email contact@dj-extensions.com
*/
defined('_JEXEC') or die('Restricted access');
class Com_DJClassifiedsInstallerScript
{
function preflight($type, $parent)
{
if($type == 'update'){
$db = JFactory::getDBO();
$this->oldversion = $this->getParam('version');
if(version_compare($this->oldversion, '3.9.beta', '<')){
$db->setQuery("UPDATE #__extensions SET name='com_djclassifieds' WHERE type='component' AND element='com_djclassifieds'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='mod_djclassifieds_cattree' WHERE type='module' AND element='mod_djclassifieds_cattree'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='mod_djclassifieds_items' WHERE type='module' AND element='mod_djclassifieds_items'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='mod_djclassifieds_maps' WHERE type='module' AND element='mod_djclassifieds_maps'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='mod_djclassifieds_menu' WHERE type='module' AND element='mod_djclassifieds_menu'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='mod_djclassifieds_regions' WHERE type='module' AND element='mod_djclassifieds_regions'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='mod_djclassifieds_regions_select' WHERE type='module' AND element='mod_djclassifieds_regions_select'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='mod_djclassifieds_search' WHERE type='module' AND element='mod_djclassifieds_search'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='mod_djclassifieds_stats' WHERE type='module' AND element='mod_djclassifieds_stats'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='mod_djclassifieds_user_avatar' WHERE type='module' AND element='mod_djclassifieds_user_avatar'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='mod_djclassifieds_user_menu' WHERE type='module' AND element='mod_djclassifieds_user_menu'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='mod_djclassifieds_user_points' WHERE type='module' AND element='mod_djclassifieds_user_points'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='DJ-Classifieds Authorize.net payment' WHERE type='plugin' AND element='djcfAuthorizeNET' AND folder='djclassifiedspayment'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='DJ-Classifieds Bank Transfer payment' WHERE type='plugin' AND element='djcfBankTransfer' AND folder='djclassifiedspayment'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='DJ-Classifieds PayPal payment' WHERE type='plugin' AND element='djcfPaypal' AND folder='djclassifiedspayment'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='DJ-Classifieds PayU payment' WHERE type='plugin' AND element='djcfPayU' AND folder='djclassifiedspayment'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='DJ-Classifieds Przelewy24 payment' WHERE type='plugin' AND element='djcfPrzelewy24' AND folder='djclassifiedspayment'");
$db->execute();
$db->setQuery("UPDATE #__extensions SET name='plg_system_djcfregistration' WHERE type='plugin' AND element='djcfregistration' AND folder='system'");
$db->execute();
}
if(version_compare($this->oldversion, '3.9.5', '<')){
$db->setQuery("UPDATE #__djcf_items SET name = CONCAT(SUBSTRING(name,1,188),'...') WHERE LENGTH(name) > 191");
$db->execute();
}
}
}
function postflight($type, $parent)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$db->setQuery("UPDATE #__extensions SET enabled=1 WHERE type='plugin' AND element='djcfquickicon'");
$db->execute();
$db->setQuery("DELETE FROM #__extensions WHERE type='plugin' AND folder='djclassifieds' AND element='registration'"); // using system plugin only
$db->execute();
// $db->setQuery("UPDATE #__extensions SET element=LOWER(element) WHERE type='plugin' AND folder='djclassifiedspayment'"); // j4 requirement
// $db->execute();
if($type == 'update'){
if(version_compare($this->oldversion, '3.6', 'lt')){
JLoader::register('DJClassifiedsControllerItems', JPATH_ROOT.'/administrator/components/com_djclassifieds/controllers/items.php');
$controller = new DJClassifiedsControllerItems();
$controller->migratePromotions(false);
$app->enqueueMessage(JText::_('COM_DJCLASSIFIEDS_PROMOTIONS_MIGRATED_SUCCESFULLY'), 'success');
$app->enqueueMessage(JText::_('COM_DJCLASSIFIEDS_ANONYMOUS_INFORMATIONS_MESSAGE'), 'Notice');
}
if(version_compare($this->oldversion, '3.8.beta', 'lt')) {
$db->setQuery("UPDATE #__djcf_fields SET attribs=params");
$db->execute();
$db->setQuery("UPDATE #__djcf_fields SET params=''");
$db->execute();
}
if(version_compare($this->oldversion, '3.8.1', 'lt')) {
$db->setQuery("UPDATE #__djcf_fields SET access=6 WHERE access=1");
$db->execute();
$db->setQuery("UPDATE #__djcf_fields SET access=1 WHERE access=0");
$db->execute();
}
if(version_compare($this->oldversion, '3.8.3', '>=') && version_compare($this->oldversion, '3.8.3.3', '<')){ // items promotions calc. fix
$db->setQuery("UPDATE #__djcf_items_promotions ip INNER JOIN #__djcf_items i ON ip.item_id=i.id SET ip.date_exp = NOW() + INTERVAL ip.days DAY, ip.updated = 0 WHERE i.date_mod > i.date_start AND (ip.date_exp > now() OR ip.date_exp = '0000-00-00 00:00:00')");
$db->execute();
require_once(JPATH_ROOT.'/administrator/components/com_djclassifieds/lib/djpayment.php');
DJClassifiedsPayment::updatePromotionsFix();
}
if(version_compare($this->oldversion, '3.8.3.4', '<')){ // region aliases generate if empty
$db->setQuery("UPDATE #__djcf_regions SET alias = LOWER(REPLACE(REPLACE(name,' ','-'),'\'','')) WHERE alias = ''");
$db->execute();
}
if(version_compare($this->oldversion, '3.9.alpha', '<')){ // filling old bids with non-empty value for the new winner calc. fn
if(version_compare($this->oldversion, '3.8.3', '>=')){
$db->setQuery("UPDATE #__djcf_auctions a LEFT JOIN #__djcf_items i ON a.item_id=i.id SET a.closed=(CASE WHEN i.date_exp < ".$db->q(JFactory::getDate()->toSQL())." THEN i.date_exp WHEN i.id IS NULL THEN '1999-12-31' WHEN a.date < i.date_renew THEN date_renew END) WHERE closed IS NULL");
}else{
$db->setQuery("UPDATE #__djcf_auctions a LEFT JOIN #__djcf_items i ON a.item_id=i.id SET a.closed=(CASE WHEN i.date_exp < ".$db->q(JFactory::getDate()->toSQL())." THEN i.date_exp WHEN i.id IS NULL THEN '1999-12-31' END) WHERE closed IS NULL");
}
$db->execute();
}
if(version_compare($this->oldversion, '3.8.3', '>')){
$db->setQuery("SHOW COLUMNS FROM #__djcf_items LIKE 'new'");
$exists = $db->loadObject();
if(!$exists){
$db->setQuery("ALTER TABLE `#__djcf_items` ADD `new` int(11) NOT NULL DEFAULT 0;");
$db->execute();
}
$db->setQuery("SHOW COLUMNS FROM #__djcf_items LIKE 'date_renew'");
$exists = $db->loadObject();
if(!$exists){
$db->setQuery("ALTER TABLE `#__djcf_items` ADD `date_renew` datetime NULL;");
$db->execute();
}
}
if(version_compare($this->oldversion, '3.9', '<')){ // removing not used columns
$old_cols = array(
'#__djcf_categories' => array('price_special', 'icon_url'),
'#__djcf_fields' => array('in_buynow', 'buynow_values'),
'#__djcf_items' => array('image_url', 'paypal_token', 'payed'),
'#__djcf_days' => array('price_special', 'price_renew_special'),
'#__djcf_promotions' => array('price_special'),
'#__djcf_types' => array('price_special'),
'#__djcf_points' => array('price_special'),
'#__djcf_orders' => array('item_option'),
'#__djcf_plans' => array('price_special'),
'#__djcf_shipping_methods' => array('tax_rate_id', 'shipping_details'),
'#__djcf_groups_prices' => array('price_special')
);
foreach($old_cols as $table => $cols){
foreach($cols as $col){
$db->setQuery("SHOW COLUMNS FROM ".$table." LIKE ".$db->q($col));
$exists = $db->loadObject();
if($exists){
$db->setQuery("ALTER TABLE ".$table." DROP ".$col);
$db->execute();
}
}
}
}
if(version_compare($this->oldversion, '3.9.2', '<')){
if(JPluginHelper::isEnabled('djclassifieds', 'leaflet')){
// set 'leaflet' as Map Provider in global params
$table = JTable::getInstance('extension');
$componentid = JComponentHelper::getComponent('com_djclassifieds')->id;
$table->load($componentid);
$comparams = JComponentHelper::getParams('com_djclassifieds');
$comparams->set('map_provider', 'leaflet');
$table->bind(array('params' => $comparams->toString()));
$table->store();
}
}
if(version_compare($this->oldversion, '3.9.5', '<')){
// set params legacy 'Custom field' option as enabled
$table = JTable::getInstance('extension');
$componentid = JComponentHelper::getComponent('com_djclassifieds')->id;
$table->load($componentid);
$comparams = JComponentHelper::getParams('com_djclassifieds');
if($comparams->get('show_contact','1') == '2'){
$comparams->set('show_contact', '1');
}
if($comparams->get('show_price','1') == '2'){
$comparams->set('show_price', '1');
}
$table->bind(array('params' => $comparams->toString()));
$table->store();
// set auction assist for auction items if already enabled
if($comparams->get('auction_assist','0') == '1'){
$db->setQuery("UPDATE #__djcf_items SET auction_assist=1 WHERE auction=1");
$db->execute();
}
}
}
if($type != 'uninstall'){
// move shared code
$src = JPath::clean(JPATH_ROOT.'/media/djclassifieds/djextensions');
$dst = JPath::clean(JPATH_ROOT.'/media/djextensions');
JFolder::create($dst);
$folders = JFolder::folders($src);
foreach($folders as $folder) {
JFolder::move($src.'/'.$folder, $dst.'/'.$folder);
}
@JFolder::delete($src);
require_once(JPath::clean(JPATH_ADMINISTRATOR.'/components/com_djclassifieds/lib/djlicense.php'));
DJLicense::setUpdateServer('Classifieds');
}
}
function getParam($name)
{
$db = JFactory::getDbo();
$db->setQuery('SELECT manifest_cache FROM #__extensions WHERE element = "com_djclassifieds" AND type="component"');
$manifest = json_decode($db->loadResult(), true);
return $manifest[$name];
}
}