/** * Quick process * * @param array $parameters Parameters OPTIONAL * * @return void */ public function processQuick(array $parameters = array()) { $data = \XLite\Core\Request::getInstance()->getData(); $new = $data[$this->getCreateDataPrefix()]; unset($new[0]); $update = isset($data[$this->getDataPrefix()]) ? $data[$this->getDataPrefix()] : array(); $delete = isset($data[$this->getRemoveDataPrefix()]) ? $data[$this->getRemoveDataPrefix()] : array(); // Prepare information about the added numbers $added = array(); foreach ($new as $id => $value) { if (!empty($value['value'])) { $added[$id] = $value['value']; } } // Prepare information about removed numbers (we remove them from the changed ones) $removed = array(); foreach ($delete as $id => $value) { $removed[$id] = $update[$id]['value']; unset($update[$id]); } // Prepare information about changed numbers $changed = array(); $repo = \XLite\Core\Database::getRepo('XLite\\Model\\OrderTrackingNumber'); foreach ($update as $id => $value) { $oldValue = $repo->find($id)->getValue(); if ($oldValue !== $value['value']) { $changed[$id] = array('old' => $oldValue, 'new' => $value['value']); } } if ($added || $removed || $changed) { \XLite\Core\OrderHistory::getInstance()->registerTrackingInfoUpdate($this->getOrder()->getOrderId(), $added, $removed, $changed); } parent::processQuick($parameters); }