diff --git a/app/Mage.php b/app/Mage.php index 6cb3d5ab06..9b14dff814 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -153,7 +153,7 @@ public static function getVersionInfo() 'major' => '1', 'minor' => '4', 'revision' => '0', - 'patch' => '0', + 'patch' => '1', 'stability' => '', 'number' => '', ); diff --git a/app/code/community/Phoenix/Moneybookers/Block/Form.php b/app/code/community/Phoenix/Moneybookers/Block/Form.php new file mode 100644 index 0000000000..3649a2a1a4 --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/Block/Form.php @@ -0,0 +1,50 @@ +setTemplate('moneybookers/form.phtml'); + } + + /** + * Return payment logo image src + * + * @param string $payment Payment Code + * @return string|bool + */ + public function getPaymentImageSrc($payment) + { + $imageFilename = Mage::getDesign() + ->getFilename('images' . DS . 'moneybookers' . DS . $payment, array('_type' => 'skin')); + + if (file_exists($imageFilename . '.png')) { + return $this->getSkinUrl('images/moneybookers/' . $payment . '.png'); + } else if (file_exists($imageFilename . '.gif')) { + return $this->getSkinUrl('images/moneybookers/' . $payment . '.gif'); + } + + return false; + } +} diff --git a/app/code/community/Phoenix/Moneybookers/Block/Info.php b/app/code/community/Phoenix/Moneybookers/Block/Info.php new file mode 100644 index 0000000000..10b6e71c7b --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/Block/Info.php @@ -0,0 +1,51 @@ +setTemplate('moneybookers/info.phtml'); + } + + /** + * Returns code of payment method + * + * @return string + */ + public function getMethodCode() + { + return $this->getInfo()->getMethodInstance()->getCode(); + } + + /** + * Build PDF content of info block + * + * @return string + */ + public function toPdf() + { + $this->setTemplate('moneybookers/pdf/info.phtml'); + return $this->toHtml(); + } +} diff --git a/app/code/community/Phoenix/Moneybookers/Block/Jsinit.php b/app/code/community/Phoenix/Moneybookers/Block/Jsinit.php new file mode 100644 index 0000000000..5c54b0732b --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/Block/Jsinit.php @@ -0,0 +1,49 @@ +getAction()->getRequest()->getParam('section', false); + if ($section == 'moneybookers') { + $this->getLayout() + ->getBlock('head') + ->addJs('mage/adminhtml/moneybookers.js'); + } + parent::_prepareLayout(); + } + + /** + * Print init JS script into body + * @return string + */ + protected function _toHtml() + { + $section = $this->getAction()->getRequest()->getParam('section', false); + if ($section == 'moneybookers') { + return parent::_toHtml(); + } else { + return ''; + } + } +} diff --git a/app/code/community/Phoenix/Moneybookers/Block/Payment.php b/app/code/community/Phoenix/Moneybookers/Block/Payment.php new file mode 100644 index 0000000000..5702a7dd4d --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/Block/Payment.php @@ -0,0 +1,39 @@ +getLocale(); + $logoFilename = Mage::getDesign() + ->getFilename('images' . DS . 'moneybookers' . DS . 'banner_120_' . $locale . '.png', array('_type' => 'skin')); + + if (file_exists($logoFilename)) { + return $this->getSkinUrl('images/moneybookers/banner_120_'.$locale.'.png'); + } + + return $this->getSkinUrl('images/moneybookers/banner_120_int.png'); + } +} diff --git a/app/code/community/Phoenix/Moneybookers/Block/Placeform.php b/app/code/community/Phoenix/Moneybookers/Block/Placeform.php new file mode 100644 index 0000000000..b363eae370 --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/Block/Placeform.php @@ -0,0 +1,67 @@ +getOrder()) { + return $this->getOrder(); + } elseif ($orderIncrementId = $this->_getCheckout()->getLastRealOrderId()) { + return Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId); + } else { + return null; + } + } + + /** + * Get Form data by using ogone payment api + * + * @return array + */ + public function getFormData() + { + return $this->_getOrder()->getPayment()->getMethodInstance()->getFormFields(); + } + + /** + * Getting gateway url + * + * @return string + */ + public function getFormAction() + { + return $this->_getOrder()->getPayment()->getMethodInstance()->getUrl(); + } +} diff --git a/app/code/community/Phoenix/Moneybookers/Block/Redirect.php b/app/code/community/Phoenix/Moneybookers/Block/Redirect.php new file mode 100644 index 0000000000..96bbfba02b --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/Block/Redirect.php @@ -0,0 +1,30 @@ +setTemplate('moneybookers/redirect.phtml'); + } +} diff --git a/app/code/community/Phoenix/Moneybookers/Helper/Data.php b/app/code/community/Phoenix/Moneybookers/Helper/Data.php new file mode 100644 index 0000000000..663662d601 --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/Helper/Data.php @@ -0,0 +1,124 @@ +getStore()->getId(); + $mailTemplate = Mage::getModel('core/email_template'); + + $mailTemplate->setDesignConfig(array('area' => 'frontend', 'store' => $storeId)) + ->sendTransactional( + 'moneybookers_activateemail', + Mage::getStoreConfig(Mage_Sales_Model_Order::XML_PATH_EMAIL_IDENTITY, $storeId), + $this->_activationEmailTo, + $this->_activationEmailTo, + array( + 'subject' => $this->_activationEmailSubject, + 'email_addr' => Mage::getStoreConfig(self::XML_PATH_EMAIL), + 'url' => Mage::getBaseUrl(), + 'customer_id' => Mage::getStoreConfig(self::XML_PATH_CUSTOMER_ID), + 'language' => Mage::getModel('core/locale')->getDefaultLocale() + ) + ); + } + + /** + * Check if email is registered at Moneybookers + * + * @param array $params + * @return array + */ + public function checkEmailRequest(Array $params) { + $response = null; + try { + $response = $this->_getHttpsPage($this->_moneybookersServer . $this->_checkEmailUrl, array( + 'email' => $params['email'], + 'cust_id' => $this->_checkEmailCustId, + 'password' => $this->_checkEmailPassword) + ); + } catch (Exception $e) { + Mage::log($e->getMessage()); + return null; + } + return $response; + } + + /** + * Check if entered secret is valid + * @param array $params + * @return array + */ + public function checkSecretRequest(Array $params) + { + $response = null; + try { + $response = $this->_getHttpsPage($this->_moneybookersServer . $this->_checkSecretUrl, array( + 'email' => $params['email'], + 'secret' => md5(md5($params['secret']) . $this->_moneybookersMasterSecretHash), + 'cust_id' => $this->_moneybookersMasterCustId) + ); + } catch (Exception $e) { + Mage::log($e->getMessage()); + return null; + } + return $response; + } + + /** + * Reading a page via HTTPS and returning its content. + */ + protected function _getHttpsPage($host, $parameter) + { + $client = new Varien_Http_Client(); + $client->setUri($host) + ->setConfig(array('timeout' => 30)) + ->setHeaders('accept-encoding', '') + ->setParameterGet($parameter) + ->setMethod(Zend_Http_Client::GET); + $request = $client->request(); + // Workaround for pseudo chunked messages which are yet too short, so + // only an exception is is thrown instead of returning raw body + if (!preg_match("/^([\da-fA-F]+)[^\r\n]*\r\n/sm", $request->getRawBody(), $m)) + return $request->getRawBody(); + + return $request->getBody(); + } +} diff --git a/app/code/community/Phoenix/Moneybookers/Model/Abstract.php b/app/code/community/Phoenix/Moneybookers/Model/Abstract.php new file mode 100644 index 0000000000..b1b324c3fb --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/Model/Abstract.php @@ -0,0 +1,223 @@ +_order) { + $this->_order = $this->getInfoInstance()->getOrder(); + } + return $this->_order; + } + + /** + * Return url for redirection after order placed + * @return string + */ + public function getOrderPlaceRedirectUrl() + { + return Mage::getUrl('moneybookers/processing/payment'); + } + + /** + * Capture payment through Moneybookers api + * + * @param Varien_Object $payment + * @param decimal $amount + * @return Phoenix_Moneybookers_Model_Abstract + */ + public function capture(Varien_Object $payment, $amount) + { + $payment->setStatus(self::STATUS_APPROVED) + ->setTransactionId($this->getTransactionId()) + ->setIsTransactionClosed(0); + + return $this; + } + + /** + * Camcel payment + * + * @param Varien_Object $payment + * @return Phoenix_Moneybookers_Model_Abstract + */ + public function cancel(Varien_Object $payment) + { + $payment->setStatus(self::STATUS_DECLINED) + ->setTransactionId($this->getTransactionId()) + ->setIsTransactionClosed(1); + + return $this; + } + + /** + * Return url of payment method + * + * @return string + */ + public function getUrl() + { + return 'https://www.moneybookers.com/app/payment.pl'; + } + + /** + * Return url of payment method + * + * @return string + */ + public function getLocale() + { + $locale = explode('_', Mage::app()->getLocale()->getLocaleCode()); + if (is_array($locale) && !empty($locale) && in_array($locale[0], $this->_supportedLocales)) { + return $locale[0]; + } + return $this->getDefaultLocale(); + } + + /** + * prepare params array to send it to gateway page via POST + * + * @return array + */ + public function getFormFields() + { + $order_id = $this->getOrder()->getRealOrderId(); + $billing = $this->getOrder()->getBillingAddress(); + if ($this->getOrder()->getBillingAddress()->getEmail()) { + $email = $this->getOrder()->getBillingAddress()->getEmail(); + } else { + $email = $this->getOrder()->getCustomerEmail(); + } + + $params = array( + 'merchant_fields' => 'partner', + 'partner' => 'magento', + 'pay_to_email' => Mage::getStoreConfig(Phoenix_Moneybookers_Helper_Data::XML_PATH_EMAIL), + 'transaction_id' => $order_id, + 'return_url' => Mage::getUrl('moneybookers/processing/success', array('transaction_id' => $order_id)), + 'cancel_url' => Mage::getUrl('moneybookers/processing/cancel', array('transaction_id' => $order_id)), + 'status_url' => Mage::getUrl('moneybookers/processing/status'), + 'language' => $this->getLocale(), + 'amount' => round($this->getOrder()->getGrandTotal(), 2), + 'currency' => $this->getOrder()->getOrderCurrencyCode(), + 'recipient_description' => $this->getOrder()->getStore()->getWebsite()->getName(), + 'firstname' => $billing->getFirstname(), + 'lastname' => $billing->getLastname(), + 'address' => $billing->getStreet(-1), + 'postal_code' => $billing->getPostcode(), + 'city' => $billing->getCity(), + 'country' => $billing->getCountryModel()->getIso3Code(), + 'pay_from_email' => $email, + 'phone_number' => $billing->getTelephone(), + 'detail1_description' => Mage::helper('moneybookers')->__('Order ID'), + 'detail1_text' => $order_id, + 'payment_methods' => $this->_paymentMethod, + 'hide_login' => $this->_hidelogin, + 'new_window_redirect' => '1' + ); + + // add optional day of birth + if ($billing->getDob()) { + $params['date_of_birth'] = Mage::app()->getLocale()->date($billing->getDob(), null, null, false)->toString('dmY'); + } + + return $params; + } + /** + * Get initialized flag status + * @return true + */ + public function isInitializeNeeded() + { + return true; + } + + /** + * Instantiate state and set it to state onject + * //@param + * //@param + */ + public function initialize($paymentAction, $stateObject) + { + $state = Mage_Sales_Model_Order::STATE_PENDING_PAYMENT; + $stateObject->setState($state); + $stateObject->setStatus(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT); + $stateObject->setIsNotified(false); + } + + /** + * Get config action to process initialization + * + * @return string + */ + public function getConfigPaymentAction() + { + $paymentAction = $this->getConfigData('payment_action'); + return empty($paymentAction) ? true : $paymentAction; + } + + /** + * Retrieve information from payment configuration + * + * @param string $field + * @return mixed + */ + public function getConfigData($field, $storeId = null) + { + if (null === $storeId) { + $storeId = $this->getStore(); + } + $path = 'moneybookers/'.$this->getCode().'/'.$field; + return Mage::getStoreConfig($path, $storeId); + } +} diff --git a/app/code/community/Phoenix/Moneybookers/Model/Acc.php b/app/code/community/Phoenix/Moneybookers/Model/Acc.php new file mode 100644 index 0000000000..b64090508a --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/Model/Acc.php @@ -0,0 +1,27 @@ +_eventData = $data; + return $this; + } + + /** + * Event request data getter + * @param string $key + * @return array|string + */ + public function getEventData($key = null) + { + if (null === $key) { + return $this->_eventData; + } + return isset($this->_eventData[$key]) ? $this->_eventData[$key] : null; + } + + /** + * Get singleton of Checkout Session Model + * + * @return Mage_Checkout_Model_Session + */ + protected function _getCheckout() + { + return Mage::getSingleton('checkout/session'); + } + + /** + * Process status notification from Monebookers server + * + * @return String + */ + public function processStatusEvent() + { + try { + $params = $this->_validateEventData(); + $msg = ''; + switch($params['status']) { + case self::MONEYBOOKERS_STATUS_FAIL: //fail + $msg = Mage::helper('moneybookers')->__('Payment failed'); + $this->_processCancel($msg); + break; + case self::MONEYBOOKERS_STATUS_CANCEL: //cancel + $msg = Mage::helper('moneybookers')->__('Payment was canceled'); + $this->_processCancel($msg); + break; + case self::MONEYBOOKERS_STATUS_PENDING: //pending + $msg = Mage::helper('moneybookers')->__('Pending bank transfer created.'); + $this->_processSale($params['status'], $msg); + break; + case self::MONEYBOOKERS_STATUS_SUCCESS: //ok + $msg = Mage::helper('moneybookers')->__('The amount has been authorized and captured by Moneybookers.'); + $this->_processSale($params['status'], $msg); + break; + } + return $msg; + } catch (Mage_Core_Exception $e) { + return $e->getMessage(); + } catch(Exception $e) { + Mage::logException($e); + } + return; + } + + /** + * Process cancelation + */ + public function cancelEvent() { + try { + $this->_validateEventData(false); + $this->_processCancel('Payment was canceled'); + return Mage::helper('moneybookers')->__('The order has been canceled.'); + } catch (Mage_Core_Exception $e) { + return $e->getMessage(); + } catch(Exception $e) { + Mage::logException($e); + } + return ''; + } + + /** + * Validate request and return QuoteId + * Can throw Mage_Core_Exception and Exception + * + * @return int + */ + public function successEvent(){ + $this->_validateEventData(false); + return $this->_order->getQuoteId(); + } + + /** + * Processed order cancelation + * @param string $msg Order history message + */ + protected function _processCancel($msg) + { + $this->_order->cancel(); + $this->_order->addStatusToHistory(Mage_Sales_Model_Order::STATE_CANCELED, $msg); + $this->_order->save(); + } + + /** + * Processes payment confirmation, creates invoice if necessary, updates order status, + * sends order confirmation to customer + * @param string $msg Order history message + */ + protected function _processSale($status, $msg) + { + switch ($status) { + case self::MONEYBOOKERS_STATUS_SUCCESS: + $this->_createInvoice(); + $this->_order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, $msg); + // save transaction ID + $this->_order->getPayment()->setLastTransId($this->getEventData('mb_transaction_id')); + // send new order email + $this->_order->sendNewOrderEmail(); + $this->_order->setEmailSent(true); + break; + case self::MONEYBOOKERS_STATUS_PENDING: + $this->_order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true, $msg); + // save transaction ID + $this->_order->getPayment()->setLastTransId($this->getEventData('mb_transaction_id')); + break; + } + $this->_order->save(); + } + + /** + * Builds invoice for order + */ + protected function _createInvoice() + { + if (!$this->_order->canInvoice()) { + return; + } + $invoice = $this->_order->prepareInvoice(); + $invoice->register()->capture(); + $this->_order->addRelatedObject($invoice); + } + + /** + * Checking returned parameters + * Thorws Mage_Core_Exception if error + * @param bool $fullCheck Whether to make additional validations such as payment status, transaction signature etc. + * + * @return array $params request params + */ + protected function _validateEventData($fullCheck = true) + { + // get request variables + $params = $this->_eventData; + if (empty($params)) { + Mage::throwException('Request doesn\'t contain any elements.'); + } + + // check order ID + if (empty($params['transaction_id']) + || ($fullCheck == false && $this->_getCheckout()->getMoneybookersRealOrderId() != $params['transaction_id'])) + { + Mage::throwException('Missing or invalid order ID.'); + } + // load order for further validation + $this->_order = Mage::getModel('sales/order')->loadByIncrementId($params['transaction_id']); + if (!$this->_order->getId()) + Mage::throwException('Order not found.'); + + // make additional validation + if ($fullCheck) { + // check payment status + if (empty($params['status'])) { + Mage::throwException('Unknown payment status'); + } + + // check transaction signature + if (empty($params['md5sig'])) { + Mage::throwException('Invalid transaction signature'); + } + + $checkParams = array('merchant_id', 'transaction_id', 'secret', 'mb_amount', 'mb_currency', 'status'); + $md5String = ''; + foreach ($checkParams as $key) { + if ($key == 'merchant_id') { + $md5String .= Mage::getStoreConfig(Phoenix_Moneybookers_Helper_Data::XML_PATH_CUSTOMER_ID, $this->_order->getStoreId()); + } elseif ($key == 'secret') { + $md5String .= strtoupper(md5(Mage::getStoreConfig(Phoenix_Moneybookers_Helper_Data::XML_PATH_SECRET_KEY, $this->_order->getStoreId()))); + } elseif (isset($params[$key])) { + $md5String .= $params[$key]; + } + } + $md5String = strtoupper(md5($md5String)); + + if ($md5String != $params['md5sig']) { + Mage::throwException('Hash is not valid.'); + } + + // check transaction amount if currency matches + if ($this->_order->getOrderCurrencyCode() == $params['mb_currency']) { + if (round($this->_order->getGrandTotal(), 2) != $params['mb_amount']) { + Mage::throwException('Transaction amount doesn\'t match.'); + } + } + } + return $params; + } +} diff --git a/app/code/community/Phoenix/Moneybookers/Model/Gcb.php b/app/code/community/Phoenix/Moneybookers/Model/Gcb.php new file mode 100644 index 0000000000..4183784e2a --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/Model/Gcb.php @@ -0,0 +1,27 @@ +_getHelper()->activateEmail(); + } + + /** + * Check if email is registered at Moneybookers + */ + public function checkemailAction() + { + try { + $params = $this->getRequest()->getParams(); + if (empty($params['email'])) { + Mage::throwException('Error: No parameters specified'); + } + $response = $this->_getHelper()->checkEmailRequest($params); + if (empty($response)) { + Mage::throwException('Error: Connection to moneybookers.com failed'); + } + $this->getResponse()->setBody($response); + return; + } catch (Mage_Core_Exception $e) { + $response = $e->getMessage(); + } catch (Exception $e) { + $response = 'Error: System error during request'; + } + $this->getResponse()->setBody($response); + } + + /** + * Check if entered secret is valid + */ + public function checksecretAction() + { + try { + $params = $this->getRequest()->getParams(); + if (empty($params['email']) || empty($params['secret'])) { + Mage::throwException('Error: No parameters specified'); + } + $response = $this->_getHelper()->checkSecretRequest($params); + if (empty($response)) { + Mage::throwException('Error: Connection to moneybookers.com failed'); + } + $this->getResponse()->setBody($response); + return; + } catch (Mage_Core_Exception $e) { + $response = $e->getMessage(); + } catch (Exception $e) { + $response = 'Error: System error during request'; + } + $this->getResponse()->setBody($response); + } +} diff --git a/app/code/community/Phoenix/Moneybookers/controllers/ProcessingController.php b/app/code/community/Phoenix/Moneybookers/controllers/ProcessingController.php new file mode 100644 index 0000000000..63b83667ea --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/controllers/ProcessingController.php @@ -0,0 +1,136 @@ +loadLayout(); + $this->renderLayout(); + } + + /** + * Show orderPlaceRedirect page which contains the Moneybookers iframe. + */ + public function paymentAction() + { + try { + $session = $this->_getCheckout(); + + $order = Mage::getModel('sales/order'); + $order->loadByIncrementId($session->getLastRealOrderId()); + if (!$order->getId()) { + Mage::throwException('No order for processing found'); + } + $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, + Mage::helper('moneybookers')->__('Customer was redirected to Moneybookers.') + ); + $order->save(); + + $session->getQuote()->setIsActive(false)->save(); + $session->setMoneybookersQuoteId($session->getQuoteId()); + $session->setMoneybookersRealOrderId($session->getLastRealOrderId()); + $session->clear(); + + $this->loadLayout(); + $this->renderLayout(); + } catch (Exception $e){ + Mage::logException($e); + parent::_redirect('checkout/cart'); + } + } + + /** + * Action to which the customer will be returned when the payment is made. + */ + public function successAction() + { + $event = Mage::getModel('moneybookers/event') + ->setEventData($this->getRequest()->getParams()); + try { + $quoteId = $event->successEvent(); + $this->_getCheckout()->setLastSuccessQuoteId($quoteId); + $this->_redirect('checkout/onepage/success'); + return; + } catch (Mage_Core_Exception $e) { + $this->_getCheckout()->addError($e->getMessage()); + } catch(Exception $e) { + Mage::logException($e); + } + $this->_redirect('checkout/cart'); + } + + /** + * Action to which the customer will be returned if the payment process is + * cancelled. + * Cancel order and redirect user to the shopping cart. + */ + public function cancelAction() + { + $event = Mage::getModel('moneybookers/event') + ->setEventData($this->getRequest()->getParams()); + $message = $event->cancelEvent(); + $this->_getCheckout()->setQuoteId($this->_getCheckout()->getMoneybookersQuoteId()); + $this->_getCheckout()->addError($message); + $this->_redirect('checkout/cart'); + } + + /** + * Action to which the transaction details will be posted after the payment + * process is complete. + */ + public function statusAction() + { + $event = Mage::getModel('moneybookers/event') + ->setEventData($this->getRequest()->getParams()); + $message = $event->processStatusEvent(); + $this->getResponse()->setBody($message); + } + + /** + * Set redirect into responce. This has to be encapsulated in an JavaScript + * call to jump out of the iframe. + * + * @param string $path + * @param array $arguments + */ + protected function _redirect($path, $arguments=array()) + { + $this->getResponse()->setBody( + $this->getLayout() + ->createBlock('moneybookers/redirect') + ->setRedirectUrl(Mage::getUrl($path, $arguments)) + ->toHtml() + ); + return $this; + } +} diff --git a/app/code/community/Phoenix/Moneybookers/etc/config.xml b/app/code/community/Phoenix/Moneybookers/etc/config.xml new file mode 100644 index 0000000000..b8aeb97103 --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/etc/config.xml @@ -0,0 +1,319 @@ + + + + + + 1.2 + + + + + + Phoenix_Moneybookers_Model + + + + + Phoenix_Moneybookers_Helper + + + + + + Phoenix_Moneybookers + + + + + Phoenix_Moneybookers_Block + + + + + + /moneybookers/processing + + + + standard + + Phoenix_Moneybookers + moneybookers + + + + + + + + Phoenix_Moneybookers.csv + + + + + + + + moneybookers.xml + + + + + + + + + + Phoenix_Moneybookers + + + + + + + + + + + Phoenix_Moneybookers.csv + + + + + + + + moneybookers.xml + + + + + + + + + + + + + Moneybookers Settings + + + + + + + + + + + + + http://www.phoenix-medien.de/index.php?id=105 + + + + + + moneybookers/acc + + + moneybookers/csi + + + moneybookers/did + + + moneybookers/dnk + + + moneybookers/ebt + + + moneybookers/ent + + + moneybookers/gcb + + + moneybookers/gir + + + moneybookers/idl + + + moneybookers/lsr + + + moneybookers/npy + + + moneybookers/pli + + + moneybookers/psp + + + moneybookers/pwy + + + moneybookers/sft + + + moneybookers/so2 + + + moneybookers/wlt + + + + + 0 + + + 0 + moneybookers/acc + Credit Card / Visa, Mastercard, AMEX, JCB, Diners + 0 + + + 0 + moneybookers/csi + CartaSi + 1 + IT + + + 0 + moneybookers/did + Lastschrift (ELV) + 1 + DE + + + 0 + moneybookers/dnk + Dankort + 1 + DK + + + 0 + moneybookers/ebt + Nordea Solo + 1 + SE + + + 0 + moneybookers/ent + eNETS + 1 + SG + + + 0 + moneybookers/gcb + Carte Bleue + 1 + FR + + + 0 + moneybookers/gir + Giropay + 1 + DE + + + 0 + moneybookers/idl + iDeal + 1 + NL + + + 0 + moneybookers/lsr + Laser + 1 + IE + + + 0 + moneybookers/npy + EPS Online-Überweisung + 1 + AT + + + 0 + moneybookers/pli + POLi + 1 + AU + + + 0 + moneybookers/psp + Postepay + 1 + IT + + + 0 + moneybookers/pwy + All Polish Banks + 1 + PL + + + 0 + moneybookers/sft + Sofortüberweisung + 1 + DE + + + 0 + moneybookers/so2 + Nordea Solo + 1 + FI + + + 0 + moneybookers/wlt + Moneybookers eWallet + 0 + + + + diff --git a/app/code/community/Phoenix/Moneybookers/etc/system.xml b/app/code/community/Phoenix/Moneybookers/etc/system.xml new file mode 100644 index 0000000000..4d17a7ccd4 --- /dev/null +++ b/app/code/community/Phoenix/Moneybookers/etc/system.xml @@ -0,0 +1,998 @@ + + + + + + + sales + text + 990 + 1 + 0 + 0 + + + + text + 1 + 1 + 0 + 0 + + + + here for a free account if you don’t have one yet.]]> + text + 1 + 1 + 0 + 0 + + + + text + 2 + 1 + 0 + 0 + + + + Pre-shared secret key to secure the transaction. After activation Moneybookers will give you access to a new section in your Moneybookers account called "Merchant tools". Please choose a secret word (do not use your password for this) and provide it in your Moneybookers admin area and above. + text + 3 + 1 + 0 + 0 + + + + text + 4 + 1 + 0 + 0 + + + + + + text + 201 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 252 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 211 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 241 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 271 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 261 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 231 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 212 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 291 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 221 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 301 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 311 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 251 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 321 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 213 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 281 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + text + 331 + 1 + 1 + 0 + + + + select + adminhtml/system_config_source_yesno + 1 + 1 + 1 + 0 + + + + text + 3 + 1 + 1 + 0 + + + <label>Title</label> + <frontend_type>text</frontend_type> + <sort_order>5</sort_order> + <show_in_default>1</show_in_default> + <show_in_website>1</show_in_website> + <show_in_store>0</show_in_store> + + + + allowspecific + 6 + adminhtml/system_config_source_payment_allspecificcountries + 1 + 1 + 0 + + + + multiselect + 7 + adminhtml/system_config_source_country + 1 + 1 + 0 + 1 + + + + + + + diff --git a/app/code/core/Mage/Admin/Model/Observer.php b/app/code/core/Mage/Admin/Model/Observer.php index 6f4ac11782..fb8f2c6f91 100644 --- a/app/code/core/Mage/Admin/Model/Observer.php +++ b/app/code/core/Mage/Admin/Model/Observer.php @@ -81,15 +81,4 @@ public function actionPreDispatchAdmin($event) $session->refreshAcl(); } - - /** - * Unset session first visit flag after displaying page - * - * @param Varien_Event_Observer $event - */ - public function actionPostDispatchAdmin($event) - { - $session = Mage::getSingleton('admin/session'); - $session->unsetData('is_first_visit'); - } } diff --git a/app/code/core/Mage/Admin/Model/Session.php b/app/code/core/Mage/Admin/Model/Session.php index 19a144fb61..9f2140ced9 100644 --- a/app/code/core/Mage/Admin/Model/Session.php +++ b/app/code/core/Mage/Admin/Model/Session.php @@ -51,6 +51,26 @@ public function __construct() $this->init('admin'); } + /** + * Pull out information from session whether there is currently the first page after log in + * + * The idea is to set this value on login(), then redirect happens, + * after that on next request the value is grabbed once the session is initialized + * Since the session is used as a singleton, the value will be in $_isFirstPageAfterLogin until the end of request, + * unless it is reset intentionally from somewhere + * + * @param string $namespace + * @param string $sessionName + * @return Mage_Admin_Model_Session + * @see self::login() + */ + public function init($namespace, $sessionName = null) + { + parent::init($namespace, $sessionName); + $this->isFirstPageAfterLogin(); + return $this; + } + /** * Try to login user in admin * @@ -74,10 +94,9 @@ public function login($username, $password, $request = null) if (Mage::getSingleton('adminhtml/url')->useSecretKey()) { Mage::getSingleton('adminhtml/url')->renewSecretUrls(); } - $session = Mage::getSingleton('admin/session'); - $session->setIsFirstVisit(true); - $session->setUser($user); - $session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl()); + $this->setIsFirstPageAfterLogin(true); + $this->setUser($user); + $this->setAcl(Mage::getResourceModel('admin/acl')->loadAcl()); if ($requestUri = $this->_getRequestUri($request)) { Mage::dispatchEvent('admin_session_user_login_success', array('user'=>$user)); header('Location: ' . $requestUri); @@ -179,6 +198,18 @@ public function isFirstPageAfterLogin() return $this->_isFirstPageAfterLogin; } + /** + * Setter whether the current/next page should be treated as first page after login + * + * @param bool $value + * @return Mage_Admin_Model_Session + */ + public function setIsFirstPageAfterLogin($value) + { + $this->_isFirstPageAfterLogin = (bool)$value; + return $this->setIsFirstVisit($this->_isFirstPageAfterLogin); + } + /** * Custom REQUEST_URI logic * diff --git a/app/code/core/Mage/Adminhtml/Block/Notification/Window.php b/app/code/core/Mage/Adminhtml/Block/Notification/Window.php index 5a40a21ea6..aa9d7fe35b 100644 --- a/app/code/core/Mage/Adminhtml/Block/Notification/Window.php +++ b/app/code/core/Mage/Adminhtml/Block/Notification/Window.php @@ -43,7 +43,7 @@ class Mage_Adminhtml_Block_Notification_Window extends Mage_Adminhtml_Block_Noti * * @var bool */ - protected $_available; + protected $_available = null; /** * Initialize block window diff --git a/app/code/core/Mage/Adminhtml/Block/Sitemap/Grid/Renderer/Link.php b/app/code/core/Mage/Adminhtml/Block/Sitemap/Grid/Renderer/Link.php index 0769263fef..f0a7142cda 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sitemap/Grid/Renderer/Link.php +++ b/app/code/core/Mage/Adminhtml/Block/Sitemap/Grid/Renderer/Link.php @@ -42,7 +42,7 @@ class Mage_Adminhtml_Block_Sitemap_Grid_Renderer_Link extends Mage_Adminhtml_Blo public function render(Varien_Object $row) { $fileName = preg_replace('/^\//', '', $row->getSitemapPath() . $row->getSitemapFilename()); - $url = $this->htmlEscape(Mage::getBaseUrl('web') . $fileName); + $url = $this->htmlEscape(Mage::app()->getStore($row->getStoreId())->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB) . $fileName); if (file_exists(BP . DS . $fileName)) { return sprintf('%1$s', $url); diff --git a/app/code/core/Mage/Adminhtml/controllers/IndexController.php b/app/code/core/Mage/Adminhtml/controllers/IndexController.php index 69822bf777..799a825f9c 100644 --- a/app/code/core/Mage/Adminhtml/controllers/IndexController.php +++ b/app/code/core/Mage/Adminhtml/controllers/IndexController.php @@ -37,20 +37,18 @@ protected function _outTemplate($tplName, $data=array()) $this->getResponse()->setBody($block->toHtml()); } + /** + * Admin area entry point + * Always redirects to the startup page url + */ public function indexAction() { - $url = Mage::getSingleton('admin/session')->getUser()->getStartupPageUrl(); - + $session = Mage::getSingleton('admin/session'); + $url = $session->getUser()->getStartupPageUrl(); + if ($session->isFirstPageAfterLogin()) { // retain the "first page after login" value in session (before redirect) + $session->setIsFirstPageAfterLogin(true); + } $this->_redirect($url); - return; - - $this->loadLayout(); - $block = $this->getLayout()->createBlock('adminhtml/template', 'system.info') - ->setTemplate('system/info.phtml'); - - $this->_addContent($block); - - $this->renderLayout(); } public function loginAction() diff --git a/app/code/core/Mage/Adminhtml/etc/config.xml b/app/code/core/Mage/Adminhtml/etc/config.xml index ee783d350b..3e470bf756 100644 --- a/app/code/core/Mage/Adminhtml/etc/config.xml +++ b/app/code/core/Mage/Adminhtml/etc/config.xml @@ -95,14 +95,6 @@ - - - - admin/observer - actionPostDispatchAdmin - - - diff --git a/app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-0.7.73-1.4.0.0.0.php b/app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-0.7.73-1.4.0.0.0.php index bc66e5c546..bef7b29f81 100644 --- a/app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-0.7.73-1.4.0.0.0.php +++ b/app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-0.7.73-1.4.0.0.0.php @@ -69,7 +69,11 @@ ->where('entity_type_id = ?', $installer->getEntityTypeId('catalog_category')) ->orWhere('entity_type_id = ?', $installer->getEntityTypeId('catalog_product')); $result = $installer->getConnection()->fetchAll($stmt); -$installer->getConnection()->insertMultiple($installer->getTable('catalog/eav_attribute'), $result); +$table = $installer->getTable('catalog/eav_attribute'); +foreach ($result as $data) { + $installer->getConnection()->insert($table, $data); +} + $describe = $installer->getConnection()->describeTable($installer->getTable('catalog/eav_attribute')); foreach ($describe as $columnData) { diff --git a/app/code/core/Mage/CatalogSearch/Block/Result.php b/app/code/core/Mage/CatalogSearch/Block/Result.php index 990d6fc925..d789536058 100644 --- a/app/code/core/Mage/CatalogSearch/Block/Result.php +++ b/app/code/core/Mage/CatalogSearch/Block/Result.php @@ -58,10 +58,11 @@ protected function _getQuery() */ protected function _prepareLayout() { - $title = $this->__("Search results for: '%s'", $this->helper('catalogsearch')->getEscapedQueryText()); - // add Home breadcrumb - if ($breadcrumbs = $this->getLayout()->getBlock('breadcrumbs')) { + $breadcrumbs = $this->getLayout()->getBlock('breadcrumbs'); + if ($breadcrumbs) { + $title = $this->__("Search results for: '%s'", $this->helper('catalogsearch')->getQueryText()); + $breadcrumbs->addCrumb('home', array( 'label' => $this->__('Home'), 'title' => $this->__('Go to Home Page'), @@ -71,6 +72,9 @@ protected function _prepareLayout() 'title' => $title )); } + + // modify page title + $title = $this->__("Search results for: '%s'", $this->helper('catalogsearch')->getEscapedQueryText()); $this->getLayout()->getBlock('head')->setTitle($title); return parent::_prepareLayout(); diff --git a/app/code/core/Mage/CatalogSearch/Helper/Data.php b/app/code/core/Mage/CatalogSearch/Helper/Data.php index 16daf7e515..680a31ec56 100644 --- a/app/code/core/Mage/CatalogSearch/Helper/Data.php +++ b/app/code/core/Mage/CatalogSearch/Helper/Data.php @@ -290,6 +290,7 @@ public function checkNotes($store = null) if (count($wordsFull) > count($wordsLike)) { $wordsCut = array_diff($wordsFull, $wordsLike); + $wordsCut = array_map(array($this, 'htmlEscape'), $wordsCut); $this->addNoteMessage( $this->__('Maximum words count is %1$s. In your search query was cut next part: %2$s.', $this->getMaxQueryWords(), diff --git a/app/code/core/Mage/Checkout/Model/Session.php b/app/code/core/Mage/Checkout/Model/Session.php index 0f01564532..5b02aad97e 100644 --- a/app/code/core/Mage/Checkout/Model/Session.php +++ b/app/code/core/Mage/Checkout/Model/Session.php @@ -57,15 +57,15 @@ public function getQuote() $quote->load($this->getQuoteId()); if ($quote->getId()) { /** - * If current currency code of quote is not equal current currency code of store, - * need recalculate totals of quote. It is possible if customer use currency switcher or + * If current currency code of quote is not equal current currency code of store, + * need recalculate totals of quote. It is possible if customer use currency switcher or * store switcher. */ if ($quote->getQuoteCurrencyCode() != Mage::app()->getStore()->getCurrentCurrencyCode()) { $quote->setStore(Mage::app()->getStore()); $quote->collectTotals()->save(); /* - * We mast to create new quote object, because collectTotals() + * We mast to create new quote object, because collectTotals() * can to create links with other objects. */ $quote = Mage::getModel('sales/quote')->setStoreId(Mage::app()->getStore()->getId()); diff --git a/app/code/core/Mage/Checkout/Model/Type/Multishipping.php b/app/code/core/Mage/Checkout/Model/Type/Multishipping.php index 6e4b185087..7cffc942bc 100644 --- a/app/code/core/Mage/Checkout/Model/Type/Multishipping.php +++ b/app/code/core/Mage/Checkout/Model/Type/Multishipping.php @@ -226,7 +226,7 @@ public function setShippingItemsInformation($info) * MultisippingQty should be defined for each quote item when it processed with _addShippingItem */ foreach ($quote->getAllItems() as $_item) { - if (!$_item->getProduct()->getIsVirtual() && !$_item->getMultisippingQty()) { + if (!$_item->getProduct()->getIsVirtual() && !$_item->getParentItem() && !$_item->getMultisippingQty()) { $_item->delete(); } } @@ -235,7 +235,9 @@ public function setShippingItemsInformation($info) $quote->removeAddress($billingAddress->getId()); } - $quote->getBillingAddress()->importCustomerAddress($this->getCustomerDefaultBillingAddress()); + if ($customerDefaultBilling = $this->getCustomerDefaultBillingAddress()) { + $quote->getBillingAddress()->importCustomerAddress($customerDefaultBilling); + } foreach ($quote->getAllItems() as $_item) { if (!$_item->getProduct()->getIsVirtual()) { diff --git a/app/code/core/Mage/Checkout/controllers/CartController.php b/app/code/core/Mage/Checkout/controllers/CartController.php index 5ed3c37f27..755f26bc5f 100644 --- a/app/code/core/Mage/Checkout/controllers/CartController.php +++ b/app/code/core/Mage/Checkout/controllers/CartController.php @@ -150,26 +150,25 @@ public function addAction() { $cart = $this->_getCart(); $params = $this->getRequest()->getParams(); - if (isset($params['qty'])) { - $filter = new Zend_Filter_LocalizedToNormalized( - array('locale' => Mage::app()->getLocale()->getLocaleCode()) - ); - $params['qty'] = $filter->filter($params['qty']); - } - - $product= $this->_initProduct(); - $related= $this->getRequest()->getParam('related_product'); + try { + if (isset($params['qty'])) { + $filter = new Zend_Filter_LocalizedToNormalized( + array('locale' => Mage::app()->getLocale()->getLocaleCode()) + ); + $params['qty'] = $filter->filter($params['qty']); + } - /** - * Check product availability - */ - if (!$product) { - $this->_goBack(); - return; - } + $product= $this->_initProduct(); + $related= $this->getRequest()->getParam('related_product'); + /** + * Check product availability + */ + if (!$product) { + $this->_goBack(); + return; + } - try { $cart->addProduct($product, $params); if (!empty($related)) { $cart->addProductsByIds(explode(',', $related)); @@ -209,7 +208,7 @@ public function addAction() } } catch (Exception $e) { - $this->_getSession()->addException($e, $this->__('Can not add item to shopping cart')); + $this->_getSession()->addException($e, $this->__('Cannot add item to shopping cart')); $this->_goBack(); } } diff --git a/app/code/core/Mage/Checkout/controllers/MultishippingController.php b/app/code/core/Mage/Checkout/controllers/MultishippingController.php index c3dee6f4ca..c9b064ecb9 100644 --- a/app/code/core/Mage/Checkout/controllers/MultishippingController.php +++ b/app/code/core/Mage/Checkout/controllers/MultishippingController.php @@ -196,7 +196,11 @@ public function addressesAction() */ public function addressesPostAction() { - try { + if (!$this->_getCheckout()->getCustomerDefaultShippingAddress()) { + $this->_redirect('*/multishipping_address/newShipping'); + return; + } + try { if ($this->getRequest()->getParam('continue', false)) { $this->_getCheckout()->setCollectRatesFlag(true); $this->_getState()->setActiveStep( diff --git a/app/code/core/Mage/Core/Model/Cache.php b/app/code/core/Mage/Core/Model/Cache.php index 615c5e60c2..f734e944ed 100644 --- a/app/code/core/Mage/Core/Model/Cache.php +++ b/app/code/core/Mage/Core/Model/Cache.php @@ -177,14 +177,16 @@ protected function _getBackendOptions(array $cacheOptions) $options = $this->getDbAdapterOptions(); break; default: - try { - if (class_exists($type, true)) { - $implements = class_implements($type, true); - if (in_array('Zend_Cache_Backend_Interface', $implements)) { - $backendType = $type; + if ($type != $this->_defaultBackend) { + try { + if (class_exists($type, true)) { + $implements = class_implements($type, true); + if (in_array('Zend_Cache_Backend_Interface', $implements)) { + $backendType = $type; + } } + } catch (Exception $e) { } - } catch (Exception $e) { } } diff --git a/app/code/core/Mage/Core/Model/Resource/Setup.php b/app/code/core/Mage/Core/Model/Resource/Setup.php index b63a175b7b..3eef902eea 100644 --- a/app/code/core/Mage/Core/Model/Resource/Setup.php +++ b/app/code/core/Mage/Core/Model/Resource/Setup.php @@ -73,7 +73,14 @@ public function __construct($resourceName) $modName = (string)$this->_resourceConfig->setup->module; $this->_moduleConfig = $config->getModuleConfig($modName); - $this->_conn = Mage::getSingleton('core/resource')->getConnection($this->_resourceName); + $connection = Mage::getSingleton('core/resource')->getConnection($this->_resourceName); + /** + * If module setup configuration wasn't loaded + */ + if (!$connection) { + $connection = Mage::getSingleton('core/resource')->getConnection('core_setup'); + } + $this->_conn = $connection; } /** @@ -105,7 +112,7 @@ public function setTable($tableName, $realTableName) * @param string $tableName * @return string */ - public function getTable($tableName) + public function getTable($tableName) { if (!isset($this->_tables[$tableName])) { $this->_tables[$tableName] = Mage::getSingleton('core/resource')->getTableName($tableName); @@ -335,7 +342,9 @@ protected function _modifyResourceDb($actionType, $fromVersion, $toVersion) $fileType = pathinfo($resourceFile['fileName'], PATHINFO_EXTENSION); // Execute SQL if ($this->_conn) { - $this->_conn->disallowDdlCache(); + if (method_exists($this->_conn, 'disallowDdlCache')) { + $this->_conn->disallowDdlCache(); + } try { switch ($fileType) { case 'sql': @@ -364,7 +373,9 @@ protected function _modifyResourceDb($actionType, $fromVersion, $toVersion) echo "
".print_r($e,1)."
"; throw Mage::exception('Mage_Core', Mage::helper('core')->__('Error in file: "%s" - %s', $sqlFile, $e->getMessage())); } - $this->_conn->allowDdlCache(); + if (method_exists($this->_conn, 'allowDdlCache')) { + $this->_conn->allowDdlCache(); + } } $modifyVersion = $resourceFile['toVersion']; } diff --git a/app/code/core/Mage/Core/etc/config.xml b/app/code/core/Mage/Core/etc/config.xml index a4541e7e07..36508fa23c 100644 --- a/app/code/core/Mage/Core/etc/config.xml +++ b/app/code/core/Mage/Core/etc/config.xml @@ -28,7 +28,7 @@ - 0.8.25 + 0.8.26 @@ -205,7 +205,7 @@ exception.log - 1 + 0 0 diff --git a/app/code/core/Mage/Core/sql/core_setup/mysql4-upgrade-0.8.22-0.8.23.php b/app/code/core/Mage/Core/sql/core_setup/mysql4-upgrade-0.8.22-0.8.23.php index 322c107e2c..20760cf5bb 100644 --- a/app/code/core/Mage/Core/sql/core_setup/mysql4-upgrade-0.8.22-0.8.23.php +++ b/app/code/core/Mage/Core/sql/core_setup/mysql4-upgrade-0.8.22-0.8.23.php @@ -35,4 +35,4 @@ $installer->getConnection()->update($installer->getTable('core/layout_link'), array('area' => Mage::getSingleton('core/design_package')->getArea())); -$installer->endSetup(); \ No newline at end of file +$installer->endSetup(); diff --git a/app/code/core/Mage/Core/sql/core_setup/mysql4-upgrade-0.8.25-0.8.26.php b/app/code/core/Mage/Core/sql/core_setup/mysql4-upgrade-0.8.25-0.8.26.php new file mode 100644 index 0000000000..e45b73b196 --- /dev/null +++ b/app/code/core/Mage/Core/sql/core_setup/mysql4-upgrade-0.8.25-0.8.26.php @@ -0,0 +1,31 @@ +where('entity_type_id = ?', $installer->getEntityTypeId('customer')) ->orWhere('entity_type_id = ?', $installer->getEntityTypeId('customer_address')); $result = $installer->getConnection()->fetchAll($stmt); -$attributes = array(); + +$table = $installer->getTable('customer/eav_attribute'); foreach ($result as $row) { $_visible = true; $_visibleOnFront = false; @@ -63,7 +64,7 @@ if (in_array($row['attribute_code'], $visibleAttributes)) { $_visible = false; } - $attributes[] = array( + $attributes = array( 'attribute_id' => $row['attribute_id'], 'is_visible' => $_visible, 'is_visible_on_front' => $_visibleOnFront, @@ -72,7 +73,7 @@ 'min_text_length' => $_minLength, 'max_text_length' => $_maxLength ); + $installer->getConnection()->insert($table, $attributes); } -$installer->getConnection()->insertMultiple($installer->getTable('customer/eav_attribute'), $attributes); $installer->endSetup(); diff --git a/app/code/core/Mage/Downloadable/Model/Product/Type.php b/app/code/core/Mage/Downloadable/Model/Product/Type.php index 4a32ac5f6a..6e9e00a9df 100644 --- a/app/code/core/Mage/Downloadable/Model/Product/Type.php +++ b/app/code/core/Mage/Downloadable/Model/Product/Type.php @@ -352,8 +352,6 @@ public function getOrderOptions($product = null) public function beforeSave($product = null) { parent::beforeSave($product); - - if ($this->getLinkSelectionRequired($product)) { $this->getProduct($product)->setTypeHasRequiredOptions(true); } else { diff --git a/app/code/core/Mage/Index/Model/Mysql4/Setup.php b/app/code/core/Mage/Index/Model/Mysql4/Setup.php index 8a530e7c21..e8b3290f6f 100644 --- a/app/code/core/Mage/Index/Model/Mysql4/Setup.php +++ b/app/code/core/Mage/Index/Model/Mysql4/Setup.php @@ -40,13 +40,16 @@ public function applyUpdates() */ protected function _syncIndexes() { + $connection = $this->getConnection(); + if (!$connection) { + return $this; + } $indexes = Mage::getConfig()->getNode(Mage_Index_Model_Process::XML_PATH_INDEXER_DATA); $indexCodes = array(); foreach ($indexes->children() as $code => $index) { $indexCodes[] = $code; } $table = $this->getTable('index/process'); - $connection = $this->getConnection(); $existingIndexes = $connection->fetchCol('SELECT indexer_code FROM '.$table); $delete = array_diff($existingIndexes, $indexCodes); $insert = array_diff($indexCodes, $existingIndexes); @@ -62,7 +65,9 @@ protected function _syncIndexes() 'status' => Mage_Index_Model_Process::STATUS_REQUIRE_REINDEX ); } - $connection->insertArray($table, array('indexer_code', 'status'), $inserData); + if (method_exists($connection, 'insertArray')) { + $connection->insertArray($table, array('indexer_code', 'status'), $inserData); + } } } } diff --git a/app/code/core/Mage/Payment/Block/Info.php b/app/code/core/Mage/Payment/Block/Info.php index 778e6c091c..7d2eb88a96 100644 --- a/app/code/core/Mage/Payment/Block/Info.php +++ b/app/code/core/Mage/Payment/Block/Info.php @@ -121,7 +121,9 @@ public function getValueAsArray($value, $escapeHtml = false) $value = array($value); } if ($escapeHtml) { - array_walk($value, array($this, '_escapeHtmlWalkCallback')); + foreach ($value as $_key => $_val) { + $value[$_key] = $this->escapeHtml($_val); + } } return $value; } @@ -170,15 +172,4 @@ protected function _prepareSpecificInformation($transport = null) } return $this->_paymentSpecificInformation; } - - /** - * Callback for escaping HTML - * - * @param array $array - * @param string|int $key - */ - private function _escapeHtmlWalkCallback(&$array, $key) - { - $array[$key] = $this->htmlEscape($array[$key]); - } } diff --git a/app/code/core/Mage/Sales/etc/config.xml b/app/code/core/Mage/Sales/etc/config.xml index ee468d8396..20ea873cd3 100644 --- a/app/code/core/Mage/Sales/etc/config.xml +++ b/app/code/core/Mage/Sales/etc/config.xml @@ -363,7 +363,7 @@ sales_flat_order_item
sales_flat_order_item_option
sales_order_entity
- + sales_order_aggregated_created
sales_order_aggregated_updated
@@ -372,7 +372,7 @@ sales_invoiced_aggregated
sales_invoiced_aggregated_order
- + sales_refunded_aggregated
sales_refunded_aggregated_order
diff --git a/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.45-0.9.46.php b/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.45-0.9.46.php index e24dd4c862..c2d8846dd0 100644 --- a/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.45-0.9.46.php +++ b/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.45-0.9.46.php @@ -109,4 +109,3 @@ $this->endSetup(); - diff --git a/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.46-0.9.47.php b/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.46-0.9.47.php index 774f236698..713c4ebc83 100644 --- a/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.46-0.9.47.php +++ b/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.46-0.9.47.php @@ -124,4 +124,3 @@ ); $this->endSetup(); - diff --git a/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.47-0.9.48.php b/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.47-0.9.48.php index 501d2dc11c..ed8b65619d 100644 --- a/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.47-0.9.48.php +++ b/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.47-0.9.48.php @@ -84,4 +84,3 @@ ); $this->endSetup(); - diff --git a/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.48-0.9.49.php b/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.48-0.9.49.php index 3412c27a33..bc7458c629 100644 --- a/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.48-0.9.49.php +++ b/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.48-0.9.49.php @@ -80,4 +80,3 @@ ); $this->endSetup(); - diff --git a/app/code/core/Mage/SalesRule/sql/salesrule_setup/mysql4-upgrade-0.7.9-0.7.10.php b/app/code/core/Mage/SalesRule/sql/salesrule_setup/mysql4-upgrade-0.7.9-0.7.10.php index 8e792ceb74..117a5065be 100644 --- a/app/code/core/Mage/SalesRule/sql/salesrule_setup/mysql4-upgrade-0.7.9-0.7.10.php +++ b/app/code/core/Mage/SalesRule/sql/salesrule_setup/mysql4-upgrade-0.7.9-0.7.10.php @@ -25,4 +25,3 @@ */ - diff --git a/app/code/core/Mage/Tax/Model/Mysql4/Report/Collection.php b/app/code/core/Mage/Tax/Model/Mysql4/Report/Collection.php index 2732c7787b..7996bc7236 100644 --- a/app/code/core/Mage/Tax/Model/Mysql4/Report/Collection.php +++ b/app/code/core/Mage/Tax/Model/Mysql4/Report/Collection.php @@ -105,4 +105,3 @@ protected function _initSelect() } } - diff --git a/app/code/core/Mage/Tax/Model/Mysql4/Tax.php b/app/code/core/Mage/Tax/Model/Mysql4/Tax.php index 016d11dbfc..6297081cfd 100644 --- a/app/code/core/Mage/Tax/Model/Mysql4/Tax.php +++ b/app/code/core/Mage/Tax/Model/Mysql4/Tax.php @@ -136,4 +136,3 @@ public function aggregate($from = null, $to = null) return $this; } } - diff --git a/app/design/adminhtml/default/default/layout/adminnotification.xml b/app/design/adminhtml/default/default/layout/adminnotification.xml index bb07c1f84b..84342c510d 100644 --- a/app/design/adminhtml/default/default/layout/adminnotification.xml +++ b/app/design/adminhtml/default/default/layout/adminnotification.xml @@ -29,9 +29,9 @@ - + - + diff --git a/app/design/adminhtml/default/default/layout/moneybookers.xml b/app/design/adminhtml/default/default/layout/moneybookers.xml new file mode 100644 index 0000000000..a67253f39e --- /dev/null +++ b/app/design/adminhtml/default/default/layout/moneybookers.xml @@ -0,0 +1,28 @@ + + + + + + + + + diff --git a/app/design/adminhtml/default/default/template/moneybookers/info.phtml b/app/design/adminhtml/default/default/template/moneybookers/info.phtml new file mode 100644 index 0000000000..2589b368c7 --- /dev/null +++ b/app/design/adminhtml/default/default/template/moneybookers/info.phtml @@ -0,0 +1,26 @@ + +htmlEscape($this->getMethod()->getTitle()) ?>
+getInfo()->getLastTransId() == ''): ?> + __('Payment has not been processed yet.') ?>
+ + __('Moneybookers Transaction ID: %s', $this->htmlEscape($this->getInfo()->getLastTransId())) ?>
+ diff --git a/app/design/adminhtml/default/default/template/moneybookers/jsinit.phtml b/app/design/adminhtml/default/default/template/moneybookers/jsinit.phtml new file mode 100644 index 0000000000..ee31cc9375 --- /dev/null +++ b/app/design/adminhtml/default/default/template/moneybookers/jsinit.phtml @@ -0,0 +1,33 @@ + + + + diff --git a/app/design/adminhtml/default/default/template/moneybookers/pdf/info.phtml b/app/design/adminhtml/default/default/template/moneybookers/pdf/info.phtml new file mode 100644 index 0000000000..dafc0fb36c --- /dev/null +++ b/app/design/adminhtml/default/default/template/moneybookers/pdf/info.phtml @@ -0,0 +1,24 @@ + +getMethod()->getTitle() ?> + {{pdf_row_separator}} +__('Moneybookers Transaction ID: %s', $this->htmlEscape($this->getInfo()->getLastTransId())) ?> + {{pdf_row_separator}} diff --git a/app/design/adminhtml/default/default/template/notification/toolbar.phtml b/app/design/adminhtml/default/default/template/notification/toolbar.phtml index cb9067d7f6..bb74c21621 100644 --- a/app/design/adminhtml/default/default/template/notification/toolbar.phtml +++ b/app/design/adminhtml/default/default/template/notification/toolbar.phtml @@ -75,7 +75,7 @@ );?> ******** */?> isMessageWindowAvailable()): ?> - + diff --git a/app/design/adminhtml/default/default/template/payment/info/default.phtml b/app/design/adminhtml/default/default/template/payment/info/default.phtml index 212ebd5c71..fd41ef6780 100644 --- a/app/design/adminhtml/default/default/template/payment/info/default.phtml +++ b/app/design/adminhtml/default/default/template/payment/info/default.phtml @@ -35,7 +35,7 @@ $_value):?> - + diff --git a/app/design/adminhtml/default/default/template/rating/detailed.phtml b/app/design/adminhtml/default/default/template/rating/detailed.phtml index ce2b4893f0..a9fd4896d7 100644 --- a/app/design/adminhtml/default/default/template/rating/detailed.phtml +++ b/app/design/adminhtml/default/default/template/rating/detailed.phtml @@ -41,11 +41,11 @@ getRating() as $_rating): ?> - + getRatingOptions() ) ? $_rating->getRatingOptions() : $_rating->getOptions() ?> - class="last">isSelected($_option, $_rating)): ?>checked="checked" /> + class="last">isSelected($_option, $_rating)): ?>checked="checked" /> diff --git a/app/design/adminhtml/default/default/template/rating/stars/detailed.phtml b/app/design/adminhtml/default/default/template/rating/stars/detailed.phtml index 8518198043..b147d0d109 100644 --- a/app/design/adminhtml/default/default/template/rating/stars/detailed.phtml +++ b/app/design/adminhtml/default/default/template/rating/stars/detailed.phtml @@ -29,7 +29,7 @@ getRating() as $_rating): ?> getPercent()): ?>
- getRatingCode() ?> + escapeHtml($_rating->getRatingCode()) ?>
diff --git a/app/design/frontend/base/default/layout/moneybookers.xml b/app/design/frontend/base/default/layout/moneybookers.xml new file mode 100644 index 0000000000..ae5e28c158 --- /dev/null +++ b/app/design/frontend/base/default/layout/moneybookers.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/design/frontend/base/default/template/moneybookers/blank.phtml b/app/design/frontend/base/default/template/moneybookers/blank.phtml new file mode 100644 index 0000000000..802a631f9b --- /dev/null +++ b/app/design/frontend/base/default/template/moneybookers/blank.phtml @@ -0,0 +1,34 @@ + + + + + + + getChildHtml('content') ?> + + diff --git a/app/design/frontend/base/default/template/moneybookers/form.phtml b/app/design/frontend/base/default/template/moneybookers/form.phtml new file mode 100644 index 0000000000..4846146d66 --- /dev/null +++ b/app/design/frontend/base/default/template/moneybookers/form.phtml @@ -0,0 +1,46 @@ + +getMethodCode(); +$_img = $this->getPaymentImageSrc($_code); +?> + + diff --git a/app/design/frontend/base/default/template/moneybookers/info.phtml b/app/design/frontend/base/default/template/moneybookers/info.phtml new file mode 100644 index 0000000000..4c49647fd9 --- /dev/null +++ b/app/design/frontend/base/default/template/moneybookers/info.phtml @@ -0,0 +1,32 @@ + +htmlEscape($this->getMethod()->getTitle()) ?>
+getInfo()->getLastTransId() == ''): ?> + __('You will be redirected to our secure payment page when you place an order.') ?> + + __('Moneybookers Transaction ID: %s', $this->htmlEscape($this->getInfo()->getLastTransId())) ?>
+ diff --git a/app/design/frontend/base/default/template/moneybookers/payment.phtml b/app/design/frontend/base/default/template/moneybookers/payment.phtml new file mode 100644 index 0000000000..e0b3e4205f --- /dev/null +++ b/app/design/frontend/base/default/template/moneybookers/payment.phtml @@ -0,0 +1,39 @@ + +
+

