diff --git a/app/code/community/OpenTools/Ordernumber/Block/Counters.php b/app/code/community/OpenTools/Ordernumber/Block/Counters.php index 3f5e18ec432594acf22d94e871204a28cdead11b..f1fe2b3defc4525a2a4e76e2adec4fc6c656db80 100644 --- a/app/code/community/OpenTools/Ordernumber/Block/Counters.php +++ b/app/code/community/OpenTools/Ordernumber/Block/Counters.php @@ -127,7 +127,7 @@ class OpenTools_Ordernumber_Block_Counters extends Mage_Adminhtml_Block_System_C * @param array $websiteIds * @return array */ - public function _getScoreStructureOptions($isAll = false, $websiteIds = array(), + public function _getStoreStructureOptions($isAll = false, $websiteIds = array(), $groupIds = array(), $storeIds = array() ) { $sstore = Mage::getSingleton('adminhtml/system_store'); @@ -200,7 +200,7 @@ class OpenTools_Ordernumber_Block_Counters extends Mage_Adminhtml_Block_System_C protected function _getNumberScopeSelect($name, $disabled=true, $current=null) { - $options = $this->_getScoreStructureOptions(true); + $options = $this->_getStoreStructureOptions(true); $html = $this->getLayout()->createBlock('core/html_select') ->setName($name) ->setClass($this->_getDisabled($disabled)) diff --git a/app/code/community/OpenTools/Ordernumber/Helper/Data.php b/app/code/community/OpenTools/Ordernumber/Helper/Data.php index b059a830f7505050c84b8c7845bdaa5e10235842..531a9a4c731f17b3dd86ec8b0672a2d30f99dce4 100644 --- a/app/code/community/OpenTools/Ordernumber/Helper/Data.php +++ b/app/code/community/OpenTools/Ordernumber/Helper/Data.php @@ -5,81 +5,31 @@ class OpenTools_Ordernumber_Helper_Data extends Mage_Core_Helper_Abstract { protected $helper = null; - function __construct($label, $item) + function logitem($label, $item) { - $this->helper = OrdernumberHelperMagento::getHelper(); Mage::Log($label . " " . get_class($item) . "\n", null, 'ordernumber.log'); Mage::Log(is_array($item)?$item:$item->debug(), null, 'ordernumber.log'); Mage::Log(get_class_methods(get_class($item)), null, 'ordernumber.log'); - } - - /* Return a random "string" of the given length taken from the given alphabet */ - protected function randomString($alphabet, $len) - { - $alen = strlen($alphabet); - $r = ""; - for ($n=0; $n<$len; $n++) { - $r .= $alphabet[mt_rand(0, $alen-1)]; - } - return $r; - } - - protected function replaceRandom ($match) + } + function __construct() { - /* the regexp matches (random)(Type)(Len) as match, Type and Len is optional */ - $len = ($match[3]?$match[3]:1); - // Fallback: If no Type is given, use Digit - $alphabet = "0123456789"; - // Select the correct alphabet depending on Type - switch (strtolower($match[2])) { - case "digit": - $alphabet = "0123456789"; - break; - - case "hex": - $alphabet = "0123456789abcdef"; - break; - - case "letter": - $alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; - break; - - case "uletter": - $alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - break; - - case "lletter": - $alphabet = "abcdefghijklmnopqrstuvwxyz"; - break; - - case "alphanum": - $alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - break; - } - return self::randomString ($alphabet, $len); - } + // Setup the ordernumber helper object and register the required callbacks: + $this->helper = OrdernumberHelperMagento::getHelper(); - protected function setupDateTimeReplacements (&$reps, $nrtype) - { - $utime = microtime(true); - $reps["[year]"] = date ("Y", $utime); - $reps["[year2]"] = date ("y", $utime); - $reps["[month]"] = date("m", $utime); - $reps["[day]"] = date("d", $utime); - $reps["[hour]"] = date("H", $utime); - $reps["[hour12]"] = date("h", $utime); - $reps["[ampm]"] = date("a", $utime); - $reps["[minute]"] = date("i", $utime); - $reps["[second]"] = date("s", $utime); - $milliseconds = (int)(1000*($utime - (int)$utime)); - $millisecondsstring = sprintf('%03d', $milliseconds); - $reps["[decisecond]"] = $millisecondsstring[0]; - $reps["[centisecond]"] = substr($millisecondsstring, 0, 2); - $reps["[millisecond]"] = $millisecondsstring; + $this->helper->registerCallback('setupStoreReplacements', array($this, 'setupStoreReplacements')); + + + $this->helper->registerCallback('setupOrderReplacements', array($this, 'setupOrderReplacements')); + $this->helper->registerCallback('setupUserReplacements', array($this, 'setupUserReplacements')); + $this->helper->registerCallback('setupShippingReplacements', array($this, 'setupShippingReplacements')); + $this->helper->registerCallback('setupThirdPartyReplacements', array($this, 'setupThirdPartyReplacements')); } + + public function getOrdernumberHelper() { + return $this->helper; + } - protected function setupAddressReplacements(&$reps, $prefix, $address, $nrtype) - { + public function setupAddressReplacements(&$reps, $prefix, $address, $nrtype) { if (!$address) { return; } @@ -103,147 +53,84 @@ class OpenTools_Ordernumber_Helper_Data extends Mage_Core_Helper_Abstract $reps["[".$prefix."countryid]"] = $country->getId(); } - protected function setupStoreReplacements (&$reps, $order, $nrtype) - { - $store = $order->getStore(); - $reps["[storeid]"] = $store->getStoreId(); - $reps["[storecurrency]"] = $order->getStoreCurrency(); - } - protected function setupOrderReplacements (&$reps, $order, $nrtype) - { - $shippingAddress = $order->getShippingAddress(); - $billingAddress = $order->getBillingAddress(); - if ($shippingAddress) { - $address = $shippingAddress; - } else { - $address = $billingAddress; - } - /* if ($nrtype == "invoice") { - // Invoices use the billing address for un-prefixed fields - $address = $billingAddress; - } */ - $reps["[orderid]"] = $order->getId(); - $reps["[ordernumber]"] = $order->getIncrementId(); - $reps["[orderstatus]"] = $order->getStatus(); - $reps["[currency]"] = $order->getOrderCurrency()->getCurrencyCode(); - $reps["[customerid]"] = $order->getCustomerId(); - $this->setupAddressReplacements($reps, "", $address, $nrtype); - $this->setupAddressReplacements($reps, "shipping", $shippingAddress, $nrtype); - $this->setupAddressReplacements($reps, "billing", $billingAddress, $nrtype); - - $reps["[totalitems]"] = $order->getTotalItemCount(); - $reps["[totalquantity]"] = $order->getTotalQtyOrdered(); + public function setupStoreReplacements (&$reps, $details, $nrtype) { + if (isset($details->order)) { + $order = $details->order; + $store = $order->getStore(); + $reps["[storeid]"] = $store->getStoreId(); + $reps["[storecurrency]"] = $order->getStoreCurrency(); + } } - protected function setupShippingReplacements(&$reps, $order, $nrtype) - { - $reps["[shippingmethod]"] = $order->getShippingMethod(); + public function setupOrderReplacements (&$reps, $details, $nrtype) { + if (isset($details->order)) { + $order = $details->order; + $shippingAddress = $order->getShippingAddress(); + $billingAddress = $order->getBillingAddress(); + if ($shippingAddress) { + $address = $shippingAddress; + } else { + $address = $billingAddress; + } + /* if ($nrtype == "invoice") { + // Invoices use the billing address for un-prefixed fields + $address = $billingAddress; + } */ + $reps["[orderid]"] = $order->getId(); + $reps["[ordernumber]"] = $order->getIncrementId(); + $reps["[orderstatus]"] = $order->getStatus(); + $reps["[currency]"] = $order->getOrderCurrency()->getCurrencyCode(); + $reps["[customerid]"] = $order->getCustomerId(); + $this->setupAddressReplacements($reps, "", $address, $nrtype); + $this->setupAddressReplacements($reps, "shipping", $shippingAddress, $nrtype); + $this->setupAddressReplacements($reps, "billing", $billingAddress, $nrtype); + + $reps["[totalitems]"] = $order->getTotalItemCount(); + $reps["[totalquantity]"] = $order->getTotalQtyOrdered(); + + // TODO: Add list variables, like SKUs, shipping classes, categories, manufacturers, etc. + /* + // List-valued properties for custom variable checks: + // TODO: Also implement variable for: + // - Shipping needed + // - Downloads available + $lineitems = $order->get_items(); + $skus = array(); + $categories = array(); + $tags = array(); + $shippingclasses = array(); + foreach ($lineitems as $l) { + $p = $order->get_product_from_item($l); + $skus[$p->get_sku()] = 1; + foreach (wc_get_product_terms( $p->id, 'product_cat') as $c) { + $categories[$c->slug] = 1; + } + foreach (wc_get_product_terms( $p->id, 'product_tag') as $c) { + $tags[$c->slug] = 1; + } + $shippingclasses[$p->get_shipping_class()] = 1; + } + $reps["[skus]"] = array_keys($skus); + $reps["[categories]"] = array_keys($categories); + $reps["[tags]"] = array_keys($tags); + $reps["[shippingclasses]"] = array_keys($shippingclasses); + */ + } + if (isset($details->invoice)) { + $invoice = $details->invoice; + $reps["[invoiceid]"] = $invoice->getId(); + } } - - protected function setupShipmentReplacements (&$reps, $shipment, $order, $nrtype) - { - // TODO - } - protected function setupInvoiceReplacements (&$reps, $invoice, $order, $nrtype) - { - $reps["[invoiceid]"] = $invoice->getId(); - } - protected function setupCreditMemoReplacements (&$reps, $creditmemo, $order, $nrtype) - { - // TODO - } - protected function setupReplacements($nrtype, $info) - { - $reps = array(); - $order = $info['order']; - $this->setupDateTimeReplacements($reps, $nrtype); - $this->setupStoreReplacements($reps, $order, $nrtype); - $this->setupOrderReplacements($reps, $order, $nrtype); - $this->setupShippingReplacements($reps, $order, $nrtype); - if (isset($info['shipment'])) { - $this->setupShipmentReplacements($reps, $info['shipment'], $order, $nrtype); - } - if (isset($info['invoice'])) { - $this->setupInvoiceReplacements($reps, $info['invoice'], $order, $nrtype); - } - if (isset($info['creditmemo'])) { - $this->setupCreditMemoReplacements($reps, $info['creditmemo'], $order, $nrtype); - } -// Mage::Log('Replacements at end of setupReplacements(nrtype='.$nrtype.'): '.print_r($reps,1), null, 'ordernumber.log'); - - return $reps; - } - - protected function applyCustomVariables ($nrtype, $info, $reps, $customvars) - { - static $listvars = array("groups", "skus"); -// Mage::getSingleton('core/session')->addWarning('<pre>custom variables, conditionvar='.$conditionvar.', reps='.print_r($reps,1).', customvars='.print_r($customvars,1).'</pre>'); - $order = $info['order']; - $customer = $order->getCustomer(); - $address = $order->getShippingAddress(); - $store = $order->getStore(); -// $this->logitem("Order: ", $order); - foreach ($customvars as $c) { - $conditionvar = $c['conditionvar']; - - $found = false; - $compareval = null; - - if (!$found && isset($reps[$conditionvar])) { - $found = true; - $compareval = $reps[$conditionvar]; - } elseif (isset($reps['['.$conditionvar.']'])) { - $found = true; - $compareval = $reps['['.$conditionvar.']']; - } elseif (in_array($conditionvar, $listvars)) { - // TODO: Handle lists - $found = true; - $compareval = null /* TODO */; - } elseif ($order && $compareval = $order->getData($conditionvar)) { - // TODO: Handle order property - $found = true; - } elseif ($customer && $compareval = $customer->getData($conditionvar)) { - // TODO: Handle customer property - $found = true; - } elseif ($address && $compareval = $address->getData($conditionvar)) { - // TODO: Handle address property - $found = true; - } elseif ($store && $compareval = $store->getData($conditionvar)) { - // TODO: Handle store property - $found = true; - } else { - // TODO: Handle other possible properties! - // TODO: Print out warning that variable could not be found. -// Mage::getSingleton('core/session')->addWarning($this->__('Unable to find variable "%s" used in the ordernumber custom variable definitions.', $conditionvar)); - } - if ($found) { - if (is_array($compareval)) { - $match = in_array($c['conditionval'], $compareval); - } else { - $match = ($c['conditionval'] == $compareval); - } - } - if ($found && $match) { - $varname = '['.strtolower($c['newvar']).']'; - $reps[$varname] = $c['newval']; - } -// $this->logitem("Reps after $conditionvar: ", $order); - } - return $reps; - } - - protected function doReplacements ($fmt, $reps) - { - // First, replace all random...[n] fields. This needs to be done with a regexp and a callback: - $fmt = preg_replace_callback ('/\[(random)(.*?)([0-9]*?)\]/', array($this, 'replaceRandom'), $fmt); - return str_ireplace (array_keys($reps), array_values($reps), $fmt); - } - - public function replace_fields ($fmt, $nrtype, $info, $customvars) - { - $reps = $this->setupReplacements ($nrtype, $info); - $reps = $this->applyCustomVariables ($nrtype, $info, $reps, $customvars); -// $this->logitem("All replacements after custom variables: ", $reps); - return $this->doReplacements($fmt, $reps); + public function setupUserReplacements (&$reps, $details, $nrtype) { + // TODO +// $reps["[ipaddress]"] = $details->customer_ip_address; +// $reps["[userid]"] = $details->get_user_id(); + } + + public function setupShippingReplacements(&$reps, $details, $nrtype) { + if (isset($details->order)) { + $order = $details->order; + $reps["[shippingmethod]"] = $order->getShippingMethod(); + } } diff --git a/app/code/community/OpenTools/Ordernumber/Model/Observer.php b/app/code/community/OpenTools/Ordernumber/Model/Observer.php index 165cb3f83d85e812572fbae3d8c2f4bf2dceaf42..75307353e784f9ee0109fefa02dac4f5fcc252d9 100644 --- a/app/code/community/OpenTools/Ordernumber/Model/Observer.php +++ b/app/code/community/OpenTools/Ordernumber/Model/Observer.php @@ -78,6 +78,17 @@ class OpenTools_Ordernumber_Model_Observer extends Mage_Core_Model_Abstract $creditmemo = $observer->getEvent()->getCreditmemo(); return $this->handle_new_number('creditmemo', $creditmemo, $creditmemo->getOrder()); } + + protected function getCustomVariables() { + $customvars = Mage::getStoreConfig('ordernumber/replacements', $storeId); + if (isset($customvars['replacements'])) { + $customvars = $customvars['replacements']; + } + if ($customvars) { + $customvars = unserialize($customvars); + } + return $customvars; + } public function handle_new_number ($nrtype, $object, $order) { @@ -87,90 +98,56 @@ class OpenTools_Ordernumber_Model_Observer extends Mage_Core_Model_Abstract $enabled = Mage::getStoreConfig($cfgprefix.'/active', $storeId); if ($enabled && !$object->getId() && !$object->getOrdernumberProcessed()) { - // This trigger might be called twice, so ignore it the second time! - $object->setOrdernumberProcessed(true); $format = Mage::getStoreConfig($cfgprefix.'/format', $storeId); $scope = Mage::getStoreConfig($cfgprefix.'/scope', $storeId); - $reset = Mage::getStoreConfig($cfgprefix.'/reset', $storeId); - $counterfmt = Mage::getStoreConfig($cfgprefix.'/resetformat', $storeId); - $digits = Mage::getStoreConfig($cfgprefix.'/digits', $storeId); - $increment = Mage::getStoreConfig($cfgprefix.'/increment', $storeId); - - // First, replace all variables: + $global = Mage::getStoreConfig($cfgprefix.'/global', $storeId); + $customvars = $this->getCustomVariables(); + $ctrsettings = array( + "${nrtype}_format" => '', + "${nrtype}_counter" => '', + "${nrtype}_global" => $global, + "${nrtype}_padding" => 1, + "${nrtype}_step" => 1, + "${nrtype}_start" => 1, + "${nrtype}_scope" => $scope, + ); $helper = Mage::helper('ordernumber'); - $info = array('order'=>$order, $nrtype=>$object); - - // The ordernumber/...numbers/reset contains some pre-defined counter names as - // well as enum values indicating certain behavior. Replace those by the actual - // counter names for the current counter: - switch ($reset) { - case 0: - $format = $format . '|'; - break; - case 1: - $format = $format . '|' . $format; - break; - case -1: - $format = $format . '|' . $counterfmt; - break; - default: - /* Pre-defined counter formats saved in the /reset config field */ - $counterfmt = $format . '|' . $reset; - break; - } - $customvars = Mage::getStoreConfig('ordernumber/replacements', $storeId); - if (isset($customvars['replacements'])) { - $customvars = $customvars['replacements']; - } - if ($customvars) { - $customvars = unserialize($customvars); - } -// Mage::Log('customvars: '.print_r($customvars,1), null, 'ordernumber.log'); - - // Now apply the replacements - $nr = $helper->replace_fields ($format, $nrtype, $info, $customvars); - - // Split at a | to get the number format and a possibly different counter increment format - // If a separate counter format is given after the |, use it, otherwise reuse the number format itself as counter format - $parts = explode ("|", $nr); - $format = $parts[0]; - $counterfmt = $parts[(count($parts)>1)?1:0]; - // Now find the next counter that does not lead to duplicate - $newnumber = null; - $model = $this->getModel(); - - $count = 0; - $created = false; - // Make up to 150 attempts to create a number... - while (empty($newnumber) && ($count<150)) { - $count += 1; - - // Find the next counter value - $scopeId = ''; - if ($scope>=1) $scopeId = $store->getWebsiteId(); - if ($scope>=2) $scopeId .= '/' . $store->getGroupId(); - if ($scope>=3) $scopeId .= '/' . $store->getStoreId(); - $count = $model->getCounterValueIncremented($nrtype, $counterfmt, $increment, $scopeId); - $newnumber = str_replace ("#", sprintf('%0' . (int)$digits . 's', $count), $format); - - // Check whether that number is already in use. If so, attempt to create the next number: - $modelname=($nrtype=='order') ? 'sales/order' : ('sales/order_'.$nrtype); - $collection = Mage::getModel($modelname)->getCollection()->addFieldToFilter('increment_id', $newnumber); - if ($collection->getAllIds()) { - Mage::Log("$nrtype number $newnumber already in use, trying again", null, 'ordernumber.log'); - //number already exists => next attempt in the loop - $newnumber = null; - } else { - $object->setIncrementId($newnumber); - $created = true; - } - } - if (!$created) { - Mage::Log("Unable to create $nrtype number for counter format $nr (name $counterfmt, scope $scopeId)...", null, 'ordernumber.log'); - } - } - } + $info = array('order'=>$order, $nrtype=>$object, 'store'=>$store); + $newnumber = null; + $count = 0; + $created = false; + // Make up to 150 attempts to create a number... + while (empty($newnumber) && ($count<150)) { + $count += 1; + $newnumber = $helper->getHelper()->createNumber ($fmt, $nrtype, $info, $customvars, $ctrsettings); + + // Check whether that number is already in use. If so, attempt to create the next number: + $modelname=($nrtype=='order') ? 'sales/order' : ('sales/order_'.$nrtype); + $collection = Mage::getModel($modelname)->getCollection()->addFieldToFilter('increment_id',$newnumber); + if ($collection->getAllIds()) { + Mage::Log("$nrtype number $newnumber already in use, trying again", null, 'ordernumber.log'); + //number already exists => next attempt in the loop + $newnumber = null; + } else { + $object->setIncrementId($newnumber); + $created = true; + } + } + if (!$created) { + Mage::Log("Unable to create $nrtype number for counter format $nr (name $counterfmt, scope $scopeId)...", null, 'ordernumber.log'); + } + return $newnumber; + } + } + +// // Find the next counter value +// $scopeId = ''; +// if ($scope>=1) $scopeId = $store->getWebsiteId(); +// if ($scope>=2) $scopeId .= '/' . $store->getGroupId(); +// if ($scope>=3) $scopeId .= '/' . $store->getStoreId(); +// $count = $model->getCounterValueIncremented($nrtype, $counterfmt, $increment, $scopeId); +// $newnumber = str_replace ("#", sprintf('%0' . (int)$digits . 's', $count), $format); } diff --git a/lib/OpenTools/Ordernumber/library/ordernumber_helper.php b/lib/OpenTools/Ordernumber/library/ordernumber_helper.php index 2b504bc7188d0738e66ab80aa4d08f42bc1f68e1..1be63aec5aad46d7708f78b6b5a4ff3796c29132 100644 --- a/lib/OpenTools/Ordernumber/library/ordernumber_helper.php +++ b/lib/OpenTools/Ordernumber/library/ordernumber_helper.php @@ -6,7 +6,7 @@ * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html **/ -if ( !defined( 'ABSPATH' ) && !defined('_JEXEC') ) { +if ( !defined( 'ABSPATH' ) && !defined('_JEXEC') && !defined('_OPENTOOLS_ORDERNUMBER_FRAMEWORK')) { die( 'Direct Access to ' . basename( __FILE__ ) . ' is not allowed.' ); } @@ -367,8 +367,6 @@ class OrdernumberHelper { $format = $this->setupNumberFormatString($fmt, $type, $order, $reps); $format = $this->doReplacements($format, $reps); $ctrsettings = $this->extractCounterSettings ($format, $type, $ctrsettings); -JFactory::getApplication()->enqueueMessage("<pre>Counter Settings: ".print_r($ctrsettings,1)."</pre>", 'error'); -// JFactory::getApplication()->enqueueMessage("<pre>Replacements for $type:".print_r($reps,1)."</pre>", 'error'); // Increment the counter only if the format contains a placeholder for it! if (strpos($ctrsettings["${type}_format"], "#") !== false) { $countername = $ctrsettings["${type}_counter"]; diff --git a/lib/OpenTools/Ordernumber/ordernumber_helper_magento.php b/lib/OpenTools/Ordernumber/ordernumber_helper_magento.php index 6803e29910e3d751477fc16df8a05bad8ec5e651..394109f16c2c2717374370425bb3be5f330e01d7 100644 --- a/lib/OpenTools/Ordernumber/ordernumber_helper_magento.php +++ b/lib/OpenTools/Ordernumber/ordernumber_helper_magento.php @@ -6,6 +6,7 @@ * @license AFL **/ +defined ('_OPENTOOLS_ORDERNUMBER_FRAMEWORK') or define('_OPENTOOLS_ORDERNUMBER_FRAMEWORK', 1); if (!class_exists( 'OrdernumberHelper' )) require_once (dirname(__FILE__) . '/library/ordernumber_helper.php'); @@ -28,7 +29,7 @@ class OrdernumberHelperMagento extends OrdernumberHelper { $helper = new OrdernumberHelperMagento(); } return $helper; - } + } /** * HELPER FUNCTIONS, Magento-specific @@ -41,73 +42,31 @@ class OrdernumberHelperMagento extends OrdernumberHelper { // TODO // return plugins_url('library/' . $type . '/' . $file, __FILE__); } - - public function print_admin_styles() { -// wp_register_style('ordernumber-styles', $this->urlPath('css', 'ordernumber.css')); -// wp_enqueue_style('ordernumber-styles'); - } - - public function print_admin_scripts() { -// wp_register_script( 'ordernumber-script', $this->urlPath('js', 'ordernumber.js', __FILE__), array('jquery') ); -// wp_enqueue_script( 'ordernumber-script'); - - // Handle the translations: -// $localizations = array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ); - -// $localizations['ORDERNUMBER_JS_JSONERROR'] = $this->__("Error reading response from server:"); -// $localizations['ORDERNUMBER_JS_NOT_AUTHORIZED'] = $this->__("You are not authorized to modify order number counters."); -// $localizations['ORDERNUMBER_JS_NEWCOUNTER'] = $this->__("Please enter the format/name of the new counter:"); -// $localizations['ORDERNUMBER_JS_ADD_FAILED'] = $this->__("Failed adding counter {0}"); -// $localizations['ORDERNUMBER_JS_INVALID_COUNTERVALUE'] = $this->__("You entered an invalid value for the counter.\n\n"); - -// $localizations['ORDERNUMBER_JS_EDITCOUNTER'] = $this->__("{0}Please enter the new value for the counter '{1}' (current value: {2}):"); -// $localizations['ORDERNUMBER_JS_MODIFY_FAILED'] = $this->__("Failed modifying counter {0}"); -// $localizations['ORDERNUMBER_JS_DELETECOUNTER'] = $this->__("Really delete counter '{0}' with value '{1}'?"); -// $localizations['ORDERNUMBER_JS_DELETE_FAILED'] = $this->__("Failed deleting counter {0}"); - // in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value -// wp_localize_script( 'ordernumber-script', 'ajax_ordernumber', $localizations ); - } - - - - - function getAllCounters($type) { - $counters = array(); -// $pfxlen = strlen(self::$ordernumber_counter_prefix ); -// foreach (wp_load_alloptions() as $name => $value) { -// if (substr($name, 0, $pfxlen) == self::$ordernumber_counter_prefix) { -// $parts = explode('-', substr($name, $pfxlen), 2); -// if (sizeof($parts)==1) { -// array_unshift($parts, 'ordernumber'); -// } -// if ($parts[0]==$type) { -// $counters[] = array( -// 'type' => $parts[0], -// 'name' => $parts[1], -// 'value' => $value, -// ); -// } -// } -// } - return $counters; + function getAllCounters($type) { + // This function is not implemented for Magento, as we don't use the + // library's counter modification table, but a Magento-customized + // counter modification table without AJAX calls! + return array(); } function getCounter($type, $format, $default=0) { - return get_option (self::$ordernumber_counter_prefix.$type.'-'.$format, $default); + // TODO... +// return get_option (self::$ordernumber_counter_prefix.$type.'-'.$format, $default); } - + function addCounter($type, $format, $value) { return $this->setCounter($type, $format, $value); } function setCounter($type, $format, $value) { - return update_option(self::$ordernumber_counter_prefix.$type.'-'.$format, $value); + // TODO... +// return update_option(self::$ordernumber_counter_prefix.$type.'-'.$format, $value); } function deleteCounter($type, $format) { - return delete_option(self::$ordernumber_counter_prefix.$type.'-'.$format); + // TODO... +// return delete_option(self::$ordernumber_counter_prefix.$type.'-'.$format); } - }