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];
	}
}
Site is undergoing maintenance

PACJA Events

Maintenance mode is on

Site will be available soon. Thank you for your patience!