__('Please pay your order now') ?>

+
+
htmlEscape($_label)?>:escapeHtml($_label)?>: getValueAsArray($_value, true), "\n"))?>
getRatingCode() ?>escapeHtml($_rating->getRatingCode()) ?>
+ + + + +
+ + + Powered by Moneybookers +
diff --git a/app/design/frontend/base/default/template/moneybookers/placeform.phtml b/app/design/frontend/base/default/template/moneybookers/placeform.phtml new file mode 100644 index 0000000000..4e09e231e2 --- /dev/null +++ b/app/design/frontend/base/default/template/moneybookers/placeform.phtml @@ -0,0 +1,42 @@ + + +__('Loading secure payment page (SSL)'); ?> +
+getFormData())): ?> + getFormData() as $name => $value): ?> + + + +
+ + \ No newline at end of file diff --git a/app/design/frontend/base/default/template/moneybookers/redirect.phtml b/app/design/frontend/base/default/template/moneybookers/redirect.phtml new file mode 100644 index 0000000000..05f56dee5d --- /dev/null +++ b/app/design/frontend/base/default/template/moneybookers/redirect.phtml @@ -0,0 +1,29 @@ + + + + diff --git a/app/design/frontend/base/default/template/payment/info/default.phtml b/app/design/frontend/base/default/template/payment/info/default.phtml index 8282f5efa6..4894058dd5 100644 --- a/app/design/frontend/base/default/template/payment/info/default.phtml +++ b/app/design/frontend/base/default/template/payment/info/default.phtml @@ -36,7 +36,7 @@ $_value):?> - htmlEscape($_label)?>: + escapeHtml($_label)?>: getValueAsArray($_value, true), "\n"))?> diff --git a/app/design/frontend/base/default/template/rating/detailed.phtml b/app/design/frontend/base/default/template/rating/detailed.phtml index b12e934b39..15f4b9c987 100644 --- a/app/design/frontend/base/default/template/rating/detailed.phtml +++ b/app/design/frontend/base/default/template/rating/detailed.phtml @@ -32,7 +32,7 @@ getSummary()): ?> - __($_rating->getRatingCode()) ?> + escapeHtml($this->__($_rating->getRatingCode())) ?>
diff --git a/app/design/frontend/base/default/template/review/customer/view.phtml b/app/design/frontend/base/default/template/review/customer/view.phtml index b0b6837099..03d511ad24 100644 --- a/app/design/frontend/base/default/template/review/customer/view.phtml +++ b/app/design/frontend/base/default/template/review/customer/view.phtml @@ -44,7 +44,7 @@ getRating() as $_rating): ?> getPercent()): ?> - getRatingCode() ?> + escapeHtml($_rating->getRatingCode()) ?>
diff --git a/app/design/frontend/base/default/template/review/form.phtml b/app/design/frontend/base/default/template/review/form.phtml index cd5ee53a7c..c7cc750b2f 100644 --- a/app/design/frontend/base/default/template/review/form.phtml +++ b/app/design/frontend/base/default/template/review/form.phtml @@ -52,9 +52,9 @@ getRatings() as $_rating): ?> - getRatingCode() ?> + escapeHtml($_rating->getRatingCode()) ?> getOptions() as $_option): ?> - + diff --git a/app/design/frontend/base/default/template/review/product/view/list.phtml b/app/design/frontend/base/default/template/review/product/view/list.phtml index e9bdbc4471..bee4953a76 100644 --- a/app/design/frontend/base/default/template/review/product/view/list.phtml +++ b/app/design/frontend/base/default/template/review/product/view/list.phtml @@ -44,7 +44,7 @@ - getRatingCode() ?> + escapeHtml($_vote->getRatingCode()) ?>
diff --git a/app/design/frontend/base/default/template/review/view.phtml b/app/design/frontend/base/default/template/review/view.phtml index c2362725d1..dc2c051ed4 100644 --- a/app/design/frontend/base/default/template/review/view.phtml +++ b/app/design/frontend/base/default/template/review/view.phtml @@ -44,7 +44,7 @@ getRating() as $_rating): ?> getPercent()): ?> - __($_rating->getRatingCode()) ?> + __($this->escapeHtml($_rating->getRatingCode())) ?>
diff --git a/app/design/frontend/default/iphone/template/rating/detailed.phtml b/app/design/frontend/default/iphone/template/rating/detailed.phtml index a855b1937c..408f917861 100644 --- a/app/design/frontend/default/iphone/template/rating/detailed.phtml +++ b/app/design/frontend/default/iphone/template/rating/detailed.phtml @@ -30,7 +30,7 @@ getSummary()): ?> - __($_rating->getRatingCode()) ?> + __($this->escapeHtml($_rating->getRatingCode())) ?>
diff --git a/app/design/frontend/default/iphone/template/review/customer/view.phtml b/app/design/frontend/default/iphone/template/review/customer/view.phtml index b6152e17eb..d01a954468 100644 --- a/app/design/frontend/default/iphone/template/review/customer/view.phtml +++ b/app/design/frontend/default/iphone/template/review/customer/view.phtml @@ -45,7 +45,7 @@ getRating() as $_rating): ?> getPercent()): ?> - getRatingCode() ?> + escapeHtml($_rating->getRatingCode()) ?>
diff --git a/app/design/frontend/default/iphone/template/review/form.phtml b/app/design/frontend/default/iphone/template/review/form.phtml index 9b2bbdd385..1dab542632 100644 --- a/app/design/frontend/default/iphone/template/review/form.phtml +++ b/app/design/frontend/default/iphone/template/review/form.phtml @@ -48,11 +48,11 @@ getRatings() as $_rating): ?> - getRatingCode() ?> + escapeHtml($_rating->getRatingCode()) ?> getOptions() as $_option): ?> - - class="last" style="width:60px;"> + + class="last" style="width:60px;"> diff --git a/app/design/frontend/default/iphone/template/review/product/detailed.phtml b/app/design/frontend/default/iphone/template/review/product/detailed.phtml index b2eb7ff70c..8fd4c4263f 100644 --- a/app/design/frontend/default/iphone/template/review/product/detailed.phtml +++ b/app/design/frontend/default/iphone/template/review/product/detailed.phtml @@ -159,7 +159,7 @@ getRatingVotes() as $_vote ): ?> - getRatingCode() ?> + escapeHtml($_vote->getRatingCode()) ?>
diff --git a/app/design/frontend/default/iphone/template/review/view.phtml b/app/design/frontend/default/iphone/template/review/view.phtml index 02a55c8c7c..6d9c83290b 100644 --- a/app/design/frontend/default/iphone/template/review/view.phtml +++ b/app/design/frontend/default/iphone/template/review/view.phtml @@ -43,7 +43,7 @@ getRating() as $_rating): ?> getPercent()): ?>
- __($_rating->getRatingCode()) ?> + __($this->escapeHtml($_rating->getRatingCode())) ?>
diff --git a/app/etc/modules/Phoenix_Moneybookers.xml b/app/etc/modules/Phoenix_Moneybookers.xml new file mode 100644 index 0000000000..eacc75ee3e --- /dev/null +++ b/app/etc/modules/Phoenix_Moneybookers.xml @@ -0,0 +1,29 @@ + + + + + + true + community + + + diff --git a/app/locale/en_US/Mage_Index.csv b/app/locale/en_US/Mage_Index.csv index e610ab2aaa..4720f6ceb3 100644 --- a/app/locale/en_US/Mage_Index.csv +++ b/app/locale/en_US/Mage_Index.csv @@ -1,6 +1,43 @@ +"%s Index proces is working now. Please try run this process later.","%s Index proces is working now. Please try run this process later." +"%s index was rebuilt successfully.","%s index was rebuilt successfully." +"'%s' Index Process Information","'%s' Index Process Information" +"Action","Action" +"Can\'t initialize indexer process.","Can\'t initialize indexer process." +"Change Index Mode","Change Index Mode" "Click here to go to Cache Management and refresh cache types.","Click here to go to Cache Management and refresh cache types." "Click here to go to Index Management and rebuild required indexes.","Click here to go to Index Management and rebuild required indexes." +"Description","Description" "Disable","Disable" "Enable","Enable" +"General","General" +"Index","Index" +"Index Description","Index Description" +"Index Management","Index Management" +"Index Mode","Index Mode" +"Index Name","Index Name" +"Index mode","Index mode" +"Index was saved successfully.","Index was saved successfully." +"Indexer code is not defined.","Indexer code is not defined." +"Indexer model is not defined.","Indexer model is not defined." +"Indexer model should extend Mage_Index_Model_Indexer_Abstract.","Indexer model should extend Mage_Index_Model_Indexer_Abstract." +"Last Run","Last Run" +"Manual Update","Manual Update" +"Mode","Mode" +"Never","Never" "One or more of the Indexes are not up to date:","One or more of the Indexes are not up to date:" +"Pending Events","Pending Events" +"Please select Index(es)","Please select Index(es)" +"Please select Indexes","Please select Indexes" +"Process Information","Process Information" +"Processing","Processing" +"Ready","Ready" "Refresh","Refresh" +"Reindex Data","Reindex Data" +"Reindex Required","Reindex Required" +"Some problem with reindexing process.","Some problem with reindexing process." +"Some problem with saving process.","Some problem with saving process." +"Status","Status" +"System","System" +"Total of %d index(es) have successfully reindexed data","Total of %d index(es) have successfully reindexed data" +"Total of %d index(es) were successfully changed index mode","Total of %d index(es) were successfully changed index mode" +"Update on Save","Update on Save" diff --git a/app/locale/en_US/Phoenix_Moneybookers.csv b/app/locale/en_US/Phoenix_Moneybookers.csv new file mode 100644 index 0000000000..d8981a3804 --- /dev/null +++ b/app/locale/en_US/Phoenix_Moneybookers.csv @@ -0,0 +1,54 @@ +"All Credit Cards / Visa, Mastercard, AMEX, JCB, Diners (powered by Moneybookers) - International","All Credit Cards / Visa, Mastercard, AMEX, JCB, Diners (powered by Moneybookers) - International" +"All Polish Banks","All Polish Banks" +"CartaSi","CartaSi" +"CartaSi (powered by Moneybookers) - Italy","CartaSi (powered by Moneybookers) - Italy" +"Carte Bleue","Carte Bleue" +"Carte Bleue (powered by Moneybookers) - France","Carte Bleue (powered by Moneybookers) - France" +"Credit Card / Visa, Mastercard, AMEX, JCB, Diners","Credit Card / Visa, Mastercard, AMEX, JCB, Diners" +"Customer ID","Customer ID" +"Customer was redirected to Moneybookers.","Customer was redirected to Moneybookers." +"Dankort","Dankort" +"Dankort (powered by Moneybookers) - Denmark","Dankort (powered by Moneybookers) - Denmark" +"EPS Online-Überweisung","EPS Online-Überweisung" +"EPS Online-Überweisung (powered by Moneybookers) - Austria","EPS Online-Überweisung (powered by Moneybookers) - Austria" +"Enabled","Enabled" +"Giropay","Giropay" +"Giropay (powered by Moneybookers) - Germany","Giropay (powered by Moneybookers) - Germany" +"Laser","Laser" +"Laser (powered by Moneybookers) - Ireland","Laser (powered by Moneybookers) - Ireland" +"Lastschrift (ELV)","Lastschrift (ELV)" +"Lastschrift (ELV) (powered by Moneybookers) - Germany","Lastschrift (ELV) (powered by Moneybookers) - Germany" +"Loading secure payment page (SSL)","Loading secure payment page (SSL)" +"Moneybookers","Moneybookers" +"Moneybookers Info URL","Moneybookers Info URL" +"Moneybookers Settings","Moneybookers Settings" +"Moneybookers Transaction ID: %s","Moneybookers Transaction ID: %s" +"Moneybookers eWallet","Moneybookers eWallet" +"More information about Moneybookers","More information about Moneybookers" +"Nordea Solo","Nordea Solo" +"Nordea Solo (powered by Moneybookers) - Finland","Nordea Solo (powered by Moneybookers) - Finland" +"Nordea Solo (powered by Moneybookers) - Sweden","Nordea Solo (powered by Moneybookers) - Sweden" +"Order ID","Order ID" +"POLi","POLi" +"POLi (powered by Moneybookers) - Australia","POLi (powered by Moneybookers) - Australia" +"Payment failed","Payment failed" +"Payment from Applicable Countries","Payment from Applicable Countries" +"Payment from Specific Countries","Payment from Specific Countries" +"Payment has not been processed yet.","Payment has not been processed yet." +"Payment was canceled","Payment was canceled" +"Pending bank transfer created.","Pending bank transfer created." +"Please pay your order now","Please pay your order now" +"Postepay","Postepay" +"Postepay (powered by Moneybookers) - Italy","Postepay (powered by Moneybookers) - Italy" +"Przelewy24 (powered by Moneybookers) - Poland","Przelewy24 (powered by Moneybookers) - Poland" +"Sofortüberweisung","Sofortüberweisung" +"Sofortüberweisung (powered by Moneybookers) - Germany","Sofortüberweisung (powered by Moneybookers) - Germany" +"Sort Order","Sort Order" +"The amount has been authorized and captured by Moneybookers.","The amount has been authorized and captured by Moneybookers." +"The order has been canceled.","The order has been canceled." +"Title","Title" +"You will be redirected to our secure payment page when you place an order.","You will be redirected to our secure payment page when you place an order." +"eNETS","eNETS" +"eNETS (powered by Moneybookers) - Singapore","eNETS (powered by Moneybookers) - Singapore" +"iDeal","iDeal" +"iDeal (powered by Moneybookers) - Netherlands","iDeal (powered by Moneybookers) - Netherlands" diff --git a/cron.sh b/cron.sh index 02e862e016..279e551008 100644 --- a/cron.sh +++ b/cron.sh @@ -9,13 +9,7 @@ fi PHP_BIN=`which php` # absolute path to magento installation -if [ "$1" != "" ]; then - INSTALLDIR=`ps axwww -o command= |grep -v grep| grep cron.sh \ - | awk '{ field = $(NF-1) }; END{ print field }' | sed 's/cron\.sh//g'` -else - INSTALLDIR=`ps axwww -o command= |grep -v grep| grep cron.sh \ - | awk '{ field = $NF }; END{ print field }' | sed 's/cron\.sh//g'` -fi +INSTALLDIR=`echo $0 | sed 's/cron\.sh//g'` # prepend the intallation path if not given an absolute path if [ "$INSTALLDIR" != "" -a "`expr index $CRONSCRIPT /`" != "1" ];then diff --git a/errors/default/report.phtml b/errors/default/report.phtml index 7774214f9d..9ade7872e7 100644 --- a/errors/default/report.phtml +++ b/errors/default/report.phtml @@ -28,9 +28,6 @@

