diff --git a/Makefile b/Makefile index 36732296ed0f8a5a5c42e7f6687dc714ff37e8e8..118d3eff289d2d6a037ee4eecd1fe425ce9af48d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ BASE=ordernumber PLUGINTYPE=vmshopper -VERSION=1.9 +VERSION=1.10 PLUGINFILES=$(BASE).php $(BASE).script.php $(BASE).xml index.html diff --git a/ordernumber.php b/ordernumber.php index 7ad77535522525f574a554ffa800bba65365c195..621e195c578fc96a4376824da60c728ff9b61a9d 100644 --- a/ordernumber.php +++ b/ordernumber.php @@ -15,7 +15,6 @@ class plgVmShopperOrdernumber extends vmShopperPlugin { parent::__construct($subject, $config); /* Create the database table */ $this->tableFields = array_keys ($this->getTableSQLFields ()); - $this->onStoreInstallPluginTable($this->_psType); } public function getVmPluginCreateTableSQL () { @@ -140,19 +139,19 @@ class plgVmShopperOrdernumber extends vmShopperPlugin { // Look up the current counter $db = JFactory::getDBO(); - /* prevent sql injection attacks by escaping the user-entered format! */ - $nr_escaped = $db->getEscaped ($nr); + /* prevent sql injection attacks by escaping the user-entered format! Empty for global counter... */ /* For global counting, simply read the empty number_format entries! */ - $q = 'SELECT `count` FROM `'.$this->_tablename.'` WHERE `number_type`='.(int)$nrtype.' AND `number_format`="'.($global?"":$nr_escaped).'"'; + $nr_escaped = $global?"":$db->getEscaped ($nr); + $q = 'SELECT `count` FROM `'.$this->_tablename.'` WHERE `number_type`='.(int)$nrtype.' AND `number_format`="'.$nr_escaped.'"'; $db->setQuery($q); $existing = $db->loadResult(); $count = $existing?($existing+1):1; // Insert new counter value into the db if ($existing) { - $q = 'UPDATE `'.$this->_tablename.'` SET `count`= "'.$count.'" WHERE `number_type`='.(int)$nrtype.' AND `number_format`="'.($global?"":$nr_escaped).'"'; + $q = 'UPDATE `'.$this->_tablename.'` SET `count`= "'.$count.'" WHERE `number_type`='.(int)$nrtype.' AND `number_format`="'.$nr_escaped.'"'; } else { - $q = 'INSERT INTO `'.$this->_tablename.'` (`count`, `number_type`, `number_format`) VALUES ('.(int)$count.','.(int)$nrtype.', "'.($global?"":$nr_escaped).'")'; + $q = 'INSERT INTO `'.$this->_tablename.'` (`count`, `number_type`, `number_format`) VALUES ('.(int)$count.','.(int)$nrtype.', "'.$nr_escaped.'")'; } $db->setQuery( $q ); $db->query(); @@ -188,7 +187,7 @@ class plgVmShopperOrdernumber extends vmShopperPlugin { $orderstatusForInvoice = VmConfig::get('inv_os',array()); if(!is_array($orderstatusForInvoice)) $orderstatusForInvoice = array($orderstatusForInvoice); //for backward compatibility 2.0.8e $pdfInvoice = (int)VmConfig::get('pdf_invoice', 0); // backwards compatible - $force_create_invoice=JRequest::getInt('create_invoice', 0); + $force_create_invoice=JInput::getInt('create_invoice', 0); if ( in_array($orderDetails['order_status'],$orderstatusForInvoice) or $pdfInvoice==1 or $force_create_invoice==1 ){ $nrtype = 1; /*invoice-nr*/ $fmt = $this->params->get ('invoice_number_format', "#"); @@ -215,5 +214,11 @@ class plgVmShopperOrdernumber extends vmShopperPlugin { return $data; } } + + /* In versions before VM 2.6.8, the onStoreInstallPluginTable function was protected, so the installer couldn't call it to create the plugin table... + This function simply is a public wrapper to make this function available to the installer on all VM versions: */ + public function plgVmOnStoreInstallPluginTable($psType, $name='') { + return $this->onStoreInstallPluginTable($psType, $name); + } } diff --git a/ordernumber.script.php b/ordernumber.script.php index 5bfe9352b79b3b18e84c8fce94fc8213d0e860a7..caa5f2011d8fb1bda1a373b947752db5cfa26079 100644 --- a/ordernumber.script.php +++ b/ordernumber.script.php @@ -6,6 +6,9 @@ defined('_JEXEC') or die('Restricted access'); * @copyright Copyright (C) 2013-2014 Reinhold Kainhofer, office@open-tools.net * @license GPL v3+, http://www.gnu.org/copyleft/gpl.html */ +defined('DS') or define('DS', DIRECTORY_SEPARATOR); +if (!class_exists( 'VmConfig' )) + require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php'); class plgVmShopperOrdernumberInstallerScript { @@ -29,12 +32,23 @@ class plgVmShopperOrdernumberInstallerScript /** * Called after any type of action * - * @param string $route Which action is happening (install|uninstall|discover_install) + * @param string $route Which action is happening (install|update|uninstall|discover_install) * @param JAdapterInstance $adapter The object responsible for running this script * * @return boolean True on success */ // public function postflight($route, JAdapterInstance $adapter); + public function postflight ($type, $parent = null) { + if(!class_exists( 'vmPlugin' )) + require JPATH_VM_ADMINISTRATOR.DS.'plugins'.DS.'vmplugin.php'; + if(!class_exists( 'plgVmShopperOrdernumber' )) + require JPATH_ROOT.DS.'plugins'.DS.'vmshopper'.DS.'ordernumber'.DS.'ordernumber.php'; + $dispatcher = new JDispatcher(); + $config = array('name' => 'ordernumber', 'type' => 'vmshopper'); + $plugin = new plgVmShopperOrdernumber($dispatcher, $config); + $plugin->plgVmOnStoreInstallPluginTable('shopper'); +// $dispatcher->trigger("plgVmOnStoreInstallPluginTable", array('vmshopper')); + } /** * Called on installation @@ -79,7 +93,7 @@ class plgVmShopperOrdernumberInstallerScript { // Remove plugin table $db =& JFactory::getDBO(); - $db->setQuery('DROP TABLE `#__virtuemart_shopper_plg_ordernumber`;'); + $db->setQuery('DROP TABLE IF EXISTS `#__virtuemart_shopper_plg_ordernumber`;'); $db->query(); } } \ No newline at end of file diff --git a/ordernumber.xml b/ordernumber.xml index bad71ae324179f40d9b496b44dc8254d337cc782..32999cdccddb251a6115f4cd43e4536ea2a71295 100644 --- a/ordernumber.xml +++ b/ordernumber.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<extension version="1.6" type="plugin" group="vmshopper" method="upgrade"> +<extension version="2.5" type="plugin" group="vmshopper" method="upgrade"> <name>VMSHOPPER_ORDERNUMBER</name> <creationDate>2013-01-09</creationDate> <author>Reinhold Kainhofer</author> @@ -7,8 +7,8 @@ <authorUrl>http://www.open-tools.net/</authorUrl> <copyright>Copyright (C) 2012-2014 Reinhold Kainhofer. All rights reserved.</copyright> <license>http://www.gnu.org/licenses/gpl-3.0.html GNU/GPLv3</license> - <version>1.9</version> - <releaseDate>2014-01-13</releaseDate> + <version>1.10</version> + <releaseDate>2014-08-31</releaseDate> <releaseType>Minor update</releaseType> <downloadUrl>http://www.open-tools.net/virtuemart-2-extensions/vm2-ordernumber-plugin.html</downloadUrl> @@ -18,14 +18,14 @@ <filename plugin="ordernumber">ordernumber.php</filename> <filename>ordernumber.script.php</filename> <filename>index.html</filename> - <folder>language</folder> + <folder>language</folder> </files> <scriptfile>ordernumber.script.php</scriptfile> <languages folder="language"> - <language tag="en-GB">en-GB/en-GB.plg_vmshopper_ordernumber.ini</language> - <language tag="en-GB">en-GB/en-GB.plg_vmshopper_ordernumber.sys.ini</language> - <language tag="de-DE">de-DE/de-DE.plg_vmshopper_ordernumber.ini</language> - <language tag="de-DE">de-DE/de-DE.plg_vmshopper_ordernumber.sys.ini</language> + <language tag="en-GB">en-GB/en-GB.plg_vmshopper_ordernumber.ini</language> + <language tag="en-GB">en-GB/en-GB.plg_vmshopper_ordernumber.sys.ini</language> + <language tag="de-DE">de-DE/de-DE.plg_vmshopper_ordernumber.ini</language> + <language tag="de-DE">de-DE/de-DE.plg_vmshopper_ordernumber.sys.ini</language> </languages> <!-- Joomla 2.5 & 3.0 config --> <config> diff --git a/releases/plg_vmshopper_ordernumber_v1.10.zip b/releases/plg_vmshopper_ordernumber_v1.10.zip new file mode 100644 index 0000000000000000000000000000000000000000..076ce15134dc99ad2fe9169eebb0649616e20d0a Binary files /dev/null and b/releases/plg_vmshopper_ordernumber_v1.10.zip differ