There has been an error processing your request

- reportId && $this->reportUrl): ?> -

#reportId ?>

- showSentMsg): ?>
  • @@ -94,6 +91,8 @@

* Required Fields

+ reportAction): ?> +

Exception printing is disabled by default for security reasons.

reportAction == 'print'): ?> @@ -106,4 +105,7 @@
+ reportId && $this->reportUrl): ?> +

Error log record number: reportId ?>

+
diff --git a/js/lib/flex.js b/js/lib/flex.js index 25fc76e6f7..fce7f55c71 100644 --- a/js/lib/flex.js +++ b/js/lib/flex.js @@ -181,7 +181,7 @@ Flex.Object = Class.create({ */ initialize: function (config) { this.isIE = Prototype.Browser.IE; - this.isWin = navigator.appVersion.match(/win/i).length > 0; + this.isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; this.attributes = { quality:"high", pluginspage: "http://www.adobe.com/go/getflashplayer", diff --git a/js/mage/adminhtml/moneybookers.js b/js/mage/adminhtml/moneybookers.js new file mode 100644 index 0000000000..630cf5aa20 --- /dev/null +++ b/js/mage/adminhtml/moneybookers.js @@ -0,0 +1,162 @@ +/** + * Magento + * + * NOTICE OF LICENSE + * + * This source file is subject to the Open Software License (OSL 3.0) + * that is bundled with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://opensource.org/licenses/osl-3.0.php + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@magentocommerce.com so we can send you a copy immediately. + * + * @category Mage + * @package Mage_Moneybookers + * @copyright Copyright (c) 2009 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de) + * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) + */ + +Event.observe(window, 'load', function() { + initMoneybookers(); +}); + +Moneybookers = Class.create(); +Moneybookers.prototype = { + initialize: function(bannerUrl, activateemailUrl, checksecretUrl, checkemailUrl){ + this.bannerUrl = bannerUrl; + this.activateemailUrl = activateemailUrl; + this.checksecretUrl = checksecretUrl; + this.checkemailUrl = checkemailUrl; + + this.txtBtnStatus0 = this.translate('Validate Email'); + this.txtBtnStatus1 = this.translate('Activate Moneybookers Quick Checkout'); + this.txtBtnStatus2 = this.translate('Validate Secret Word'); + this.txtErrStatus0 = this.translate('This email address is not registered.'); + this.txtErrStatus2 = this.translate('This Secret Word is incorrect. After activation Moneybookers will give you access to a new section in your Moneybookers account called "Merchant tools". Please choose a secret word (do not use your password for this) and provide it in your Moneybookers admin area and above.'); + this.txtInfStatus0 = this.translate('Moneybookers is an all in one payments solution that enables a merchant to accept debit and credit card payments, bank transfers and the largest range of local payments directly on your website.
  • Widest network of international and local payment options in the world.
  • One interface including payments, banking and marketing.
  • Direct payments without the need for direct registration.
  • Moneybookers stands for a highly converting payment gateway that turns payment processing into a simple, fast and customer friendly operation.
  • Highly competitive rates. Please click here for more detailed information.
') + ''; + this.txtInfStatus1 = this.translate('Moneybookers Quick Checkout enables you to take direct payments from credit cards, debit cards and over 50 other local payment options in over 200 countries for customers without an existing Moneybookers eWallet.'); + this.txtNotSavechanges = this.translate('Please save the configuration before continuing.'); + this.txtNotStatus0 = this.translate('Email was validated by Moneybookers.'); + this.txtNotStatus1 = this.translate('Activation email was sent to Moneybookers. Please be aware that the verification process to use Moneybookers Quick Checkout takes some time. You will be contacted by Moneybookers when the verification process has been completed.'); + this.txtNotStatus2 = this.translate('Secret Word was validated by Moneybookers. Your installation is completed and you are ready to receive international and local payments.'); + + $("moneybookers_settings_moneybookers_email").setAttribute("onchange", "moneybookers.setStatus(0); moneybookers.changeUi(); document.getElementById('moneybookers_settings_customer_id').value = ''; document.getElementById('moneybookers_settings_customer_id_hidden').value = '';"); + $("moneybookers_settings_customer_id").disabled = true; + $("moneybookers_settings_customer_id_hidden").name = document.getElementById("moneybookers_settings_customer_id").name; + $("moneybookers_settings_customer_id_hidden").value = document.getElementById("moneybookers_settings_customer_id").value; + $("moneybookers_settings_secret_key").setAttribute("onchange", "moneybookers.setStatus(2); moneybookers.changeUi();"); + this.changeUi(); + }, + + translate: function(text) { + try { + if(Translator){ + return Translator.translate(text); + } + } + catch(e){} + return text; + }, + + button: function () { + var status, response; + status = this.getStatus(); + if (status < 1) { + response = this.getHttp(this.checkemailUrl + "?email=" + $("moneybookers_settings_moneybookers_email").value); + if (response.substr(0, 3) == "OK,") { + response = response.substr(3); + $("moneybookers_settings_customer_id").value = response; + $("moneybookers_settings_customer_id_hidden").value = response; + this.setStatus(1); + alert(this.txtNotStatus0); + this.alertSaveChanges(); + } + else { + $("moneybookers_settings_customer_id").value = ""; + alert(this.txtErrStatus0 + "\n("+response+")"); + } + } + if (status == 1) { + this.getHttp(this.activateemailUrl); + this.setStatus(2); + alert(this.txtNotStatus1); + this.alertSaveChanges(); + } + if (status == 2) { + response = this.getHttp(this.checksecretUrl + "?email=" + $("moneybookers_settings_moneybookers_email").value + + "&secret=" + $("moneybookers_settings_secret_key").value + + "&cust_id=" + $("moneybookers_settings_customer_id").value); + if (response == "OK") { + this.setStatus(3); + alert(this.txtNotStatus2); + this.alertSaveChanges(); + } + else { + alert(this.txtErrStatus2 + "\n("+response+")"); + } + } + }, + + alertSaveChanges: function () { + $("moneybookers_multifuncbutton").style.display = "none"; + alert(this.txtNotSavechanges); + }, + + getHttp: function (url) { + var response; + new Ajax.Request( + url, + { + method: "get", + onComplete: function(transport) {response = transport.responseText;}, + asynchronous: false + }); + return response; + }, + + getInteger: function (number) { + number = parseInt(number); + if (isNaN(number)) return 0; + return number; + }, + + getStatus: function () { + var status = this.getInteger($("moneybookers_settings_activationstatus").value); + if (status == 1 && $("moneybookers_settings_customer_id").value != '' && $("moneybookers_settings_secret_key").value == '') { + status = 2; + this.setStatus(status); + } + return status; + }, + + setStatus: function (number) { + number = this.getInteger(number); + if (number < 0) number = 0; + else if (number > 3) number = 3; + $("moneybookers_settings_activationstatus").value = number; + }, + changeUi: function () { + var status = this.getStatus(); + if (status < 1) { + $("moneybookers_inf_div").update(this.txtInfStatus0); + $("moneybookers_multifuncbutton_label").update(this.txtBtnStatus0); + } + if (status == 1) { + $("moneybookers_inf_div").update(this.txtInfStatus1); + $("moneybookers_multifuncbutton_label").update(this.txtBtnStatus1); + } + if (status < 2) { + $("moneybookers_inf_div").style.display = "block"; + $("moneybookers_settings_secret_key").disabled = true; + } + if (status == 2) { + $("moneybookers_multifuncbutton_label").update(this.txtBtnStatus2); + } + if (status > 2) { + $("moneybookers_multifuncbutton").style.display = "none"; + } else { + $("moneybookers_multifuncbutton").style.display = "block"; + } + } +} diff --git a/skin/adminhtml/default/default/images/moneybookers/banner.jpg b/skin/adminhtml/default/default/images/moneybookers/banner.jpg new file mode 100644 index 0000000000..d1db946248 Binary files /dev/null and b/skin/adminhtml/default/default/images/moneybookers/banner.jpg differ diff --git a/skin/frontend/base/default/images/moneybookers/banner_120_de.png b/skin/frontend/base/default/images/moneybookers/banner_120_de.png new file mode 100644 index 0000000000..857453dc9b Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/banner_120_de.png differ diff --git a/skin/frontend/base/default/images/moneybookers/banner_120_fr.png b/skin/frontend/base/default/images/moneybookers/banner_120_fr.png new file mode 100644 index 0000000000..319c805e15 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/banner_120_fr.png differ diff --git a/skin/frontend/base/default/images/moneybookers/banner_120_int.png b/skin/frontend/base/default/images/moneybookers/banner_120_int.png new file mode 100644 index 0000000000..daed5ab222 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/banner_120_int.png differ diff --git a/skin/frontend/base/default/images/moneybookers/banner_120_pl.png b/skin/frontend/base/default/images/moneybookers/banner_120_pl.png new file mode 100644 index 0000000000..86e324c9bf Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/banner_120_pl.png differ diff --git a/skin/frontend/base/default/images/moneybookers/banner_120_sp.png b/skin/frontend/base/default/images/moneybookers/banner_120_sp.png new file mode 100644 index 0000000000..712f850ed3 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/banner_120_sp.png differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_acc.png b/skin/frontend/base/default/images/moneybookers/moneybookers_acc.png new file mode 100644 index 0000000000..a507ff62a3 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_acc.png differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_csi.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_csi.gif new file mode 100644 index 0000000000..ea5c7aff05 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_csi.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_did.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_did.gif new file mode 100644 index 0000000000..a6ae269c5f Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_did.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_dnk.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_dnk.gif new file mode 100644 index 0000000000..bb6e266c3a Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_dnk.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_ebt.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_ebt.gif new file mode 100644 index 0000000000..1d78ad8caa Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_ebt.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_ent.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_ent.gif new file mode 100644 index 0000000000..33189f3a78 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_ent.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_gcb.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_gcb.gif new file mode 100644 index 0000000000..bc4d1eb496 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_gcb.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_gir.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_gir.gif new file mode 100644 index 0000000000..970dc87275 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_gir.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_idl.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_idl.gif new file mode 100644 index 0000000000..3471d0e1c1 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_idl.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_lsr.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_lsr.gif new file mode 100644 index 0000000000..84040e989d Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_lsr.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_npy.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_npy.gif new file mode 100644 index 0000000000..302814de56 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_npy.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_pli.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_pli.gif new file mode 100644 index 0000000000..2a91e2a980 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_pli.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_psp.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_psp.gif new file mode 100644 index 0000000000..9e489c6a42 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_psp.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_pwy.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_pwy.gif new file mode 100644 index 0000000000..69eaa0d2a9 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_pwy.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_sft.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_sft.gif new file mode 100644 index 0000000000..e91da1995c Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_sft.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_so2.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_so2.gif new file mode 100644 index 0000000000..1d78ad8caa Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_so2.gif differ diff --git a/skin/frontend/base/default/images/moneybookers/moneybookers_wlt.gif b/skin/frontend/base/default/images/moneybookers/moneybookers_wlt.gif new file mode 100644 index 0000000000..97213408b8 Binary files /dev/null and b/skin/frontend/base/default/images/moneybookers/moneybookers_wlt.gif differ