diff --git a/.travis.yml b/.travis.yml index 0e1aff37b..6f81f0d74 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,4 +33,4 @@ after_failure: - cat /etc/apache2/sites-available/000-default.conf - sudo cat /var/log/php-fpm.log - sudo ls -l /var/log/apache2 - - sudo cat /var/log/apache2/other_vhosts_access.log \ No newline at end of file + - sudo cat /var/log/apache2/other_vhosts_access.log diff --git a/Adapter/Adapter_AddressFactory.php b/Adapter/Adapter_AddressFactory.php index b76ce74da..73c5b13a1 100644 --- a/Adapter/Adapter_AddressFactory.php +++ b/Adapter/Adapter_AddressFactory.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Adapter/Adapter_CacheManager.php b/Adapter/Adapter_CacheManager.php index 9bd57f52e..44385d729 100644 --- a/Adapter/Adapter_CacheManager.php +++ b/Adapter/Adapter_CacheManager.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Adapter/Adapter_Configuration.php b/Adapter/Adapter_Configuration.php index 7e7c3ec80..177b9224f 100644 --- a/Adapter/Adapter_Configuration.php +++ b/Adapter/Adapter_Configuration.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Adapter/Adapter_Database.php b/Adapter/Adapter_Database.php index 2d95f7210..f2a34af12 100644 --- a/Adapter/Adapter_Database.php +++ b/Adapter/Adapter_Database.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Adapter/Adapter_EntityMapper.php b/Adapter/Adapter_EntityMapper.php index b677edca2..a164c1579 100644 --- a/Adapter/Adapter_EntityMapper.php +++ b/Adapter/Adapter_EntityMapper.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Adapter/Adapter_EntityMetaDataRetriever.php b/Adapter/Adapter_EntityMetaDataRetriever.php index d1e418db3..bbba8f240 100644 --- a/Adapter/Adapter_EntityMetaDataRetriever.php +++ b/Adapter/Adapter_EntityMetaDataRetriever.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Adapter/Adapter_Exception.php b/Adapter/Adapter_Exception.php index 3472d6283..688532669 100644 --- a/Adapter/Adapter_Exception.php +++ b/Adapter/Adapter_Exception.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Adapter/Adapter_HookManager.php b/Adapter/Adapter_HookManager.php index 1817d55dc..040d3e31c 100644 --- a/Adapter/Adapter_HookManager.php +++ b/Adapter/Adapter_HookManager.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Adapter/Adapter_PackItemsManager.php b/Adapter/Adapter_PackItemsManager.php index e535d84d1..e66af22d6 100644 --- a/Adapter/Adapter_PackItemsManager.php +++ b/Adapter/Adapter_PackItemsManager.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -41,7 +41,7 @@ class Adapter_PackItemsManager } return Pack::getItems($pack->id, $id_lang); } - + /** * Get all Packs that contains the given item in the corresponding declination. * @@ -58,7 +58,7 @@ class Adapter_PackItemsManager } return Pack::getPacksContainingItem($item->id, $item_attribute_id, $id_lang); } - + /** * Is this product a pack? * @@ -69,7 +69,7 @@ class Adapter_PackItemsManager { return Pack::isPack($product->id); } - + /** * Is this product in a pack? * If $id_product_attribute specified, then will restrict search on the given combination, @@ -83,5 +83,5 @@ class Adapter_PackItemsManager { return Pack::isPacked($product->id, $id_product_attribute); } - + } diff --git a/Adapter/Adapter_ProductPriceCalculator.php b/Adapter/Adapter_ProductPriceCalculator.php index e87335f4f..d26887f7e 100644 --- a/Adapter/Adapter_ProductPriceCalculator.php +++ b/Adapter/Adapter_ProductPriceCalculator.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Adapter/Adapter_ServiceLocator.php b/Adapter/Adapter_ServiceLocator.php index 2807eaca0..08e507753 100644 --- a/Adapter/Adapter_ServiceLocator.php +++ b/Adapter/Adapter_ServiceLocator.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Adapter/Adapter_StockManager.php b/Adapter/Adapter_StockManager.php index 8fb21e335..ecdddbee5 100644 --- a/Adapter/Adapter_StockManager.php +++ b/Adapter/Adapter_StockManager.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class Adapter_StockManager { - + public function getStockAvailableByProduct($product, $id_product_attribute = null, $id_shop = null) { return new StockAvailable(StockAvailable::getStockAvailableIdByProductId($product->id, $id_product_attribute, $id_shop)); diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 76252a9d8..006edc441 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,66 @@ +#################################### +# V1.4.0 +#################################### + +## Added Features: + +[+] CO : Additional facilities functionality is added. +[+] CO : Almost all updates added to QloApps till the prestashop version 1.6.1.23. + + +## Improved/changed features: + +[*] CO : Tools::generateHtaccess() improved +[*] CO : ($round = true) parameter added in Tools::convertPriceFull() +[*] CO : Localization updated +[*] CO : mails/en/product_download.txt bug resolved +[*] CO : swiftMailer version updated to 5.2.2 +[*] CO : translations updated +[*] CO : config/config.inc.php improved (smarty early inclusion) +[*] CO : config/smarty.config.inc.php improved (smartyHook() return improved) +[*] CO : Security: Use Mcrypt’s CBC mode instead of the ECB mode. + +[*] CO : Almost all improvements/changes features added to QloApps till the prestashop version 1.6.1.23. +[*] BO : All Stats Module compatible with QloApps + +[*] FO : Room type details Page Design improved + +## Bug/Issues Resolved: + +[-] CO : Almost all bugs resolved in QloApps till the prestashop version 1.6.1.23. +[-] CO : Resolved :: QloApps Compatible with MySQL 5.7 + + +#################################### +# V1.3.2 +#################################### + +## Added Features: + +[+] CO : pscleaner module is added for cleaning demo data from QloApps. + +[+] FO : Option for Guest checkout is given at Preferences->Orders tab. So Guest Checkout is enabled. + +[+] FO : Option for Shorter registration/address form is given at Preferences->Customers tab. (In this case address will be created from customer chosen room type's hotel address automatically). + +[+] CO : wkfooterexploreblock :: Admin can add custom explore links to show at footer explore block and navigation menu also. table 'htl_custom_explore_link' added with multilang. + +## Improved/changed features: + +[-] BO : New category option from "quick access" links is removed. +[+] FO : Checkout page design has been changed. +[+] CO : Images validation improved. + + +## Bug/Issues Resolved: + +[-] CO : 56% Installation issue. + +[-] BO : Dashboard graphs not loading issues on php 7.2 +[-] BO : feature update issue on not selecting image while updating the feature. +[-] BO : Category bug resolve (Should not be created updated deleted from anywhere). Will be handled from hotel creation/updation/deletion. + + #################################### # V1.3.1 #################################### @@ -342,4 +405,4 @@ [-] MO : wktestimonialblock : Fixed while adding the image in valid format on configuration page then showing error page. [-] MO : wkpaypaladaptive : Fixed paypal is not working because paypal api has been changed. [-] MO : wkpaypaladaptive : Fixed fopen issues fixed, done by CURL. -[-] MO : wkpaypaladaptive : Fixed payment negative value bug fixed. \ No newline at end of file +[-] MO : wkpaypaladaptive : Fixed payment negative value bug fixed. diff --git a/Core/Business/CMS/Core_Business_CMS_CMSRepository.php b/Core/Business/CMS/Core_Business_CMS_CMSRepository.php index a7ea3a889..827907d24 100644 --- a/Core/Business/CMS/Core_Business_CMS_CMSRepository.php +++ b/Core/Business/CMS/Core_Business_CMS_CMSRepository.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Business/CMS/Core_Business_CMS_CMSRoleRepository.php b/Core/Business/CMS/Core_Business_CMS_CMSRoleRepository.php index 0d5e4bb83..9c2c4fbf0 100644 --- a/Core/Business/CMS/Core_Business_CMS_CMSRoleRepository.php +++ b/Core/Business/CMS/Core_Business_CMS_CMSRoleRepository.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Business/Core_Business_ConfigurationInterface.php b/Core/Business/Core_Business_ConfigurationInterface.php index fcf957aeb..dcc5f0dc7 100644 --- a/Core/Business/Core_Business_ConfigurationInterface.php +++ b/Core/Business/Core_Business_ConfigurationInterface.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Business/Core_Business_ContainerBuilder.php b/Core/Business/Core_Business_ContainerBuilder.php index 86e0f1329..944f4b2d1 100644 --- a/Core/Business/Core_Business_ContainerBuilder.php +++ b/Core/Business/Core_Business_ContainerBuilder.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Business/Email/Core_Business_Email_EmailLister.php b/Core/Business/Email/Core_Business_Email_EmailLister.php index 7c5911e73..1fc64a087 100644 --- a/Core/Business/Email/Core_Business_Email_EmailLister.php +++ b/Core/Business/Email/Core_Business_Email_EmailLister.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Business/Payment/Core_Business_Payment_PaymentOption.php b/Core/Business/Payment/Core_Business_Payment_PaymentOption.php index 5f7b564ad..88a67b08a 100644 --- a/Core/Business/Payment/Core_Business_Payment_PaymentOption.php +++ b/Core/Business/Payment/Core_Business_Payment_PaymentOption.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Business/Stock/Core_Business_Stock_StockManager.php b/Core/Business/Stock/Core_Business_Stock_StockManager.php index 3e17f0468..692c9390c 100644 --- a/Core/Business/Stock/Core_Business_Stock_StockManager.php +++ b/Core/Business/Stock/Core_Business_Stock_StockManager.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -47,7 +47,7 @@ class Core_Business_Stock_StockManager $productStockAvailable = $stockManager->getStockAvailableByProduct($product_pack, $product_pack->id_pack_product_attribute, $id_shop); $productStockAvailable->quantity = $productStockAvailable->quantity + ($delta_quantity * $product_pack->pack_quantity); $productStockAvailable->update(); - + $cacheManager->clean('StockAvailable::getQuantityAvailableByProduct_'.(int)$product_pack->id.'*'); } } @@ -59,7 +59,7 @@ class Core_Business_Stock_StockManager $stock_available->update(); } } - + /** * This will decrease (if needed) Packs containing this product * (with the right declinaison) if there is not enough product in stocks. @@ -85,7 +85,7 @@ class Core_Business_Stock_StockManager } // Decrease stocks of the pack only if there is not enough items to constituate the actual pack stocks. - + // How many packs can be constituated with the remaining product stocks $quantity_by_pack = $pack->pack_item_quantity; $max_pack_quantity = max(array(0, floor($stock_available->quantity / $quantity_by_pack))); @@ -99,7 +99,7 @@ class Core_Business_Stock_StockManager } } } - + /** * Will update Product available stock int he given declinaison. If product is a Pack, could decrease the sub products. * If Product is contained in a Pack, Pack could be decreased or not (only if sub product stocks become not sufficient). @@ -124,6 +124,8 @@ class Core_Business_Stock_StockManager } else { // The product is not a pack $stockAvailable->quantity = $stockAvailable->quantity + $delta_quantity; + $stockAvailable->id_product = (int)$product->id; + $stockAvailable->id_product_attribute = (int)$id_product_attribute; $stockAvailable->update(); // Decrease case only: the stock of linked packs should be decreased too. @@ -145,6 +147,6 @@ class Core_Business_Stock_StockManager ) ); } - - + + } diff --git a/Core/Foundation/Database/Core_Foundation_Database_DatabaseInterface.php b/Core/Foundation/Database/Core_Foundation_Database_DatabaseInterface.php index 55086d512..96c602982 100644 --- a/Core/Foundation/Database/Core_Foundation_Database_DatabaseInterface.php +++ b/Core/Foundation/Database/Core_Foundation_Database_DatabaseInterface.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Foundation/Database/Core_Foundation_Database_EntityInterface.php b/Core/Foundation/Database/Core_Foundation_Database_EntityInterface.php index aab6cf87a..fa4e36eb4 100644 --- a/Core/Foundation/Database/Core_Foundation_Database_EntityInterface.php +++ b/Core/Foundation/Database/Core_Foundation_Database_EntityInterface.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Foundation/Database/Core_Foundation_Database_EntityManager.php b/Core/Foundation/Database/Core_Foundation_Database_EntityManager.php index b63151e6e..b6d1c75dd 100644 --- a/Core/Foundation/Database/Core_Foundation_Database_EntityManager.php +++ b/Core/Foundation/Database/Core_Foundation_Database_EntityManager.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Foundation/Database/Core_Foundation_Database_EntityMetaData.php b/Core/Foundation/Database/Core_Foundation_Database_EntityMetaData.php index f56b03e02..287b71eec 100644 --- a/Core/Foundation/Database/Core_Foundation_Database_EntityMetaData.php +++ b/Core/Foundation/Database/Core_Foundation_Database_EntityMetaData.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Foundation/Database/Core_Foundation_Database_EntityRepository.php b/Core/Foundation/Database/Core_Foundation_Database_EntityRepository.php index 30ab5d5e0..319e8aa27 100644 --- a/Core/Foundation/Database/Core_Foundation_Database_EntityRepository.php +++ b/Core/Foundation/Database/Core_Foundation_Database_EntityRepository.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Foundation/Database/Core_Foundation_Database_Exception.php b/Core/Foundation/Database/Core_Foundation_Database_Exception.php index e19c0832d..3858aee58 100644 --- a/Core/Foundation/Database/Core_Foundation_Database_Exception.php +++ b/Core/Foundation/Database/Core_Foundation_Database_Exception.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Foundation/Database/EntityManager/Core_Foundation_Database_EntityManager_QueryBuilder.php b/Core/Foundation/Database/EntityManager/Core_Foundation_Database_EntityManager_QueryBuilder.php index ddd8309ba..fb10dcdee 100644 --- a/Core/Foundation/Database/EntityManager/Core_Foundation_Database_EntityManager_QueryBuilder.php +++ b/Core/Foundation/Database/EntityManager/Core_Foundation_Database_EntityManager_QueryBuilder.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Foundation/Exception/Core_Foundation_Exception_Exception.php b/Core/Foundation/Exception/Core_Foundation_Exception_Exception.php index 942aa5b2c..16b46fee2 100644 --- a/Core/Foundation/Exception/Core_Foundation_Exception_Exception.php +++ b/Core/Foundation/Exception/Core_Foundation_Exception_Exception.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Foundation/Filesystem/Core_Foundation_FileSystem_Exception.php b/Core/Foundation/Filesystem/Core_Foundation_FileSystem_Exception.php index bcc82d614..bdf24ba9d 100644 --- a/Core/Foundation/Filesystem/Core_Foundation_FileSystem_Exception.php +++ b/Core/Foundation/Filesystem/Core_Foundation_FileSystem_Exception.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Foundation/Filesystem/Core_Foundation_FileSystem_FileSystem.php b/Core/Foundation/Filesystem/Core_Foundation_FileSystem_FileSystem.php index 3afaf4eaf..0025298fa 100644 --- a/Core/Foundation/Filesystem/Core_Foundation_FileSystem_FileSystem.php +++ b/Core/Foundation/Filesystem/Core_Foundation_FileSystem_FileSystem.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Foundation/IoC/Core_Foundation_IoC_Container.php b/Core/Foundation/IoC/Core_Foundation_IoC_Container.php index 762a101cf..093ea79a6 100644 --- a/Core/Foundation/IoC/Core_Foundation_IoC_Container.php +++ b/Core/Foundation/IoC/Core_Foundation_IoC_Container.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/Core/Foundation/IoC/Core_Foundation_IoC_Exception.php b/Core/Foundation/IoC/Core_Foundation_IoC_Exception.php index 5c49b68b5..6f276e584 100644 --- a/Core/Foundation/IoC/Core_Foundation_IoC_Exception.php +++ b/Core/Foundation/IoC/Core_Foundation_IoC_Exception.php @@ -1,6 +1,6 @@ - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/LICENSES b/LICENSES new file mode 100644 index 000000000..acd3d50d1 --- /dev/null +++ b/LICENSES @@ -0,0 +1,5279 @@ +The MIT License (MIT) + +Copyright (C) 2006 Jörn Zaefferer and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + Preamble + +The GNU General Public License is a free, copyleft license for +software and other kinds of works. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + +Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + +Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + +0. Definitions. + +"This License" refers to version 3 of the GNU General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based +on the Program. + +To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +1. Source Code. + +The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + +A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + +The Corresponding Source for a work in source code form is that +same work. + +2. Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + +4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified +it, and giving a relevant date. + +b) The work must carry prominent notices stating that it is +released under this License and any conditions added under section +7. This requirement modifies the requirement in section 4 to +"keep intact all notices". + +c) You must license the entire work, as a whole, under this +License to anyone who comes into possession of a copy. This +License will therefore apply, along with any applicable section 7 +additional terms, to the whole of the work, and all its parts, +regardless of how they are packaged. This License gives no +permission to license the work in any other way, but it does not +invalidate such permission if you have separately received it. + +d) If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your +work need not make them do so. + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + +a) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium +customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a +written offer, valid for at least three years and valid for as +long as you offer spare parts or customer support for that product +model, to give anyone who possesses the object code either (1) a +copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical +medium customarily used for software interchange, for a price no +more than your reasonable cost of physically performing this +conveying of source, or (2) access to copy the +Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the +written offer to provide the Corresponding Source. This +alternative is allowed only occasionally and noncommercially, and +only if you received the object code with such an offer, in accord +with subsection 6b. + +d) Convey the object code by offering access from a designated +place (gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to +copy the object code is a network server, the Corresponding Source +may be on a different server (operated by you or a third party) +that supports equivalent copying facilities, provided you maintain +clear directions next to the object code saying where to find the +Corresponding Source. Regardless of what server hosts the +Corresponding Source, you remain obligated to ensure that it is +available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided +you inform other peers where the object code and Corresponding +Source of the work are being offered to the general public at no +charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the +terms of sections 15 and 16 of this License; or + +b) Requiring preservation of specified reasonable legal notices or +author attributions in that material or in the Appropriate Legal +Notices displayed by works containing it; or + +c) Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or + +d) Limiting the use for publicity purposes of names of licensors or +authors of the material; or + +e) Declining to grant rights under trademark law for use of some +trade names, trademarks, or service marks; or + +f) Requiring indemnification of licensors and authors of that +material by anyone who conveys the material (or modified versions of +it) with contractual assumptions of liability to the recipient, for +any liability that these contractual assumptions directly impose on +those licensors and authors. + +All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + +8. Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +11. Patents. + +A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + +Copyright (C) 2006 Jörn Zaefferer and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + +Copyright (C) 2006 Jörn Zaefferer and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net) + +This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + +The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + + +Copyright (C) 2010-2012 Marcelo Gibson de Castro Gonçalves. All rights reserved. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without any warranty. + + +The MIT License (MIT) + +Copyright (c) 2011-2013 Felix Gnass + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The MIT License (MIT) + +Copyright (C) 2013 Hakim El Hattab, http://hakim.se + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The MIT License (MIT) + +Copyright (c) 2014 Danoosh Mir + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + + + +The MIT License (MIT) + +Copyright (C) 2005 Sam Stephenson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +Copyright (c) 2005 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. +// +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. +// +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. +// +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Copyright (c) 2006, David Spurr (http://www.defusion.org.uk/) +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * Neither the name of the David Spurr nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. +// +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +File uploader component is licensed under GNU GPL 2 or later and GNU LGPL 2 or later. +© 2010 Andrew Valums + +This distribution also includes: + + server/OctetStreamReader.java + Dual Licensed under the MIT and GPL v.2 + + jQuery JavaScript Library + http://jquery.com/ + Copyright 2010, John Resig + Dual licensed under the MIT or GPL Version 2 licenses. + http://jquery.org/license + + Sizzle.js - CSS selector engine used by jQuery + http://sizzlejs.com/ + Copyright 2010, The Dojo Foundation + Released under the MIT, BSD, and GPL Licenses. + + QUnit - A JavaScript Unit Testing Framework + http://docs.jquery.com/QUnit + Copyright (c) 2009 John Resig, Jörn Zaefferer + Dual licensed under the MIT (MIT-LICENSE.txt) + and GPL (GPL-LICENSE.txt) licenses. + + +The MIT License (MIT) + +Copyright (C) 2005, 2014 jQuery Foundation, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +Open Software License v. 3.0 (OSL-3.0) + +This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work: + +Licensed under the Open Software License version 3.0 + +1) Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following: +a) to reproduce the Original Work in copies, either alone or as part of a collective work; +b) to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work; +c) to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License; +d) to perform the Original Work publicly; and +e) to display the Original Work publicly. + +2) Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works. + +3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work. + +4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license. + +5) External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c). + +6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work. + +7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer. + +8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation. + +9) Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c). + +10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware. + +11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License. + +12) Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License. + +13) Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. + +14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You. + +16) Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under " or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process. + +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +Academic Free License ("AFL") v. 3.0 + +This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work: + +Licensed under the Academic Free License version 3.0 + +1) Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following: +a) to reproduce the Original Work in copies, either alone or as part of a collective work; +b) to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work; +c) to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensor's reserved rights and remedies, in this Academic Free License; +d) to perform the Original Work publicly; and +e) to display the Original Work publicly. + +2) Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works. + +3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work. + +4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license. + +5) External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c). + +6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work. + +7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer. + +8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation. + +9) Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c). + +10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware. + +11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License. + +12) Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License. + +13) Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. + +14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You. + +16) Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under " or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process. + + +Copyright (c) 2002 Douglas Crockford (www.crockford.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +The Software shall be used for Good, not Evil. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +********************************************************************** +* TCPDF LICENSE +********************************************************************** + + TCPDF is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + +********************************************************************** +********************************************************************** + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + +********************************************************************** +********************************************************************** + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + +********************************************************************** +********************************************************************** + + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +For questions, help, comments, discussion, etc., please join the +Smarty mailing list. Send a blank e-mail to +smarty-discussion-subscribe@googlegroups.com + + +Copyright (c) 2005 Michal Migurski + +Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the following +conditions are met: Redistributions of source code must retain the +above copyright notice, this list of conditions and the following +disclaimer. Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN +NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + + +Copyright (c) 2010-2014 André Rothe +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products +derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 2010-2014 Justin Swanhart and André Rothe +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products +derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence +the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + +geoip.inc + +Copyright (C) 2007 MaxMind LLC + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +geoipcity.inc + +Copyright (C) 2004 Maxmind LLC + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +HTML Purifier 4.6.0 - Standards Compliant HTML Filtering +Copyright (C) 2006-2008 Edward Z. Yang + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + +0. Additional Definitions. + +As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + +"The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + +An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + +A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + +The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + +The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + +1. Exception to Section 3 of the GNU GPL. + +You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + +2. Conveying Modified Versions. + +If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + +a) under this License, provided that you make a good faith effort to +ensure that, in the event an Application does not supply the +function or data, the facility still operates, and performs +whatever part of its purpose remains meaningful, or + +b) under the GNU GPL, with none of the additional permissions of +this License applicable to that copy. + +3. Object Code Incorporating Material from Library Header Files. + +The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + +a) Give prominent notice with each copy of the object code that the +Library is used in it and that the Library and its use are +covered by this License. + +b) Accompany the object code with a copy of the GNU GPL and this license +document. + +4. Combined Works. + +You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + +a) Give prominent notice with each copy of the Combined Work that +the Library is used in it and that the Library and its use are +covered by this License. + +b) Accompany the Combined Work with a copy of the GNU GPL and this license +document. + +c) For a Combined Work that displays copyright notices during +execution, include the copyright notice for the Library among +these notices, as well as a reference directing the user to the +copies of the GNU GPL and this license document. + +d) Do one of the following: + +0) Convey the Minimal Corresponding Source under the terms of this +License, and the Corresponding Application Code in a form +suitable for, and under terms that permit, the user to +recombine or relink the Application with a modified version of +the Linked Version to produce a modified Combined Work, in the +manner specified by section 6 of the GNU GPL for conveying +Corresponding Source. + +1) Use a suitable shared library mechanism for linking with the +Library. A suitable mechanism is one that (a) uses at run time +a copy of the Library already present on the user's computer +system, and (b) will operate properly with a modified version +of the Library that is interface-compatible with the Linked +Version. + +e) Provide Installation Information, but only if you would otherwise +be required to provide such information under section 6 of the +GNU GPL, and only to the extent that such information is +necessary to install and execute a modified version of the +Combined Work produced by recombining or relinking the +Application with a modified version of the Linked Version. (If +you use option 4d0, the Installation Information must accompany +the Minimal Corresponding Source and Corresponding Application +Code. If you use option 4d1, you must provide the Installation +Information in the manner specified by section 6 of the GNU GPL +for conveying Corresponding Source.) + +5. Combined Libraries. + +You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + +a) Accompany the combined library with a copy of the same work based +on the Library, uncombined with any other library facilities, +conveyed under the terms of this License. + +b) Give prominent notice with the combined library that part of it +is a work based on the Library, and explaining where to find the +accompanying uncombined form of the same work. + +6. Revised Versions of the GNU Lesser General Public License. + +The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + + +GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + +0. Additional Definitions. + +As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + +"The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + +An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + +A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + +The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + +The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + +1. Exception to Section 3 of the GNU GPL. + +You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + +2. Conveying Modified Versions. + +If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + +a) under this License, provided that you make a good faith effort to +ensure that, in the event an Application does not supply the +function or data, the facility still operates, and performs +whatever part of its purpose remains meaningful, or + +b) under the GNU GPL, with none of the additional permissions of +this License applicable to that copy. + +3. Object Code Incorporating Material from Library Header Files. + +The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + +a) Give prominent notice with each copy of the object code that the +Library is used in it and that the Library and its use are +covered by this License. + +b) Accompany the object code with a copy of the GNU GPL and this license +document. + +4. Combined Works. + +You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + +a) Give prominent notice with each copy of the Combined Work that +the Library is used in it and that the Library and its use are +covered by this License. + +b) Accompany the Combined Work with a copy of the GNU GPL and this license +document. + +c) For a Combined Work that displays copyright notices during +execution, include the copyright notice for the Library among +these notices, as well as a reference directing the user to the +copies of the GNU GPL and this license document. + +d) Do one of the following: + +0) Convey the Minimal Corresponding Source under the terms of this +License, and the Corresponding Application Code in a form +suitable for, and under terms that permit, the user to +recombine or relink the Application with a modified version of +the Linked Version to produce a modified Combined Work, in the +manner specified by section 6 of the GNU GPL for conveying +Corresponding Source. + +1) Use a suitable shared library mechanism for linking with the +Library. A suitable mechanism is one that (a) uses at run time +a copy of the Library already present on the user's computer +system, and (b) will operate properly with a modified version +of the Library that is interface-compatible with the Linked +Version. + +e) Provide Installation Information, but only if you would otherwise +be required to provide such information under section 6 of the +GNU GPL, and only to the extent that such information is +necessary to install and execute a modified version of the +Combined Work produced by recombining or relinking the +Application with a modified version of the Linked Version. (If +you use option 4d0, the Installation Information must accompany +the Minimal Corresponding Source and Corresponding Application +Code. If you use option 4d1, you must provide the Installation +Information in the manner specified by section 6 of the GNU GPL +for conveying Corresponding Source.) + +5. Combined Libraries. + +You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + +a) Accompany the combined library with a copy of the same work based +on the Library, uncombined with any other library facilities, +conveyed under the terms of this License. + +b) Give prominent notice with the combined library that part of it +is a work based on the Library, and explaining where to find the +accompanying uncombined form of the same work. + +6. Revised Versions of the GNU Lesser General Public License. + +The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + + +Copyright (c) 2013-2016 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +MIT License + +Copyright (c) <2011-2015> Serban Ghita, Nick Ilyin and contributors. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Developer’s Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. + + +The MIT License (MIT) + +Copyright (c) 2015 Jake A. Smith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +-------------------------------------------------------------------- + The PHP License, version 3.0 +Copyright (c) 1999 - 2006 The PHP Group. All rights reserved. +-------------------------------------------------------------------- + +Redistribution and use in source and binary forms, with or without +modification, is permitted provided that the following conditions +are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. The name "PHP" must not be used to endorse or promote products + derived from this software without prior written permission. For + written permission, please contact group@php.net. + + 4. Products derived from this software may not be called "PHP", nor + may "PHP" appear in their name, without prior written permission + from group@php.net. You may indicate that your software works in + conjunction with PHP by saying "Foo for PHP" instead of calling + it "PHP Foo" or "phpfoo" + + 5. The PHP Group may publish revised and/or new versions of the + license from time to time. Each version will be given a + distinguishing version number. + Once covered code has been published under a particular version + of the license, you may always continue to use it under the terms + of that version. You may also choose to use such covered code + under the terms of any subsequent version of the license + published by the PHP Group. No one other than the PHP Group has + the right to modify the terms applicable to covered code created + under this License. + + 6. Redistributions of any form whatsoever must retain the following + acknowledgment: + "This product includes PHP, freely available from + ". + +THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND +ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP +DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + +-------------------------------------------------------------------- + +This software consists of voluntary contributions made by many +individuals on behalf of the PHP Group. + +The PHP Group can be contacted via Email at group@php.net. + +For more information on the PHP Group and the PHP project, +please see . + +This product includes the Zend Engine, freely available at +. + + +This work is licensed under the Creative Commons Attribution-NonCommercial 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/3.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. + + +The MIT License (MIT) + +Copyright (c) 2011-2015 Twitter, Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + Preamble + +The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + +We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + +Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and +modification follow. + +GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + +a) You must cause the modified files to carry prominent notices +stating that you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any +part thereof, to be licensed as a whole at no charge to all third +parties under the terms of this License. + +c) If the modified program normally reads commands interactively +when run, you must cause it, when started running for such +interactive use in the most ordinary way, to print or display an +announcement including an appropriate copyright notice and a +notice that there is no warranty (or else, saying that you provide +a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this +License. (Exception: if the Program itself is interactive but +does not normally print such an announcement, your work based on +the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + +3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three +years, to give any third party, for a charge no more than your +cost of physically performing source distribution, a complete +machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer +to distribute corresponding source code. (This alternative is +allowed only for noncommercial distribution and only if you +received the program in object code or executable form with such +an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + +10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + +Copyright (C) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) year name of author +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in the program +`Gnomovision' (which makes passes at compilers) written by James Hacker. + +, 1 April 1989 +Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + + +Copyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + +Copyright (c) 2012 Scott Jehl + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +nvd3.js License + +Copyright (c) 2011-2014 Novus Partners, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + + +d3.js License + +Copyright (c) 2012, Michael Bostock +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* The name Michael Bostock may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + Preamble + +The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + +We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + +Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and +modification follow. + +GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + +a) You must cause the modified files to carry prominent notices +stating that you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any +part thereof, to be licensed as a whole at no charge to all third +parties under the terms of this License. + +c) If the modified program normally reads commands interactively +when run, you must cause it, when started running for such +interactive use in the most ordinary way, to print or display an +announcement including an appropriate copyright notice and a +notice that there is no warranty (or else, saying that you provide +a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this +License. (Exception: if the Program itself is interactive but +does not normally print such an announcement, your work based on +the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + +3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three +years, to give any third party, for a charge no more than your +cost of physically performing source distribution, a complete +machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer +to distribute corresponding source code. (This alternative is +allowed only for noncommercial distribution and only if you +received the program in object code or executable form with such +an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + +10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + +Copyright (C) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) year name of author +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in the program +`Gnomovision' (which makes passes at compilers) written by James Hacker. + +, 1 April 1989 +Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + + +The MIT License (MIT) + +Copyright (c) 2009-2015 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The MIT License (MIT) + +Copyright (c) 2011-2015 Twitter, Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The MIT License (MIT) + +Copyright 2010, Sebastian Tschan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +MIT LICENSE + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + + + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + + +The MIT License (MIT) + +Copyright © 2009 Josh Pyles / Pixelmatrix Design LLC +http://pixelmatrixdesign.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +Copyright (c) 2012 Jared Novack & Upstatement (upstatement.com) +Dual licensed under the MIT and GPL licenses: +http://www.opensource.org/licenses/mit-license.php +http://www.gnu.org/licenses/gpl.html + + +The MIT License (MIT) + +Copyright © James Padolsey + + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + Preamble + +The GNU General Public License is a free, copyleft license for +software and other kinds of works. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + +Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + +Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + +0. Definitions. + +"This License" refers to version 3 of the GNU General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based +on the Program. + +To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +1. Source Code. + +The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + +A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + +The Corresponding Source for a work in source code form is that +same work. + +2. Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + +4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified +it, and giving a relevant date. + +b) The work must carry prominent notices stating that it is +released under this License and any conditions added under section +7. This requirement modifies the requirement in section 4 to +"keep intact all notices". + +c) You must license the entire work, as a whole, under this +License to anyone who comes into possession of a copy. This +License will therefore apply, along with any applicable section 7 +additional terms, to the whole of the work, and all its parts, +regardless of how they are packaged. This License gives no +permission to license the work in any other way, but it does not +invalidate such permission if you have separately received it. + +d) If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your +work need not make them do so. + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + +a) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium +customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a +written offer, valid for at least three years and valid for as +long as you offer spare parts or customer support for that product +model, to give anyone who possesses the object code either (1) a +copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical +medium customarily used for software interchange, for a price no +more than your reasonable cost of physically performing this +conveying of source, or (2) access to copy the +Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the +written offer to provide the Corresponding Source. This +alternative is allowed only occasionally and noncommercially, and +only if you received the object code with such an offer, in accord +with subsection 6b. + +d) Convey the object code by offering access from a designated +place (gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to +copy the object code is a network server, the Corresponding Source +may be on a different server (operated by you or a third party) +that supports equivalent copying facilities, provided you maintain +clear directions next to the object code saying where to find the +Corresponding Source. Regardless of what server hosts the +Corresponding Source, you remain obligated to ensure that it is +available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided +you inform other peers where the object code and Corresponding +Source of the work are being offered to the general public at no +charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the +terms of sections 15 and 16 of this License; or + +b) Requiring preservation of specified reasonable legal notices or +author attributions in that material or in the Appropriate Legal +Notices displayed by works containing it; or + +c) Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or + +d) Limiting the use for publicity purposes of names of licensors or +authors of the material; or + +e) Declining to grant rights under trademark law for use of some +trade names, trademarks, or service marks; or + +f) Requiring indemnification of licensors and authors of that +material by anyone who conveys the material (or modified versions of +it) with contractual assumptions of liability to the recipient, for +any liability that these contractual assumptions directly impose on +those licensors and authors. + +All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + +8. Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +11. Patents. + +A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + +Copyright (C) James Padolsey + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + +Copyright (C) James Padolsey + +This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + +The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + + diff --git a/admin/ajax-tab.php b/admin/ajax-tab.php index 6ef614a9d..57fa1b38b 100644 --- a/admin/ajax-tab.php +++ b/admin/ajax-tab.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/ajax.php b/admin/ajax.php index ad2e25446..be2c91bc4 100644 --- a/admin/ajax.php +++ b/admin/ajax.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -88,8 +88,7 @@ if (Tools::isSubmit('updateElementEmployee') && Tools::getValue('updateElementEm if (Tools::isSubmit('searchCategory')) { $q = Tools::getValue('q'); $limit = Tools::getValue('limit'); - $results = Db::getInstance()->executeS( - 'SELECT c.`id_category`, cl.`name` + $results = Db::getInstance()->executeS('SELECT c.`id_category`, cl.`name` FROM `'._DB_PREFIX_.'category` c LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category`'.Shop::addSqlRestrictionOnLang('cl').') WHERE cl.`id_lang` = '.(int)$context->language->id.' AND c.`level_depth` <> 0 @@ -124,3 +123,8 @@ if (Tools::isSubmit('getZones')) { $array = array('hasError' => false, 'errors' => '', 'data' => $html); die(Tools::jsonEncode($array)); } + +if (Tools::isSubmit('getEmailHTML') && $email = Tools::getValue('email')) { + $email_html = AdminTranslationsController::getEmailHTML($email); + die($email_html); +} diff --git a/admin/ajax_products_list.php b/admin/ajax_products_list.php index 64415c49d..137020a37 100644 --- a/admin/ajax_products_list.php +++ b/admin/ajax_products_list.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -51,6 +51,7 @@ if ($excludeIds && $excludeIds != 'NaN') { $excludeIds = implode(',', array_map('intval', explode(',', $excludeIds))); } else { $excludeIds = ''; + $excludePackItself= Tools::getValue('packItself', false); } // Excluding downloadable products from packs because download from pack is not supported @@ -68,6 +69,7 @@ $sql = 'SELECT p.`id_product`, pl.`link_rewrite`, p.`reference`, pl.`name`, imag LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$context->language->id.') WHERE (pl.name LIKE \'%'.pSQL($query).'%\' OR p.reference LIKE \'%'.pSQL($query).'%\')'. (!empty($excludeIds) ? ' AND p.id_product NOT IN ('.$excludeIds.') ' : ' '). + (!empty($excludePackItself) ? ' AND p.id_product <> '.$excludePackItself.' ' : ' '). ($excludeVirtuals ? 'AND NOT EXISTS (SELECT 1 FROM `'._DB_PREFIX_.'product_download` pd WHERE (pd.id_product = p.id_product))' : ''). ($exclude_packs ? 'AND (p.cache_is_pack IS NULL OR p.cache_is_pack = 0)' : ''). ' GROUP BY p.id_product'; @@ -76,6 +78,7 @@ $items = Db::getInstance()->executeS($sql); if ($items && ($excludeIds || strpos($_SERVER['HTTP_REFERER'], 'AdminScenes') !== false)) { foreach ($items as $item) { + $item['name'] = str_replace('|', '|', $item['name']); echo trim($item['name']).(!empty($item['reference']) ? ' (ref: '.$item['reference'].')' : '').'|'.(int)($item['id_product'])."\n"; } } elseif ($items) { diff --git a/admin/autoupgrade/backup/index.php b/admin/autoupgrade/backup/index.php index 369a7a3f3..212276dc9 100644 --- a/admin/autoupgrade/backup/index.php +++ b/admin/autoupgrade/backup/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/autoupgrade/index.php b/admin/autoupgrade/index.php index be3c12ae3..3127284d7 100644 --- a/admin/autoupgrade/index.php +++ b/admin/autoupgrade/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/backup.php b/admin/backup.php index 5b6ab4649..24ee39d14 100644 --- a/admin/backup.php +++ b/admin/backup.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/backups/1493622063-32c255f.sql.bz2 b/admin/backups/1493622063-32c255f.sql.bz2 deleted file mode 100644 index 9e6bab69a..000000000 Binary files a/admin/backups/1493622063-32c255f.sql.bz2 and /dev/null differ diff --git a/admin/backups/1493622136-16fa28fc.sql.bz2 b/admin/backups/1493622136-16fa28fc.sql.bz2 deleted file mode 100644 index 6e5b62b96..000000000 Binary files a/admin/backups/1493622136-16fa28fc.sql.bz2 and /dev/null differ diff --git a/admin/cron_currency_rates.php b/admin/cron_currency_rates.php index b7389299f..addb3bce6 100644 --- a/admin/cron_currency_rates.php +++ b/admin/cron_currency_rates.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/displayImage.php b/admin/displayImage.php index 6b0ef9c9b..604924178 100644 --- a/admin/displayImage.php +++ b/admin/displayImage.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/drawer.php b/admin/drawer.php index dec7f464b..dc7afb04b 100644 --- a/admin/drawer.php +++ b/admin/drawer.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/export/index.php b/admin/export/index.php index ffdebb428..212276dc9 100644 --- a/admin/export/index.php +++ b/admin/export/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/LICENSE b/admin/filemanager/LICENSE new file mode 100644 index 000000000..924823461 --- /dev/null +++ b/admin/filemanager/LICENSE @@ -0,0 +1 @@ +This work is licensed under the Creative Commons Attribution-NonCommercial 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/3.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. diff --git a/admin/filemanager/ajax_calls.php b/admin/filemanager/ajax_calls.php index e571d3fac..c7e007f3c 100644 --- a/admin/filemanager/ajax_calls.php +++ b/admin/filemanager/ajax_calls.php @@ -24,30 +24,36 @@ if (isset($_GET['action'])) { if (isset($_GET['descending'])) { $_SESSION['descending'] = $_GET['descending'] === 'true'; } - break; - case 'image_size': - if (realpath(dirname(_PS_ROOT_DIR_.$_POST['path'])) != realpath(_PS_ROOT_DIR_.$upload_dir)) { - die(); - } - $pos = strpos($_POST['path'], $upload_dir); - if ($pos !== false) { - $info = getimagesize(substr_replace($_POST['path'], $current_path, $pos, strlen($upload_dir))); - echo json_encode($info); - } - break; case 'save_img': $info = pathinfo($_POST['name']); - if (strpos($_POST['path'], '/') === 0 - || strpos($_POST['path'], '../') !== false - || strpos($_POST['path'], './') === 0 - || strpos($_POST['url'], 'http://featherfiles.aviary.com/') !== 0 - || $_POST['name'] != fix_filename($_POST['name'], $transliteration) + + $filename = $_POST['name']; + $path_pos = $_POST['path']; + + if (preg_match('/\.{1,2}[\/|\\\]/', $path_pos) !== 0 + || $filename !== fix_filename($filename, $transliteration) || !in_array(strtolower($info['extension']), array('jpg', 'jpeg', 'png')) + || strpos($_POST['url'], 'http://featherfiles.aviary.com/') !== 0 + || !isset($info['extension']) + ) { die('wrong data'); } + $image_data = get_file_by_url($_POST['url']); + + if (function_exists('mime_content_type')) { + $tmp = tempnam(sys_get_temp_dir(), 'img'); + file_put_contents($tmp, $image_data); + $mime = mime_content_type($tmp); + unlink($tmp); + + if (!in_array($mime, $mime_img)) { + die('wrong data'); + } + } + if ($image_data === false) { die('file could not be loaded'); } diff --git a/admin/filemanager/config/config.php b/admin/filemanager/config/config.php index 119423e28..334e16a92 100644 --- a/admin/filemanager/config/config.php +++ b/admin/filemanager/config/config.php @@ -37,11 +37,12 @@ if (!$products_accesses['edit'] && !$cms_accesses['edit']) { // | | | | |- plugin.min.js -$base_url= Tools::getHttpHost(true); // DON'T TOUCH (base url (only domain) of site (without final /)). +$base_url = Tools::getHttpHost(true); // DON'T TOUCH (base url (only domain) of site (without final /)). +$base_url = Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE') ? $base_url : str_replace('https', 'http', $base_url); $upload_dir = Context::getContext()->shop->getBaseURI().'img/cms/'; // path from base_url to base of upload folder (with start and final /) -$current_path = _PS_ROOT_DIR_.'/img/cms/'; // relative path from filemanager folder to upload folder (with final /) +$current_path = _PS_ROOT_DIR_.'/img/cms/'; // relative path from filemanager folder to upload folder (with final /) //thumbs folder can't put inside upload folder -$thumbs_base_path = _PS_ROOT_DIR_.'/img/tmp/cms/'; // relative path from filemanager folder to thumbs folder (with final /) +$thumbs_base_path = _PS_ROOT_DIR_.'/img/tmp/cms/'; // relative path from filemanager folder to thumbs folder (with final /) //-------------------------------------------------------------------------------------------------------- // YOU CAN COPY AND CHANGE THESE VARIABLES INTO FOLDERS config.php FILES TO CUSTOMIZE EACH FOLDER OPTIONS @@ -110,6 +111,14 @@ $ext_misc = array();// array('zip', 'rar','gz','tar','iso','dmg'); //Archives $ext=array_merge($ext_img, $ext_file, $ext_misc, $ext_video, $ext_music); //allowed extensions +//********************** +//Allowed mime types +//********************** +$mime_img = array('image/jpeg', 'image/png', 'image/gif', 'image/bmp', 'image/tiff', 'image/svg'); +$mime_file = array('application/pdf'); +$mime_video = array('video/mpeg', 'video/mp4', 'video/x-msvideo', 'audio/x-ms-wma', 'video/x-flv', 'video/webm'); + +$mime = array_merge($mime_img, $mime_file, $mime_video); /****************** * AVIARY config diff --git a/admin/filemanager/config/index.php b/admin/filemanager/config/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/config/index.php +++ b/admin/filemanager/config/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/css/index.php b/admin/filemanager/css/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/css/index.php +++ b/admin/filemanager/css/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/dialog.php b/admin/filemanager/dialog.php index b67d19541..48f4945d2 100644 --- a/admin/filemanager/dialog.php +++ b/admin/filemanager/dialog.php @@ -12,7 +12,7 @@ if (isset($_POST['submit'])) { if (isset($_GET['fldr']) && !empty($_GET['fldr']) - && preg_match('/\.{1,2}[\/|\\\]/', urldecode($_GET['fldr'])) === 0 + && preg_match('/\.{1,2}[\/|\\\]?/', urldecode($_GET['fldr'])) === 0 ) { $subdir = str_replace("\0", '', urldecode(trim($_GET['fldr'], '/').'/')); } else { @@ -222,7 +222,7 @@ if (isset($_POST['submit'])) { if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) { ?> - @@ -383,7 +383,7 @@ if (isset($_POST['submit'])) {
-
@@ -424,7 +424,7 @@ if (isset($_POST['submit'])) {
-
@@ -433,7 +433,7 @@ if (isset($_POST['submit'])) { -
@@ -554,14 +554,14 @@ if (isset($_POST['submit'])) { - -
@@ -617,20 +617,20 @@ if (isset($_POST['submit'])) { - $file_number_limit_js) { - ?> @@ -723,7 +723,7 @@ if (isset($_POST['submit'])) {
There is an error! The upload folder there isn't. Check your config.php file.
-

- - @@ -884,7 +884,7 @@ if (isset($_POST['submit'])) {
-
"> - @@ -1050,7 +1050,7 @@ if (isset($_POST['submit'])) {
-
@@ -1075,7 +1075,7 @@ if (isset($_POST['submit'])) { <?php echo Tools::safeOutput($filename." class=" " src=""> -
@@ -1083,7 +1083,7 @@ if (isset($_POST['submit'])) {
- @@ -1145,7 +1145,7 @@ if (isset($_POST['submit'])) { } else { ?> - - diff --git a/admin/filemanager/execute.php b/admin/filemanager/execute.php index 5b8a3ff86..e82383874 100644 --- a/admin/filemanager/execute.php +++ b/admin/filemanager/execute.php @@ -10,10 +10,13 @@ if (!isset($_POST['path_thumb']) && trim($_POST['path_thumb']) == '') { die('wrong path'); } -$thumb_pos = strpos($_POST['path_thumb'], $thumbs_base_path); -if ($thumb_pos === false - || preg_match('/\.{1,2}[\/|\\\]/', $_POST['path_thumb']) !== 0 +$realPath = realpath($current_path.$_POST['path']); +$realPathThumb = realpath($_POST['path_thumb']); + +if (preg_match('/\.{1,2}[\/|\\\]/', $_POST['path_thumb']) !== 0 || preg_match('/\.{1,2}[\/|\\\]/', $_POST['path']) !== 0 + || ($realPath && strpos($realPath, realpath($current_path)) !== 0) + || ($realPathThumb && strpos($realPathThumb, realpath($thumbs_base_path)) !== 0) ) { die('wrong path'); } @@ -70,6 +73,7 @@ if (isset($_GET['action'])) { switch ($_GET['action']) { case 'delete_file': if ($delete_files) { + stopIfSameDir($current_path, array($path, $path_thumb)); unlink($path); if (file_exists($path_thumb)) { unlink($path_thumb); @@ -102,9 +106,11 @@ if (isset($_GET['action'])) { break; case 'delete_folder': if ($delete_folders) { + stopIfSameDir($current_path, array($path, $path_thumb)); if (is_dir($path_thumb)) { deleteDir($path_thumb); } + if (is_dir($path)) { deleteDir($path); if ($fixed_image_creation) { @@ -132,6 +138,7 @@ if (isset($_GET['action'])) { $name = str_replace('.', '', $name); if (!empty($name)) { + stopIfSameDir($current_path, array($path, $path_thumb)); if (!rename_folder($path, $name, $transliteration)) { die(lang_Rename_existing_folder); } @@ -154,6 +161,7 @@ if (isset($_GET['action'])) { if ($rename_files) { $name = fix_filename($name, $transliteration); if (!empty($name)) { + stopIfSameDir($current_path, array($path, $path_thumb)); if (!rename_file($path, $name, $transliteration)) { die(lang_Rename_existing_file); } diff --git a/admin/filemanager/img/ico/index.php b/admin/filemanager/img/ico/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/img/ico/index.php +++ b/admin/filemanager/img/ico/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/img/ico_dark/index.php b/admin/filemanager/img/ico_dark/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/img/ico_dark/index.php +++ b/admin/filemanager/img/ico_dark/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/img/index.php b/admin/filemanager/img/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/img/index.php +++ b/admin/filemanager/img/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/include/index.php b/admin/filemanager/include/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/include/index.php +++ b/admin/filemanager/include/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/include/utils.php b/admin/filemanager/include/utils.php index d69be1a13..b8c3295de 100644 --- a/admin/filemanager/include/utils.php +++ b/admin/filemanager/include/utils.php @@ -356,3 +356,16 @@ function get_file_by_url($url) return $data; } + +/** + * @param string $sourcePath + * @param array $paths List of paths to compare + */ +function stopIfSameDir($sourcePath, array $paths) +{ + foreach ($paths as $path) { + if (realpath($sourcePath) === realpath($path)) { + die('wrong_path'); + } + } +} diff --git a/admin/filemanager/index.php b/admin/filemanager/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/index.php +++ b/admin/filemanager/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/jPlayer/add-on/index.php b/admin/filemanager/jPlayer/add-on/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/jPlayer/add-on/index.php +++ b/admin/filemanager/jPlayer/add-on/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/jPlayer/index.php b/admin/filemanager/jPlayer/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/jPlayer/index.php +++ b/admin/filemanager/jPlayer/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/jPlayer/popcorn/index.php b/admin/filemanager/jPlayer/popcorn/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/jPlayer/popcorn/index.php +++ b/admin/filemanager/jPlayer/popcorn/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/jPlayer/skin/blue.monday/index.php b/admin/filemanager/jPlayer/skin/blue.monday/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/jPlayer/skin/blue.monday/index.php +++ b/admin/filemanager/jPlayer/skin/blue.monday/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/jPlayer/skin/index.php b/admin/filemanager/jPlayer/skin/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/jPlayer/skin/index.php +++ b/admin/filemanager/jPlayer/skin/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/js/index.php b/admin/filemanager/js/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/js/index.php +++ b/admin/filemanager/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/lang/index.php b/admin/filemanager/lang/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/lang/index.php +++ b/admin/filemanager/lang/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/filemanager/upload.php b/admin/filemanager/upload.php index bbf35bd07..036770942 100644 --- a/admin/filemanager/upload.php +++ b/admin/filemanager/upload.php @@ -38,7 +38,11 @@ while ($cycle && $i < $max_cycles) { if (!empty($_FILES)) { $info = pathinfo($_FILES['file']['name']); - if (isset($info['extension']) && in_array(fix_strtolower($info['extension']), $ext)) { + if (isset($info['extension']) + && in_array(fix_strtolower($info['extension']), $ext) + // If fileinfo extension is installed, check the mime type too + && (!function_exists('mime_content_type') || in_array(mime_content_type($_FILES['file']['tmp_name']), $mime)) + ) { $tempFile = $_FILES['file']['tmp_name']; $targetPath = $storeFolder; diff --git a/admin/filemanager/uploader/index.php b/admin/filemanager/uploader/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/filemanager/uploader/index.php +++ b/admin/filemanager/uploader/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/footer.inc.php b/admin/footer.inc.php index 9412d74ad..bb7b590e2 100644 --- a/admin/footer.inc.php +++ b/admin/footer.inc.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/functions.php b/admin/functions.php index e493cb69b..2e7586ace 100644 --- a/admin/functions.php +++ b/admin/functions.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -169,12 +169,7 @@ function getPath($url_base, $id_category, $path = '', $highlight = '', $category $n_categories = (int)count($categories); foreach ($categories as $category) { $link = Context::getContext()->link->getAdminLink('AdminCategories'); - $edit = ' '; - $full_path .= $edit. - ($n < $n_categories ? '' : ''). - (!empty($highlight) ? str_ireplace($highlight, ''.htmlentities($highlight, ENT_NOQUOTES, 'UTF-8').'', $category['name']) : $category['name']). - ($n < $n_categories ? '' : ''). - (($n++ != $n_categories || !empty($path)) ? ' > ' : ''); + $full_path .= $category['name'].(($n++ != $n_categories || !empty($path)) ? ' > ' : ''); } return $full_path.$path; @@ -487,11 +482,11 @@ function runAdminTab($tab, $ajax_mode = false) if (is_array($admin_obj->table)) { foreach ($admin_obj->table as $table) { if (strncmp($key, $table.'Filter_', 7) === 0 || strncmp($key, 'submitFilter', 12) === 0) { - $cookie->$key = !is_array($value) ? $value : serialize($value); + $cookie->$key = !is_array($value) ? $value : json_encode($value); } } } elseif (strncmp($key, $admin_obj->table.'Filter_', 7) === 0 || strncmp($key, 'submitFilter', 12) === 0) { - $cookie->$key = !is_array($value) ? $value : serialize($value); + $cookie->$key = !is_array($value) ? $value : json_encode($value); } } } diff --git a/admin/get-file-admin.php b/admin/get-file-admin.php index 16347995a..ca8ff8c1c 100644 --- a/admin/get-file-admin.php +++ b/admin/get-file-admin.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/grider.php b/admin/grider.php index ab1336b13..e8c090873 100644 --- a/admin/grider.php +++ b/admin/grider.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/header.inc.php b/admin/header.inc.php index 97883a549..01a245743 100644 --- a/admin/header.inc.php +++ b/admin/header.inc.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/import/index.php b/admin/import/index.php index ffdebb428..212276dc9 100644 --- a/admin/import/index.php +++ b/admin/import/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/index.php b/admin/index.php index 260edb8ef..2d916c822 100644 --- a/admin/index.php +++ b/admin/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ + $timer_start = microtime(true); if (!defined('_PS_ADMIN_DIR_')) { define('_PS_ADMIN_DIR_', getcwd()); diff --git a/admin/init.php b/admin/init.php index e79309094..6aaa43d09 100644 --- a/admin/init.php +++ b/admin/init.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/login.php b/admin/login.php index 6e26c2c90..e854f9407 100644 --- a/admin/login.php +++ b/admin/login.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/password.php b/admin/password.php index bd7bee597..18f6b3aaa 100644 --- a/admin/password.php +++ b/admin/password.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/pdf.php b/admin/pdf.php index fbcfe65eb..6d0af317e 100644 --- a/admin/pdf.php +++ b/admin/pdf.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/searchcron.php b/admin/searchcron.php index f8f23d00a..b087c4b81 100644 --- a/admin/searchcron.php +++ b/admin/searchcron.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -41,6 +41,6 @@ if (substr(_COOKIE_KEY_, 34, 8) != Tools::getValue('token')) { ini_set('max_execution_time', 7200); Search::indexation(Tools::getValue('full')); -if (Tools::getValue('redirect')) { +if (Tools::getValue('redirect') && isset($_SERVER['HTTP_REFERER'])) { Tools::redirectAdmin($_SERVER['HTTP_REFERER'].'&conf=4'); } diff --git a/admin/tabs/index.php b/admin/tabs/index.php index bc9342b71..212276dc9 100644 --- a/admin/tabs/index.php +++ b/admin/tabs/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); exit; diff --git a/admin/themes/default/css/index.php b/admin/themes/default/css/index.php index bc9342b71..9491604bc 100644 --- a/admin/themes/default/css/index.php +++ b/admin/themes/default/css/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/css/schemes/index.php b/admin/themes/default/css/schemes/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/css/schemes/index.php +++ b/admin/themes/default/css/schemes/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/css/schemes_rtl/index.php b/admin/themes/default/css/schemes_rtl/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/css/schemes_rtl/index.php +++ b/admin/themes/default/css/schemes_rtl/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/css/vendor/font-awesome/LICENSE b/admin/themes/default/css/vendor/font-awesome/LICENSE new file mode 100644 index 000000000..d12238e60 --- /dev/null +++ b/admin/themes/default/css/vendor/font-awesome/LICENSE @@ -0,0 +1,112 @@ +MIT LICENSE + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + + + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/admin/themes/default/css/vendor/index.php b/admin/themes/default/css/vendor/index.php index d78cacbb8..df55e1000 100644 --- a/admin/themes/default/css/vendor/index.php +++ b/admin/themes/default/css/vendor/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -32,4 +32,4 @@ header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header("Location: ../"); -exit; \ No newline at end of file +exit; diff --git a/admin/themes/default/fonts/index.php b/admin/themes/default/fonts/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/fonts/index.php +++ b/admin/themes/default/fonts/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/img/index.php b/admin/themes/default/img/index.php index bc9342b71..9491604bc 100644 --- a/admin/themes/default/img/index.php +++ b/admin/themes/default/img/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/img/patterns/index.php b/admin/themes/default/img/patterns/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/img/patterns/index.php +++ b/admin/themes/default/img/patterns/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/index.php b/admin/themes/default/index.php index bc9342b71..9491604bc 100644 --- a/admin/themes/default/index.php +++ b/admin/themes/default/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/js/admin-theme.js b/admin/themes/default/js/admin-theme.js index 6aa6f98a1..1f3e85713 100644 --- a/admin/themes/default/js/admin-theme.js +++ b/admin/themes/default/js/admin-theme.js @@ -17,7 +17,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/js/help.js b/admin/themes/default/js/help.js index 8f368b435..6fbb4f20a 100644 --- a/admin/themes/default/js/help.js +++ b/admin/themes/default/js/help.js @@ -17,13 +17,18 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ $(function() { - var storage = getStorageAvailable(); + + var storage = false; + + if (typeof(getStorageAvailable) !== 'undefined') { + storage = getStorageAvailable(); + } initHelp = function(){ $('#main').addClass('helpOpen'); @@ -64,7 +69,7 @@ $(function() { storage.setItem('helpOpen', false); } }); - + // Help persistency if (storage && storage.getItem('helpOpen') == "true") { $('a.btn-help').trigger('click'); @@ -98,20 +103,6 @@ $(function() { ]; - function getStorageAvailable() { - test = 'foo'; - storage = window.localStorage || window.sessionStorage; - try { - storage.setItem(test, test); - storage.removeItem(test); - //open help if localstorage helpOpen = true; - return storage; - } - catch (error) { - return null; - } - } - // change help icon function iconCloseHelp(){ $('.toolbarBox a.btn-help i').removeClass('process-icon-loading').addClass('process-icon-close'); diff --git a/admin/themes/default/js/index.php b/admin/themes/default/js/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/js/index.php +++ b/admin/themes/default/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/js/jquery.fileupload.LICENSE b/admin/themes/default/js/jquery.fileupload.LICENSE new file mode 100644 index 000000000..c71e0b276 --- /dev/null +++ b/admin/themes/default/js/jquery.fileupload.LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright 2010, Sebastian Tschan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/admin/themes/default/js/tree.js b/admin/themes/default/js/tree.js index d31684554..d3fd63ecb 100644 --- a/admin/themes/default/js/tree.js +++ b/admin/themes/default/js/tree.js @@ -5,6 +5,36 @@ var Tree = function (element, options) this.init(); }; +function getCategoryById(param) { + var elem = null; + $('input[name=id_parent]').each(function (index) { + if ($(this).val() === param + '') { + elem = $(this); + } + }); + return elem; +} + +function disableTreeItem(item) { + item.find('input[name=id_parent]').attr('disabled', 'disabled'); + if (item.hasClass('tree-folder')) { + item.find('span.tree-folder-name').addClass('tree-folder-name-disable'); + item.find('ul li').each(function (index) { + disableTreeItem($(this)); + }); + } else if (item.hasClass('tree-item')) { + item.addClass('tree-item-disable'); + } +} + +function organizeTree() { + if ($('#id_category').length != 0) { + var id = $('#id_category').val(); + var item = getCategoryById(id).parent().parent(); + disableTreeItem(item); + } +} + Tree.prototype = { constructor: Tree, @@ -162,8 +192,9 @@ Tree.prototype = {controller:'AdminProducts',token:currentToken,action:'getCategoryTree',type:idTree,fullTree:1,selected:selected, inputName:name,useCheckBox:useCheckBox}, function(content) { - $('#'+idTree).html(content); - $('#'+idTree).tree('init'); + $('#' + idTree).html(content); + organizeTree(); + $('#' + idTree).tree('init'); that.$element.find("label.tree-toggler").each( function() { diff --git a/admin/themes/default/js/vendor/bootstrap/LICENSE b/admin/themes/default/js/vendor/bootstrap/LICENSE new file mode 100644 index 000000000..f4c52d6a4 --- /dev/null +++ b/admin/themes/default/js/vendor/bootstrap/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2011-2015 Twitter, Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/admin/themes/default/js/vendor/bootstrap/index.php b/admin/themes/default/js/vendor/bootstrap/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/js/vendor/bootstrap/index.php +++ b/admin/themes/default/js/vendor/bootstrap/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/js/vendor/enquire.LICENSE b/admin/themes/default/js/vendor/enquire.LICENSE new file mode 100644 index 000000000..9bd56be5c --- /dev/null +++ b/admin/themes/default/js/vendor/enquire.LICENSE @@ -0,0 +1,339 @@ +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + Preamble + +The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + +We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + +Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and +modification follow. + +GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + +a) You must cause the modified files to carry prominent notices +stating that you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any +part thereof, to be licensed as a whole at no charge to all third +parties under the terms of this License. + +c) If the modified program normally reads commands interactively +when run, you must cause it, when started running for such +interactive use in the most ordinary way, to print or display an +announcement including an appropriate copyright notice and a +notice that there is no warranty (or else, saying that you provide +a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this +License. (Exception: if the Program itself is interactive but +does not normally print such an announcement, your work based on +the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + +3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three +years, to give any third party, for a charge no more than your +cost of physically performing source distribution, a complete +machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer +to distribute corresponding source code. (This alternative is +allowed only for noncommercial distribution and only if you +received the program in object code or executable form with such +an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + +10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + +Copyright (C) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) year name of author +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in the program +`Gnomovision' (which makes passes at compilers) written by James Hacker. + +, 1 April 1989 +Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/admin/themes/default/js/vendor/index.php b/admin/themes/default/js/vendor/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/js/vendor/index.php +++ b/admin/themes/default/js/vendor/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/js/vendor/jquery-passy.LICENSE b/admin/themes/default/js/vendor/jquery-passy.LICENSE new file mode 100644 index 000000000..9bd56be5c --- /dev/null +++ b/admin/themes/default/js/vendor/jquery-passy.LICENSE @@ -0,0 +1,339 @@ +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + Preamble + +The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + +We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + +Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and +modification follow. + +GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + +a) You must cause the modified files to carry prominent notices +stating that you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any +part thereof, to be licensed as a whole at no charge to all third +parties under the terms of this License. + +c) If the modified program normally reads commands interactively +when run, you must cause it, when started running for such +interactive use in the most ordinary way, to print or display an +announcement including an appropriate copyright notice and a +notice that there is no warranty (or else, saying that you provide +a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this +License. (Exception: if the Program itself is interactive but +does not normally print such an announcement, your work based on +the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + +3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three +years, to give any third party, for a charge no more than your +cost of physically performing source distribution, a complete +machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer +to distribute corresponding source code. (This alternative is +allowed only for noncommercial distribution and only if you +received the program in object code or executable form with such +an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + +10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + +Copyright (C) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) year name of author +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in the program +`Gnomovision' (which makes passes at compilers) written by James Hacker. + +, 1 April 1989 +Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/admin/themes/default/js/vendor/matchMedia.LICENSE b/admin/themes/default/js/vendor/matchMedia.LICENSE new file mode 100644 index 000000000..e2f078335 --- /dev/null +++ b/admin/themes/default/js/vendor/matchMedia.LICENSE @@ -0,0 +1,7 @@ +Copyright (c) 2012 Scott Jehl + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/admin/themes/default/js/vendor/modernizr.LICENSE b/admin/themes/default/js/vendor/modernizr.LICENSE new file mode 100644 index 000000000..50b075b55 --- /dev/null +++ b/admin/themes/default/js/vendor/modernizr.LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2009-2015 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/admin/themes/default/js/vendor/moment.LICENSE b/admin/themes/default/js/vendor/moment.LICENSE new file mode 100644 index 000000000..34f5b3707 --- /dev/null +++ b/admin/themes/default/js/vendor/moment.LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/admin/themes/default/js/vendor/nvd3.LICENSE b/admin/themes/default/js/vendor/nvd3.LICENSE new file mode 100644 index 000000000..3a6447abb --- /dev/null +++ b/admin/themes/default/js/vendor/nvd3.LICENSE @@ -0,0 +1,46 @@ +nvd3.js License + +Copyright (c) 2011-2014 Novus Partners, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + + +d3.js License + +Copyright (c) 2012, Michael Bostock +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* The name Michael Bostock may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/admin/themes/default/js/vendor/typeahead.LICENSE b/admin/themes/default/js/vendor/typeahead.LICENSE new file mode 100644 index 000000000..f4c52d6a4 --- /dev/null +++ b/admin/themes/default/js/vendor/typeahead.LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2011-2015 Twitter, Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/admin/themes/default/sass/controllers/index.php b/admin/themes/default/sass/controllers/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/sass/controllers/index.php +++ b/admin/themes/default/sass/controllers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/sass/index.php b/admin/themes/default/sass/index.php index bc9342b71..212276dc9 100644 --- a/admin/themes/default/sass/index.php +++ b/admin/themes/default/sass/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); exit; diff --git a/admin/themes/default/sass/modules/colors/index.php b/admin/themes/default/sass/modules/colors/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/sass/modules/colors/index.php +++ b/admin/themes/default/sass/modules/colors/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/sass/modules/index.php b/admin/themes/default/sass/modules/index.php index 8412b6434..212276dc9 100644 --- a/admin/themes/default/sass/modules/index.php +++ b/admin/themes/default/sass/modules/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); exit; diff --git a/admin/themes/default/sass/partials/index.php b/admin/themes/default/sass/partials/index.php index bc9342b71..212276dc9 100644 --- a/admin/themes/default/sass/partials/index.php +++ b/admin/themes/default/sass/partials/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); exit; diff --git a/admin/themes/default/sass/schemes/index.php b/admin/themes/default/sass/schemes/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/sass/schemes/index.php +++ b/admin/themes/default/sass/schemes/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/sass/schemes_rtl/index.php b/admin/themes/default/sass/schemes_rtl/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/sass/schemes_rtl/index.php +++ b/admin/themes/default/sass/schemes_rtl/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/sass/vendor/bi-app/index.php b/admin/themes/default/sass/vendor/bi-app/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/sass/vendor/bi-app/index.php +++ b/admin/themes/default/sass/vendor/bi-app/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/sass/vendor/bootstrap-rtl-sass/index.php b/admin/themes/default/sass/vendor/bootstrap-rtl-sass/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/sass/vendor/bootstrap-rtl-sass/index.php +++ b/admin/themes/default/sass/vendor/bootstrap-rtl-sass/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/sass/vendor/bootstrap-sass/index.php b/admin/themes/default/sass/vendor/bootstrap-sass/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/sass/vendor/bootstrap-sass/index.php +++ b/admin/themes/default/sass/vendor/bootstrap-sass/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/sass/vendor/bootstrap-sass/mixins/index.php b/admin/themes/default/sass/vendor/bootstrap-sass/mixins/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/sass/vendor/bootstrap-sass/mixins/index.php +++ b/admin/themes/default/sass/vendor/bootstrap-sass/mixins/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/sass/vendor/font-awesome/index.php b/admin/themes/default/sass/vendor/font-awesome/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/sass/vendor/font-awesome/index.php +++ b/admin/themes/default/sass/vendor/font-awesome/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/sass/vendor/index.php b/admin/themes/default/sass/vendor/index.php index d78cacbb8..7e62d550d 100644 --- a/admin/themes/default/sass/vendor/index.php +++ b/admin/themes/default/sass/vendor/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); exit; \ No newline at end of file diff --git a/admin/themes/default/template/content.tpl b/admin/themes/default/template/content.tpl index cc955d060..18c3bccc8 100644 --- a/admin/themes/default/template/content.tpl +++ b/admin/themes/default/template/content.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/access/helpers/form/form.tpl b/admin/themes/default/template/controllers/access/helpers/form/form.tpl index 599c0af78..b0e1ff2ac 100644 --- a/admin/themes/default/template/controllers/access/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/access/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -362,4 +362,4 @@
{/foreach} - \ No newline at end of file + diff --git a/admin/themes/default/template/controllers/access/helpers/form/index.php b/admin/themes/default/template/controllers/access/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/access/helpers/form/index.php +++ b/admin/themes/default/template/controllers/access/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/access/helpers/index.php b/admin/themes/default/template/controllers/access/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/access/helpers/index.php +++ b/admin/themes/default/template/controllers/access/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/access/index.php b/admin/themes/default/template/controllers/access/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/access/index.php +++ b/admin/themes/default/template/controllers/access/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/addons_catalog/content.tpl b/admin/themes/default/template/controllers/addons_catalog/content.tpl index d55d2556d..07928c5b6 100644 --- a/admin/themes/default/template/controllers/addons_catalog/content.tpl +++ b/admin/themes/default/template/controllers/addons_catalog/content.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/addons_catalog/index.php b/admin/themes/default/template/controllers/addons_catalog/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/addons_catalog/index.php +++ b/admin/themes/default/template/controllers/addons_catalog/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/addresses/helpers/form/form.tpl b/admin/themes/default/template/controllers/addresses/helpers/form/form.tpl index 771e99605..420c44ca4 100644 --- a/admin/themes/default/template/controllers/addresses/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/addresses/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/addresses/helpers/form/index.php b/admin/themes/default/template/controllers/addresses/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/addresses/helpers/form/index.php +++ b/admin/themes/default/template/controllers/addresses/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/addresses/helpers/index.php b/admin/themes/default/template/controllers/addresses/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/addresses/helpers/index.php +++ b/admin/themes/default/template/controllers/addresses/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/addresses/helpers/list/index.php b/admin/themes/default/template/controllers/addresses/helpers/list/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/addresses/helpers/list/index.php +++ b/admin/themes/default/template/controllers/addresses/helpers/list/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/addresses/helpers/list/list_header.tpl b/admin/themes/default/template/controllers/addresses/helpers/list/list_header.tpl index 1f1220f80..8209fc6ff 100644 --- a/admin/themes/default/template/controllers/addresses/helpers/list/list_header.tpl +++ b/admin/themes/default/template/controllers/addresses/helpers/list/list_header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/addresses/index.php b/admin/themes/default/template/controllers/addresses/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/addresses/index.php +++ b/admin/themes/default/template/controllers/addresses/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/attachments/helpers/list/list_action_delete.tpl b/admin/themes/default/template/controllers/attachments/helpers/list/list_action_delete.tpl index 24770ce81..db1fd4b15 100644 --- a/admin/themes/default/template/controllers/attachments/helpers/list/list_action_delete.tpl +++ b/admin/themes/default/template/controllers/attachments/helpers/list/list_action_delete.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/attachments/index.php b/admin/themes/default/template/controllers/attachments/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/attachments/index.php +++ b/admin/themes/default/template/controllers/attachments/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/attribute_generator/content.tpl b/admin/themes/default/template/controllers/attribute_generator/content.tpl index 6b34a346a..102c96f35 100644 --- a/admin/themes/default/template/controllers/attribute_generator/content.tpl +++ b/admin/themes/default/template/controllers/attribute_generator/content.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/attribute_generator/index.php b/admin/themes/default/template/controllers/attribute_generator/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/attribute_generator/index.php +++ b/admin/themes/default/template/controllers/attribute_generator/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/attributes/helpers/form/form.tpl b/admin/themes/default/template/controllers/attributes/helpers/form/form.tpl index ac3ace102..92bc310b5 100644 --- a/admin/themes/default/template/controllers/attributes/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/attributes/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/attributes/helpers/form/index.php b/admin/themes/default/template/controllers/attributes/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/attributes/helpers/form/index.php +++ b/admin/themes/default/template/controllers/attributes/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/attributes/helpers/index.php b/admin/themes/default/template/controllers/attributes/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/attributes/helpers/index.php +++ b/admin/themes/default/template/controllers/attributes/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/attributes/index.php b/admin/themes/default/template/controllers/attributes/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/attributes/index.php +++ b/admin/themes/default/template/controllers/attributes/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/attributes_groups/helpers/form/form.tpl b/admin/themes/default/template/controllers/attributes_groups/helpers/form/form.tpl index 5972db88b..1841c53c5 100644 --- a/admin/themes/default/template/controllers/attributes_groups/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/attributes_groups/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -30,4 +30,4 @@ {if $input.name == 'public_name'} {hook h="displayAttributeGroupForm" id_attribute_group=$form_id} {/if} -{/block} \ No newline at end of file +{/block} diff --git a/admin/themes/default/template/controllers/attributes_groups/helpers/form/index.php b/admin/themes/default/template/controllers/attributes_groups/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/attributes_groups/helpers/form/index.php +++ b/admin/themes/default/template/controllers/attributes_groups/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/attributes_groups/helpers/index.php b/admin/themes/default/template/controllers/attributes_groups/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/attributes_groups/helpers/index.php +++ b/admin/themes/default/template/controllers/attributes_groups/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/attributes_groups/helpers/list/index.php b/admin/themes/default/template/controllers/attributes_groups/helpers/list/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/attributes_groups/helpers/list/index.php +++ b/admin/themes/default/template/controllers/attributes_groups/helpers/list/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/attributes_groups/helpers/list/list_header.tpl b/admin/themes/default/template/controllers/attributes_groups/helpers/list/list_header.tpl index 47cf89512..d2bde8e32 100644 --- a/admin/themes/default/template/controllers/attributes_groups/helpers/list/list_header.tpl +++ b/admin/themes/default/template/controllers/attributes_groups/helpers/list/list_header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -30,4 +30,4 @@ $(location.hash).click(); }); -{/block} \ No newline at end of file +{/block} diff --git a/admin/themes/default/template/controllers/attributes_groups/helpers/view/index.php b/admin/themes/default/template/controllers/attributes_groups/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/attributes_groups/helpers/view/index.php +++ b/admin/themes/default/template/controllers/attributes_groups/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/attributes_groups/index.php b/admin/themes/default/template/controllers/attributes_groups/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/attributes_groups/index.php +++ b/admin/themes/default/template/controllers/attributes_groups/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/backup/download/index.php b/admin/themes/default/template/controllers/backup/download/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/backup/download/index.php +++ b/admin/themes/default/template/controllers/backup/download/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/backup/download/view.tpl b/admin/themes/default/template/controllers/backup/download/view.tpl index e62d3e3f9..711e01a5d 100644 --- a/admin/themes/default/template/controllers/backup/download/view.tpl +++ b/admin/themes/default/template/controllers/backup/download/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/backup/helpers/index.php b/admin/themes/default/template/controllers/backup/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/backup/helpers/index.php +++ b/admin/themes/default/template/controllers/backup/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/backup/helpers/list/index.php b/admin/themes/default/template/controllers/backup/helpers/list/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/backup/helpers/list/index.php +++ b/admin/themes/default/template/controllers/backup/helpers/list/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/backup/helpers/list/list_header.tpl b/admin/themes/default/template/controllers/backup/helpers/list/list_header.tpl index 87b5145ad..3850f29ac 100644 --- a/admin/themes/default/template/controllers/backup/helpers/list/list_header.tpl +++ b/admin/themes/default/template/controllers/backup/helpers/list/list_header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/backup/helpers/view/index.php b/admin/themes/default/template/controllers/backup/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/backup/helpers/view/index.php +++ b/admin/themes/default/template/controllers/backup/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/backup/helpers/view/view.tpl b/admin/themes/default/template/controllers/backup/helpers/view/view.tpl index f671fcca4..de95c2ed2 100644 --- a/admin/themes/default/template/controllers/backup/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/backup/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/backup/index.php b/admin/themes/default/template/controllers/backup/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/backup/index.php +++ b/admin/themes/default/template/controllers/backup/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/carrier_wizard/helpers/form/form.tpl b/admin/themes/default/template/controllers/carrier_wizard/helpers/form/form.tpl index 0bfbe5298..6f2f39ef0 100644 --- a/admin/themes/default/template/controllers/carrier_wizard/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/carrier_wizard/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/carrier_wizard/helpers/form/index.php b/admin/themes/default/template/controllers/carrier_wizard/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/carrier_wizard/helpers/form/index.php +++ b/admin/themes/default/template/controllers/carrier_wizard/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/carrier_wizard/helpers/index.php b/admin/themes/default/template/controllers/carrier_wizard/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/carrier_wizard/helpers/index.php +++ b/admin/themes/default/template/controllers/carrier_wizard/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/carrier_wizard/helpers/view/index.php b/admin/themes/default/template/controllers/carrier_wizard/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/carrier_wizard/helpers/view/index.php +++ b/admin/themes/default/template/controllers/carrier_wizard/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/carrier_wizard/helpers/view/view.tpl b/admin/themes/default/template/controllers/carrier_wizard/helpers/view/view.tpl index da9a4c7d8..638a7638e 100644 --- a/admin/themes/default/template/controllers/carrier_wizard/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/carrier_wizard/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/carrier_wizard/index.php b/admin/themes/default/template/controllers/carrier_wizard/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/template/controllers/carrier_wizard/index.php +++ b/admin/themes/default/template/controllers/carrier_wizard/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/carrier_wizard/logo.tpl b/admin/themes/default/template/controllers/carrier_wizard/logo.tpl index 80be2da7f..fe1d59c03 100644 --- a/admin/themes/default/template/controllers/carrier_wizard/logo.tpl +++ b/admin/themes/default/template/controllers/carrier_wizard/logo.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -68,4 +68,4 @@ } }); } - \ No newline at end of file + diff --git a/admin/themes/default/template/controllers/carrier_wizard/summary.tpl b/admin/themes/default/template/controllers/carrier_wizard/summary.tpl index a86e55ab6..a18a42436 100644 --- a/admin/themes/default/template/controllers/carrier_wizard/summary.tpl +++ b/admin/themes/default/template/controllers/carrier_wizard/summary.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -26,13 +26,13 @@
diff --git a/admin/themes/default/template/controllers/carriers/helpers/form/form.tpl b/admin/themes/default/template/controllers/carriers/helpers/form/form.tpl index 15fdc3e97..cb9b40e19 100644 --- a/admin/themes/default/template/controllers/carriers/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/carriers/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/carriers/helpers/form/index.php b/admin/themes/default/template/controllers/carriers/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/carriers/helpers/form/index.php +++ b/admin/themes/default/template/controllers/carriers/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/carriers/helpers/index.php b/admin/themes/default/template/controllers/carriers/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/carriers/helpers/index.php +++ b/admin/themes/default/template/controllers/carriers/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/carriers/helpers/list/index.php b/admin/themes/default/template/controllers/carriers/helpers/list/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/template/controllers/carriers/helpers/list/index.php +++ b/admin/themes/default/template/controllers/carriers/helpers/list/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/carriers/helpers/list/list_content.tpl b/admin/themes/default/template/controllers/carriers/helpers/list/list_content.tpl index 33d728633..2e225642e 100644 --- a/admin/themes/default/template/controllers/carriers/helpers/list/list_content.tpl +++ b/admin/themes/default/template/controllers/carriers/helpers/list/list_content.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -37,4 +37,4 @@ {else} > {/if} - {/block} \ No newline at end of file + {/block} diff --git a/admin/themes/default/template/controllers/carriers/helpers/view/index.php b/admin/themes/default/template/controllers/carriers/helpers/view/index.php index 2d4b752c4..9a99a8662 100644 --- a/admin/themes/default/template/controllers/carriers/helpers/view/index.php +++ b/admin/themes/default/template/controllers/carriers/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/carriers/helpers/view/view.tpl b/admin/themes/default/template/controllers/carriers/helpers/view/view.tpl index 2785102e7..0f25d7908 100644 --- a/admin/themes/default/template/controllers/carriers/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/carriers/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/carriers/index.php b/admin/themes/default/template/controllers/carriers/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/carriers/index.php +++ b/admin/themes/default/template/controllers/carriers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/cart_rules/actions.tpl b/admin/themes/default/template/controllers/cart_rules/actions.tpl index 8d8d8951c..3b93a2d97 100644 --- a/admin/themes/default/template/controllers/cart_rules/actions.tpl +++ b/admin/themes/default/template/controllers/cart_rules/actions.tpl @@ -98,7 +98,7 @@

diff --git a/admin/themes/default/template/controllers/cart_rules/conditions.tpl b/admin/themes/default/template/controllers/cart_rules/conditions.tpl index efed205c1..f844740b7 100644 --- a/admin/themes/default/template/controllers/cart_rules/conditions.tpl +++ b/admin/themes/default/template/controllers/cart_rules/conditions.tpl @@ -6,10 +6,10 @@
-
+
- +
@@ -304,4 +304,4 @@
{/if} - \ No newline at end of file + diff --git a/admin/themes/default/template/controllers/cart_rules/form.js b/admin/themes/default/template/controllers/cart_rules/form.js index 0adf5dee8..9cd1abeca 100644 --- a/admin/themes/default/template/controllers/cart_rules/form.js +++ b/admin/themes/default/template/controllers/cart_rules/form.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -259,7 +259,8 @@ $('#free_gift_on').click(function(){ toggleGiftProduct();} ); $('#free_gift_off').click(function(){ - toggleGiftProduct();} + toggleGiftProduct(); + $('#gift_products_found').hide();} ); toggleGiftProduct(); @@ -300,7 +301,7 @@ $('#reductionProductFilter') parse: function(data) { var mytab = new Array(); for (var i = 0; i < data.length; i++) - mytab[mytab.length] = { data: data[i], value: (data[i].reference + ' ' + data[i].name).trim() }; + mytab[mytab.length] = { data: data[i], value: ('(#' + data[i].id_product + ') ' + data[i].name).trim() }; return mytab; }, extraParams: { @@ -330,7 +331,7 @@ $('#customerFilter') parse: function(data) { var mytab = new Array(); for (var i = 0; i < data.length; i++) - mytab[mytab.length] = { data: data[i], value: data[i].cname + ' (' + data[i].email + ')' }; + mytab[mytab.length] = { data: data[i], value: data[i].cname + ' (' + data[i].email + ')' + (data[i].from_shop_name ? ' - ' + data[i].from_shop_name : '' ) }; return mytab; }, extraParams: { diff --git a/admin/themes/default/template/controllers/cart_rules/form.tpl b/admin/themes/default/template/controllers/cart_rules/form.tpl index d96739637..824dfb293 100644 --- a/admin/themes/default/template/controllers/cart_rules/form.tpl +++ b/admin/themes/default/template/controllers/cart_rules/form.tpl @@ -15,7 +15,7 @@
{if $currentObject->id}{/if} - +
{include file='controllers/cart_rules/informations.tpl'}
diff --git a/admin/themes/default/template/controllers/cart_rules/helpers/index.php b/admin/themes/default/template/controllers/cart_rules/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/cart_rules/helpers/index.php +++ b/admin/themes/default/template/controllers/cart_rules/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/cart_rules/helpers/list/index.php b/admin/themes/default/template/controllers/cart_rules/helpers/list/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/cart_rules/helpers/list/index.php +++ b/admin/themes/default/template/controllers/cart_rules/helpers/list/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/cart_rules/helpers/list/list_header.tpl b/admin/themes/default/template/controllers/cart_rules/helpers/list/list_header.tpl index 518db000e..d55dce54d 100644 --- a/admin/themes/default/template/controllers/cart_rules/helpers/list/list_header.tpl +++ b/admin/themes/default/template/controllers/cart_rules/helpers/list/list_header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/cart_rules/index.php b/admin/themes/default/template/controllers/cart_rules/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/cart_rules/index.php +++ b/admin/themes/default/template/controllers/cart_rules/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/carts/helpers/index.php b/admin/themes/default/template/controllers/carts/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/carts/helpers/index.php +++ b/admin/themes/default/template/controllers/carts/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/carts/helpers/view/index.php b/admin/themes/default/template/controllers/carts/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/carts/helpers/view/index.php +++ b/admin/themes/default/template/controllers/carts/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/carts/helpers/view/view.tpl b/admin/themes/default/template/controllers/carts/helpers/view/view.tpl index 71aa9e7c0..a575b429e 100644 --- a/admin/themes/default/template/controllers/carts/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/carts/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/carts/index.php b/admin/themes/default/template/controllers/carts/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/carts/index.php +++ b/admin/themes/default/template/controllers/carts/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/categories/helpers/form/form.tpl b/admin/themes/default/template/controllers/categories/helpers/form/form.tpl index 5b3f592b0..2079e7cb5 100644 --- a/admin/themes/default/template/controllers/categories/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/categories/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -41,6 +41,12 @@ {else} {$smarty.block.parent} {/if} + {if in_array($input.name, ['image', 'thumb'])} +
+
{l s='Recommended dimensions (for the default theme): %1spx x %2spx' sprintf=[$input.format.width, $input.format.height]} +
+
+ {/if} {/block} {block name="description"} {$smarty.block.parent} @@ -55,7 +61,7 @@ {/block} {block name="input_row"} {$smarty.block.parent} - {if ($input.name == 'image')} + {if ($input.name == 'thumb')} {$displayBackOfficeCategory} {/if} -{/block} \ No newline at end of file +{/block} diff --git a/admin/themes/default/template/controllers/categories/helpers/form/index.php b/admin/themes/default/template/controllers/categories/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/categories/helpers/form/index.php +++ b/admin/themes/default/template/controllers/categories/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/categories/helpers/index.php b/admin/themes/default/template/controllers/categories/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/categories/helpers/index.php +++ b/admin/themes/default/template/controllers/categories/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/categories/helpers/list/index.php b/admin/themes/default/template/controllers/categories/helpers/list/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/categories/helpers/list/index.php +++ b/admin/themes/default/template/controllers/categories/helpers/list/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/categories/helpers/list/list_header.tpl b/admin/themes/default/template/controllers/categories/helpers/list/list_header.tpl index 5f679447f..0ab93f6b3 100644 --- a/admin/themes/default/template/controllers/categories/helpers/list/list_header.tpl +++ b/admin/themes/default/template/controllers/categories/helpers/list/list_header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/categories/index.php b/admin/themes/default/template/controllers/categories/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/categories/index.php +++ b/admin/themes/default/template/controllers/categories/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/cms/helpers/form/form.tpl b/admin/themes/default/template/controllers/cms/helpers/form/form.tpl index bc5f19b5a..31665a41d 100644 --- a/admin/themes/default/template/controllers/cms/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/cms/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/cms/helpers/form/index.php b/admin/themes/default/template/controllers/cms/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/cms/helpers/form/index.php +++ b/admin/themes/default/template/controllers/cms/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/cms/helpers/index.php b/admin/themes/default/template/controllers/cms/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/cms/helpers/index.php +++ b/admin/themes/default/template/controllers/cms/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/cms/index.php b/admin/themes/default/template/controllers/cms/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/cms/index.php +++ b/admin/themes/default/template/controllers/cms/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/cms_categories/helpers/form/form.tpl b/admin/themes/default/template/controllers/cms_categories/helpers/form/form.tpl index c018013e1..4ef8f09cf 100644 --- a/admin/themes/default/template/controllers/cms_categories/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/cms_categories/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/cms_categories/helpers/form/index.php b/admin/themes/default/template/controllers/cms_categories/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/cms_categories/helpers/form/index.php +++ b/admin/themes/default/template/controllers/cms_categories/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/cms_categories/helpers/index.php b/admin/themes/default/template/controllers/cms_categories/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/cms_categories/helpers/index.php +++ b/admin/themes/default/template/controllers/cms_categories/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/cms_categories/index.php b/admin/themes/default/template/controllers/cms_categories/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/cms_categories/index.php +++ b/admin/themes/default/template/controllers/cms_categories/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/cms_content/content.tpl b/admin/themes/default/template/controllers/cms_content/content.tpl index f078c0307..766a88f8c 100644 --- a/admin/themes/default/template/controllers/cms_content/content.tpl +++ b/admin/themes/default/template/controllers/cms_content/content.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/cms_content/index.php b/admin/themes/default/template/controllers/cms_content/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/cms_content/index.php +++ b/admin/themes/default/template/controllers/cms_content/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/countries/helpers/form/form.tpl b/admin/themes/default/template/controllers/countries/helpers/form/form.tpl index 565ec6a55..aa8e55c24 100644 --- a/admin/themes/default/template/controllers/countries/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/countries/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/countries/helpers/form/index.php b/admin/themes/default/template/controllers/countries/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/countries/helpers/form/index.php +++ b/admin/themes/default/template/controllers/countries/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/countries/helpers/index.php b/admin/themes/default/template/controllers/countries/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/countries/helpers/index.php +++ b/admin/themes/default/template/controllers/countries/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/countries/helpers/list/index.php b/admin/themes/default/template/controllers/countries/helpers/list/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/countries/helpers/list/index.php +++ b/admin/themes/default/template/controllers/countries/helpers/list/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/countries/helpers/list/list_footer.tpl b/admin/themes/default/template/controllers/countries/helpers/list/list_footer.tpl index a2788c9e4..a1a342129 100644 --- a/admin/themes/default/template/controllers/countries/helpers/list/list_footer.tpl +++ b/admin/themes/default/template/controllers/countries/helpers/list/list_footer.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/countries/index.php b/admin/themes/default/template/controllers/countries/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/countries/index.php +++ b/admin/themes/default/template/controllers/countries/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/customer_threads/helpers/index.php b/admin/themes/default/template/controllers/customer_threads/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/customer_threads/helpers/index.php +++ b/admin/themes/default/template/controllers/customer_threads/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/customer_threads/helpers/list/index.php b/admin/themes/default/template/controllers/customer_threads/helpers/list/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/customer_threads/helpers/list/index.php +++ b/admin/themes/default/template/controllers/customer_threads/helpers/list/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/customer_threads/helpers/list/list_header.tpl b/admin/themes/default/template/controllers/customer_threads/helpers/list/list_header.tpl index c3b865269..eb5a77d3c 100644 --- a/admin/themes/default/template/controllers/customer_threads/helpers/list/list_header.tpl +++ b/admin/themes/default/template/controllers/customer_threads/helpers/list/list_header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/customer_threads/helpers/options/index.php b/admin/themes/default/template/controllers/customer_threads/helpers/options/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/customer_threads/helpers/options/index.php +++ b/admin/themes/default/template/controllers/customer_threads/helpers/options/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/customer_threads/helpers/options/options.tpl b/admin/themes/default/template/controllers/customer_threads/helpers/options/options.tpl index 2326b1587..1d014faf5 100644 --- a/admin/themes/default/template/controllers/customer_threads/helpers/options/options.tpl +++ b/admin/themes/default/template/controllers/customer_threads/helpers/options/options.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/customer_threads/helpers/view/index.php b/admin/themes/default/template/controllers/customer_threads/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/customer_threads/helpers/view/index.php +++ b/admin/themes/default/template/controllers/customer_threads/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/customer_threads/helpers/view/message.tpl b/admin/themes/default/template/controllers/customer_threads/helpers/view/message.tpl index 4678b75ef..cb3158f93 100644 --- a/admin/themes/default/template/controllers/customer_threads/helpers/view/message.tpl +++ b/admin/themes/default/template/controllers/customer_threads/helpers/view/message.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/customer_threads/helpers/view/modal.tpl b/admin/themes/default/template/controllers/customer_threads/helpers/view/modal.tpl index 9894d56bf..9f41e31d0 100644 --- a/admin/themes/default/template/controllers/customer_threads/helpers/view/modal.tpl +++ b/admin/themes/default/template/controllers/customer_threads/helpers/view/modal.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -73,4 +73,4 @@ else $("button[name='submitForward']").prop('disabled', 'disabled'); }); - \ No newline at end of file + diff --git a/admin/themes/default/template/controllers/customer_threads/helpers/view/timeline_item.tpl b/admin/themes/default/template/controllers/customer_threads/helpers/view/timeline_item.tpl index 95128c32a..e11ce4ef7 100644 --- a/admin/themes/default/template/controllers/customer_threads/helpers/view/timeline_item.tpl +++ b/admin/themes/default/template/controllers/customer_threads/helpers/view/timeline_item.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/customer_threads/helpers/view/view.tpl b/admin/themes/default/template/controllers/customer_threads/helpers/view/view.tpl index ea23239db..31b65cf8a 100644 --- a/admin/themes/default/template/controllers/customer_threads/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/customer_threads/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/customer_threads/index.php b/admin/themes/default/template/controllers/customer_threads/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/customer_threads/index.php +++ b/admin/themes/default/template/controllers/customer_threads/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/customer_threads/message.tpl b/admin/themes/default/template/controllers/customer_threads/message.tpl index 7be2d704b..16c3c6f86 100644 --- a/admin/themes/default/template/controllers/customer_threads/message.tpl +++ b/admin/themes/default/template/controllers/customer_threads/message.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/customers/helpers/index.php b/admin/themes/default/template/controllers/customers/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/customers/helpers/index.php +++ b/admin/themes/default/template/controllers/customers/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/customers/helpers/list/index.php b/admin/themes/default/template/controllers/customers/helpers/list/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/customers/helpers/list/index.php +++ b/admin/themes/default/template/controllers/customers/helpers/list/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/customers/helpers/list/list_header.tpl b/admin/themes/default/template/controllers/customers/helpers/list/list_header.tpl index 2669dc2e7..939d4e3dc 100644 --- a/admin/themes/default/template/controllers/customers/helpers/list/list_header.tpl +++ b/admin/themes/default/template/controllers/customers/helpers/list/list_header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/customers/helpers/required_fields.tpl b/admin/themes/default/template/controllers/customers/helpers/required_fields.tpl index cbe129b3b..abf671a38 100644 --- a/admin/themes/default/template/controllers/customers/helpers/required_fields.tpl +++ b/admin/themes/default/template/controllers/customers/helpers/required_fields.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/customers/helpers/view/index.php b/admin/themes/default/template/controllers/customers/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/customers/helpers/view/index.php +++ b/admin/themes/default/template/controllers/customers/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/customers/helpers/view/view.tpl b/admin/themes/default/template/controllers/customers/helpers/view/view.tpl index 56982a235..c345c3c2c 100644 --- a/admin/themes/default/template/controllers/customers/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/customers/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -41,7 +41,7 @@ {$customer->email}
- + {l s='Edit'} @@ -439,10 +439,10 @@ {if $discount['quantity'] > 0}{$discount['quantity_for_user']|intval}{else}0{/if} - + - + @@ -493,6 +493,7 @@ + @@ -503,6 +504,7 @@ {foreach $connections as $connection} + diff --git a/admin/themes/default/template/controllers/customers/index.php b/admin/themes/default/template/controllers/customers/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/customers/index.php +++ b/admin/themes/default/template/controllers/customers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/dashboard/helpers/index.php b/admin/themes/default/template/controllers/dashboard/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/dashboard/helpers/index.php +++ b/admin/themes/default/template/controllers/dashboard/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/dashboard/helpers/view/index.php b/admin/themes/default/template/controllers/dashboard/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/dashboard/helpers/view/index.php +++ b/admin/themes/default/template/controllers/dashboard/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/dashboard/helpers/view/view.tpl b/admin/themes/default/template/controllers/dashboard/helpers/view/view.tpl index c8b4f5659..c114cfeef 100644 --- a/admin/themes/default/template/controllers/dashboard/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/dashboard/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -107,7 +107,7 @@
{l s="Enhance your store Qloapps modules"}
-
{l s="Contact Us!"}
+
{l s="Contact Us!"}
{l s="Contact us for any help"}
diff --git a/admin/themes/default/template/controllers/dashboard/index.php b/admin/themes/default/template/controllers/dashboard/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/dashboard/index.php +++ b/admin/themes/default/template/controllers/dashboard/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/emails/content.tpl b/admin/themes/default/template/controllers/emails/content.tpl index 0b904d37c..7e6e25616 100644 --- a/admin/themes/default/template/controllers/emails/content.tpl +++ b/admin/themes/default/template/controllers/emails/content.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/emails/index.php b/admin/themes/default/template/controllers/emails/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/emails/index.php +++ b/admin/themes/default/template/controllers/emails/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/employees/helpers/form/form.tpl b/admin/themes/default/template/controllers/employees/helpers/form/form.tpl index 088b7f692..9a88b5e0b 100644 --- a/admin/themes/default/template/controllers/employees/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/employees/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/employees/helpers/form/index.php b/admin/themes/default/template/controllers/employees/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/employees/helpers/form/index.php +++ b/admin/themes/default/template/controllers/employees/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/employees/helpers/index.php b/admin/themes/default/template/controllers/employees/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/employees/helpers/index.php +++ b/admin/themes/default/template/controllers/employees/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/employees/index.php b/admin/themes/default/template/controllers/employees/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/employees/index.php +++ b/admin/themes/default/template/controllers/employees/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/feature_value/helpers/form/form.tpl b/admin/themes/default/template/controllers/feature_value/helpers/form/form.tpl index d9b8919b7..eba4648ae 100644 --- a/admin/themes/default/template/controllers/feature_value/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/feature_value/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/feature_value/helpers/form/index.php b/admin/themes/default/template/controllers/feature_value/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/feature_value/helpers/form/index.php +++ b/admin/themes/default/template/controllers/feature_value/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/feature_value/helpers/index.php b/admin/themes/default/template/controllers/feature_value/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/feature_value/helpers/index.php +++ b/admin/themes/default/template/controllers/feature_value/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/feature_value/index.php b/admin/themes/default/template/controllers/feature_value/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/feature_value/index.php +++ b/admin/themes/default/template/controllers/feature_value/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/features/helpers/form/form.tpl b/admin/themes/default/template/controllers/features/helpers/form/form.tpl index 02cdd351c..4e9b42939 100644 --- a/admin/themes/default/template/controllers/features/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/features/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/features/helpers/form/index.php b/admin/themes/default/template/controllers/features/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/features/helpers/form/index.php +++ b/admin/themes/default/template/controllers/features/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/features/helpers/index.php b/admin/themes/default/template/controllers/features/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/features/helpers/index.php +++ b/admin/themes/default/template/controllers/features/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/features/index.php b/admin/themes/default/template/controllers/features/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/features/index.php +++ b/admin/themes/default/template/controllers/features/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/geolocation/helpers/index.php b/admin/themes/default/template/controllers/geolocation/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/geolocation/helpers/index.php +++ b/admin/themes/default/template/controllers/geolocation/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/geolocation/helpers/options/index.php b/admin/themes/default/template/controllers/geolocation/helpers/options/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/geolocation/helpers/options/index.php +++ b/admin/themes/default/template/controllers/geolocation/helpers/options/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/geolocation/helpers/options/options.tpl b/admin/themes/default/template/controllers/geolocation/helpers/options/options.tpl index 83cec24f1..4949c9c9d 100644 --- a/admin/themes/default/template/controllers/geolocation/helpers/options/options.tpl +++ b/admin/themes/default/template/controllers/geolocation/helpers/options/options.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/geolocation/index.php b/admin/themes/default/template/controllers/geolocation/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/geolocation/index.php +++ b/admin/themes/default/template/controllers/geolocation/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/groups/helpers/form/form.tpl b/admin/themes/default/template/controllers/groups/helpers/form/form.tpl index e5307be81..6bdb10dd2 100644 --- a/admin/themes/default/template/controllers/groups/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/groups/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/groups/helpers/form/index.php b/admin/themes/default/template/controllers/groups/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/groups/helpers/form/index.php +++ b/admin/themes/default/template/controllers/groups/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/groups/helpers/index.php b/admin/themes/default/template/controllers/groups/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/groups/helpers/index.php +++ b/admin/themes/default/template/controllers/groups/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/groups/helpers/tree/index.php b/admin/themes/default/template/controllers/groups/helpers/tree/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/groups/helpers/tree/index.php +++ b/admin/themes/default/template/controllers/groups/helpers/tree/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/groups/helpers/tree/tree_categories.tpl b/admin/themes/default/template/controllers/groups/helpers/tree/tree_categories.tpl index d033e4c95..b5e18d39f 100644 --- a/admin/themes/default/template/controllers/groups/helpers/tree/tree_categories.tpl +++ b/admin/themes/default/template/controllers/groups/helpers/tree/tree_categories.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/groups/helpers/tree/tree_node_folder_radio.tpl b/admin/themes/default/template/controllers/groups/helpers/tree/tree_node_folder_radio.tpl index 6934ff3c1..4e635fb1d 100644 --- a/admin/themes/default/template/controllers/groups/helpers/tree/tree_node_folder_radio.tpl +++ b/admin/themes/default/template/controllers/groups/helpers/tree/tree_node_folder_radio.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/groups/helpers/tree/tree_node_item_radio.tpl b/admin/themes/default/template/controllers/groups/helpers/tree/tree_node_item_radio.tpl index 99a99b003..932555b98 100644 --- a/admin/themes/default/template/controllers/groups/helpers/tree/tree_node_item_radio.tpl +++ b/admin/themes/default/template/controllers/groups/helpers/tree/tree_node_item_radio.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/groups/helpers/view/index.php b/admin/themes/default/template/controllers/groups/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/groups/helpers/view/index.php +++ b/admin/themes/default/template/controllers/groups/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/groups/helpers/view/view.tpl b/admin/themes/default/template/controllers/groups/helpers/view/view.tpl index 65fba0b98..e87563a93 100644 --- a/admin/themes/default/template/controllers/groups/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/groups/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/groups/index.php b/admin/themes/default/template/controllers/groups/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/groups/index.php +++ b/admin/themes/default/template/controllers/groups/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/images/content.tpl b/admin/themes/default/template/controllers/images/content.tpl index 59bf95489..98e9a7578 100644 --- a/admin/themes/default/template/controllers/images/content.tpl +++ b/admin/themes/default/template/controllers/images/content.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/images/index.php b/admin/themes/default/template/controllers/images/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/images/index.php +++ b/admin/themes/default/template/controllers/images/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/import/helpers/form/form.tpl b/admin/themes/default/template/controllers/import/helpers/form/form.tpl index 3e83cd7d4..5bf19d342 100644 --- a/admin/themes/default/template/controllers/import/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/import/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop ** * NOTICE OF LICENSE ** @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. ** * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -463,7 +463,7 @@ $('#csv_file_uploader').toggle(); }) //show selected csv if exists - var selected = '{$csv_selected}'; + var selected = '{$csv_selected|@addcslashes:'\''}'; if(selected){ $('#csv_file_selected').show(); $('#csv_file_uploader').hide(); diff --git a/admin/themes/default/template/controllers/import/helpers/form/index.php b/admin/themes/default/template/controllers/import/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/import/helpers/form/index.php +++ b/admin/themes/default/template/controllers/import/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/import/helpers/index.php b/admin/themes/default/template/controllers/import/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/import/helpers/index.php +++ b/admin/themes/default/template/controllers/import/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/import/helpers/view/index.php b/admin/themes/default/template/controllers/import/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/import/helpers/view/index.php +++ b/admin/themes/default/template/controllers/import/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/import/helpers/view/view.tpl b/admin/themes/default/template/controllers/import/helpers/view/view.tpl index 0b4ddb7da..12b25bd0b 100644 --- a/admin/themes/default/template/controllers/import/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/import/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/import/index.php b/admin/themes/default/template/controllers/import/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/import/index.php +++ b/admin/themes/default/template/controllers/import/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/index.php b/admin/themes/default/template/controllers/index.php index d36aa378a..b81ef09d1 100644 --- a/admin/themes/default/template/controllers/index.php +++ b/admin/themes/default/template/controllers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/information/helpers/index.php b/admin/themes/default/template/controllers/information/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/information/helpers/index.php +++ b/admin/themes/default/template/controllers/information/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/information/helpers/view/index.php b/admin/themes/default/template/controllers/information/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/information/helpers/view/index.php +++ b/admin/themes/default/template/controllers/information/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/information/helpers/view/view.tpl b/admin/themes/default/template/controllers/information/helpers/view/view.tpl index efa82fd82..22e36df30 100644 --- a/admin/themes/default/template/controllers/information/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/information/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -128,6 +128,9 @@

{l s='MySQL engine:'} {$database.engine|escape:'html':'UTF-8'}

+

+ {l s='MySQL driver:'} {$database.driver|escape:'html':'UTF-8'} +

{/if} diff --git a/admin/themes/default/template/controllers/information/index.php b/admin/themes/default/template/controllers/information/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/information/index.php +++ b/admin/themes/default/template/controllers/information/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/invoices/helpers/form/form.tpl b/admin/themes/default/template/controllers/invoices/helpers/form/form.tpl index 03e8ca532..8d65dce1c 100644 --- a/admin/themes/default/template/controllers/invoices/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/invoices/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/invoices/helpers/form/index.php b/admin/themes/default/template/controllers/invoices/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/invoices/helpers/form/index.php +++ b/admin/themes/default/template/controllers/invoices/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/invoices/helpers/index.php b/admin/themes/default/template/controllers/invoices/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/invoices/helpers/index.php +++ b/admin/themes/default/template/controllers/invoices/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/invoices/index.php b/admin/themes/default/template/controllers/invoices/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/invoices/index.php +++ b/admin/themes/default/template/controllers/invoices/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/languages/helpers/form/form.tpl b/admin/themes/default/template/controllers/languages/helpers/form/form.tpl index 8d0e9fe6e..c4598e6ce 100644 --- a/admin/themes/default/template/controllers/languages/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/languages/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/languages/helpers/form/index.php b/admin/themes/default/template/controllers/languages/helpers/form/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/languages/helpers/form/index.php +++ b/admin/themes/default/template/controllers/languages/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/languages/helpers/index.php b/admin/themes/default/template/controllers/languages/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/languages/helpers/index.php +++ b/admin/themes/default/template/controllers/languages/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/languages/index.php b/admin/themes/default/template/controllers/languages/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/languages/index.php +++ b/admin/themes/default/template/controllers/languages/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/localization/content.tpl b/admin/themes/default/template/controllers/localization/content.tpl index fefcee14d..25e93bdbd 100644 --- a/admin/themes/default/template/controllers/localization/content.tpl +++ b/admin/themes/default/template/controllers/localization/content.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/localization/index.php b/admin/themes/default/template/controllers/localization/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/localization/index.php +++ b/admin/themes/default/template/controllers/localization/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/login/content.tpl b/admin/themes/default/template/controllers/login/content.tpl index f2c24b564..8f5882e45 100644 --- a/admin/themes/default/template/controllers/login/content.tpl +++ b/admin/themes/default/template/controllers/login/content.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/login/header.tpl b/admin/themes/default/template/controllers/login/header.tpl index d9420d0fc..aff412764 100644 --- a/admin/themes/default/template/controllers/login/header.tpl +++ b/admin/themes/default/template/controllers/login/header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -41,13 +41,23 @@ {$shop_name} {if $meta_title != ''}{if isset($navigationPipe)}{$navigationPipe|escape:'html':'UTF-8'}{else}>{/if} {$meta_title}{/if} (PrestaShop™) - {foreach from=$css_files key=css_uri item=media} - - {/foreach} + {if isset($css_files)} + {foreach from=$css_files key=css_uri item=media} + {if $css_uri == 'lteIE9'} + + {else} + + {/if} + {/foreach} + {/if} {foreach from=$js_files item=js_uri} {/foreach} - + {if (isset($js_def) && count($js_def) || isset($js_files) && count($js_files))} {include file=$smarty.const._PS_ALL_THEMES_DIR_|cat:"javascript.tpl"} diff --git a/admin/themes/default/template/controllers/login/index.php b/admin/themes/default/template/controllers/login/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/login/index.php +++ b/admin/themes/default/template/controllers/login/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/login/layout.tpl b/admin/themes/default/template/controllers/login/layout.tpl index ba307dd15..a7cb21721 100644 --- a/admin/themes/default/template/controllers/login/layout.tpl +++ b/admin/themes/default/template/controllers/login/layout.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/logs/employee_field.tpl b/admin/themes/default/template/controllers/logs/employee_field.tpl index 81b069838..56caa2eef 100644 --- a/admin/themes/default/template/controllers/logs/employee_field.tpl +++ b/admin/themes/default/template/controllers/logs/employee_field.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/logs/helpers/index.php b/admin/themes/default/template/controllers/logs/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/logs/helpers/index.php +++ b/admin/themes/default/template/controllers/logs/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/logs/helpers/list/index.php b/admin/themes/default/template/controllers/logs/helpers/list/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/logs/helpers/list/index.php +++ b/admin/themes/default/template/controllers/logs/helpers/list/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/logs/helpers/list/list_header.tpl b/admin/themes/default/template/controllers/logs/helpers/list/list_header.tpl index 84f87d134..4e42fad27 100644 --- a/admin/themes/default/template/controllers/logs/helpers/list/list_header.tpl +++ b/admin/themes/default/template/controllers/logs/helpers/list/list_header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/logs/index.php b/admin/themes/default/template/controllers/logs/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/logs/index.php +++ b/admin/themes/default/template/controllers/logs/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/maintenance/helpers/index.php b/admin/themes/default/template/controllers/maintenance/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/maintenance/helpers/index.php +++ b/admin/themes/default/template/controllers/maintenance/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/maintenance/helpers/options/index.php b/admin/themes/default/template/controllers/maintenance/helpers/options/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/maintenance/helpers/options/index.php +++ b/admin/themes/default/template/controllers/maintenance/helpers/options/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/maintenance/helpers/options/options.tpl b/admin/themes/default/template/controllers/maintenance/helpers/options/options.tpl index 00e4516f8..505cdf6c8 100644 --- a/admin/themes/default/template/controllers/maintenance/helpers/options/options.tpl +++ b/admin/themes/default/template/controllers/maintenance/helpers/options/options.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/maintenance/index.php b/admin/themes/default/template/controllers/maintenance/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/maintenance/index.php +++ b/admin/themes/default/template/controllers/maintenance/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/manufacturers/helpers/index.php b/admin/themes/default/template/controllers/manufacturers/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/manufacturers/helpers/index.php +++ b/admin/themes/default/template/controllers/manufacturers/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/manufacturers/helpers/view/index.php b/admin/themes/default/template/controllers/manufacturers/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/manufacturers/helpers/view/index.php +++ b/admin/themes/default/template/controllers/manufacturers/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/manufacturers/helpers/view/view.tpl b/admin/themes/default/template/controllers/manufacturers/helpers/view/view.tpl index 494427265..99d7a5e73 100644 --- a/admin/themes/default/template/controllers/manufacturers/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/manufacturers/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/manufacturers/index.php b/admin/themes/default/template/controllers/manufacturers/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/manufacturers/index.php +++ b/admin/themes/default/template/controllers/manufacturers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/marketing/helpers/index.php b/admin/themes/default/template/controllers/marketing/helpers/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/marketing/helpers/index.php +++ b/admin/themes/default/template/controllers/marketing/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/marketing/helpers/view/index.php b/admin/themes/default/template/controllers/marketing/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/marketing/helpers/view/index.php +++ b/admin/themes/default/template/controllers/marketing/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/marketing/helpers/view/view.tpl b/admin/themes/default/template/controllers/marketing/helpers/view/view.tpl index b784f1e11..ac50a75c3 100644 --- a/admin/themes/default/template/controllers/marketing/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/marketing/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/marketing/index.php b/admin/themes/default/template/controllers/marketing/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/marketing/index.php +++ b/admin/themes/default/template/controllers/marketing/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/meta/helpers/index.php b/admin/themes/default/template/controllers/meta/helpers/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/meta/helpers/index.php +++ b/admin/themes/default/template/controllers/meta/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/meta/index.php b/admin/themes/default/template/controllers/meta/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/meta/index.php +++ b/admin/themes/default/template/controllers/meta/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/modules/ad_bar.tpl b/admin/themes/default/template/controllers/modules/ad_bar.tpl index 47d98cb86..b5803c55e 100644 --- a/admin/themes/default/template/controllers/modules/ad_bar.tpl +++ b/admin/themes/default/template/controllers/modules/ad_bar.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/configuration_bar.tpl b/admin/themes/default/template/controllers/modules/configuration_bar.tpl index 4d42382ac..aca7a3d85 100644 --- a/admin/themes/default/template/controllers/modules/configuration_bar.tpl +++ b/admin/themes/default/template/controllers/modules/configuration_bar.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/configure.tpl b/admin/themes/default/template/controllers/modules/configure.tpl index a84fe1540..3fcf6569c 100644 --- a/admin/themes/default/template/controllers/modules/configure.tpl +++ b/admin/themes/default/template/controllers/modules/configure.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/content.tpl b/admin/themes/default/template/controllers/modules/content.tpl index d2d0ecfa2..ec7610a96 100644 --- a/admin/themes/default/template/controllers/modules/content.tpl +++ b/admin/themes/default/template/controllers/modules/content.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/favorites.tpl b/admin/themes/default/template/controllers/modules/favorites.tpl index 7a6883f85..ac9d7996e 100644 --- a/admin/themes/default/template/controllers/modules/favorites.tpl +++ b/admin/themes/default/template/controllers/modules/favorites.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/filters.tpl b/admin/themes/default/template/controllers/modules/filters.tpl index 75e16b73e..339dac9b9 100644 --- a/admin/themes/default/template/controllers/modules/filters.tpl +++ b/admin/themes/default/template/controllers/modules/filters.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/index.php b/admin/themes/default/template/controllers/modules/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/modules/index.php +++ b/admin/themes/default/template/controllers/modules/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/modules/js.tpl b/admin/themes/default/template/controllers/modules/js.tpl index 9534872b6..acaba8393 100644 --- a/admin/themes/default/template/controllers/modules/js.tpl +++ b/admin/themes/default/template/controllers/modules/js.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/admin/themes/default/template/controllers/modules/list.tpl b/admin/themes/default/template/controllers/modules/list.tpl index c3ae6b833..885a4e026 100644 --- a/admin/themes/default/template/controllers/modules/list.tpl +++ b/admin/themes/default/template/controllers/modules/list.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/login_addons.tpl b/admin/themes/default/template/controllers/modules/login_addons.tpl index d1f55c3bb..2f6dd2554 100644 --- a/admin/themes/default/template/controllers/modules/login_addons.tpl +++ b/admin/themes/default/template/controllers/modules/login_addons.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/modal_not_trusted.tpl b/admin/themes/default/template/controllers/modules/modal_not_trusted.tpl index 9824bbe4f..f5ab76ae8 100644 --- a/admin/themes/default/template/controllers/modules/modal_not_trusted.tpl +++ b/admin/themes/default/template/controllers/modules/modal_not_trusted.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -34,7 +34,7 @@
- +
{l s='ID'} {l s='Date'} {l s='Pages viewed'} {l s='Total time'}
{$connection['id_connections']} {dateFormat date=$connection['date_add'] full=0} {$connection['pages']} {$connection['time']}
diff --git a/admin/themes/default/template/controllers/modules/modal_not_trusted_blocked.tpl b/admin/themes/default/template/controllers/modules/modal_not_trusted_blocked.tpl index 8e7899ff3..4a5e6ebb0 100644 --- a/admin/themes/default/template/controllers/modules/modal_not_trusted_blocked.tpl +++ b/admin/themes/default/template/controllers/modules/modal_not_trusted_blocked.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/modal_not_trusted_country.tpl b/admin/themes/default/template/controllers/modules/modal_not_trusted_country.tpl index 0fb447c5c..12e28438f 100644 --- a/admin/themes/default/template/controllers/modules/modal_not_trusted_country.tpl +++ b/admin/themes/default/template/controllers/modules/modal_not_trusted_country.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/modal_translation.tpl b/admin/themes/default/template/controllers/modules/modal_translation.tpl index 24fdb1748..00896d6b2 100644 --- a/admin/themes/default/template/controllers/modules/modal_translation.tpl +++ b/admin/themes/default/template/controllers/modules/modal_translation.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/page.tpl b/admin/themes/default/template/controllers/modules/page.tpl index 466c0b400..1701ff48d 100644 --- a/admin/themes/default/template/controllers/modules/page.tpl +++ b/admin/themes/default/template/controllers/modules/page.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/page_header_toolbar.tpl b/admin/themes/default/template/controllers/modules/page_header_toolbar.tpl index 14070d954..ee9d38c0d 100644 --- a/admin/themes/default/template/controllers/modules/page_header_toolbar.tpl +++ b/admin/themes/default/template/controllers/modules/page_header_toolbar.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/quickview.tpl b/admin/themes/default/template/controllers/modules/quickview.tpl index 15f59cbc3..f4484eaf8 100644 --- a/admin/themes/default/template/controllers/modules/quickview.tpl +++ b/admin/themes/default/template/controllers/modules/quickview.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules/tab_module_line.tpl b/admin/themes/default/template/controllers/modules/tab_module_line.tpl index bbcbf7027..ab968f7b6 100644 --- a/admin/themes/default/template/controllers/modules/tab_module_line.tpl +++ b/admin/themes/default/template/controllers/modules/tab_module_line.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/admin/themes/default/template/controllers/modules/tab_modules_list.tpl b/admin/themes/default/template/controllers/modules/tab_modules_list.tpl index 7215436f9..a81b0fdf8 100644 --- a/admin/themes/default/template/controllers/modules/tab_modules_list.tpl +++ b/admin/themes/default/template/controllers/modules/tab_modules_list.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/admin/themes/default/template/controllers/modules/warning_module.tpl b/admin/themes/default/template/controllers/modules/warning_module.tpl index 201debdb3..1f63f5602 100644 --- a/admin/themes/default/template/controllers/modules/warning_module.tpl +++ b/admin/themes/default/template/controllers/modules/warning_module.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/admin/themes/default/template/controllers/modules_positions/form.tpl b/admin/themes/default/template/controllers/modules_positions/form.tpl index 942b6ec5c..163785cb2 100644 --- a/admin/themes/default/template/controllers/modules_positions/form.tpl +++ b/admin/themes/default/template/controllers/modules_positions/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/modules_positions/index.php b/admin/themes/default/template/controllers/modules_positions/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/modules_positions/index.php +++ b/admin/themes/default/template/controllers/modules_positions/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/modules_positions/list_modules.tpl b/admin/themes/default/template/controllers/modules_positions/list_modules.tpl index b514a3eaa..e9cf90fa4 100644 --- a/admin/themes/default/template/controllers/modules_positions/list_modules.tpl +++ b/admin/themes/default/template/controllers/modules_positions/list_modules.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -119,7 +119,7 @@ {/if}
- {$module['instance']->name|stripslashes} + {$module['instance']->name|stripslashes}
diff --git a/admin/themes/default/template/controllers/not_found/content.tpl b/admin/themes/default/template/controllers/not_found/content.tpl index 927e57ba0..b64fe9e45 100644 --- a/admin/themes/default/template/controllers/not_found/content.tpl +++ b/admin/themes/default/template/controllers/not_found/content.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/not_found/index.php b/admin/themes/default/template/controllers/not_found/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/not_found/index.php +++ b/admin/themes/default/template/controllers/not_found/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/order_preferences/helpers/index.php b/admin/themes/default/template/controllers/order_preferences/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/order_preferences/helpers/index.php +++ b/admin/themes/default/template/controllers/order_preferences/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/order_preferences/helpers/options/index.php b/admin/themes/default/template/controllers/order_preferences/helpers/options/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/order_preferences/helpers/options/index.php +++ b/admin/themes/default/template/controllers/order_preferences/helpers/options/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/order_preferences/helpers/options/options.tpl b/admin/themes/default/template/controllers/order_preferences/helpers/options/options.tpl index 65630d970..23b7ffc5e 100644 --- a/admin/themes/default/template/controllers/order_preferences/helpers/options/options.tpl +++ b/admin/themes/default/template/controllers/order_preferences/helpers/options/options.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/order_preferences/index.php b/admin/themes/default/template/controllers/order_preferences/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/order_preferences/index.php +++ b/admin/themes/default/template/controllers/order_preferences/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/orders/_customized_data.tpl b/admin/themes/default/template/controllers/orders/_customized_data.tpl index 23d035cdc..43af9be07 100644 --- a/admin/themes/default/template/controllers/orders/_customized_data.tpl +++ b/admin/themes/default/template/controllers/orders/_customized_data.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -73,9 +73,9 @@ {if $stock_management}
{/if} {*{if ($order->hasBeenPaid())}{/if} {if $display_warehouse}{/if} diff --git a/admin/themes/default/template/controllers/orders/_print_pdf_icon.tpl b/admin/themes/default/template/controllers/orders/_print_pdf_icon.tpl index 1aa43c7bd..12c515d78 100644 --- a/admin/themes/default/template/controllers/orders/_print_pdf_icon.tpl +++ b/admin/themes/default/template/controllers/orders/_print_pdf_icon.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/orders/_product_line.tpl b/admin/themes/default/template/controllers/orders/_product_line.tpl index 9c9156944..b8aad2fa4 100644 --- a/admin/themes/default/template/controllers/orders/_product_line.tpl +++ b/admin/themes/default/template/controllers/orders/_product_line.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -31,7 +31,17 @@ {/if} - - \ No newline at end of file + \ No newline at end of file diff --git a/admin/themes/default/template/controllers/orders/_room_extra_demands.tpl b/admin/themes/default/template/controllers/orders/_room_extra_demands.tpl new file mode 100644 index 000000000..ac5d17d93 --- /dev/null +++ b/admin/themes/default/template/controllers/orders/_room_extra_demands.tpl @@ -0,0 +1,19 @@ +{if isset($extraDemands) && $extraDemands} + {foreach $extraDemands as $roomDemand} +
+
+ {l s='Room\'s Extra Demands'} +
+
+
+ {foreach $roomDemand['extra_demands'] as $demand} +

+ {$demand['name']} + {displayPrice price=$demand['price'] currency=$orderCurrency} +

+ {/foreach} +
+
+
+ {/foreach} +{/if} \ No newline at end of file diff --git a/admin/themes/default/template/controllers/orders/_select_payment.tpl b/admin/themes/default/template/controllers/orders/_select_payment.tpl index 306bda9ca..6c60b080c 100644 --- a/admin/themes/default/template/controllers/orders/_select_payment.tpl +++ b/admin/themes/default/template/controllers/orders/_select_payment.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/orders/_shipping.tpl b/admin/themes/default/template/controllers/orders/_shipping.tpl index ac611ee26..b8386f5f9 100644 --- a/admin/themes/default/template/controllers/orders/_shipping.tpl +++ b/admin/themes/default/template/controllers/orders/_shipping.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/orders/current_cart_details_data.tpl b/admin/themes/default/template/controllers/orders/current_cart_details_data.tpl index 848d0c505..5bb122b6e 100644 --- a/admin/themes/default/template/controllers/orders/current_cart_details_data.tpl +++ b/admin/themes/default/template/controllers/orders/current_cart_details_data.tpl @@ -12,8 +12,8 @@ - - + + @@ -30,7 +30,7 @@   - + {displayPrice price=$data.feature_price} @@ -55,6 +55,6 @@ .room_type_old_price { text-decoration: line-through; color:#979797; - font-size:12px; + font-size:12px; } \ No newline at end of file diff --git a/admin/themes/default/template/controllers/orders/form.tpl b/admin/themes/default/template/controllers/orders/form.tpl index 6cecb1339..cfc011c42 100644 --- a/admin/themes/default/template/controllers/orders/form.tpl +++ b/admin/themes/default/template/controllers/orders/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -573,7 +573,7 @@ id_cart = 0; {if isset($cart->id) && $cart->id} id_cart = "{$cart->id}"; - {/if} + {/if} $('#new_address').attr('href', address_link.replace(/id_customer=[0-9]+/, 'id_customer='+id_customer)); $.ajax({ type:"POST", @@ -640,15 +640,29 @@ $('#carrier_form').show(); $('#delivery_option').html(html); $('#carriers_err').hide(); - $("button[name=\"submitAddOrder\"]").removeAttr("disabled"); } else { $('#carrier_form').hide(); $('#carriers_err').show().html('{l s='No carrier can be applied to this order'}'); + } + } - // commented by webkul to enable button in case of ordering virtual product - //$("button[name=\"submitAddOrder\"]").attr("disabled", "disabled"); + // commented by webkul to enable button in case of ordering virtual product + function checkVirtualProduct(products, delivery_option_list) { + if (delivery_option_list.length == 0 && products.length > 0) { + var find = 1; + $.each(products, function () { + if (find == 1) { + this.is_virtual == 1 ? find = 1 : find = 0; + } + }); + if (find == 1) { + $("button[name=\"submitAddOrder\"]").removeAttr("disabled"); + } + else { + $("button[name=\"submitAddOrder\"]").attr("disabled", "disabled"); + } } } @@ -683,7 +697,7 @@ else customization_errors = false; $('#products_found').show(); - products_found += '
'; attributes_html += '
'; $.each(res.products, function() { products_found += ''; @@ -873,6 +887,7 @@ */ updateDeliveryOptionList(jsonSummary.delivery_option_list); + checkVirtualProduct(jsonSummary.summary.products,jsonSummary.delivery_option_list); if (jsonSummary.cart.gift == 1) $('#order_gift').attr('checked', true); @@ -967,7 +982,6 @@ //refresh form customization searchProducts(); - addProductProcess(); } function addProductProcess() @@ -1096,6 +1110,7 @@ address_invoice_detail = this.formated_address; invoice_address_edit_link = "{$link->getAdminLink('AdminAddresses')}&id_address="+this.id_address+"&updateaddress&realedit=1&liteDisplaying=1&submitFormAjax=1#"; } + if(this.id_address == id_address_delivery) { address_delivery_detail = this.formated_address; diff --git a/admin/themes/default/template/controllers/orders/form_customization_feedback.tpl b/admin/themes/default/template/controllers/orders/form_customization_feedback.tpl index 716e9c7b3..78f326821 100644 --- a/admin/themes/default/template/controllers/orders/form_customization_feedback.tpl +++ b/admin/themes/default/template/controllers/orders/form_customization_feedback.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/orders/helpers/index.php b/admin/themes/default/template/controllers/orders/helpers/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/orders/helpers/index.php +++ b/admin/themes/default/template/controllers/orders/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/orders/helpers/list/index.php b/admin/themes/default/template/controllers/orders/helpers/list/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/orders/helpers/list/index.php +++ b/admin/themes/default/template/controllers/orders/helpers/list/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/orders/helpers/list/list_header.tpl b/admin/themes/default/template/controllers/orders/helpers/list/list_header.tpl index 4c24412e0..0129f4cbd 100644 --- a/admin/themes/default/template/controllers/orders/helpers/list/list_header.tpl +++ b/admin/themes/default/template/controllers/orders/helpers/list/list_header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/orders/helpers/view/index.php b/admin/themes/default/template/controllers/orders/helpers/view/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/orders/helpers/view/index.php +++ b/admin/themes/default/template/controllers/orders/helpers/view/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/orders/helpers/view/view.tpl b/admin/themes/default/template/controllers/orders/helpers/view/view.tpl index 2a3142aa5..f00dfe7cb 100644 --- a/admin/themes/default/template/controllers/orders/helpers/view/view.tpl +++ b/admin/themes/default/template/controllers/orders/helpers/view/view.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -272,7 +272,7 @@
- {l s='Order Status'} + {l s='Rooms Status'}
@@ -304,7 +304,7 @@
@@ -400,17 +400,17 @@
{$product['current_stock']} {if ($order->getTaxCalculationMethod() == $smarty.const.PS_TAX_EXC)} - {displayPrice price=Tools::ps_round($product['product_price'] * $product['customizationQuantityTotal'], 2) currency=$currency->id|intval} + {displayPrice price=($product['unit_price_tax_excl'] * $product['customizationQuantityTotal']) currency=$currency->id|intval} {else} - {displayPrice price=Tools::ps_round($product['product_price_wt'] * $product['customizationQuantityTotal'], 2) currency=$currency->id|intval} + {displayPrice price=($product['unit_price_tax_incl'] * $product['customizationQuantityTotal']) currency=$currency->id|intval} {/if} - {if ($order->getTaxCalculationMethod() == $smarty.const.PS_TAX_EXC)} - {displayPrice price=Tools::ps_round($product['product_price'] * $customization['quantity'], 2) currency=$currency->id|intval} + {displayPrice price=($product['unit_price_tax_excl'] * $customization['quantity']) currency=$currency->id|intval} {else} - {displayPrice price=Tools::ps_round($product['product_price_wt'] * $customization['quantity'], 2) currency=$currency->id|intval} + {displayPrice price=($product['unit_price_tax_incl'] * $customization['quantity']) currency=$currency->id|intval} {/if} diff --git a/admin/themes/default/template/controllers/orders/_new_product.tpl b/admin/themes/default/template/controllers/orders/_new_product.tpl index 4d24f1995..26c5708f6 100644 --- a/admin/themes/default/template/controllers/orders/_new_product.tpl +++ b/admin/themes/default/template/controllers/orders/_new_product.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -86,7 +86,7 @@ - {$data.room_type} +

{$data.room_type}

+ {if isset($data['extra_demands']) && $data['extra_demands']} +

+ + {l s='Additional Features'} + +

+

+ {convertPriceWithCurrency price=$data['extra_demands_price'] currency=$currency->id} +

+ {/if}
@@ -110,7 +120,7 @@

{if $data['stage_name'] == 'Refunded' || $data['stage_name'] == 'Rejected'} {l s="Done!"} - {else if $data['stage_name'] == 'Waitting' || $data['stage_name'] == 'Accepted'} + {else if $data['stage_name'] == 'Waiting' || $data['stage_name'] == 'Accepted'} {l s="Pending..."} {else} -- @@ -173,11 +183,4 @@

{l s='Room Image'} {l s='Room Type'} {l s='Duration'}{l s='Unit Price'}{l s='Price'}{l s='Unit Price (Tax incl.)'}{l s='Price (Tax excl.)'} {l s='Action'}
- {foreach from=$hotel_order_status item=state} {/foreach} @@ -313,8 +313,8 @@ -
- - - - + + + + {foreach from=$order->getReturn() item=line} - + - {if ($order_adv_dtl['total_order_amount'] - $order_adv_dtl['total_paid_amount'])|round:2 > 0} + {if ($order_adv_dtl['total_order_amount'] - $order_adv_dtl['total_paid_amount']) > 0} + + + + + - {/if} *} + {/if} + *} {if isset($order_adv_dtl)} @@ -1580,6 +1536,15 @@ + + +{* MOdal for extra demands *} + {strip} {addJsDefL name=no_rm_avail_txt}{l s='No rooms available.' js=1 mod='hotelreservationsystem'}{/addJsDefL} {addJsDefL name=slct_rm_err}{l s='Please select a room first.' js=1 mod='hotelreservationsystem'}{/addJsDefL} @@ -1591,14 +1556,61 @@ .model-label { font-weight:bold!important; } + .room_type_old_price { + text-decoration: line-through; + color:#979797; + font-size:12px; + } + #rooms_type_extra_demands .demand_header { + font-size:16px; + padding-bottom: 15px; + border-bottom: 1px solid rgb(0, 0, 0, 0.1); + margin-bottom: 15px;} + #rooms_type_extra_demands .demand_detail p { + font-size:14px; + margin-bottom: 15px;} + #rooms_type_extra_demands .rooms_extra_demands_head { + margin-bottom: 18px;} + #rooms_type_extra_demands #room_type_demands_desc { + padding: 15px;} \ No newline at end of file diff --git a/admin/themes/default/template/controllers/products/combination/helpers/index.php b/admin/themes/default/template/controllers/products/combination/helpers/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/products/combination/helpers/index.php +++ b/admin/themes/default/template/controllers/products/combination/helpers/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/products/combination/helpers/list/index.php b/admin/themes/default/template/controllers/products/combination/helpers/list/index.php index 7a01b74dd..355ebe955 100644 --- a/admin/themes/default/template/controllers/products/combination/helpers/list/index.php +++ b/admin/themes/default/template/controllers/products/combination/helpers/list/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/products/combination/helpers/list/list_footer.tpl b/admin/themes/default/template/controllers/products/combination/helpers/list/list_footer.tpl index 3d1ebfe83..75a7a370b 100644 --- a/admin/themes/default/template/controllers/products/combination/helpers/list/list_footer.tpl +++ b/admin/themes/default/template/controllers/products/combination/helpers/list/list_footer.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/products/combination/helpers/list/list_header.tpl b/admin/themes/default/template/controllers/products/combination/helpers/list/list_header.tpl index 52830e941..0e0047470 100644 --- a/admin/themes/default/template/controllers/products/combination/helpers/list/list_header.tpl +++ b/admin/themes/default/template/controllers/products/combination/helpers/list/list_header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/products/combination/index.php b/admin/themes/default/template/controllers/products/combination/index.php index 270c3fd7f..c4c862b0d 100644 --- a/admin/themes/default/template/controllers/products/combination/index.php +++ b/admin/themes/default/template/controllers/products/combination/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/products/combinations.tpl b/admin/themes/default/template/controllers/products/combinations.tpl index ebc06890e..8d7895bde 100644 --- a/admin/themes/default/template/controllers/products/combinations.tpl +++ b/admin/themes/default/template/controllers/products/combinations.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/products/configuration.tpl b/admin/themes/default/template/controllers/products/configuration.tpl index c9a19b6a9..c5e3cae62 100644 --- a/admin/themes/default/template/controllers/products/configuration.tpl +++ b/admin/themes/default/template/controllers/products/configuration.tpl @@ -2,7 +2,7 @@

{l s='Configuration' mod='hotelreservationsystem'}

- + {if isset($htl_room_type)} {/if} @@ -29,7 +29,7 @@
{/if} - +
- +
@@ -53,8 +53,10 @@
DateTypeCarrierTracking number{l s='Date'}{l s='Type'}{l s='Carrier'}{l s='Tracking number'}
{$line.date_add}{$line.type}{l s=$line.type} {$line.state_name} {if isset($line.url) && isset($line.tracking_number)}{$line.tracking_number}{elseif isset($line.tracking_number)}{$line.tracking_number}{/if} @@ -660,7 +660,7 @@ {if ($customer->isGuest())} {l s='This order has been placed by a guest.'} {if (!Customer::customerExists($customer->email))} -
+

{l s='This feature will generate a random password and send an email to the customer.'}

@@ -672,8 +672,6 @@ {/if} {else}
-
{l s='Name'}
-
{$customer->firstname} {$customer->lastname}

{l s='Email'}
{$customer->email}

{l s='Account registered'}
@@ -880,11 +878,11 @@ {$message['message']|escape:'html':'UTF-8'|nl2br}

- {*if ($message['is_new_for_me'])} + {*{if ($message['is_new_for_me'])} - {/if*} + {/if}*} {/foreach} @@ -964,9 +962,10 @@
- {l s='Rooms In This Order'} {$order_detail_data|@count} + {l s='Rooms In This Order'} {$order_detail_data|@count} + {* by webkul products changes as rooms *}
- + {* by webkul this code is added for showing rooms information on the order detail page *}
@@ -977,8 +976,8 @@ - - + + @@ -1004,15 +1003,15 @@
{l s='Room Type'} {l s='Hotel Name'} {l s='Duration'}{l s='Unit Price'}{l s='Total Price'}{l s='Unit Price (Tax incl.)'}{l s='Total Price (Tax incl.)'} {l s='Refund Stage'} {l s='Refund Status'} {l s='Reallocate Room'}
-
{* + + *} - {* {capture "TaxMethod"} + {capture "TaxMethod"} {if ($order->getTaxCalculationMethod() == $smarty.const.PS_TAX_EXC)} {l s='tax excluded.'} {else} @@ -1024,60 +1023,6 @@ {else} {/if} -
- - - - - - - - {if $display_warehouse}{/if} - {if ($order->hasBeenPaid())}{/if} - {if ($order->hasBeenDelivered() || $order->hasProductReturned())} - - {/if} - {if $stock_management}{/if} - - - - - - {if !$order->hasBeenDelivered()} - - {/if} - - - - {foreach from=$products item=product key=k} - - {include file='controllers/orders/_customized_data.tpl'} - - {include file='controllers/orders/_product_line.tpl'} - {/foreach} - {if $can_edit} - {include file='controllers/orders/_new_product.tpl'} - {/if} - -
{l s='Product'} - {l s='Unit Price'} - {$smarty.capture.TaxMethod} - {l s='Qty'}{l s='Warehouse'}{l s='Refunded'}{l s='Returned'}{l s='Available quantity'} - {l s='Total'} - {$smarty.capture.TaxMethod} -
-
*} {if $can_edit}
{if !$order->hasBeenDelivered()} @@ -1095,16 +1040,19 @@
 

- {*
+ {* +
{l s='For this customer group, prices are displayed as: [1]%s[/1]' sprintf=[$smarty.capture.TaxMethod] tags=['']} {if !Configuration::get('PS_ORDER_RETURN')}
{l s='Merchandise returns are disabled'} {/if}
-
*} +
+ + *} - + {* For Due amount submit panel (by webkul) *} {if isset($order_adv_dtl)}
@@ -1129,7 +1077,7 @@ {displayPrice price=($order_adv_dtl['total_order_amount'] - $order_adv_dtl['total_paid_amount']) currency=$currency->id}
{l s='submitted Amount'} @@ -1224,6 +1172,13 @@
{l s='Total Additional Facilities Cost'} + {displayPrice price=$totalDemandsPrice currency=$currency->id} +
{l s='Total Tax'} @@ -1268,7 +1223,8 @@ {displayPrice price=($order->total_paid_tax_incl-$order->total_paid_tax_excl) currency=$currency->id}
- - @@ -215,7 +217,7 @@ // Disable dates data filling when model open $('#deactiveDatesModal').on('show.bs.modal', function (e) { $('.disabledDatesTr').remove(); - + var modelTriggerElement = $(e.relatedTarget); var html = ''; @@ -298,7 +300,7 @@ return true; } }); - + // Add new room detail $('#add-more-rooms-button').on('click',function() { var lengthRooms = $('.room_data_values').length; @@ -321,7 +323,7 @@ html += ''; - html += ''; + html += ''; html += ''; html += ''; html += ' - - {section loop=$list_ids_product|count step=1 start=0 name=td} - - {/section} + + {foreach from=$list_ids_product item=id_product} + + {/foreach} {foreach from=$grades item=grade key=grade_id} - - {cycle values='comparison_feature_odd,comparison_feature_even' assign='classname'} - + + {cycle values='comparison_feature_odd,comparison_feature_even' assign='classname'} + + {foreach from=$list_ids_product item=id_product} + {assign var='tab_grade' value=$product_grades[$grade_id]} + + {/foreach} + +{/foreach} +{cycle values='comparison_feature_odd,comparison_feature_even' assign='classname'} + + {foreach from=$list_ids_product item=id_product} - {assign var='tab_grade' value=$product_grades[$grade_id]} - + {/foreach} - -{/foreach} - - {cycle values='comparison_feature_odd,comparison_feature_even' assign='classname'} - - -{foreach from=$list_ids_product item=id_product} - -{/foreach} - - {foreach from=$list_ids_product item=id_product} - -{/foreach} - \ No newline at end of file + + {foreach from=$list_ids_product item=id_product} + + {/foreach} + diff --git a/modules/productcomments/tab.tpl b/modules/productcomments/tab.tpl index e852b9035..26839bb90 100644 --- a/modules/productcomments/tab.tpl +++ b/modules/productcomments/tab.tpl @@ -23,4 +23,6 @@ * International Registered Trademark & Property of PrestaShop SA *} -
  • {l s='Comments' mod='productcomments'}
  • \ No newline at end of file + +
  • {l s='Reviews' mod='productcomments'}
  • diff --git a/modules/productcomments/translations/ar.php b/modules/productcomments/translations/ar.php index 171e15f53..bdd2db0c7 100644 --- a/modules/productcomments/translations/ar.php +++ b/modules/productcomments/translations/ar.php @@ -3,34 +3,113 @@ global $_MODULE; $_MODULE = array(); +$_MODULE['<{productcomments}prestashop>default_da3e413ae5dde1a6b986203857fb1a59'] = 'رقم تعريف المنتج غير صحيح'; +$_MODULE['<{productcomments}prestashop>default_7b0bf23ae4079e07a3a4cb4d07e2caef'] = 'العنوان غير صحيح'; +$_MODULE['<{productcomments}prestashop>default_ddbd56de5feb78ef1aaf60401f8c472b'] = 'التعليق غير صحيح'; +$_MODULE['<{productcomments}prestashop>default_1b1030b6294e9096a7d7c40d83d61872'] = 'اسم العميل غير صحيح'; +$_MODULE['<{productcomments}prestashop>default_26510b8eb6e6053f5e91d51171967ca9'] = 'يجب عليك ان تكون متصلاً لكي ترسل تعليق'; +$_MODULE['<{productcomments}prestashop>default_a201fbadca94d310a1b62407cdc775d5'] = 'يجب عليك اعطاء تقييم'; $_MODULE['<{productcomments}prestashop>default_dfbe69c6d9568ecb0e65e7b32ed92a3a'] = 'المنتج غير موجود'; +$_MODULE['<{productcomments}prestashop>default_6d10b2f471e8894d59ae18e01537ece5'] = 'الرجاء الإنتظار قبل كتابة تعليق آخر'; +$_MODULE['<{productcomments}prestashop>default_ba8d7ae5dcadfba739f28a777378f208'] = 'ثواني قبل كتابة تعليق جديد'; +$_MODULE['<{productcomments}prestashop>productcommentcriterion_a09ed6c60eb3213939cecb4c580813cd'] = 'صالحة لكل الكتالوج'; +$_MODULE['<{productcomments}prestashop>productcommentcriterion_467366059d7d7c743a4d0971363a8d66'] = 'مقيدة الى بعض التصنيفات'; +$_MODULE['<{productcomments}prestashop>productcommentcriterion_772911becd336c843ab09a1d4b4f66c0'] = 'مقيدة الى بعض المنتجات'; +$_MODULE['<{productcomments}prestashop>productcomments-ajax_fd4b5401d4d3c7d32d158bfc1e552f3b'] = 'الرجاء تعبئة إسمك'; +$_MODULE['<{productcomments}prestashop>productcomments-ajax_f88dc17737f7fdd4464b2eb922a8f133'] = 'حدث خطأ اثناء حفظ تعليقك.'; +$_MODULE['<{productcomments}prestashop>productcomments-ajax_7fa4a3510dafd0eac6435c19861b2bb7'] = 'تم ارسال التعليق.'; +$_MODULE['<{productcomments}prestashop>productcomments-ajax_f8694a9aae2eb045920f613cfa7f1235'] = 'بإنتظار التدقيق الإداري.'; +$_MODULE['<{productcomments}prestashop>productcomments-ajax_6bf852d9850445291f5e9d4740ac7b50'] = 'نص التعليق مطلوب.'; +$_MODULE['<{productcomments}prestashop>productcomments-ajax_8aafe254c3e8dceb6425591b322044f2'] = 'يجب عليك الإنتظار %d ثواني قبل كتابة تعليق جديد.'; +$_MODULE['<{productcomments}prestashop>productcomments_b91c4e8b229a399a3bc911d352524a9b'] = 'تعليقات المنتج'; +$_MODULE['<{productcomments}prestashop>productcomments_a8cd99c74a32936a90127454a02d7500'] = 'يسمح للمستخدمين بالتعليق وتقييم المنتجات على معايير محددة.'; $_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee9c306bd'] = 'تم تحديث الإعدادات بنجاح'; +$_MODULE['<{productcomments}prestashop>productcomments_8a4c4c1ccc2b1c3b89e828e24ef591a8'] = 'المعيار غير قابل للحفظ'; +$_MODULE['<{productcomments}prestashop>productcomments_1bb54e382f7dbdb260f0aa6b42bb624b'] = 'تم حذف المعيار'; $_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'الإعدادات'; +$_MODULE['<{productcomments}prestashop>productcomments_cf2fcb22e6342dea54b0cc34bb521752'] = 'كل التعليقات يجب ان تُدقق بواسطة موظف'; $_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'مفعل'; $_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'غير مفعل'; +$_MODULE['<{productcomments}prestashop>productcomments_4e26bb46aa3f40913ee95cfb1d6c82f9'] = 'اسمح بتعليقات الضيوف'; +$_MODULE['<{productcomments}prestashop>productcomments_9dc1140983196141368ceda7565128a8'] = 'الحد الأدنى للزمن بين تعليقين من نفس المستخدم'; $_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'حفظ'; +$_MODULE['<{productcomments}prestashop>productcomments_2ec265696a51530949d345239069f0d4'] = 'تعليقات بإنتظار الموافقة'; +$_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'مرتفع'; +$_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'وسط'; +$_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'منخفض'; +$_MODULE['<{productcomments}prestashop>productcomments_eb7d6baeb8bbf339547da7e0d6c5e416'] = 'التعليقات المُبلغ عنها'; $_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'الرقم التعريفي'; $_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'الاسم'; $_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'النوع'; $_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'الحالة'; +$_MODULE['<{productcomments}prestashop>productcomments_8726894930330c61dd2c24ba8265364b'] = 'اضف معيار جديد'; +$_MODULE['<{productcomments}prestashop>productcomments_57826496f2bb2a191458e4893e96e52e'] = 'راجع المعيار'; +$_MODULE['<{productcomments}prestashop>productcomments_2608831883bb20ab520b70b4350aa23a'] = 'التعليقات المقبولة'; +$_MODULE['<{productcomments}prestashop>productcomments_f8a0aa69f5ce41287f02c2d182306f52'] = 'عنوان التعليق'; +$_MODULE['<{productcomments}prestashop>productcomments_457dd55184faedb7885afd4009d70163'] = 'التعليق'; +$_MODULE['<{productcomments}prestashop>productcomments_dda9c06f33071c9b6fc237ee164109d8'] = 'التقييم'; +$_MODULE['<{productcomments}prestashop>productcomments_a517747c3d12f99244ae598910d979c5'] = 'الناشر'; $_MODULE['<{productcomments}prestashop>productcomments_deb10517653c255364175796ace3553f'] = 'منتج'; +$_MODULE['<{productcomments}prestashop>productcomments_0f46dacf1a6ecab8ce1cb97250bb8113'] = 'تاريخ النشر'; +$_MODULE['<{productcomments}prestashop>productcomments_f3d8e91894baa7ee67e0649abcc092ff'] = 'المعيار سوف يُقيّد بالتصنيفات التاليه'; +$_MODULE['<{productcomments}prestashop>productcomments_d3dc571a8be516766c8124a636290fd9'] = 'حدد مربعات التصنيفات التي ينطبق عليها هذا المعيار'; $_MODULE['<{productcomments}prestashop>productcomments_91b442d385b54e1418d81adc34871053'] = 'محدد'; $_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0cc31793'] = 'فتح الكل'; $_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'إغلاق الكل'; $_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'تحديد الكل'; $_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'إلغاء التحديد'; +$_MODULE['<{productcomments}prestashop>productcomments_38fc05fb7f02497ea56b77fe085ffc78'] = 'اضف معيار جديد'; +$_MODULE['<{productcomments}prestashop>productcomments_92a497b6a43b59cce82c604a4c834bb0'] = 'إسم المعيار'; +$_MODULE['<{productcomments}prestashop>productcomments_20089c27bf83463fe32e7d30ed9d8f81'] = 'المعيار سوف يُقيّد بالمنتجات التاليه'; $_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'نشط'; +$_MODULE['<{productcomments}prestashop>productcomments_6f7351657f795bc1357a53142b1184cc'] = 'مصادقة'; +$_MODULE['<{productcomments}prestashop>productcomments_ecf74aa77715220b378ec668e75655a8'] = 'غير مؤذي'; +$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'متوسط الدرجة'; +$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'إقرأ تعليقات المستخدمين'; +$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'اكتب تعليقك'; +$_MODULE['<{productcomments}prestashop>productcomments_reviews_e32b7983d3bf98a65e3e96c393867dfa'] = '%s تعليق(تعليقات)'; +$_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = 'هل انت متأكد انك تريد الإبلاغ عن هذا التعليق؟'; +$_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = 'تم إضافة تعليقك!'; +$_MODULE['<{productcomments}prestashop>productcomments_b20968d9aecd2d075519992e9e2f1ffe'] = 'تم إضافة تعليقك وسيكون متوفراً عندما يوافق عليه المسؤول.'; +$_MODULE['<{productcomments}prestashop>productcomments_186c30cab59f6b64a453778330d4bbf0'] = 'تعليق جديد'; $_MODULE['<{productcomments}prestashop>productcomments_e0aa021e21dddbd6d8cecec71e9cf564'] = 'اعتماد التخفيض'; +$_MODULE['<{productcomments}prestashop>productcomments_4b3b9db8c9784468094acde0f8bf7071'] = 'الدرجة'; +$_MODULE['<{productcomments}prestashop>productcomments_b5c82723bd85856358f9a376bc613998'] = '%1$d من %2$d اشخاص وجد هذا التعليق مفيداً.'; +$_MODULE['<{productcomments}prestashop>productcomments_39630ad6ee79b8653ea89194cdb45bec'] = 'هل كان التعليق مفيدا؟'; $_MODULE['<{productcomments}prestashop>productcomments_a6105c0a611b41b08f1209506350279e'] = 'نعم'; $_MODULE['<{productcomments}prestashop>productcomments_7fa3b767c460b54a2be4d49030b349c7'] = 'لا'; +$_MODULE['<{productcomments}prestashop>productcomments_28b3b1e564a00f572c5d4e21da986d49'] = 'الإبلاغ عن إساءة'; +$_MODULE['<{productcomments}prestashop>productcomments_7966126831926ad29c528b239d69f855'] = 'اكتب تعليقك'; +$_MODULE['<{productcomments}prestashop>productcomments_fbe2625bf3673be380d043a4bf873f28'] = 'كل أول من يكتب تعليقاً'; +$_MODULE['<{productcomments}prestashop>productcomments_08c7d6f84301ee7d0aab0a5f67edc419'] = 'لا يوجد تعليقات عملاء هذه اللحظه.'; +$_MODULE['<{productcomments}prestashop>productcomments_45dacce3e2bc0f7bebde95098b9326a8'] = 'عنوان تعليقك'; +$_MODULE['<{productcomments}prestashop>productcomments_3421ad00975533fbbd5f17d2cb568125'] = 'تعليقك'; +$_MODULE['<{productcomments}prestashop>productcomments_221e705c06e231636fdbccfdd14f4d5c'] = 'إسمك'; $_MODULE['<{productcomments}prestashop>productcomments_70397c4b252a5168c5ec003931cea215'] = 'حقول مطلوبة'; $_MODULE['<{productcomments}prestashop>productcomments_94966d90747b97d1f0f206c98a8b1ac3'] = 'ارسل'; $_MODULE['<{productcomments}prestashop>productcomments_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'أو'; $_MODULE['<{productcomments}prestashop>productcomments_ea4788705e6873b424c65e91c2846b19'] = 'إلغاء'; +$_MODULE['<{productcomments}prestashop>products-comparison_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'التعليقات'; $_MODULE['<{productcomments}prestashop>products-comparison_b1897515d548a960afe49ecf66a29021'] = 'متوسط'; +$_MODULE['<{productcomments}prestashop>products-comparison_bc976f6c3405523cde61f63a7cbe224b'] = 'اعرض التعليقات'; +$_MODULE['<{productcomments}prestashop>tab_8413c683b4b27cc3f4dbd4c90329d8ba'] = 'التعليقات'; +$_MODULE['<{productcomments}prestashop>form_b9aefa40a54680bb258f9f9569290fae'] = 'اسم المنتج'; +$_MODULE['<{productcomments}prestashop>productcomments-extra_dda9c06f33071c9b6fc237ee164109d8'] = 'التقييم'; +$_MODULE['<{productcomments}prestashop>productcomments-extra_899139b5174d8d7a6e38a0360008a695'] = 'اقرأ التعليقات'; +$_MODULE['<{productcomments}prestashop>productcomments-extra_c31732fda0c6f01c446db7163b214de4'] = 'اكتب تعليق'; +$_MODULE['<{productcomments}prestashop>productcomments_reviews_d844ad9202d0de8442498775ba6ef819'] = 'التعليقات'; $_MODULE['<{productcomments}prestashop>productcomments_93cba07454f06a4a960172bbd6e2a435'] = 'نعم'; $_MODULE['<{productcomments}prestashop>productcomments_bafd7322c6e97d25b6299b5d6fe8920b'] = 'لا'; +$_MODULE['<{productcomments}prestashop>productcomments_c565011debb8e2812ef12853eb6a38a9'] = 'اكتب تعليقك!'; +$_MODULE['<{productcomments}prestashop>productcomments_f444678e4f3575d59b32a858630741fd'] = 'كل أول من يكتب تعليقاً!'; +$_MODULE['<{productcomments}prestashop>productcomments_c31732fda0c6f01c446db7163b214de4'] = 'اكتب تعليق'; +$_MODULE['<{productcomments}prestashop>productcomments_51ec9bf4aaeab1b25bb57f9f8d4de557'] = 'العنوان:'; +$_MODULE['<{productcomments}prestashop>productcomments_240f3031f25601fa128bd4e15f0a37de'] = 'التعليق:'; +$_MODULE['<{productcomments}prestashop>productcomments_a2ed44743411cf8b80e397448fce104c'] = 'إسمك:'; $_MODULE['<{productcomments}prestashop>productcomments_a4d3b161ce1309df1c4e25df28694b7b'] = 'إعتماد'; +$_MODULE['<{productcomments}prestashop>productcomments_4e3ee0f5bd8f527715fb0776741b9754'] = 'تم إضافة تعليقك وسيكون متوفراً عندما يوافق عليه المسؤول.'; +$_MODULE['<{productcomments}prestashop>products-comparison_5d9acecbb0b55a71dea7403896356001'] = 'اعرض التعليقات'; +$_MODULE['<{productcomments}prestashop>tab_34e80a799d144cfe4af46815e103f017'] = 'تعليقات'; return $_MODULE; diff --git a/modules/productcomments/translations/en.php b/modules/productcomments/translations/en.php index 21be0f420..f1a416ff9 100644 --- a/modules/productcomments/translations/en.php +++ b/modules/productcomments/translations/en.php @@ -3,6 +3,7 @@ global $_MODULE; $_MODULE = array(); +$_MODULE['<{productcomments}prestashop>default_da3e413ae5dde1a6b986203857fb1a59'] = 'Product ID is incorrect'; $_MODULE['<{productcomments}prestashop>default_7b0bf23ae4079e07a3a4cb4d07e2caef'] = 'Title is incorrect'; $_MODULE['<{productcomments}prestashop>default_ddbd56de5feb78ef1aaf60401f8c472b'] = 'Comment is incorrect'; $_MODULE['<{productcomments}prestashop>default_1b1030b6294e9096a7d7c40d83d61872'] = 'Customer name is incorrect'; @@ -14,6 +15,8 @@ $_MODULE['<{productcomments}prestashop>default_ba8d7ae5dcadfba739f28a777378f208' $_MODULE['<{productcomments}prestashop>productcommentcriterion_a09ed6c60eb3213939cecb4c580813cd'] = 'Valid for the entire catalog'; $_MODULE['<{productcomments}prestashop>productcommentcriterion_467366059d7d7c743a4d0971363a8d66'] = 'Restricted to some categories'; $_MODULE['<{productcomments}prestashop>productcommentcriterion_772911becd336c843ab09a1d4b4f66c0'] = 'Restricted to some products'; +$_MODULE['<{productcomments}prestashop>productcomments-ajax_fd4b5401d4d3c7d32d158bfc1e552f3b'] = 'Please fill your name'; +$_MODULE['<{productcomments}prestashop>productcomments-ajax_f88dc17737f7fdd4464b2eb922a8f133'] = 'An error occurred while saving your comment.'; $_MODULE['<{productcomments}prestashop>productcomments-ajax_7fa4a3510dafd0eac6435c19861b2bb7'] = 'Comment posted.'; $_MODULE['<{productcomments}prestashop>productcomments-ajax_f8694a9aae2eb045920f613cfa7f1235'] = 'Awaiting moderator validation.'; $_MODULE['<{productcomments}prestashop>productcomments-ajax_6bf852d9850445291f5e9d4740ac7b50'] = 'Comment text is required.'; @@ -24,16 +27,23 @@ $_MODULE['<{productcomments}prestashop>productcomments_c888438d14855d7d96a2724ee $_MODULE['<{productcomments}prestashop>productcomments_8a4c4c1ccc2b1c3b89e828e24ef591a8'] = 'The criterion could not be saved'; $_MODULE['<{productcomments}prestashop>productcomments_1bb54e382f7dbdb260f0aa6b42bb624b'] = 'Criterion deleted'; $_MODULE['<{productcomments}prestashop>productcomments_254f642527b45bc260048e30704edb39'] = 'Configuration'; +$_MODULE['<{productcomments}prestashop>productcomments_cf2fcb22e6342dea54b0cc34bb521752'] = 'All reviews must be validated by an employee'; $_MODULE['<{productcomments}prestashop>productcomments_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled'; $_MODULE['<{productcomments}prestashop>productcomments_b9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled'; +$_MODULE['<{productcomments}prestashop>productcomments_4e26bb46aa3f40913ee95cfb1d6c82f9'] = 'Allow guest reviews'; +$_MODULE['<{productcomments}prestashop>productcomments_9dc1140983196141368ceda7565128a8'] = 'Minimum time between 2 reviews from the same user'; $_MODULE['<{productcomments}prestashop>productcomments_c9cc8cce247e49bae79f15173ce97354'] = 'Save'; +$_MODULE['<{productcomments}prestashop>productcomments_2ec265696a51530949d345239069f0d4'] = 'Reviews waiting for approval'; $_MODULE['<{productcomments}prestashop>productcomments_655d20c1ca69519ca647684edbb2db35'] = 'High'; $_MODULE['<{productcomments}prestashop>productcomments_87f8a6ab85c9ced3702b4ea641ad4bb5'] = 'Medium'; $_MODULE['<{productcomments}prestashop>productcomments_28d0edd045e05cf5af64e35ae0c4c6ef'] = 'Low'; +$_MODULE['<{productcomments}prestashop>productcomments_eb7d6baeb8bbf339547da7e0d6c5e416'] = 'Reported Reviews'; $_MODULE['<{productcomments}prestashop>productcomments_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; $_MODULE['<{productcomments}prestashop>productcomments_49ee3087348e8d44e1feda1917443987'] = 'Name'; $_MODULE['<{productcomments}prestashop>productcomments_a1fa27779242b4902f7ae3bdd5c6d508'] = 'Type'; $_MODULE['<{productcomments}prestashop>productcomments_ec53a8c4f07baed5d8825072c89799be'] = 'Status'; +$_MODULE['<{productcomments}prestashop>productcomments_8726894930330c61dd2c24ba8265364b'] = 'Add New Criterion'; +$_MODULE['<{productcomments}prestashop>productcomments_57826496f2bb2a191458e4893e96e52e'] = 'Review Criteria'; $_MODULE['<{productcomments}prestashop>productcomments_2608831883bb20ab520b70b4350aa23a'] = 'Approved Reviews'; $_MODULE['<{productcomments}prestashop>productcomments_f8a0aa69f5ce41287f02c2d182306f52'] = 'Review title'; $_MODULE['<{productcomments}prestashop>productcomments_457dd55184faedb7885afd4009d70163'] = 'Review'; @@ -48,7 +58,16 @@ $_MODULE['<{productcomments}prestashop>productcomments_b56c3bda503a8dc4be356edb0 $_MODULE['<{productcomments}prestashop>productcomments_5ffd7a335dd836b3373f5ec570a58bdc'] = 'Expand All'; $_MODULE['<{productcomments}prestashop>productcomments_5e9df908eafa83cb51c0a3720e8348c7'] = 'Check All'; $_MODULE['<{productcomments}prestashop>productcomments_9747d23c8cc358c5ef78c51e59cd6817'] = 'Uncheck All'; +$_MODULE['<{productcomments}prestashop>productcomments_38fc05fb7f02497ea56b77fe085ffc78'] = 'Add new criterion'; +$_MODULE['<{productcomments}prestashop>productcomments_92a497b6a43b59cce82c604a4c834bb0'] = 'Criterion name'; +$_MODULE['<{productcomments}prestashop>productcomments_bbda28827cde1064b0320cbf6b1890a2'] = 'Application scope of the criterion'; +$_MODULE['<{productcomments}prestashop>productcomments_20089c27bf83463fe32e7d30ed9d8f81'] = 'The criterion will be restricted to the following products'; $_MODULE['<{productcomments}prestashop>productcomments_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Active'; +$_MODULE['<{productcomments}prestashop>productcomments_6f7351657f795bc1357a53142b1184cc'] = 'Approve'; +$_MODULE['<{productcomments}prestashop>productcomments_ecf74aa77715220b378ec668e75655a8'] = 'Not abusive'; +$_MODULE['<{productcomments}prestashop>productcomments-extra_7c3b0e9898b88deee7ea75aafd2e37e2'] = 'Average grade'; +$_MODULE['<{productcomments}prestashop>productcomments-extra_a71a0229e164fecdcde3c4e0f40473fa'] = 'Read user reviews'; +$_MODULE['<{productcomments}prestashop>productcomments-extra_7966126831926ad29c528b239d69f855'] = 'Write your review'; $_MODULE['<{productcomments}prestashop>productcomments_reviews_e32b7983d3bf98a65e3e96c393867dfa'] = '%s Review(s)'; $_MODULE['<{productcomments}prestashop>productcomments_ab51a81c76d95ddc762194d58ec5db63'] = 'Are you sure that you want to report this comment?'; $_MODULE['<{productcomments}prestashop>productcomments_9a2ccd41653469a8bd94fbb84b271a14'] = 'Your comment has been added!'; diff --git a/modules/productpaymentlogos/CHANGELOG.txt b/modules/productpaymentlogos/CHANGELOG.txt index 1fa2608f6..b58479dbc 100644 --- a/modules/productpaymentlogos/CHANGELOG.txt +++ b/modules/productpaymentlogos/CHANGELOG.txt @@ -1,3 +1,12 @@ +------------------------------ +# V1.3.7 to V1.4.1 +------------------------------ + +## Improved/Changed Features: + +* [CO] : Updated with latest PS version - 1.6.1.23. + + 2014-04-17 11:53:57 +0200 // Version compliancy 2014-03-31 12:08:03 +0200 [-] MO : productpaymentlogos : if there is not a link specified in the configuration, no link will be displayed 2014-03-24 15:22:19 +0100 / MO productpaymentlogos : ps_versions_compliancy added diff --git a/modules/productpaymentlogos/Readme.md b/modules/productpaymentlogos/Readme.md deleted file mode 100644 index 3ce0cd1db..000000000 --- a/modules/productpaymentlogos/Readme.md +++ /dev/null @@ -1,37 +0,0 @@ -# Product payment logos block - -## About - -Displays the logos of the available payment systems on the product page. - -## Contributing - -PrestaShop modules are open-source extensions to the PrestaShop e-commerce solution. Everyone is welcome and even encouraged to contribute with their own improvements. - -### Requirements - -Contributors **must** follow the following rules: - -* **Make your Pull Request on the "dev" branch**, NOT the "master" branch. -* Do not update the module's version number. -* Follow [the coding standards][1]. - -### Process in details - -Contributors wishing to edit a module's files should follow the following process: - -1. Create your GitHub account, if you do not have one already. -2. Fork the productpaymentlogos project to your GitHub account. -3. Clone your fork to your local machine in the ```/modules``` directory of your PrestaShop installation. -4. Create a branch in your local clone of the module for your changes. -5. Change the files in your branch. Be sure to follow [the coding standards][1]! -6. Push your changed branch to your fork in your GitHub account. -7. Create a pull request for your changes **on the _'dev'_ branch** of the module's project. Be sure to follow [the commit message norm][2] in your pull request. If you need help to make a pull request, read the [Github help page about creating pull requests][3]. -8. Wait for one of the core developers either to include your change in the codebase, or to comment on possible improvements you should make to your code. - -That's it: you have contributed to this open-source project! Congratulations! - -[1]: http://doc.prestashop.com/display/PS16/Coding+Standards -[2]: http://doc.prestashop.com/display/PS16/How+to+write+a+commit+message -[3]: https://help.github.com/articles/using-pull-requests - diff --git a/modules/productpaymentlogos/config.xml b/modules/productpaymentlogos/config.xml deleted file mode 100644 index b69b656c9..000000000 --- a/modules/productpaymentlogos/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - productpaymentlogos - - - - - - 1 - 0 - - \ No newline at end of file diff --git a/modules/productpaymentlogos/img/index.php b/modules/productpaymentlogos/img/index.php index 9484a53e8..8761a003e 100644 --- a/modules/productpaymentlogos/img/index.php +++ b/modules/productpaymentlogos/img/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/productpaymentlogos/index.php b/modules/productpaymentlogos/index.php index 9484a53e8..8761a003e 100644 --- a/modules/productpaymentlogos/index.php +++ b/modules/productpaymentlogos/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/productpaymentlogos/productpaymentlogos.php b/modules/productpaymentlogos/productpaymentlogos.php index e0ae2f67f..ccf1c41ae 100644 --- a/modules/productpaymentlogos/productpaymentlogos.php +++ b/modules/productpaymentlogos/productpaymentlogos.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -33,7 +33,7 @@ class ProductPaymentLogos extends Module { $this->name = 'productpaymentlogos'; $this->tab = 'front_office_features'; - $this->version = '1.3.7'; + $this->version = '1.4.1'; $this->author = 'PrestaShop'; $this->need_instance = 0; @@ -42,6 +42,8 @@ class ProductPaymentLogos extends Module $this->displayName = $this->l('Product payment logos block'); $this->description = $this->l('Displays the logos of the available payment systems on the product page.'); + + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.6.99.99'); } public function install() diff --git a/modules/productpaymentlogos/translations/ag.php b/modules/productpaymentlogos/translations/ag.php deleted file mode 100644 index 0e362f42b..000000000 --- a/modules/productpaymentlogos/translations/ag.php +++ /dev/null @@ -1,19 +0,0 @@ -productpaymentlogos_1056d03db619b016d8fc6b60d08ef488'] = 'Bloque de logos de pago'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_88fd6d994459806f2dcb8999ac03c76e'] = 'Mostrar los logos de los métodos de pago disponibles en la página del producto.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_126b21ce46c39d12c24058791a236777'] = 'imagen no válida'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_df7859ac16e724c9b1fba0a364503d72'] = 'Se ha producido un error durante el envío.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_f4f70727dc34561dfde1a3c529b6205c'] = 'Ajustes'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_223795d3a336ef80c5b6a070ae4e0d2a'] = 'Bloque título'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c7dd01cfb61ff8c984c0aff44f6540e3'] = 'Puede optar por añadir un título por encima de los logos.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_89ca5c48bbc6b7a648a5c1996767484c'] = 'Imagen de bloque'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_9ce38727cff004a058021a6c7351a74a'] = 'Link de imagen'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_826eeee52fe142372c3a2bc195eff911'] = 'Puede cargar su propia imagen utilizando el formulario de arriba, o proporcionando un enlace a esta desde la opción "Vínculo de la imagen".'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar'; - - -return $_MODULE; diff --git a/modules/productpaymentlogos/translations/ar.php b/modules/productpaymentlogos/translations/ar.php deleted file mode 100644 index 8573520c9..000000000 --- a/modules/productpaymentlogos/translations/ar.php +++ /dev/null @@ -1,13 +0,0 @@ -productpaymentlogos_126b21ce46c39d12c24058791a236777'] = 'صورة غير صالحة'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_df7859ac16e724c9b1fba0a364503d72'] = 'حدث خطأ في ملف التحميل'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_f4f70727dc34561dfde1a3c529b6205c'] = 'الإعدادات'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_9ce38727cff004a058021a6c7351a74a'] = 'صورة الرابط'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c9cc8cce247e49bae79f15173ce97354'] = 'حفظ'; - - -return $_MODULE; diff --git a/modules/productpaymentlogos/translations/bg.php b/modules/productpaymentlogos/translations/bg.php deleted file mode 100644 index 869322c21..000000000 --- a/modules/productpaymentlogos/translations/bg.php +++ /dev/null @@ -1,19 +0,0 @@ -productpaymentlogos_1056d03db619b016d8fc6b60d08ef488'] = 'Блок с логата на плащанията'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_88fd6d994459806f2dcb8999ac03c76e'] = 'Показва логата на наличните системи за плащане на страницата с продукта.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_126b21ce46c39d12c24058791a236777'] = 'Невалидно изображение'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_df7859ac16e724c9b1fba0a364503d72'] = 'Възникна грешка при качването на файла.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_f4f70727dc34561dfde1a3c529b6205c'] = 'Настройки'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_223795d3a336ef80c5b6a070ae4e0d2a'] = 'Блок озаглавяване'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c7dd01cfb61ff8c984c0aff44f6540e3'] = 'Можете да изберете да добавите озаглавяване над логата.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_89ca5c48bbc6b7a648a5c1996767484c'] = 'Изображение на блока'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_9ce38727cff004a058021a6c7351a74a'] = 'Линк на изображението'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_826eeee52fe142372c3a2bc195eff911'] = 'Можете или да качите ваше изображение с формуляра по-горе, или да го свържете чрез опцията "Изображение за линк".'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c9cc8cce247e49bae79f15173ce97354'] = 'Запазване'; - - -return $_MODULE; diff --git a/modules/productpaymentlogos/translations/br.php b/modules/productpaymentlogos/translations/br.php deleted file mode 100644 index 2dffb608f..000000000 --- a/modules/productpaymentlogos/translations/br.php +++ /dev/null @@ -1,19 +0,0 @@ -productpaymentlogos_1056d03db619b016d8fc6b60d08ef488'] = 'Bloco de Logotipos de pagamento do produto'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_88fd6d994459806f2dcb8999ac03c76e'] = 'Mostra um bloco com logotipos de pagamento disponíveis na pagina do produto'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_126b21ce46c39d12c24058791a236777'] = 'imagem inválida'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_df7859ac16e724c9b1fba0a364503d72'] = 'Ocorreu um erro ao enviar o arquivo.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_f4f70727dc34561dfde1a3c529b6205c'] = 'Configurações'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_223795d3a336ef80c5b6a070ae4e0d2a'] = 'Cabeçalho do bloco'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c7dd01cfb61ff8c984c0aff44f6540e3'] = 'Você pode escolher adicionar um cabeçalho acima dos logos.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_89ca5c48bbc6b7a648a5c1996767484c'] = 'Bloco de imagem'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_9ce38727cff004a058021a6c7351a74a'] = 'Link da imagem'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_826eeee52fe142372c3a2bc195eff911'] = 'Você pode enviar sua própria imagem usando o formulário acima, ou vinculá-la a partir da opção \\"Link da Imagem\\".'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c9cc8cce247e49bae79f15173ce97354'] = 'Salvar'; - - -return $_MODULE; diff --git a/modules/productpaymentlogos/translations/ca.php b/modules/productpaymentlogos/translations/ca.php deleted file mode 100644 index 56f77924d..000000000 --- a/modules/productpaymentlogos/translations/ca.php +++ /dev/null @@ -1,19 +0,0 @@ -productpaymentlogos_1056d03db619b016d8fc6b60d08ef488'] = 'Bloc de logotips de pagament'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_88fd6d994459806f2dcb8999ac03c76e'] = 'Mostra els logotips dels sistemes de pagament disponibles a la pàgina de producte.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_126b21ce46c39d12c24058791a236777'] = 'Imatge no vàlida'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_df7859ac16e724c9b1fba0a364503d72'] = 'S\'ha produït un error en la pujada d\'arxius'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_f4f70727dc34561dfde1a3c529b6205c'] = 'Configuració'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_223795d3a336ef80c5b6a070ae4e0d2a'] = 'Capçalera del bloc'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c7dd01cfb61ff8c984c0aff44f6540e3'] = 'Podeu optar per afegir un títol sobre els logotips.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_89ca5c48bbc6b7a648a5c1996767484c'] = 'Imatge del bloc'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_9ce38727cff004a058021a6c7351a74a'] = 'Enllaç d\'imatge'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_826eeee52fe142372c3a2bc195eff911'] = 'Podeu carregar la vostra pròpia imatge utilitzant el formulari de més amunt, o enllaçar-la mitjançant l\'opció "Enllaç d\'imatge".'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c9cc8cce247e49bae79f15173ce97354'] = 'Desar'; - - -return $_MODULE; diff --git a/modules/productpaymentlogos/translations/de.php b/modules/productpaymentlogos/translations/de.php deleted file mode 100644 index 3daf0820b..000000000 --- a/modules/productpaymentlogos/translations/de.php +++ /dev/null @@ -1,19 +0,0 @@ -productpaymentlogos_1056d03db619b016d8fc6b60d08ef488'] = 'Block Zahlungslogos'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_88fd6d994459806f2dcb8999ac03c76e'] = 'Zeigt die Logos der verfügbaren Zahlungsarten auf der Produktseite an'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_126b21ce46c39d12c24058791a236777'] = 'Bild ungültig'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_df7859ac16e724c9b1fba0a364503d72'] = 'Fehler beim Hochladen der Datei'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_f4f70727dc34561dfde1a3c529b6205c'] = 'Einstellungen'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_223795d3a336ef80c5b6a070ae4e0d2a'] = 'Block-Header'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c7dd01cfb61ff8c984c0aff44f6540e3'] = 'Wählen Sie eine Überschrift über dem Logo-Block.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_89ca5c48bbc6b7a648a5c1996767484c'] = 'Bild'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_9ce38727cff004a058021a6c7351a74a'] = 'Bild-Link'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_826eeee52fe142372c3a2bc195eff911'] = 'Selbst erstellte Bilder können entweder durch Eingabe des Dateinamens oder per Link über die "Bild-Link"-Option zum Upload bereitgestellt werden.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c9cc8cce247e49bae79f15173ce97354'] = 'Speichern'; - - -return $_MODULE; diff --git a/modules/productpaymentlogos/translations/en.php b/modules/productpaymentlogos/translations/en.php deleted file mode 100644 index ac720df76..000000000 --- a/modules/productpaymentlogos/translations/en.php +++ /dev/null @@ -1,19 +0,0 @@ -productpaymentlogos_1056d03db619b016d8fc6b60d08ef488'] = 'Product payment logos block'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_88fd6d994459806f2dcb8999ac03c76e'] = 'Displays the logos of the available payment systems on the product page.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_126b21ce46c39d12c24058791a236777'] = 'Invalid image'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_df7859ac16e724c9b1fba0a364503d72'] = 'An error occurred while attempting to upload the file.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_f4f70727dc34561dfde1a3c529b6205c'] = 'Settings'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_223795d3a336ef80c5b6a070ae4e0d2a'] = 'Block heading'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c7dd01cfb61ff8c984c0aff44f6540e3'] = 'You can choose to add a heading above the logos.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_89ca5c48bbc6b7a648a5c1996767484c'] = 'Block image'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_9ce38727cff004a058021a6c7351a74a'] = 'Image link'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_826eeee52fe142372c3a2bc195eff911'] = 'You can either upload your own image using the form above, or link to it from the "Image link" option.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c9cc8cce247e49bae79f15173ce97354'] = 'Save'; - - -return $_MODULE; diff --git a/modules/productpaymentlogos/translations/es.php b/modules/productpaymentlogos/translations/es.php deleted file mode 100644 index 6afd013d6..000000000 --- a/modules/productpaymentlogos/translations/es.php +++ /dev/null @@ -1,19 +0,0 @@ -productpaymentlogos_1056d03db619b016d8fc6b60d08ef488'] = 'Bloque de logos de pago'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_88fd6d994459806f2dcb8999ac03c76e'] = 'Mostrar los logos de los métodos de pago disponibles en la página del producto.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_126b21ce46c39d12c24058791a236777'] = 'imagen no válida'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_df7859ac16e724c9b1fba0a364503d72'] = 'Se ha producido un error durante el envío.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_f4f70727dc34561dfde1a3c529b6205c'] = 'Ajustes'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_223795d3a336ef80c5b6a070ae4e0d2a'] = 'Bloque título'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c7dd01cfb61ff8c984c0aff44f6540e3'] = 'Puede optar por añadir un título por encima de los logos.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_89ca5c48bbc6b7a648a5c1996767484c'] = 'Imagen de bloque'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_9ce38727cff004a058021a6c7351a74a'] = 'Enlace de la imagen'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_826eeee52fe142372c3a2bc195eff911'] = 'Puede cargar su propia imagen utilizando el formulario de arriba, o proporcionando un enlace a esta desde la opción "Vínculo de la imagen".'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar'; - - -return $_MODULE; diff --git a/modules/productpaymentlogos/translations/fr.php b/modules/productpaymentlogos/translations/fr.php deleted file mode 100644 index 788663cd8..000000000 --- a/modules/productpaymentlogos/translations/fr.php +++ /dev/null @@ -1,19 +0,0 @@ -productpaymentlogos_1056d03db619b016d8fc6b60d08ef488'] = 'Bloc logos des modules de paiement'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_88fd6d994459806f2dcb8999ac03c76e'] = 'Affiche sur la page produit les logos des solutions de paiement disponibles.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_126b21ce46c39d12c24058791a236777'] = 'image non valable'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_df7859ac16e724c9b1fba0a364503d72'] = 'Une erreur s\'est produite lors de l\'envoi du fichier.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_f4f70727dc34561dfde1a3c529b6205c'] = 'Paramètres'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_223795d3a336ef80c5b6a070ae4e0d2a'] = 'En-tête du bloc'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c7dd01cfb61ff8c984c0aff44f6540e3'] = 'Vous pouvez choisir d\'ajouter un titre au-dessus des logos.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_89ca5c48bbc6b7a648a5c1996767484c'] = 'Image'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_9ce38727cff004a058021a6c7351a74a'] = 'Lien de l\'image'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_826eeee52fe142372c3a2bc195eff911'] = 'Vous pouvez soit mettre votre propre image en ligne à l\'aide du formulaire ci-dessus, ou mettre un lien vers celle-ci grâce à l\'option "Lien de l\'image".'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c9cc8cce247e49bae79f15173ce97354'] = 'Enregistrer'; - - -return $_MODULE; diff --git a/modules/productpaymentlogos/translations/gl.php b/modules/productpaymentlogos/translations/gl.php deleted file mode 100644 index a3e79d024..000000000 --- a/modules/productpaymentlogos/translations/gl.php +++ /dev/null @@ -1,10 +0,0 @@ -productpaymentlogos_9ce38727cff004a058021a6c7351a74a'] = 'Link imaxe'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c9cc8cce247e49bae79f15173ce97354'] = 'Gardar'; - - -return $_MODULE; diff --git a/modules/productpaymentlogos/translations/id.php b/modules/productpaymentlogos/translations/id.php deleted file mode 100644 index bba2c7111..000000000 --- a/modules/productpaymentlogos/translations/id.php +++ /dev/null @@ -1,19 +0,0 @@ -productpaymentlogos_1056d03db619b016d8fc6b60d08ef488'] = 'Blok logo pembayaran produk'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_88fd6d994459806f2dcb8999ac03c76e'] = 'Tampilkan logo pembayaran di halaman produk.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_126b21ce46c39d12c24058791a236777'] = 'Gambar tidak valid'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_df7859ac16e724c9b1fba0a364503d72'] = 'Error saat proses upload file.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_f4f70727dc34561dfde1a3c529b6205c'] = 'Seting'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_223795d3a336ef80c5b6a070ae4e0d2a'] = 'Blok heading'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c7dd01cfb61ff8c984c0aff44f6540e3'] = 'Anda dapat menambahkah heading diatas logo.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_89ca5c48bbc6b7a648a5c1996767484c'] = 'Blok gambar'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_9ce38727cff004a058021a6c7351a74a'] = 'Link gambar'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_826eeee52fe142372c3a2bc195eff911'] = 'Anda dapat mengunggah gambar menggunakan form diatas, atau tautan dengan mengisi field "tautan gambar".'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c9cc8cce247e49bae79f15173ce97354'] = 'Simpan'; - - -return $_MODULE; diff --git a/modules/productpaymentlogos/translations/index.php b/modules/productpaymentlogos/translations/index.php index 044cb85ee..e5064df41 100644 --- a/modules/productpaymentlogos/translations/index.php +++ b/modules/productpaymentlogos/translations/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/productpaymentlogos/translations/nl.php b/modules/productpaymentlogos/translations/nl.php deleted file mode 100644 index 30f38a680..000000000 --- a/modules/productpaymentlogos/translations/nl.php +++ /dev/null @@ -1,19 +0,0 @@ -productpaymentlogos_1056d03db619b016d8fc6b60d08ef488'] = 'Product betalingen logo\'s blok'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_88fd6d994459806f2dcb8999ac03c76e'] = 'Geeft de logo\'s van de beschikbare betaalsystemen weer op de product pagina.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_126b21ce46c39d12c24058791a236777'] = 'Ongeldige afbeelding'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_df7859ac16e724c9b1fba0a364503d72'] = 'fout opgetreden tijdens het uploaden van het bestand'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_f4f70727dc34561dfde1a3c529b6205c'] = 'Instellingen'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_223795d3a336ef80c5b6a070ae4e0d2a'] = 'Blok titel'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c7dd01cfb61ff8c984c0aff44f6540e3'] = 'Je kunt kiezen voor een titel boven de logos.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_89ca5c48bbc6b7a648a5c1996767484c'] = 'Blokafbeelding'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_9ce38727cff004a058021a6c7351a74a'] = 'Afbeeldingslink'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_826eeee52fe142372c3a2bc195eff911'] = 'Je kunt je eigen afbeelding uploaden door het formulier hier boven te gebruiken, of het linken vanuit de "image link" optie.'; -$_MODULE['<{productpaymentlogos}prestashop>productpaymentlogos_c9cc8cce247e49bae79f15173ce97354'] = 'Opslaan'; - - -return $_MODULE; diff --git a/modules/productpaymentlogos/views/index.php b/modules/productpaymentlogos/views/index.php index 9484a53e8..8761a003e 100644 --- a/modules/productpaymentlogos/views/index.php +++ b/modules/productpaymentlogos/views/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/productpaymentlogos/views/templates/hook/index.php b/modules/productpaymentlogos/views/templates/hook/index.php index 9484a53e8..8761a003e 100644 --- a/modules/productpaymentlogos/views/templates/hook/index.php +++ b/modules/productpaymentlogos/views/templates/hook/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/productpaymentlogos/views/templates/hook/productpaymentlogos.tpl b/modules/productpaymentlogos/views/templates/hook/productpaymentlogos.tpl index 56db83f98..966157ab2 100644 --- a/modules/productpaymentlogos/views/templates/hook/productpaymentlogos.tpl +++ b/modules/productpaymentlogos/views/templates/hook/productpaymentlogos.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2016 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/modules/productpaymentlogos/views/templates/index.php b/modules/productpaymentlogos/views/templates/index.php index 9484a53e8..8761a003e 100644 --- a/modules/productpaymentlogos/views/templates/index.php +++ b/modules/productpaymentlogos/views/templates/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/productscategory/CHANGELOG.txt b/modules/productscategory/CHANGELOG.txt index 6c3b9a0d4..3ea1e9669 100644 --- a/modules/productscategory/CHANGELOG.txt +++ b/modules/productscategory/CHANGELOG.txt @@ -1,3 +1,13 @@ +------------------------------ +# V1.7.0 to V1.8.1 +------------------------------ + +## Improved/Changed Features: + +* [CO] : Updated with latest PS version - 1.6.1.23. + + + 2014-04-17 12:07:47 +0200 // version compliancy 2014-04-07 13:48:08 +0200 // Update translation (module name) 2014-03-24 15:22:21 +0100 / MO productscategory : ps_versions_compliancy added diff --git a/modules/productscategory/Readme.md b/modules/productscategory/Readme.md deleted file mode 100644 index 7f0afc829..000000000 --- a/modules/productscategory/Readme.md +++ /dev/null @@ -1,37 +0,0 @@ -# Products in the same category - -## About - -Adds a block on the product page that displays products from the same category. - -## Contributing - -PrestaShop modules are open-source extensions to the PrestaShop e-commerce solution. Everyone is welcome and even encouraged to contribute with their own improvements. - -### Requirements - -Contributors **must** follow the following rules: - -* **Make your Pull Request on the "dev" branch**, NOT the "master" branch. -* Do not update the module's version number. -* Follow [the coding standards][1]. - -### Process in details - -Contributors wishing to edit a module's files should follow the following process: - -1. Create your GitHub account, if you do not have one already. -2. Fork the productscategory project to your GitHub account. -3. Clone your fork to your local machine in the ```/modules``` directory of your PrestaShop installation. -4. Create a branch in your local clone of the module for your changes. -5. Change the files in your branch. Be sure to follow [the coding standards][1]! -6. Push your changed branch to your fork in your GitHub account. -7. Create a pull request for your changes **on the _'dev'_ branch** of the module's project. Be sure to follow [the commit message norm][2] in your pull request. If you need help to make a pull request, read the [Github help page about creating pull requests][3]. -8. Wait for one of the core developers either to include your change in the codebase, or to comment on possible improvements you should make to your code. - -That's it: you have contributed to this open-source project! Congratulations! - -[1]: http://doc.prestashop.com/display/PS16/Coding+Standards -[2]: http://doc.prestashop.com/display/PS16/How+to+write+a+commit+message -[3]: https://help.github.com/articles/using-pull-requests - diff --git a/modules/productscategory/config.xml b/modules/productscategory/config.xml deleted file mode 100644 index 0deaee279..000000000 --- a/modules/productscategory/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - productscategory - - - - - - 1 - 0 - - \ No newline at end of file diff --git a/modules/productscategory/css/index.php b/modules/productscategory/css/index.php index 5244cdaa4..531cab52a 100644 --- a/modules/productscategory/css/index.php +++ b/modules/productscategory/css/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/productscategory/img/index.php b/modules/productscategory/img/index.php index 5c9a7a48b..f582134fc 100644 --- a/modules/productscategory/img/index.php +++ b/modules/productscategory/img/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/productscategory/index.php b/modules/productscategory/index.php index 5244cdaa4..531cab52a 100644 --- a/modules/productscategory/index.php +++ b/modules/productscategory/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/productscategory/js/index.php b/modules/productscategory/js/index.php index 5244cdaa4..531cab52a 100644 --- a/modules/productscategory/js/index.php +++ b/modules/productscategory/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/productscategory/js/productscategory.js b/modules/productscategory/js/productscategory.js index 662bc91e2..c1b3bde30 100644 --- a/modules/productscategory/js/productscategory.js +++ b/modules/productscategory/js/productscategory.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2016 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/productscategory/productscategory.php b/modules/productscategory/productscategory.php index 29e32d22e..788e87206 100644 --- a/modules/productscategory/productscategory.php +++ b/modules/productscategory/productscategory.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -34,7 +34,7 @@ class ProductsCategory extends Module public function __construct() { $this->name = 'productscategory'; - $this->version = '1.7.0'; + $this->version = '1.8.1'; $this->author = 'PrestaShop'; $this->tab = 'front_office_features'; $this->need_instance = 0; @@ -44,6 +44,7 @@ class ProductsCategory extends Module $this->displayName = $this->l('Products in the same category'); $this->description = $this->l('Adds a block on the product page that displays products from the same category.'); + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.6.99.99'); } public function install() diff --git a/modules/productscategory/translations/ag.php b/modules/productscategory/translations/ag.php deleted file mode 100644 index 0cb07951a..000000000 --- a/modules/productscategory/translations/ag.php +++ /dev/null @@ -1,22 +0,0 @@ -productscategory_8a4f5a66d0fcc9d13614516db6e3d47a'] = 'Productos en la misma categoría'; -$_MODULE['<{productscategory}prestashop>productscategory_1d269d7f013c3d9d891a146f4379eb02'] = 'Añade un bloque a la página del producto que muestra más productos de la misma categoría.'; -$_MODULE['<{productscategory}prestashop>productscategory_8dd2f915acf4ec98006d11c9a4b0945b'] = 'Parámetros actualizados con éxito'; -$_MODULE['<{productscategory}prestashop>productscategory_f4f70727dc34561dfde1a3c529b6205c'] = 'Ajustes'; -$_MODULE['<{productscategory}prestashop>productscategory_e06ba84b50810a88438ae0537405f65a'] = 'Muestra el precio de los productos'; -$_MODULE['<{productscategory}prestashop>productscategory_1d986024f548d57b1d743ec7ea9b09d9'] = 'Muestra el precio de los productos mostrados en el bloque.'; -$_MODULE['<{productscategory}prestashop>productscategory_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado'; -$_MODULE['<{productscategory}prestashop>productscategory_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado'; -$_MODULE['<{productscategory}prestashop>productscategory_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar'; -$_MODULE['<{productscategory}prestashop>productscategory_f55e0a28b86c2ab66ac632ab9ddf1833'] = '%s producto más en la misma categoría:'; -$_MODULE['<{productscategory}prestashop>productscategory_bebb44f38b03407098d48198c1d0aaa5'] = '%s productos más en la misma categoría:'; -$_MODULE['<{productscategory}prestashop>productscategory_dd1f775e443ff3b9a89270713580a51b'] = 'Previo'; -$_MODULE['<{productscategory}prestashop>productscategory_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'Siguiente'; -$_MODULE['<{productscategory}prestashop>productscategory_2d0f6b8300be19cf35e89e66f0677f95'] = 'Añadir al carrito'; - - -return $_MODULE; diff --git a/modules/productscategory/translations/ar.php b/modules/productscategory/translations/ar.php deleted file mode 100644 index e8b54f16b..000000000 --- a/modules/productscategory/translations/ar.php +++ /dev/null @@ -1,15 +0,0 @@ -productscategory_f4f70727dc34561dfde1a3c529b6205c'] = 'الإعدادات'; -$_MODULE['<{productscategory}prestashop>productscategory_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'مفعل'; -$_MODULE['<{productscategory}prestashop>productscategory_b9f5c797ebbf55adccdd8539a65a0241'] = 'غير مفعل'; -$_MODULE['<{productscategory}prestashop>productscategory_c9cc8cce247e49bae79f15173ce97354'] = 'حفظ'; -$_MODULE['<{productscategory}prestashop>productscategory_dd1f775e443ff3b9a89270713580a51b'] = 'السابق'; -$_MODULE['<{productscategory}prestashop>productscategory_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'التالي'; -$_MODULE['<{productscategory}prestashop>productscategory_2d0f6b8300be19cf35e89e66f0677f95'] = 'أضف للسلة'; - - -return $_MODULE; diff --git a/modules/productscategory/translations/bg.php b/modules/productscategory/translations/bg.php deleted file mode 100644 index 7d62cb0f9..000000000 --- a/modules/productscategory/translations/bg.php +++ /dev/null @@ -1,22 +0,0 @@ -productscategory_8a4f5a66d0fcc9d13614516db6e3d47a'] = 'Продукти в същата категория'; -$_MODULE['<{productscategory}prestashop>productscategory_1d269d7f013c3d9d891a146f4379eb02'] = 'Добавяне на блок в страницата на продукт, който показва продукти от същата категория.'; -$_MODULE['<{productscategory}prestashop>productscategory_8dd2f915acf4ec98006d11c9a4b0945b'] = 'Настройките са успешно обновени.'; -$_MODULE['<{productscategory}prestashop>productscategory_f4f70727dc34561dfde1a3c529b6205c'] = 'Настройки'; -$_MODULE['<{productscategory}prestashop>productscategory_e06ba84b50810a88438ae0537405f65a'] = 'Показване цените на продуктите'; -$_MODULE['<{productscategory}prestashop>productscategory_1d986024f548d57b1d743ec7ea9b09d9'] = 'Показване на цените на показаните в блока продукти.'; -$_MODULE['<{productscategory}prestashop>productscategory_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Активен'; -$_MODULE['<{productscategory}prestashop>productscategory_b9f5c797ebbf55adccdd8539a65a0241'] = 'Забранено'; -$_MODULE['<{productscategory}prestashop>productscategory_c9cc8cce247e49bae79f15173ce97354'] = 'Запазване'; -$_MODULE['<{productscategory}prestashop>productscategory_f55e0a28b86c2ab66ac632ab9ddf1833'] = 'В следната категория има още %s продукт:'; -$_MODULE['<{productscategory}prestashop>productscategory_bebb44f38b03407098d48198c1d0aaa5'] = 'В следната категория има още %s продукта:'; -$_MODULE['<{productscategory}prestashop>productscategory_dd1f775e443ff3b9a89270713580a51b'] = 'Предишен'; -$_MODULE['<{productscategory}prestashop>productscategory_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'Напред'; -$_MODULE['<{productscategory}prestashop>productscategory_2d0f6b8300be19cf35e89e66f0677f95'] = 'Добавяне към количката'; - - -return $_MODULE; diff --git a/modules/productscategory/translations/br.php b/modules/productscategory/translations/br.php deleted file mode 100644 index 540ccc434..000000000 --- a/modules/productscategory/translations/br.php +++ /dev/null @@ -1,22 +0,0 @@ -productscategory_8a4f5a66d0fcc9d13614516db6e3d47a'] = 'Produtos na mesma categoria'; -$_MODULE['<{productscategory}prestashop>productscategory_1d269d7f013c3d9d891a146f4379eb02'] = 'Adiciona um bloco na página de produto que exibe outros produtos da mesma categoria.'; -$_MODULE['<{productscategory}prestashop>productscategory_8dd2f915acf4ec98006d11c9a4b0945b'] = 'Configurações atualizadas com sucesso'; -$_MODULE['<{productscategory}prestashop>productscategory_f4f70727dc34561dfde1a3c529b6205c'] = 'Configurações'; -$_MODULE['<{productscategory}prestashop>productscategory_e06ba84b50810a88438ae0537405f65a'] = 'Exibe os preços dos produtos'; -$_MODULE['<{productscategory}prestashop>productscategory_1d986024f548d57b1d743ec7ea9b09d9'] = 'Mostra os preços dos produtos exibidos no bloco.'; -$_MODULE['<{productscategory}prestashop>productscategory_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Ativado'; -$_MODULE['<{productscategory}prestashop>productscategory_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desativado'; -$_MODULE['<{productscategory}prestashop>productscategory_c9cc8cce247e49bae79f15173ce97354'] = 'Salvar'; -$_MODULE['<{productscategory}prestashop>productscategory_f55e0a28b86c2ab66ac632ab9ddf1833'] = '%s outro produto na mesma categoria:'; -$_MODULE['<{productscategory}prestashop>productscategory_bebb44f38b03407098d48198c1d0aaa5'] = '%s outros produtos na mesma categoria:'; -$_MODULE['<{productscategory}prestashop>productscategory_dd1f775e443ff3b9a89270713580a51b'] = 'Anterior'; -$_MODULE['<{productscategory}prestashop>productscategory_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'Próximo'; -$_MODULE['<{productscategory}prestashop>productscategory_2d0f6b8300be19cf35e89e66f0677f95'] = 'Adicionar'; - - -return $_MODULE; diff --git a/modules/productscategory/translations/ca.php b/modules/productscategory/translations/ca.php deleted file mode 100644 index 4ec92de55..000000000 --- a/modules/productscategory/translations/ca.php +++ /dev/null @@ -1,20 +0,0 @@ -productscategory_8a4f5a66d0fcc9d13614516db6e3d47a'] = 'Productes a la mateixa categoria'; -$_MODULE['<{productscategory}prestashop>productscategory_1d269d7f013c3d9d891a146f4379eb02'] = 'Afegeix un bloc a la pàgina de producte que mostra productes de la mateixa categoria.'; -$_MODULE['<{productscategory}prestashop>productscategory_8dd2f915acf4ec98006d11c9a4b0945b'] = 'Configuració actualitzada amb èxit'; -$_MODULE['<{productscategory}prestashop>productscategory_f4f70727dc34561dfde1a3c529b6205c'] = 'Configuració'; -$_MODULE['<{productscategory}prestashop>productscategory_e06ba84b50810a88438ae0537405f65a'] = 'Mostrar els preus dels productes'; -$_MODULE['<{productscategory}prestashop>productscategory_1d986024f548d57b1d743ec7ea9b09d9'] = 'Mostra els preus dels productes mostrats al bloc.'; -$_MODULE['<{productscategory}prestashop>productscategory_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activat'; -$_MODULE['<{productscategory}prestashop>productscategory_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivat'; -$_MODULE['<{productscategory}prestashop>productscategory_c9cc8cce247e49bae79f15173ce97354'] = 'Desar'; -$_MODULE['<{productscategory}prestashop>productscategory_dd1f775e443ff3b9a89270713580a51b'] = 'Anterior'; -$_MODULE['<{productscategory}prestashop>productscategory_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'Següent'; -$_MODULE['<{productscategory}prestashop>productscategory_2d0f6b8300be19cf35e89e66f0677f95'] = 'Afegir al carret'; - - -return $_MODULE; diff --git a/modules/productscategory/translations/de.php b/modules/productscategory/translations/de.php deleted file mode 100644 index 6c1910942..000000000 --- a/modules/productscategory/translations/de.php +++ /dev/null @@ -1,22 +0,0 @@ -productscategory_8a4f5a66d0fcc9d13614516db6e3d47a'] = 'Artikel der gleichen Kategorie'; -$_MODULE['<{productscategory}prestashop>productscategory_1d269d7f013c3d9d891a146f4379eb02'] = 'Erweitert die Artikelseite um einen Block der Artikel derselben Kategorie anzeigt.'; -$_MODULE['<{productscategory}prestashop>productscategory_8dd2f915acf4ec98006d11c9a4b0945b'] = 'Einstellungen erfolgreich aktualisiert'; -$_MODULE['<{productscategory}prestashop>productscategory_f4f70727dc34561dfde1a3c529b6205c'] = 'Einstellungen'; -$_MODULE['<{productscategory}prestashop>productscategory_e06ba84b50810a88438ae0537405f65a'] = 'Artikelpreis anzeigen'; -$_MODULE['<{productscategory}prestashop>productscategory_1d986024f548d57b1d743ec7ea9b09d9'] = 'Preise der eingeblendeten Artikel mitanzeigen'; -$_MODULE['<{productscategory}prestashop>productscategory_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Aktiviert'; -$_MODULE['<{productscategory}prestashop>productscategory_b9f5c797ebbf55adccdd8539a65a0241'] = 'Deaktiviert'; -$_MODULE['<{productscategory}prestashop>productscategory_c9cc8cce247e49bae79f15173ce97354'] = 'Speichern'; -$_MODULE['<{productscategory}prestashop>productscategory_f55e0a28b86c2ab66ac632ab9ddf1833'] = '%s anderes Produkt in der gleichen Kategorie:'; -$_MODULE['<{productscategory}prestashop>productscategory_bebb44f38b03407098d48198c1d0aaa5'] = '%s andere Produkte in der gleichen Kategorie:'; -$_MODULE['<{productscategory}prestashop>productscategory_dd1f775e443ff3b9a89270713580a51b'] = 'Zurück'; -$_MODULE['<{productscategory}prestashop>productscategory_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'Weiter'; -$_MODULE['<{productscategory}prestashop>productscategory_2d0f6b8300be19cf35e89e66f0677f95'] = 'In den Warenkorb'; - - -return $_MODULE; diff --git a/modules/productscategory/translations/en.php b/modules/productscategory/translations/en.php deleted file mode 100644 index 73ec38db4..000000000 --- a/modules/productscategory/translations/en.php +++ /dev/null @@ -1,22 +0,0 @@ -productscategory_8a4f5a66d0fcc9d13614516db6e3d47a'] = 'Products in the same category'; -$_MODULE['<{productscategory}prestashop>productscategory_1d269d7f013c3d9d891a146f4379eb02'] = 'Adds a block on the product page that displays products from the same category.'; -$_MODULE['<{productscategory}prestashop>productscategory_8dd2f915acf4ec98006d11c9a4b0945b'] = 'Settings updated successfully.'; -$_MODULE['<{productscategory}prestashop>productscategory_f4f70727dc34561dfde1a3c529b6205c'] = 'Settings'; -$_MODULE['<{productscategory}prestashop>productscategory_e06ba84b50810a88438ae0537405f65a'] = 'Display products\' prices'; -$_MODULE['<{productscategory}prestashop>productscategory_1d986024f548d57b1d743ec7ea9b09d9'] = 'Show the prices of the products displayed in the block.'; -$_MODULE['<{productscategory}prestashop>productscategory_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled'; -$_MODULE['<{productscategory}prestashop>productscategory_b9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled'; -$_MODULE['<{productscategory}prestashop>productscategory_c9cc8cce247e49bae79f15173ce97354'] = 'Save'; -$_MODULE['<{productscategory}prestashop>productscategory_f55e0a28b86c2ab66ac632ab9ddf1833'] = '%s other product in the same category:'; -$_MODULE['<{productscategory}prestashop>productscategory_bebb44f38b03407098d48198c1d0aaa5'] = '%s other products in the same category:'; -$_MODULE['<{productscategory}prestashop>productscategory_dd1f775e443ff3b9a89270713580a51b'] = 'Previous'; -$_MODULE['<{productscategory}prestashop>productscategory_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'Next'; -$_MODULE['<{productscategory}prestashop>productscategory_2d0f6b8300be19cf35e89e66f0677f95'] = 'Add to cart'; - - -return $_MODULE; diff --git a/modules/productscategory/translations/es.php b/modules/productscategory/translations/es.php deleted file mode 100644 index da06023d2..000000000 --- a/modules/productscategory/translations/es.php +++ /dev/null @@ -1,22 +0,0 @@ -productscategory_8a4f5a66d0fcc9d13614516db6e3d47a'] = 'Productos en la misma categoría'; -$_MODULE['<{productscategory}prestashop>productscategory_1d269d7f013c3d9d891a146f4379eb02'] = 'Añade un bloque a la página del producto que muestra más productos de la misma categoría.'; -$_MODULE['<{productscategory}prestashop>productscategory_8dd2f915acf4ec98006d11c9a4b0945b'] = 'Parámetros actualizados con éxito'; -$_MODULE['<{productscategory}prestashop>productscategory_f4f70727dc34561dfde1a3c529b6205c'] = 'Ajustes'; -$_MODULE['<{productscategory}prestashop>productscategory_e06ba84b50810a88438ae0537405f65a'] = 'Muestra el precio de los productos'; -$_MODULE['<{productscategory}prestashop>productscategory_1d986024f548d57b1d743ec7ea9b09d9'] = 'Muestra el precio de los productos mostrados en el bloque.'; -$_MODULE['<{productscategory}prestashop>productscategory_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado'; -$_MODULE['<{productscategory}prestashop>productscategory_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado'; -$_MODULE['<{productscategory}prestashop>productscategory_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar'; -$_MODULE['<{productscategory}prestashop>productscategory_f55e0a28b86c2ab66ac632ab9ddf1833'] = '%s producto más en la misma categoría:'; -$_MODULE['<{productscategory}prestashop>productscategory_bebb44f38b03407098d48198c1d0aaa5'] = '%s productos más en la misma categoría:'; -$_MODULE['<{productscategory}prestashop>productscategory_dd1f775e443ff3b9a89270713580a51b'] = 'Anterior'; -$_MODULE['<{productscategory}prestashop>productscategory_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'Siguiente'; -$_MODULE['<{productscategory}prestashop>productscategory_2d0f6b8300be19cf35e89e66f0677f95'] = 'Añadir al carrito'; - - -return $_MODULE; diff --git a/modules/productscategory/translations/fr.php b/modules/productscategory/translations/fr.php deleted file mode 100644 index 3680da4dc..000000000 --- a/modules/productscategory/translations/fr.php +++ /dev/null @@ -1,22 +0,0 @@ -productscategory_8a4f5a66d0fcc9d13614516db6e3d47a'] = 'Produits dans la même catégorie'; -$_MODULE['<{productscategory}prestashop>productscategory_1d269d7f013c3d9d891a146f4379eb02'] = 'Ajoute un bloc sur la fiche produit pour afficher des produits de la même catégorie.'; -$_MODULE['<{productscategory}prestashop>productscategory_8dd2f915acf4ec98006d11c9a4b0945b'] = 'Paramètres mis à jour avec succès'; -$_MODULE['<{productscategory}prestashop>productscategory_f4f70727dc34561dfde1a3c529b6205c'] = 'Paramètres'; -$_MODULE['<{productscategory}prestashop>productscategory_e06ba84b50810a88438ae0537405f65a'] = 'Afficher les prix des produits'; -$_MODULE['<{productscategory}prestashop>productscategory_1d986024f548d57b1d743ec7ea9b09d9'] = 'Afficher les prix des produits affichés dans le bloc.'; -$_MODULE['<{productscategory}prestashop>productscategory_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé'; -$_MODULE['<{productscategory}prestashop>productscategory_b9f5c797ebbf55adccdd8539a65a0241'] = 'Désactivé'; -$_MODULE['<{productscategory}prestashop>productscategory_c9cc8cce247e49bae79f15173ce97354'] = 'Enregistrer'; -$_MODULE['<{productscategory}prestashop>productscategory_f55e0a28b86c2ab66ac632ab9ddf1833'] = '%s autre produit dans la même catégorie :'; -$_MODULE['<{productscategory}prestashop>productscategory_bebb44f38b03407098d48198c1d0aaa5'] = '%s autres produits dans la même catégorie :'; -$_MODULE['<{productscategory}prestashop>productscategory_dd1f775e443ff3b9a89270713580a51b'] = 'Précédent'; -$_MODULE['<{productscategory}prestashop>productscategory_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'Suivant'; -$_MODULE['<{productscategory}prestashop>productscategory_2d0f6b8300be19cf35e89e66f0677f95'] = 'Ajouter au panier'; - - -return $_MODULE; diff --git a/modules/productscategory/translations/gl.php b/modules/productscategory/translations/gl.php deleted file mode 100644 index 857f3c3d0..000000000 --- a/modules/productscategory/translations/gl.php +++ /dev/null @@ -1,14 +0,0 @@ -productscategory_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado'; -$_MODULE['<{productscategory}prestashop>productscategory_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado'; -$_MODULE['<{productscategory}prestashop>productscategory_c9cc8cce247e49bae79f15173ce97354'] = 'Gardar'; -$_MODULE['<{productscategory}prestashop>productscategory_dd1f775e443ff3b9a89270713580a51b'] = 'Previo'; -$_MODULE['<{productscategory}prestashop>productscategory_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'Seguinte'; -$_MODULE['<{productscategory}prestashop>productscategory_2d0f6b8300be19cf35e89e66f0677f95'] = 'Engadir á cesta'; - - -return $_MODULE; diff --git a/modules/productscategory/translations/id.php b/modules/productscategory/translations/id.php deleted file mode 100644 index 93232b33b..000000000 --- a/modules/productscategory/translations/id.php +++ /dev/null @@ -1,22 +0,0 @@ -productscategory_8a4f5a66d0fcc9d13614516db6e3d47a'] = 'Produk di kategori yang sama'; -$_MODULE['<{productscategory}prestashop>productscategory_1d269d7f013c3d9d891a146f4379eb02'] = 'Tambahkan blok halaman produk yang berisi produk-produk yang ada dalam kategori yang sama.'; -$_MODULE['<{productscategory}prestashop>productscategory_8dd2f915acf4ec98006d11c9a4b0945b'] = 'Seting berhasil disimpan'; -$_MODULE['<{productscategory}prestashop>productscategory_f4f70727dc34561dfde1a3c529b6205c'] = 'Seting'; -$_MODULE['<{productscategory}prestashop>productscategory_e06ba84b50810a88438ae0537405f65a'] = 'Tampilkan harga produk'; -$_MODULE['<{productscategory}prestashop>productscategory_1d986024f548d57b1d743ec7ea9b09d9'] = 'Tampilkan harga produk yang ditampilkan di blok.'; -$_MODULE['<{productscategory}prestashop>productscategory_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Aktifkan'; -$_MODULE['<{productscategory}prestashop>productscategory_b9f5c797ebbf55adccdd8539a65a0241'] = 'Nonaktifkan'; -$_MODULE['<{productscategory}prestashop>productscategory_c9cc8cce247e49bae79f15173ce97354'] = 'Simpan'; -$_MODULE['<{productscategory}prestashop>productscategory_f55e0a28b86c2ab66ac632ab9ddf1833'] = '%s produk lainnya dikategori yang sama:'; -$_MODULE['<{productscategory}prestashop>productscategory_bebb44f38b03407098d48198c1d0aaa5'] = '%s produk lainnya dikategori yang sama:'; -$_MODULE['<{productscategory}prestashop>productscategory_dd1f775e443ff3b9a89270713580a51b'] = 'Sebelumnya'; -$_MODULE['<{productscategory}prestashop>productscategory_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'Berikutnya'; -$_MODULE['<{productscategory}prestashop>productscategory_2d0f6b8300be19cf35e89e66f0677f95'] = 'Beli'; - - -return $_MODULE; diff --git a/modules/productscategory/translations/index.php b/modules/productscategory/translations/index.php index 044cb85ee..e5064df41 100644 --- a/modules/productscategory/translations/index.php +++ b/modules/productscategory/translations/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/productscategory/translations/nl.php b/modules/productscategory/translations/nl.php deleted file mode 100644 index 8cedd16a6..000000000 --- a/modules/productscategory/translations/nl.php +++ /dev/null @@ -1,22 +0,0 @@ -productscategory_8a4f5a66d0fcc9d13614516db6e3d47a'] = 'Producten in dezelfde categorie'; -$_MODULE['<{productscategory}prestashop>productscategory_1d269d7f013c3d9d891a146f4379eb02'] = 'Voegt een blok toe aan de productpagina die producten van dezelfde categorie toont.'; -$_MODULE['<{productscategory}prestashop>productscategory_8dd2f915acf4ec98006d11c9a4b0945b'] = 'Instellingen zijn met succes bijgewerkt'; -$_MODULE['<{productscategory}prestashop>productscategory_f4f70727dc34561dfde1a3c529b6205c'] = 'Instellingen'; -$_MODULE['<{productscategory}prestashop>productscategory_e06ba84b50810a88438ae0537405f65a'] = 'Toon de product prijzen'; -$_MODULE['<{productscategory}prestashop>productscategory_1d986024f548d57b1d743ec7ea9b09d9'] = 'Toon de prijzen van de producten die getoond worden in het blok.'; -$_MODULE['<{productscategory}prestashop>productscategory_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Ingeschakeld'; -$_MODULE['<{productscategory}prestashop>productscategory_b9f5c797ebbf55adccdd8539a65a0241'] = 'Uitgeschakeld'; -$_MODULE['<{productscategory}prestashop>productscategory_c9cc8cce247e49bae79f15173ce97354'] = 'Opslaan'; -$_MODULE['<{productscategory}prestashop>productscategory_f55e0a28b86c2ab66ac632ab9ddf1833'] = '%s ander product in dezelfde categorie:'; -$_MODULE['<{productscategory}prestashop>productscategory_bebb44f38b03407098d48198c1d0aaa5'] = '%s andere producten in dezelfde categorie:'; -$_MODULE['<{productscategory}prestashop>productscategory_dd1f775e443ff3b9a89270713580a51b'] = 'Vorige'; -$_MODULE['<{productscategory}prestashop>productscategory_10ac3d04253ef7e1ddc73e6091c0cd55'] = 'Volgende'; -$_MODULE['<{productscategory}prestashop>productscategory_2d0f6b8300be19cf35e89e66f0677f95'] = 'In winkelwagen'; - - -return $_MODULE; diff --git a/modules/productscategory/upgrade/index.php b/modules/productscategory/upgrade/index.php index 5244cdaa4..531cab52a 100644 --- a/modules/productscategory/upgrade/index.php +++ b/modules/productscategory/upgrade/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/productscategory/upgrade/install-1.4.php b/modules/productscategory/upgrade/install-1.4.php index 8784be527..76883a27e 100644 --- a/modules/productscategory/upgrade/install-1.4.php +++ b/modules/productscategory/upgrade/install-1.4.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/productscategory/upgrade/install-1.5.php b/modules/productscategory/upgrade/install-1.5.php index 276689359..a41327bdd 100644 --- a/modules/productscategory/upgrade/install-1.5.php +++ b/modules/productscategory/upgrade/install-1.5.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/productscategory/views/index.php b/modules/productscategory/views/index.php index 5244cdaa4..531cab52a 100644 --- a/modules/productscategory/views/index.php +++ b/modules/productscategory/views/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/productscategory/views/templates/hook/index.php b/modules/productscategory/views/templates/hook/index.php index 5244cdaa4..531cab52a 100644 --- a/modules/productscategory/views/templates/hook/index.php +++ b/modules/productscategory/views/templates/hook/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/productscategory/views/templates/hook/productscategory.tpl b/modules/productscategory/views/templates/hook/productscategory.tpl index 0d01226c3..6409ccb43 100644 --- a/modules/productscategory/views/templates/hook/productscategory.tpl +++ b/modules/productscategory/views/templates/hook/productscategory.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2016 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/modules/productscategory/views/templates/index.php b/modules/productscategory/views/templates/index.php index 5244cdaa4..531cab52a 100644 --- a/modules/productscategory/views/templates/index.php +++ b/modules/productscategory/views/templates/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/producttooltip/CHANGELOG.txt b/modules/producttooltip/CHANGELOG.txt index ed9122c36..31eb31871 100644 --- a/modules/producttooltip/CHANGELOG.txt +++ b/modules/producttooltip/CHANGELOG.txt @@ -1,3 +1,12 @@ +------------------------------ +# V1.3.1 to V1.4.1 +------------------------------ + +## Improved/Changed Features: + +* [CO] : Updated with latest PS version - 1.6.1.23. + + 2014-04-17 11:40:09 +0200 Bug fix (PS 1.5): ps_version_compliancy removed 2014-03-24 15:22:23 +0100 / MO producttooltip : ps_versions_compliancy added 2014-03-20 14:35:35 +0100 Initial commit diff --git a/modules/producttooltip/Readme.md b/modules/producttooltip/Readme.md deleted file mode 100644 index bfe4af14d..000000000 --- a/modules/producttooltip/Readme.md +++ /dev/null @@ -1,37 +0,0 @@ -# Product tooltips - -## About - -Shows information on a product page: how many people are viewing it, the last time it was sold and the last time it was added to a cart. - -## Contributing - -PrestaShop modules are open-source extensions to the PrestaShop e-commerce solution. Everyone is welcome and even encouraged to contribute with their own improvements. - -### Requirements - -Contributors **must** follow the following rules: - -* **Make your Pull Request on the "dev" branch**, NOT the "master" branch. -* Do not update the module's version number. -* Follow [the coding standards][1]. - -### Process in details - -Contributors wishing to edit a module's files should follow the following process: - -1. Create your GitHub account, if you do not have one already. -2. Fork the producttooltip project to your GitHub account. -3. Clone your fork to your local machine in the ```/modules``` directory of your PrestaShop installation. -4. Create a branch in your local clone of the module for your changes. -5. Change the files in your branch. Be sure to follow [the coding standards][1]! -6. Push your changed branch to your fork in your GitHub account. -7. Create a pull request for your changes **on the _'dev'_ branch** of the module's project. Be sure to follow [the commit message norm][2] in your pull request. If you need help to make a pull request, read the [Github help page about creating pull requests][3]. -8. Wait for one of the core developers either to include your change in the codebase, or to comment on possible improvements you should make to your code. - -That's it: you have contributed to this open-source project! Congratulations! - -[1]: http://doc.prestashop.com/display/PS16/Coding+Standards -[2]: http://doc.prestashop.com/display/PS16/How+to+write+a+commit+message -[3]: https://help.github.com/articles/using-pull-requests - diff --git a/modules/producttooltip/config.xml b/modules/producttooltip/config.xml deleted file mode 100644 index f43f075bd..000000000 --- a/modules/producttooltip/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - producttooltip - - - - - - 1 - 0 - - \ No newline at end of file diff --git a/modules/producttooltip/index.php b/modules/producttooltip/index.php index 9f6ab7b95..531cab52a 100644 --- a/modules/producttooltip/index.php +++ b/modules/producttooltip/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/producttooltip/producttooltip.php b/modules/producttooltip/producttooltip.php index 36d374e0e..83d6896e7 100644 --- a/modules/producttooltip/producttooltip.php +++ b/modules/producttooltip/producttooltip.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -33,7 +33,7 @@ class ProductToolTip extends Module { $this->name = 'producttooltip'; $this->tab = 'front_office_features'; - $this->version = '1.3.1'; + $this->version = '1.4.1'; $this->author = 'PrestaShop'; $this->need_instance = 0; @@ -42,6 +42,7 @@ class ProductToolTip extends Module $this->displayName = $this->l('Product tooltips'); $this->description = $this->l('Shows information on a product page: how many people are viewing it, the last time it was sold and the last time it was added to a cart.'); + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.6.99.99'); } public function install() diff --git a/modules/producttooltip/translations/ag.php b/modules/producttooltip/translations/ag.php deleted file mode 100644 index 4260bc695..000000000 --- a/modules/producttooltip/translations/ag.php +++ /dev/null @@ -1,32 +0,0 @@ -producttooltip_4776f7eb5998034f7bbc63b6457d1ff4'] = 'Ventana de información producto'; -$_MODULE['<{producttooltip}prestashop>producttooltip_0406dc99f3d31535975fdddf6f4ae4d3'] = 'Mostrar información del producto en la página: cuantas personas estan viendo este, la última vez que fue vendido y la última vez que se añadió a un carrito.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c888438d14855d7d96a2724ee9c306bd'] = 'Configuración Actualizada'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f4f70727dc34561dfde1a3c529b6205c'] = 'Ajustes'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6a3f9bbed911bae4ffe5ab84294d7b9f'] = 'Número de visitantes'; -$_MODULE['<{producttooltip}prestashop>producttooltip_5c65d0f105e43f5186c1275fb83a661a'] = 'Mostrar el número de visitantes que están viendo este producto.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6ce86506e83863b6414e760c8406e156'] = 'Si se activa la opción anterior, debe activar la primera opción ("Guardar páginas vistas por cada cliente") del módulo "Explotación de datos para las estadísticas (Analisis y Estadísticas)".'; -$_MODULE['<{producttooltip}prestashop>producttooltip_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado'; -$_MODULE['<{producttooltip}prestashop>producttooltip_18522b8438c82ae472267ff57e8db76f'] = 'Tiempo del periodo'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3367d7aeafaae0cfdb8334d6e442a58f'] = 'Establecer el periodo de tiempo.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_946e06ba50194b981f04263795ed1433'] = 'Por ejemplo, si pones 30 minutos, el módulo mostrará el número de visitantes en los últimos 30 minutos.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_640fd0cc0ffa0316ae087652871f4486'] = 'minutos'; -$_MODULE['<{producttooltip}prestashop>producttooltip_788b212e2524ec85463d68861342693c'] = 'Fecha del último pedido'; -$_MODULE['<{producttooltip}prestashop>producttooltip_43e5b083da426132daf3a9fe05362da3'] = 'Mostrar la última vez que se compró este producto.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f6916943428105792f433c337f4e9522'] = 'Añadido al carrito'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3829b2b4ac783c8e53a25f5cd007224b'] = 'Si el producto no se ha comprado aún, se mostrará la última vez que alguien lo añadió al carrito.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_7f2a0ec5efa8b7aaa2d814df0d18b722'] = 'No muestres eventos más antiguos que'; -$_MODULE['<{producttooltip}prestashop>producttooltip_44fdec47036f482b68b748f9d786801b'] = 'días'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar'; -$_MODULE['<{producttooltip}prestashop>producttooltip_265e0fd0901e35cae9978e2319b6c32e'] = '%d persona está actualmente viendo este producto.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_858d0bcd440ff0d1cc1e6bd53d4fe9f6'] = '%d personas están viendo este producto.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b2ccdeedefb87a6f4c52b0926b030d65'] = 'Última vez que fue comprado este producto: '; -$_MODULE['<{producttooltip}prestashop>producttooltip_f934c297c7d902f5871edb4a12acbb84'] = 'Última vez que se añadió este producto al carrito: '; - - -return $_MODULE; diff --git a/modules/producttooltip/translations/ar.php b/modules/producttooltip/translations/ar.php deleted file mode 100644 index c91f22721..000000000 --- a/modules/producttooltip/translations/ar.php +++ /dev/null @@ -1,14 +0,0 @@ -producttooltip_c888438d14855d7d96a2724ee9c306bd'] = 'تم تحديث الإعدادات بنجاح'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f4f70727dc34561dfde1a3c529b6205c'] = 'الإعدادات'; -$_MODULE['<{producttooltip}prestashop>producttooltip_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'مفعل'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b9f5c797ebbf55adccdd8539a65a0241'] = 'غير مفعل'; -$_MODULE['<{producttooltip}prestashop>producttooltip_640fd0cc0ffa0316ae087652871f4486'] = 'دقائق'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c9cc8cce247e49bae79f15173ce97354'] = 'حفظ'; - - -return $_MODULE; diff --git a/modules/producttooltip/translations/bg.php b/modules/producttooltip/translations/bg.php deleted file mode 100644 index 33154c885..000000000 --- a/modules/producttooltip/translations/bg.php +++ /dev/null @@ -1,32 +0,0 @@ -producttooltip_4776f7eb5998034f7bbc63b6457d1ff4'] = 'Пояснения за продукта'; -$_MODULE['<{producttooltip}prestashop>producttooltip_0406dc99f3d31535975fdddf6f4ae4d3'] = 'Показва информация на страница с продукт: колко хора са го прегледали, последният път, когато е направена продажба и последният път, когато е добавен в количка.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c888438d14855d7d96a2724ee9c306bd'] = 'Настройките са обновени'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f4f70727dc34561dfde1a3c529b6205c'] = 'Настройки'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6a3f9bbed911bae4ffe5ab84294d7b9f'] = 'Брой посетители'; -$_MODULE['<{producttooltip}prestashop>producttooltip_5c65d0f105e43f5186c1275fb83a661a'] = 'Показване на броя хора, които в момента разглеждат този продукт.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6ce86506e83863b6414e760c8406e156'] = 'Ако активирате горната опция, трябва да активирате и първата опция ("Съхраняване на прегледите на страницата за всеки клиент") от модула "Събиране на данни за статистиката" (StatsData).'; -$_MODULE['<{producttooltip}prestashop>producttooltip_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Активен'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b9f5c797ebbf55adccdd8539a65a0241'] = 'Забранено'; -$_MODULE['<{producttooltip}prestashop>producttooltip_18522b8438c82ae472267ff57e8db76f'] = 'Продължителност на периода'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3367d7aeafaae0cfdb8334d6e442a58f'] = 'Задаване на дължина на периода на референцията.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_946e06ba50194b981f04263795ed1433'] = 'Например, ако е зададено 30 минути, модулът показва броя посетители в последните 30 минути.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_640fd0cc0ffa0316ae087652871f4486'] = 'минути'; -$_MODULE['<{producttooltip}prestashop>producttooltip_788b212e2524ec85463d68861342693c'] = 'Дата на последната поръчка'; -$_MODULE['<{producttooltip}prestashop>producttooltip_43e5b083da426132daf3a9fe05362da3'] = 'Показване на последния път, когато продуктът е бил поръчван.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f6916943428105792f433c337f4e9522'] = 'Добавено към количката'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3829b2b4ac783c8e53a25f5cd007224b'] = 'Ако продуктът все още не е бил поръчван, да се покаже времето, когато последно е бил добавен към количката.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_7f2a0ec5efa8b7aaa2d814df0d18b722'] = 'Не показвай събития по-стари от'; -$_MODULE['<{producttooltip}prestashop>producttooltip_44fdec47036f482b68b748f9d786801b'] = 'дни'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c9cc8cce247e49bae79f15173ce97354'] = 'Запазване'; -$_MODULE['<{producttooltip}prestashop>producttooltip_265e0fd0901e35cae9978e2319b6c32e'] = '%d потребител в момента разглежда продукта.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_858d0bcd440ff0d1cc1e6bd53d4fe9f6'] = '%d хора в момента разглеждат продукта.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b2ccdeedefb87a6f4c52b0926b030d65'] = 'Кога последно този продукт е бил закупен: '; -$_MODULE['<{producttooltip}prestashop>producttooltip_f934c297c7d902f5871edb4a12acbb84'] = 'Кога последно този продукт е бил добавен към количката: '; - - -return $_MODULE; diff --git a/modules/producttooltip/translations/br.php b/modules/producttooltip/translations/br.php deleted file mode 100644 index 4a35426ae..000000000 --- a/modules/producttooltip/translations/br.php +++ /dev/null @@ -1,32 +0,0 @@ -producttooltip_4776f7eb5998034f7bbc63b6457d1ff4'] = 'Dicas de produtos'; -$_MODULE['<{producttooltip}prestashop>producttooltip_0406dc99f3d31535975fdddf6f4ae4d3'] = 'Mostra informações na página do produto: quantas pessoas estão visualizando o mesmo, a última vez que ele foi vendido e na última vez que foi adicionado ao carrinho.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c888438d14855d7d96a2724ee9c306bd'] = 'Configurações atualizadas'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f4f70727dc34561dfde1a3c529b6205c'] = 'Configurações'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6a3f9bbed911bae4ffe5ab84294d7b9f'] = 'Número de visitantes'; -$_MODULE['<{producttooltip}prestashop>producttooltip_5c65d0f105e43f5186c1275fb83a661a'] = 'Mostrar o número de pessoas que estão vendo o produto agora.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6ce86506e83863b6414e760c8406e156'] = 'Se você ativar a opção acima, você deve ativar a primeira opção (\\"Salvar visualizações para cada cliente\\") do módulo \\"Coleta de dados para estatísticas\\" (StatsData).'; -$_MODULE['<{producttooltip}prestashop>producttooltip_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Ativado'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desativado'; -$_MODULE['<{producttooltip}prestashop>producttooltip_18522b8438c82ae472267ff57e8db76f'] = 'Período '; -$_MODULE['<{producttooltip}prestashop>producttooltip_3367d7aeafaae0cfdb8334d6e442a58f'] = 'Defina o período de referência.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_946e06ba50194b981f04263795ed1433'] = 'Por exemplo, se definido para 30 minutos, o módulo apresentará o número de visitantes nos últimos 30 minutos.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_640fd0cc0ffa0316ae087652871f4486'] = 'minutos'; -$_MODULE['<{producttooltip}prestashop>producttooltip_788b212e2524ec85463d68861342693c'] = 'Data da última compra'; -$_MODULE['<{producttooltip}prestashop>producttooltip_43e5b083da426132daf3a9fe05362da3'] = 'Mostrar a última vez que o produto foi comprado.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f6916943428105792f433c337f4e9522'] = 'Adicionado ao carrinho'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3829b2b4ac783c8e53a25f5cd007224b'] = 'Se o produto ainda nunca foi comprado, exibir a última vez que foi adicionado ao carrinho.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_7f2a0ec5efa8b7aaa2d814df0d18b722'] = 'Não mostrar eventos mais velhos que'; -$_MODULE['<{producttooltip}prestashop>producttooltip_44fdec47036f482b68b748f9d786801b'] = 'dias'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c9cc8cce247e49bae79f15173ce97354'] = 'Salvar'; -$_MODULE['<{producttooltip}prestashop>producttooltip_265e0fd0901e35cae9978e2319b6c32e'] = '%d pessoa está vendo este produto.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_858d0bcd440ff0d1cc1e6bd53d4fe9f6'] = '%d pessoas estão vendo este produto.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b2ccdeedefb87a6f4c52b0926b030d65'] = 'Este produto foi comprado a última vez em: '; -$_MODULE['<{producttooltip}prestashop>producttooltip_f934c297c7d902f5871edb4a12acbb84'] = 'Este produto foi adicionado ao carrinho pela última vez em: '; - - -return $_MODULE; diff --git a/modules/producttooltip/translations/ca.php b/modules/producttooltip/translations/ca.php deleted file mode 100644 index 7315a2c2e..000000000 --- a/modules/producttooltip/translations/ca.php +++ /dev/null @@ -1,32 +0,0 @@ -producttooltip_4776f7eb5998034f7bbc63b6457d1ff4'] = 'Tooltips de producte'; -$_MODULE['<{producttooltip}prestashop>producttooltip_0406dc99f3d31535975fdddf6f4ae4d3'] = 'Mostra informació a la pàgina del producte: quantes persones l\'han visualitzat, la darrera vegada que es va vendre i la darrera vegada que va ser afegit a un carret.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c888438d14855d7d96a2724ee9c306bd'] = 'Configuració modificada'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f4f70727dc34561dfde1a3c529b6205c'] = 'Configuració'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6a3f9bbed911bae4ffe5ab84294d7b9f'] = 'Nombre de visitants'; -$_MODULE['<{producttooltip}prestashop>producttooltip_5c65d0f105e43f5186c1275fb83a661a'] = 'Mostra el nombre de persones que actualment estan veient aquest producte.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6ce86506e83863b6414e760c8406e156'] = 'Si activeu aquesta opció a dalt, heu d\'activar primer l\'opció ("Desar visualitzacions de pàgina per a cada client") al mòdul "Mineria de dades per a estadística" (StatsData).'; -$_MODULE['<{producttooltip}prestashop>producttooltip_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activat'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivat'; -$_MODULE['<{producttooltip}prestashop>producttooltip_18522b8438c82ae472267ff57e8db76f'] = 'Durada del periode'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3367d7aeafaae0cfdb8334d6e442a58f'] = 'Establiu la durada del periode de referència.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_946e06ba50194b981f04263795ed1433'] = 'Per exemple, si es defineix a 30 minuts, el mòdul mostra el nombre de visitants els darrers 30 minuts.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_640fd0cc0ffa0316ae087652871f4486'] = 'minuts'; -$_MODULE['<{producttooltip}prestashop>producttooltip_788b212e2524ec85463d68861342693c'] = 'Darrera data de comanda'; -$_MODULE['<{producttooltip}prestashop>producttooltip_43e5b083da426132daf3a9fe05362da3'] = 'Mostra la darrera vegada que el producte ha estat comandat.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f6916943428105792f433c337f4e9522'] = 'Afegit al carret'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3829b2b4ac783c8e53a25f5cd007224b'] = 'Si el producte no ha estat encara comandat, mostra la darrera vegada que es va afegir a un carret.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_7f2a0ec5efa8b7aaa2d814df0d18b722'] = 'No mostrar els esdeveniments anteriors a'; -$_MODULE['<{producttooltip}prestashop>producttooltip_44fdec47036f482b68b748f9d786801b'] = 'dies'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c9cc8cce247e49bae79f15173ce97354'] = 'Desar'; -$_MODULE['<{producttooltip}prestashop>producttooltip_265e0fd0901e35cae9978e2319b6c32e'] = 'Hi ha %d persones veient aquest producte.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_858d0bcd440ff0d1cc1e6bd53d4fe9f6'] = 'Hi ha %d persones veient aquest producte ara mateix.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b2ccdeedefb87a6f4c52b0926b030d65'] = 'Darrerra vegada que va ser adquirit aquest producte: '; -$_MODULE['<{producttooltip}prestashop>producttooltip_f934c297c7d902f5871edb4a12acbb84'] = 'Darrera vegada que aquest producte va ser afegit a un carret: '; - - -return $_MODULE; diff --git a/modules/producttooltip/translations/de.php b/modules/producttooltip/translations/de.php deleted file mode 100644 index f819d0bd1..000000000 --- a/modules/producttooltip/translations/de.php +++ /dev/null @@ -1,32 +0,0 @@ -producttooltip_4776f7eb5998034f7bbc63b6457d1ff4'] = 'Artikel-Tooltips'; -$_MODULE['<{producttooltip}prestashop>producttooltip_0406dc99f3d31535975fdddf6f4ae4d3'] = 'Zeigt Informationen auf der Produktseite: Wie oft gesehen, wann zuletzt verkauft, wann zuletzt in den Warenkorb gelegt.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c888438d14855d7d96a2724ee9c306bd'] = 'Einstellungen aktualisiert'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f4f70727dc34561dfde1a3c529b6205c'] = 'Einstellungen'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6a3f9bbed911bae4ffe5ab84294d7b9f'] = 'Anzahl Besucher'; -$_MODULE['<{producttooltip}prestashop>producttooltip_5c65d0f105e43f5186c1275fb83a661a'] = 'Anzeigen, wie viele Besucher sich aktuell diesen Artikel ansehen.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6ce86506e83863b6414e760c8406e156'] = 'Um diese Option zu aktivieren, muss zunächst die erste Option des Moduls Statistik ("Seitenaufrufe für jeden Kunden speichern") aktiviert werden.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Aktiviert'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b9f5c797ebbf55adccdd8539a65a0241'] = 'Deaktiviert'; -$_MODULE['<{producttooltip}prestashop>producttooltip_18522b8438c82ae472267ff57e8db76f'] = 'Zeitraum'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3367d7aeafaae0cfdb8334d6e442a58f'] = 'Länge der Bezugsperiode festlegen'; -$_MODULE['<{producttooltip}prestashop>producttooltip_946e06ba50194b981f04263795ed1433'] = 'So bedeutet bspw. die Eingabe von 30 Minuten, dass die Besucherzahl der letzten 30 Minuten angezeigt wird.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_640fd0cc0ffa0316ae087652871f4486'] = 'Minuten'; -$_MODULE['<{producttooltip}prestashop>producttooltip_788b212e2524ec85463d68861342693c'] = 'Letztes Bestelldatum'; -$_MODULE['<{producttooltip}prestashop>producttooltip_43e5b083da426132daf3a9fe05362da3'] = 'Datum der letzten Bestellung dieses Produkts anzeigen.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f6916943428105792f433c337f4e9522'] = 'In einen Warenkorb gelegt'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3829b2b4ac783c8e53a25f5cd007224b'] = 'Falls der Artikel noch nicht bestellt wurde, anzeigen, wann er das letzte Mal in einen Warenkorb gelegt wurde.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_7f2a0ec5efa8b7aaa2d814df0d18b722'] = 'Keine Vorgänge anzeigen älter als'; -$_MODULE['<{producttooltip}prestashop>producttooltip_44fdec47036f482b68b748f9d786801b'] = 'Tage'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c9cc8cce247e49bae79f15173ce97354'] = 'Speichern'; -$_MODULE['<{producttooltip}prestashop>producttooltip_265e0fd0901e35cae9978e2319b6c32e'] = '%d Person schaut sich gerade diesen Artikel an.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_858d0bcd440ff0d1cc1e6bd53d4fe9f6'] = '%d Personen schauen sich gerade diesen Artikel an.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b2ccdeedefb87a6f4c52b0926b030d65'] = 'Artikel zuletzt verkauft am: '; -$_MODULE['<{producttooltip}prestashop>producttooltip_f934c297c7d902f5871edb4a12acbb84'] = 'Artikel zuletzt in einem Warenkorb am: '; - - -return $_MODULE; diff --git a/modules/producttooltip/translations/en.php b/modules/producttooltip/translations/en.php deleted file mode 100644 index 20aa482ac..000000000 --- a/modules/producttooltip/translations/en.php +++ /dev/null @@ -1,32 +0,0 @@ -producttooltip_4776f7eb5998034f7bbc63b6457d1ff4'] = 'Product tooltips'; -$_MODULE['<{producttooltip}prestashop>producttooltip_0406dc99f3d31535975fdddf6f4ae4d3'] = 'Shows information on a product page: how many people are viewing it, the last time it was sold and the last time it was added to a cart.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c888438d14855d7d96a2724ee9c306bd'] = 'Settings updated'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f4f70727dc34561dfde1a3c529b6205c'] = 'Settings'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6a3f9bbed911bae4ffe5ab84294d7b9f'] = 'Number of visitors'; -$_MODULE['<{producttooltip}prestashop>producttooltip_5c65d0f105e43f5186c1275fb83a661a'] = 'Display the number of visitors who are currently watching this product.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6ce86506e83863b6414e760c8406e156'] = 'If you activate the option above, you must activate the first option ("Save page views for each customer") of the "Data mining for statistics" (StatsData) module.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled'; -$_MODULE['<{producttooltip}prestashop>producttooltip_18522b8438c82ae472267ff57e8db76f'] = 'Period length'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3367d7aeafaae0cfdb8334d6e442a58f'] = 'Set the reference period length.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_946e06ba50194b981f04263795ed1433'] = 'For instance, if set to 30 minutes, the module will display the number of visitors in the last 30 minutes.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_640fd0cc0ffa0316ae087652871f4486'] = 'minutes'; -$_MODULE['<{producttooltip}prestashop>producttooltip_788b212e2524ec85463d68861342693c'] = 'Last order date'; -$_MODULE['<{producttooltip}prestashop>producttooltip_43e5b083da426132daf3a9fe05362da3'] = 'Display the last time the product has been ordered.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f6916943428105792f433c337f4e9522'] = 'Added to a cart'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3829b2b4ac783c8e53a25f5cd007224b'] = 'If the product has not been ordered yet, display the last time it was added to a cart.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_7f2a0ec5efa8b7aaa2d814df0d18b722'] = 'Do not display events older than'; -$_MODULE['<{producttooltip}prestashop>producttooltip_44fdec47036f482b68b748f9d786801b'] = 'days'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c9cc8cce247e49bae79f15173ce97354'] = 'Save'; -$_MODULE['<{producttooltip}prestashop>producttooltip_265e0fd0901e35cae9978e2319b6c32e'] = '%d person is currently watching this product.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_858d0bcd440ff0d1cc1e6bd53d4fe9f6'] = '%d people are currently watching this product.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b2ccdeedefb87a6f4c52b0926b030d65'] = 'Last time this product was bought: '; -$_MODULE['<{producttooltip}prestashop>producttooltip_f934c297c7d902f5871edb4a12acbb84'] = 'Last time this product was added to a cart: '; - - -return $_MODULE; diff --git a/modules/producttooltip/translations/es.php b/modules/producttooltip/translations/es.php deleted file mode 100644 index 0075b3c6d..000000000 --- a/modules/producttooltip/translations/es.php +++ /dev/null @@ -1,32 +0,0 @@ -producttooltip_4776f7eb5998034f7bbc63b6457d1ff4'] = 'Ventana de información producto'; -$_MODULE['<{producttooltip}prestashop>producttooltip_0406dc99f3d31535975fdddf6f4ae4d3'] = 'Mostrar información del producto en la página: cuantas personas estan viendo este, la última vez que fue vendido y la última vez que se añadió a un carrito.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c888438d14855d7d96a2724ee9c306bd'] = 'Configuración actualizada'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f4f70727dc34561dfde1a3c529b6205c'] = 'Ajustes'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6a3f9bbed911bae4ffe5ab84294d7b9f'] = 'Número de visitantes'; -$_MODULE['<{producttooltip}prestashop>producttooltip_5c65d0f105e43f5186c1275fb83a661a'] = 'Mostrar el número de visitantes que están viendo este producto.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6ce86506e83863b6414e760c8406e156'] = 'Si se activa la opción anterior, debe activar la primera opción ("Guardar páginas vistas por cada cliente") del módulo "Explotación de datos para las estadísticas (Analisis y Estadísticas)".'; -$_MODULE['<{producttooltip}prestashop>producttooltip_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado'; -$_MODULE['<{producttooltip}prestashop>producttooltip_18522b8438c82ae472267ff57e8db76f'] = 'Tiempo del periodo'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3367d7aeafaae0cfdb8334d6e442a58f'] = 'Establecer el periodo de tiempo.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_946e06ba50194b981f04263795ed1433'] = 'Por ejemplo, si pones 30 minutos, el módulo mostrará el número de visitantes en los últimos 30 minutos.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_640fd0cc0ffa0316ae087652871f4486'] = 'minutos'; -$_MODULE['<{producttooltip}prestashop>producttooltip_788b212e2524ec85463d68861342693c'] = 'Fecha del último pedido'; -$_MODULE['<{producttooltip}prestashop>producttooltip_43e5b083da426132daf3a9fe05362da3'] = 'Mostrar la última vez que se compró este producto.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f6916943428105792f433c337f4e9522'] = 'Añadido al carrito'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3829b2b4ac783c8e53a25f5cd007224b'] = 'Si el producto no se ha comprado aún, se mostrará la última vez que alguien lo añadió al carrito.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_7f2a0ec5efa8b7aaa2d814df0d18b722'] = 'No muestres eventos más antiguos que'; -$_MODULE['<{producttooltip}prestashop>producttooltip_44fdec47036f482b68b748f9d786801b'] = 'días'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar'; -$_MODULE['<{producttooltip}prestashop>producttooltip_265e0fd0901e35cae9978e2319b6c32e'] = '%d persona está actualmente viendo este producto.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_858d0bcd440ff0d1cc1e6bd53d4fe9f6'] = '%d personas están viendo este producto.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b2ccdeedefb87a6f4c52b0926b030d65'] = 'Última vez que fue comprado este producto: '; -$_MODULE['<{producttooltip}prestashop>producttooltip_f934c297c7d902f5871edb4a12acbb84'] = 'Última vez que se añadió este producto al carrito: '; - - -return $_MODULE; diff --git a/modules/producttooltip/translations/fr.php b/modules/producttooltip/translations/fr.php deleted file mode 100644 index df75a3775..000000000 --- a/modules/producttooltip/translations/fr.php +++ /dev/null @@ -1,32 +0,0 @@ -producttooltip_4776f7eb5998034f7bbc63b6457d1ff4'] = 'Infobulles produit'; -$_MODULE['<{producttooltip}prestashop>producttooltip_0406dc99f3d31535975fdddf6f4ae4d3'] = 'Affiche des informations sur la page produit : nombre de gens actuellement en train de la parcourir, dernière fois que le produit a été vendu, et dernière qu\'il a été ajouté à un panier.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c888438d14855d7d96a2724ee9c306bd'] = 'Mise à jour réussie'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f4f70727dc34561dfde1a3c529b6205c'] = 'Paramètres'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6a3f9bbed911bae4ffe5ab84294d7b9f'] = 'Nombre de visiteurs'; -$_MODULE['<{producttooltip}prestashop>producttooltip_5c65d0f105e43f5186c1275fb83a661a'] = 'Affiche le nombre de personnes qui consultent la fiche produit à l\'instant présent.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6ce86506e83863b6414e760c8406e156'] = 'Si vous activez l\'option ci-dessus, vous devez en premier lieu activer la première option ("Enregistrer les pages vues pour chaque client") dans le module "Exploration de données pour les statistiques" (StatsData).'; -$_MODULE['<{producttooltip}prestashop>producttooltip_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b9f5c797ebbf55adccdd8539a65a0241'] = 'Désactivé'; -$_MODULE['<{producttooltip}prestashop>producttooltip_18522b8438c82ae472267ff57e8db76f'] = 'Durée de la période'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3367d7aeafaae0cfdb8334d6e442a58f'] = 'Indiquez la durée de période de référence.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_946e06ba50194b981f04263795ed1433'] = 'Par exemple, si vous indiquez 30 minutes, le module affichera le nombre de visiteurs sur les 30 dernières minutes.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_640fd0cc0ffa0316ae087652871f4486'] = 'minutes'; -$_MODULE['<{producttooltip}prestashop>producttooltip_788b212e2524ec85463d68861342693c'] = 'Date de la dernière commande'; -$_MODULE['<{producttooltip}prestashop>producttooltip_43e5b083da426132daf3a9fe05362da3'] = 'Affiche la date de la dernière commande de ce produit.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f6916943428105792f433c337f4e9522'] = 'Ajouté à un panier'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3829b2b4ac783c8e53a25f5cd007224b'] = 'Si le produit n\'a pas encore été commandé, affiche la dernière fois qu\'il a été ajouté au panier.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_7f2a0ec5efa8b7aaa2d814df0d18b722'] = 'Ne pas afficher les événements datant de plus de'; -$_MODULE['<{producttooltip}prestashop>producttooltip_44fdec47036f482b68b748f9d786801b'] = 'jours'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c9cc8cce247e49bae79f15173ce97354'] = 'Enregistrer'; -$_MODULE['<{producttooltip}prestashop>producttooltip_265e0fd0901e35cae9978e2319b6c32e'] = '%d personne regarde actuellement ce produit.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_858d0bcd440ff0d1cc1e6bd53d4fe9f6'] = '%d personnes consultent actuellement ce produit.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b2ccdeedefb87a6f4c52b0926b030d65'] = 'Dernière fois que ce produit a été acheté : '; -$_MODULE['<{producttooltip}prestashop>producttooltip_f934c297c7d902f5871edb4a12acbb84'] = 'Dernière fois que ce produit a été ajouté à un panier : '; - - -return $_MODULE; diff --git a/modules/producttooltip/translations/gl.php b/modules/producttooltip/translations/gl.php deleted file mode 100644 index c94bd5581..000000000 --- a/modules/producttooltip/translations/gl.php +++ /dev/null @@ -1,12 +0,0 @@ -producttooltip_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado'; -$_MODULE['<{producttooltip}prestashop>producttooltip_640fd0cc0ffa0316ae087652871f4486'] = 'minutos'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c9cc8cce247e49bae79f15173ce97354'] = 'Gardar'; - - -return $_MODULE; diff --git a/modules/producttooltip/translations/id.php b/modules/producttooltip/translations/id.php deleted file mode 100644 index 24ea7422d..000000000 --- a/modules/producttooltip/translations/id.php +++ /dev/null @@ -1,32 +0,0 @@ -producttooltip_4776f7eb5998034f7bbc63b6457d1ff4'] = 'Produk tooltip'; -$_MODULE['<{producttooltip}prestashop>producttooltip_0406dc99f3d31535975fdddf6f4ae4d3'] = 'Tampilkan informasi di halaman produk: berapa pengunjung yang melihat, terakhir terjual dan terakhir kali ditambahkan kedalam cart.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c888438d14855d7d96a2724ee9c306bd'] = 'Seting berhasil diperbaharui'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f4f70727dc34561dfde1a3c529b6205c'] = 'Seting'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6a3f9bbed911bae4ffe5ab84294d7b9f'] = 'Jumlah pengunjung'; -$_MODULE['<{producttooltip}prestashop>producttooltip_5c65d0f105e43f5186c1275fb83a661a'] = 'Menampilkan jumlah pengunjung yang sedang melihat produk ini.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6ce86506e83863b6414e760c8406e156'] = 'Jika opsi diatas diaktifkan, Anda harus mengaktifkan opsi yang pertama ("Simpan page views untuk masing-masing pelanggan") pada modul "Data mining for statistics" (StatsData).'; -$_MODULE['<{producttooltip}prestashop>producttooltip_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Aktifkan'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b9f5c797ebbf55adccdd8539a65a0241'] = 'Nonaktifkan'; -$_MODULE['<{producttooltip}prestashop>producttooltip_18522b8438c82ae472267ff57e8db76f'] = 'Rentang periode'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3367d7aeafaae0cfdb8334d6e442a58f'] = 'Set rentang periode.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_946e06ba50194b981f04263795ed1433'] = 'Misalnya, jika diset 30 menit, modul akan menampilkan jumlah pengunjung pada 30 menit terakhir.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_640fd0cc0ffa0316ae087652871f4486'] = 'menit'; -$_MODULE['<{producttooltip}prestashop>producttooltip_788b212e2524ec85463d68861342693c'] = 'Tanggal pembelian terakhir'; -$_MODULE['<{producttooltip}prestashop>producttooltip_43e5b083da426132daf3a9fe05362da3'] = 'Menampilkan waktu terakhir kali produk dibeli.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f6916943428105792f433c337f4e9522'] = 'Ditambahkan ke cart'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3829b2b4ac783c8e53a25f5cd007224b'] = 'Jika produk belum pernah terjual, tampilkan kapan terakhir kali ditambahkan kedalam cart.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_7f2a0ec5efa8b7aaa2d814df0d18b722'] = 'Jangan tampilkan aktivitas lebih dari'; -$_MODULE['<{producttooltip}prestashop>producttooltip_44fdec47036f482b68b748f9d786801b'] = 'hari'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c9cc8cce247e49bae79f15173ce97354'] = 'Simpan'; -$_MODULE['<{producttooltip}prestashop>producttooltip_265e0fd0901e35cae9978e2319b6c32e'] = '%d orang sedang melihat produk ini.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_858d0bcd440ff0d1cc1e6bd53d4fe9f6'] = '%d orang sedang melihat produk ini.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b2ccdeedefb87a6f4c52b0926b030d65'] = 'Terakhir produk ini dibeli: '; -$_MODULE['<{producttooltip}prestashop>producttooltip_f934c297c7d902f5871edb4a12acbb84'] = 'Terakhir produk ini ditambahkan kedalam cart: '; - - -return $_MODULE; diff --git a/modules/producttooltip/translations/index.php b/modules/producttooltip/translations/index.php index a41987dff..e5064df41 100644 --- a/modules/producttooltip/translations/index.php +++ b/modules/producttooltip/translations/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/producttooltip/translations/nl.php b/modules/producttooltip/translations/nl.php deleted file mode 100644 index d90357d1d..000000000 --- a/modules/producttooltip/translations/nl.php +++ /dev/null @@ -1,32 +0,0 @@ -producttooltip_4776f7eb5998034f7bbc63b6457d1ff4'] = 'Product tooltips'; -$_MODULE['<{producttooltip}prestashop>producttooltip_0406dc99f3d31535975fdddf6f4ae4d3'] = 'Toont informatie op de product pagina: hoeveel mensen het bekijken, de laatste keer verkocht en de laatste keer dat het aan een winkelwagen is toegevoegd.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c888438d14855d7d96a2724ee9c306bd'] = 'Instellingen bijgewerkt'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f4f70727dc34561dfde1a3c529b6205c'] = 'Instellingen'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6a3f9bbed911bae4ffe5ab84294d7b9f'] = 'Aantal bezoekers'; -$_MODULE['<{producttooltip}prestashop>producttooltip_5c65d0f105e43f5186c1275fb83a661a'] = 'Toon het aantal mensen die momenteel dit product bekijken.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_6ce86506e83863b6414e760c8406e156'] = 'Als de bovenstaande functie wordt ingeschakeld, dan moet je eerst via Dataopslag voor statistieken in de Statsdata module inschakelen.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Ingeschakeld'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b9f5c797ebbf55adccdd8539a65a0241'] = 'Uitgeschakeld'; -$_MODULE['<{producttooltip}prestashop>producttooltip_18522b8438c82ae472267ff57e8db76f'] = 'Lengte v/d periode'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3367d7aeafaae0cfdb8334d6e442a58f'] = 'Stel de referentieperiode lengte in.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_946e06ba50194b981f04263795ed1433'] = 'Bijvoorbeeld, als u deze insteld op 30 minuten zal de module het aantal bezoekers in de laatste 30 minuten weergeven.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_640fd0cc0ffa0316ae087652871f4486'] = 'minuten'; -$_MODULE['<{producttooltip}prestashop>producttooltip_788b212e2524ec85463d68861342693c'] = 'Laatste bestelling'; -$_MODULE['<{producttooltip}prestashop>producttooltip_43e5b083da426132daf3a9fe05362da3'] = 'Toon de laatste keer dat het product is besteld.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_f6916943428105792f433c337f4e9522'] = 'Toegevoegd aan winkelwagen'; -$_MODULE['<{producttooltip}prestashop>producttooltip_3829b2b4ac783c8e53a25f5cd007224b'] = 'Als het product nog niet is besteld, toon de laatste keer dat het werd toegevoegd aan een winkelkar.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_7f2a0ec5efa8b7aaa2d814df0d18b722'] = 'Geef geen gebeurtenissen weer die ouder zijn dan'; -$_MODULE['<{producttooltip}prestashop>producttooltip_44fdec47036f482b68b748f9d786801b'] = 'dagen'; -$_MODULE['<{producttooltip}prestashop>producttooltip_c9cc8cce247e49bae79f15173ce97354'] = 'Opslaan'; -$_MODULE['<{producttooltip}prestashop>producttooltip_265e0fd0901e35cae9978e2319b6c32e'] = '%d persoon bekijkt momenteel dit product.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_858d0bcd440ff0d1cc1e6bd53d4fe9f6'] = '%d personen bekijken momenteel dit product.'; -$_MODULE['<{producttooltip}prestashop>producttooltip_b2ccdeedefb87a6f4c52b0926b030d65'] = 'Laatste keer dat dit product was gekocht: '; -$_MODULE['<{producttooltip}prestashop>producttooltip_f934c297c7d902f5871edb4a12acbb84'] = 'Laatste keer dat dit product was toegevoegd aan een winkelwagen: '; - - -return $_MODULE; diff --git a/modules/producttooltip/views/index.php b/modules/producttooltip/views/index.php index 9f6ab7b95..531cab52a 100644 --- a/modules/producttooltip/views/index.php +++ b/modules/producttooltip/views/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/producttooltip/views/templates/hook/index.php b/modules/producttooltip/views/templates/hook/index.php index 9f6ab7b95..531cab52a 100644 --- a/modules/producttooltip/views/templates/hook/index.php +++ b/modules/producttooltip/views/templates/hook/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/producttooltip/views/templates/hook/producttooltip.tpl b/modules/producttooltip/views/templates/hook/producttooltip.tpl index 86ae878bc..2da87ed7b 100644 --- a/modules/producttooltip/views/templates/hook/producttooltip.tpl +++ b/modules/producttooltip/views/templates/hook/producttooltip.tpl @@ -1,5 +1,5 @@ {* -* 2007-2014 PrestaShop +* 2007-2016 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/modules/producttooltip/views/templates/index.php b/modules/producttooltip/views/templates/index.php index 9f6ab7b95..531cab52a 100644 --- a/modules/producttooltip/views/templates/index.php +++ b/modules/producttooltip/views/templates/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/pscleaner/CHANGELOG.txt b/modules/pscleaner/CHANGELOG.txt new file mode 100644 index 000000000..0d9fd05a5 --- /dev/null +++ b/modules/pscleaner/CHANGELOG.txt @@ -0,0 +1,3 @@ +____________________________________________________________________________________________________ +ChangeLog : QloApps Data Cleaner 1.0.0 | COMPATIBLE:: QloApps V1.x.x | Added in QloApps V1.3.2 +____________________________________________________________________________________________________ diff --git a/modules/pscleaner/Readme.md b/modules/pscleaner/Readme.md new file mode 100644 index 000000000..97ae688d7 --- /dev/null +++ b/modules/pscleaner/Readme.md @@ -0,0 +1,3 @@ +**Qloapps Data Cleaner 1.0.0** + +- Added in QloApps 1.3.2 \ No newline at end of file diff --git a/modules/pscleaner/classes/WkPsCleanerHelper.php b/modules/pscleaner/classes/WkPsCleanerHelper.php new file mode 100644 index 000000000..6e7397437 --- /dev/null +++ b/modules/pscleaner/classes/WkPsCleanerHelper.php @@ -0,0 +1,72 @@ + +* @copyright 2010-2018 Webkul IN +* @license https://store.webkul.com/license.html +*/ + +class WkPsCleanerHelper extends ObjectModel +{ + public static function deleteFolderImages($folderPath) + { + if ($folderPath) { + foreach (scandir($folderPath) as $dir) { + if (preg_match('/^([0-9]*[a-z]*[A-Z]*)+(\-(.*))?\.(jpg|png|jpeg|gif)+$/', $dir)) { + unlink($folderPath.$dir); + } + } + } + } + + public static function deleteModulesConfigurations() + { + // modules configuration keys + $moduleConfKeys = array( + "'HOTEL_INTERIOR_HEADING'", + "'HOTEL_INTERIOR_DESCRIPTION'", + "'HOTEL_AMENITIES_HEADING'", + "'HOTEL_AMENITIES_DESCRIPTION'", + "'HOTEL_ROOM_DISPLAY_HEADING'", + "'HOTEL_ROOM_DISPLAY_DESCRIPTION'", + "'HOTEL_TESIMONIAL_BLOCK_HEADING'", + "'HOTEL_TESIMONIAL_BLOCK_CONTENT'", + ); + + $moduleConfKeys = implode(",", $moduleConfKeys); + $dbInst = Db::getInstance(); + if ($result = $dbInst->ExecuteS( + 'SELECT `id_configuration` FROM `'._DB_PREFIX_.'configuration` WHERE `name` IN ('.$moduleConfKeys.')' + )) { + $moduleConfIds = array(); + foreach ($result as $confRow) { + $moduleConfIds[] = $confRow['id_configuration']; + } + $moduleConfIds = implode(",", $moduleConfIds); + // delete from canfiguration and configuration_lang bothe tables + $dltConfigLang = $dbInst->delete( + 'configuration_lang', + 'id_configuration IN ('.$moduleConfIds.')' + ); + $dltConfig = $dbInst->delete( + 'configuration', + 'id_configuration IN ('.$moduleConfIds.')' + ); + + return ($dltConfigLang && $dltConfig); + } + return true; + } +} diff --git a/modules/pscleaner/classes/index.php b/modules/pscleaner/classes/index.php new file mode 100644 index 000000000..534dc97aa --- /dev/null +++ b/modules/pscleaner/classes/index.php @@ -0,0 +1,29 @@ + +* @copyright 2010-2018 Webkul IN +* @license https://store.webkul.com/license.html +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../../../'); +exit; diff --git a/modules/statscarrier/translations/index.php b/modules/pscleaner/index.php similarity index 93% rename from modules/statscarrier/translations/index.php rename to modules/pscleaner/index.php index e5064df41..2a40ec79e 100644 --- a/modules/statscarrier/translations/index.php +++ b/modules/pscleaner/index.php @@ -23,13 +23,13 @@ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); -exit; \ No newline at end of file +exit; diff --git a/modules/pscleaner/logo.gif b/modules/pscleaner/logo.gif new file mode 100644 index 000000000..667cba308 Binary files /dev/null and b/modules/pscleaner/logo.gif differ diff --git a/modules/pscleaner/logo.png b/modules/pscleaner/logo.png new file mode 100644 index 000000000..0d3efb276 Binary files /dev/null and b/modules/pscleaner/logo.png differ diff --git a/modules/pscleaner/pscleaner.php b/modules/pscleaner/pscleaner.php new file mode 100644 index 000000000..59b4265a5 --- /dev/null +++ b/modules/pscleaner/pscleaner.php @@ -0,0 +1,834 @@ + + * @copyright 2007-2016 PrestaShop SA + * @version Release: $Revision: 7060 $ + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +if (!defined('_CAN_LOAD_FILES_')) { + exit; +} +require_once dirname(__FILE__).'/classes/WkPsCleanerHelper.php'; + +class PSCleaner extends Module +{ + public function __construct() + { + $this->name = 'pscleaner'; + $this->tab = 'administration'; + $this->version = '1.0.0'; + $this->author = 'PrestaShop'; + $this->need_instance = 0; + if (version_compare(_PS_VERSION_, '1.6.0.0 ', '>=')) { + $this->multishop_context = Shop::CONTEXT_ALL; + } + + $this->bootstrap = true; + parent::__construct(); + + $this->displayName = $this->l('QloApps Data Cleaner'); + $this->description = $this->l('Check and fix functional integrity constraints and remove default data'); + $this->secure_key = Tools::encrypt($this->name); + } + + protected function getMultiShopValues($key) + { + if (version_compare(_PS_VERSION_, '1.6.0.3', '>=') === true) { + return Configuration::getMultiShopValues($key); + } else { + $shops = Shop::getShops(false, null, true); + $id_lang = (int) $this->context->language->id; + $results = array(); + array_push($results, Configuration::get($key)); + + foreach ($shops as $id_shop) { + array_push($results, Configuration::get($key, $id_lang, null, $id_shop)); + } + + return $results; + } + } + + public function getContent() + { + $html = '

    '.$this->l('Be really careful with this tool - There is no possible rollback!').'

    '; + if (Tools::isSubmit('submitCheckAndFix')) { + $logs = self::checkAndFix(); + if (count($logs)) { + $conf = $this->l('The following queries successfuly fixed broken data:').'
      '; + foreach ($logs as $query => $entries) { + $conf .= '
    • '.Tools::htmlentitiesUTF8($query).'
      '.sprintf($this->l('%d line(s)'), $entries).'
    • '; + } + $conf .= '
    '; + } else { + $conf = $this->l('Nothing that need to be fixed'); + } + $html .= $this->displayConfirmation($conf); + } elseif (Tools::isSubmit('submitCleanAndOptimize')) { + $logs = self::cleanAndOptimize(); + if (count($logs)) { + $conf = $this->l('The following queries successfuly cleaned your database:').'
      '; + foreach ($logs as $query => $entries) { + $conf .= '
    • '.Tools::htmlentitiesUTF8($query).'
      '.sprintf($this->l('%d line(s)'), $entries).'
    • '; + } + $conf .= '
    '; + } else { + $conf = $this->l('Nothing that need to be cleaned'); + } + $html .= $this->displayConfirmation($conf); + } elseif (Tools::getValue('submitTruncateCatalog') && Tools::getValue('checkTruncateCatalog')) { + self::truncate('catalog'); + $html .= $this->displayConfirmation($this->l('Catalog truncated')); + } elseif (Tools::getValue('submitTruncateSales') && Tools::getValue('checkTruncateSales')) { + self::truncate('sales'); + $html .= $this->displayConfirmation($this->l('Orders and customers truncated')); + } + + $html .= ' + '; + + return $html.$this->renderForm(); + } + + public static function checkAndFix() + { + $db = Db::getInstance(); + $logs = array(); + + // Remove doubles in the configuration + $filtered_configuration = array(); + $result = $db->ExecuteS('SELECT * FROM '._DB_PREFIX_.'configuration'); + foreach ($result as $row) { + $key = $row['id_shop_group'].'-|-'.$row['id_shop'].'-|-'.$row['name']; + if (in_array($key, $filtered_configuration)) { + $query = 'DELETE FROM '._DB_PREFIX_.'configuration WHERE id_configuration = '.(int)$row['id_configuration']; + $db->Execute($query); + $logs[$query] = 1; + } else { + $filtered_configuration[] = $key; + } + } + unset($filtered_configuration); + + // Remove inexisting or monolanguage configuration value from configuration_lang + $query = 'DELETE FROM `'._DB_PREFIX_.'configuration_lang` + WHERE `id_configuration` NOT IN (SELECT `id_configuration` FROM `'._DB_PREFIX_.'configuration`) + OR `id_configuration` IN (SELECT `id_configuration` FROM `'._DB_PREFIX_.'configuration` WHERE name IS NULL OR name = "")'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + // Simple Cascade Delete + $queries = self::getCheckAndFixQueries(); + + $queries = self::bulle($queries); + foreach ($queries as $query_array) { + // If this is a module and the module is not installed, we continue + if (isset($query_array[4]) && !Module::isInstalled($query_array[4])) { + continue; + } + + $query = 'DELETE FROM `'._DB_PREFIX_.$query_array[0].'` WHERE `'.$query_array[1].'` NOT IN (SELECT `'.$query_array[3].'` FROM `'._DB_PREFIX_.$query_array[2].'`)'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + } + + // _lang table cleaning + $tables = Db::getInstance()->executeS('SHOW TABLES LIKE "'.preg_replace('/([%_])/', '\\$1', _DB_PREFIX_).'%_\\_lang"'); + foreach ($tables as $table) { + $table_lang = current($table); + $table = str_replace('_lang', '', $table_lang); + $id_table = 'id_'.preg_replace('/^'._DB_PREFIX_.'/', '', $table); + + $query = 'DELETE FROM `'.bqSQL($table_lang).'` WHERE `'.bqSQL($id_table).'` NOT IN (SELECT `'.bqSQL($id_table).'` FROM `'.bqSQL($table).'`)'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + $query = 'DELETE FROM `'.bqSQL($table_lang).'` WHERE `id_lang` NOT IN (SELECT `id_lang` FROM `'._DB_PREFIX_.'lang`)'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + } + + // _shop table cleaning + $tables = Db::getInstance()->executeS('SHOW TABLES LIKE "'.preg_replace('/([%_])/', '\\$1', _DB_PREFIX_).'%_\\_shop"'); + foreach ($tables as $table) { + $table_shop = current($table); + $table = str_replace('_shop', '', $table_shop); + $id_table = 'id_'.preg_replace('/^'._DB_PREFIX_.'/', '', $table); + + if (in_array($table_shop, array(_DB_PREFIX_.'carrier_tax_rules_group_shop'))) { + continue; + } + + $query = 'DELETE FROM `'.bqSQL($table_shop).'` WHERE `'.bqSQL($id_table).'` NOT IN (SELECT `'.bqSQL($id_table).'` FROM `'.bqSQL($table).'`)'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + $query = 'DELETE FROM `'.bqSQL($table_shop).'` WHERE `id_shop` NOT IN (SELECT `id_shop` FROM `'._DB_PREFIX_.'shop`)'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + } + + // stock_available + $query = 'DELETE FROM `'._DB_PREFIX_.'stock_available` WHERE `id_shop` NOT IN (SELECT `id_shop` FROM `'._DB_PREFIX_.'shop`) AND `id_shop_group` NOT IN (SELECT `id_shop_group` FROM `'._DB_PREFIX_.'shop_group`)'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + Category::regenerateEntireNtree(); + + // @Todo: Remove attachment files, images... + Image::clearTmpDir(); + self::clearAllCaches(); + + return $logs; + } + + public function truncate($case) + { + $db = Db::getInstance(); + $db->execute('SET FOREIGN_KEY_CHECKS = 0;'); + + switch ($case) { + case 'catalog': + $id_home = $this->getMultiShopValues('PS_HOME_CATEGORY'); + $id_root = $this->getMultiShopValues('PS_ROOT_CATEGORY'); + $db->execute('DELETE FROM `'._DB_PREFIX_.'category` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')'); + $db->execute('DELETE FROM `'._DB_PREFIX_.'category_lang` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')'); + $db->execute('DELETE FROM `'._DB_PREFIX_.'category_shop` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')'); + foreach (scandir(_PS_CAT_IMG_DIR_) as $dir) { + if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) { + unlink(_PS_CAT_IMG_DIR_.$dir); + } + } + $tables = self::getCatalogRelatedTables(); + foreach ($tables as $table) { + $db->execute('TRUNCATE TABLE `'._DB_PREFIX_.bqSQL($table).'`'); + } + $db->execute('DELETE FROM `'._DB_PREFIX_.'address` WHERE id_manufacturer > 0 OR id_supplier > 0 OR id_warehouse > 0'); + + Image::deleteAllImages(_PS_PROD_IMG_DIR_); + if (!file_exists(_PS_PROD_IMG_DIR_)) { + mkdir(_PS_PROD_IMG_DIR_); + } + + foreach (scandir(_PS_MANU_IMG_DIR_) as $dir) { + if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) { + unlink(_PS_MANU_IMG_DIR_.$dir); + } + } + foreach (scandir(_PS_SUPP_IMG_DIR_) as $dir) { + if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) { + unlink(_PS_SUPP_IMG_DIR_.$dir); + } + } + + // Delete qlo modules's images + WkPsCleanerHelper::deleteFolderImages( + _PS_MODULE_DIR_.'wkabouthotelblock/views/img/hotel_interior/' + ); + WkPsCleanerHelper::deleteFolderImages( + _PS_MODULE_DIR_.'wkhotelfeaturesblock/views/img/hotels_features_img/' + ); + WkPsCleanerHelper::deleteFolderImages( + _PS_MODULE_DIR_.'wktestimonialblock/views/img/hotels_testimonials_img/' + ); + //delete Qlo modules configurations from configuration table + WkPsCleanerHelper::deleteModulesConfigurations(); + + break; + + case 'sales': + $tables = self::getSalesRelatedTables(); + + $modules_tables = array( + 'sekeywords' => array('sekeyword'), + 'pagesnotfound' => array('pagenotfound'), + 'paypal' => array('paypal_customer', 'paypal_order') + ); + + foreach ($modules_tables as $name => $module_tables) { + if (Module::isInstalled($name)) { + $tables = array_merge($tables, $module_tables); + } + } + + foreach ($tables as $table) { + $db->execute('TRUNCATE TABLE `'._DB_PREFIX_.bqSQL($table).'`'); + } + $db->execute('DELETE FROM `'._DB_PREFIX_.'address` WHERE id_customer > 0'); + $db->execute('UPDATE `'._DB_PREFIX_.'employee` SET `id_last_order` = 0,`id_last_customer_message` = 0,`id_last_customer` = 0'); + + break; + } + self::clearAllCaches(); + $db->execute('SET FOREIGN_KEY_CHECKS = 1;'); + } + + public static function cleanAndOptimize() + { + $logs = array(); + + $query = ' + DELETE FROM `'._DB_PREFIX_.'cart` + WHERE id_cart NOT IN (SELECT id_cart FROM `'._DB_PREFIX_.'orders`) + AND date_add < "'.pSQL(date('Y-m-d', strtotime('-1 month'))).'"'; + if (Db::getInstance()->Execute($query)) { + if ($affected_rows = Db::getInstance()->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + $query = ' + DELETE FROM `'._DB_PREFIX_.'cart_rule` + WHERE ( + active = 0 + OR quantity = 0 + OR date_to < "'.pSQL(date('Y-m-d')).'" + ) + AND date_add < "'.pSQL(date('Y-m-d', strtotime('-1 month'))).'"'; + if (Db::getInstance()->Execute($query)) { + if ($affected_rows = Db::getInstance()->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + // Delete Qlo tables + $query = 'DELETE FROM `'._DB_PREFIX_.'htl_order_refund_rules`'; + if (Db::getInstance()->Execute($query)) { + if ($affected_rows = Db::getInstance()->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + $parents = Db::getInstance()->ExecuteS('SELECT DISTINCT id_parent FROM '._DB_PREFIX_.'tab'); + foreach ($parents as $parent) { + $children = Db::getInstance()->ExecuteS('SELECT id_tab FROM '._DB_PREFIX_.'tab WHERE id_parent = '.(int)$parent['id_parent'].' ORDER BY IF(class_name IN ("AdminHome", "AdminDashboard"), 1, 2), position ASC'); + $i = 1; + foreach ($children as $child) { + $query = 'UPDATE '._DB_PREFIX_.'tab SET position = '.(int)($i++).' WHERE id_tab = '.(int)$child['id_tab'].' AND id_parent = '.(int)$parent['id_parent']; + if (Db::getInstance()->Execute($query)) { + if ($affected_rows = Db::getInstance()->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + } + } + + return $logs; + } + + protected static function bulle($array) + { + $sorted = false; + $size = count($array); + while (!$sorted) { + $sorted = true; + for ($i = 0; $i < $size - 1; ++$i) { + for ($j = $i + 1; $j < $size; ++$j) { + if ($array[$i][2] == $array[$j][0]) { + $tmp = $array[$i]; + $array[$i] = $array[$j]; + $array[$j] = $tmp; + $sorted = false; + } + } + } + } + return $array; + } + + protected static function clearAllCaches() + { + $index = file_exists(_PS_TMP_IMG_DIR_.'index.php') ? file_get_contents(_PS_TMP_IMG_DIR_.'index.php') : ''; + Tools::deleteDirectory(_PS_TMP_IMG_DIR_, false); + file_put_contents(_PS_TMP_IMG_DIR_.'index.php', $index); + Context::getContext()->smarty->clearAllCache(); + } + + public function renderForm() + { + $fields_form_1 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Catalog'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'switch', + 'is_bool' => true, + 'label' => $this->l('I understand that all the catalog data will be removed without possible rollback: hotels, roomtypes, features, tags, images, prices..'), + 'name' => 'checkTruncateCatalog', + 'values' => array( + array( + 'id' => 'checkTruncateCatalog_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'checkTruncateCatalog_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ) + ) + ), + 'submit' => array( + 'title' => $this->l('Delete Catalog'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitTruncateCatalog', + 'id' => 'submitTruncateCatalog', + ) + ) + ); + + $fields_form_2 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Orders and Customers'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'switch', + 'is_bool' => true, + 'label' => $this->l('I understand that all the orders and customers will be removed without possible rollback: customers, carts, orders, connections, guests, messages, stats...'), + 'name' => 'checkTruncateSales', + 'values' => array( + array( + 'id' => 'checkTruncateSales_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'checkTruncateSales_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ) + ) + ), + 'submit' => array( + 'title' => $this->l('Delete orders & customers'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitTruncateSales', + 'id' => 'submitTruncateSales', + ) + ) + ); + + $fields_form_3 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Functional integrity constraints'), + 'icon' => 'icon-cogs' + ), + 'submit' => array( + 'title' => $this->l('Check & fix'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitCheckAndFix', + ) + ) + ); + $fields_form_4 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Database Cleaning'), + 'icon' => 'icon-cogs' + ), + 'submit' => array( + 'title' => $this->l('Clean & Optimize'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitCleanAndOptimize', + ) + ) + ); + + $helper = new HelperForm(); + $helper->module = $this; + $helper->show_toolbar = false; + $helper->table = $this->table; + $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); + $helper->default_form_language = $lang->id; + $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; + $this->fields_form = array(); + $helper->id = (int)Tools::getValue('id_carrier'); + $helper->identifier = $this->identifier; + $helper->submit_action = 'btnSubmit'; + $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; + $helper->token = Tools::getAdminTokenLite('AdminModules'); + $helper->tpl_vars = array( + 'fields_value' => $this->getConfigFieldsValues(), + 'languages' => $this->context->controller->getLanguages(), + 'id_language' => $this->context->language->id + ); + + return $helper->generateForm(array($fields_form_1, $fields_form_2, $fields_form_3, $fields_form_4)); + } + + public function getConfigFieldsValues() + { + return array('checkTruncateSales' => 0, 'checkTruncateCatalog' => 0); + } + + public static function getCheckAndFixQueries() + { + $append = array(); + return array_merge( + $append, + array( + // 0 => DELETE FROM __table__, 1 => WHERE __id__ NOT IN, 2 => NOT IN __table__, 3 => __id__ used in the "NOT IN" table, 4 => module_name + array('access', 'id_profile', 'profile', 'id_profile'), + array('accessory', 'id_product_1', 'product', 'id_product'), + array('accessory', 'id_product_2', 'product', 'id_product'), + array('address_format', 'id_country', 'country', 'id_country'), + array('attribute', 'id_attribute_group', 'attribute_group', 'id_attribute_group'), + array('carrier_group', 'id_carrier', 'carrier', 'id_carrier'), + array('carrier_group', 'id_group', 'group', 'id_group'), + array('carrier_zone', 'id_carrier', 'carrier', 'id_carrier'), + array('carrier_zone', 'id_zone', 'zone', 'id_zone'), + array('cart_cart_rule', 'id_cart', 'cart', 'id_cart'), + array('cart_product', 'id_cart', 'cart', 'id_cart'), + array('cart_rule_carrier', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), + array('cart_rule_carrier', 'id_carrier', 'carrier', 'id_carrier'), + array('cart_rule_combination', 'id_cart_rule_1', 'cart_rule', 'id_cart_rule'), + array('cart_rule_combination', 'id_cart_rule_2', 'cart_rule', 'id_cart_rule'), + array('cart_rule_country', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), + array('cart_rule_country', 'id_country', 'country', 'id_country'), + array('cart_rule_group', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), + array('cart_rule_group', 'id_group', 'group', 'id_group'), + array('cart_rule_product_rule_group', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), + array('cart_rule_product_rule', 'id_product_rule_group', 'cart_rule_product_rule_group', 'id_product_rule_group'), + array('cart_rule_product_rule_value', 'id_product_rule', 'cart_rule_product_rule', 'id_product_rule'), + array('category_group', 'id_category', 'category', 'id_category'), + array('category_group', 'id_group', 'group', 'id_group'), + array('category_product', 'id_category', 'category', 'id_category'), + array('category_product', 'id_product', 'product', 'id_product'), + array('cms', 'id_cms_category', 'cms_category', 'id_cms_category'), + array('cms_block', 'id_cms_category', 'cms_category', 'id_cms_category', 'blockcms'), + array('cms_block_page', 'id_cms', 'cms', 'id_cms', 'blockcms'), + array('cms_block_page', 'id_cms_block', 'cms_block', 'id_cms_block', 'blockcms'), + array('connections', 'id_shop_group', 'shop_group', 'id_shop_group'), + array('connections', 'id_shop', 'shop', 'id_shop'), + array('connections_page', 'id_connections', 'connections', 'id_connections'), + array('connections_page', 'id_page', 'page', 'id_page'), + array('connections_source', 'id_connections', 'connections', 'id_connections'), + array('customer', 'id_shop_group', 'shop_group', 'id_shop_group'), + array('customer', 'id_shop', 'shop', 'id_shop'), + array('customer_group', 'id_group', 'group', 'id_group'), + array('customer_group', 'id_customer', 'customer', 'id_customer'), + array('customer_message', 'id_customer_thread', 'customer_thread', 'id_customer_thread'), + array('customer_thread', 'id_shop', 'shop', 'id_shop'), + array('customization', 'id_cart', 'cart', 'id_cart'), + array('customization_field', 'id_product', 'product', 'id_product'), + array('customized_data', 'id_customization', 'customization', 'id_customization'), + array('delivery', 'id_shop', 'shop', 'id_shop'), + array('delivery', 'id_shop_group', 'shop_group', 'id_shop_group'), + array('delivery', 'id_carrier', 'carrier', 'id_carrier'), + array('delivery', 'id_zone', 'zone', 'id_zone'), + array('editorial', 'id_shop', 'shop', 'id_shop', 'editorial'), + array('favorite_product', 'id_product', 'product', 'id_product', 'favoriteproducts'), + array('favorite_product', 'id_customer', 'customer', 'id_customer', 'favoriteproducts'), + array('favorite_product', 'id_shop', 'shop', 'id_shop', 'favoriteproducts'), + array('feature_product', 'id_feature', 'feature', 'id_feature'), + array('feature_product', 'id_product', 'product', 'id_product'), + array('feature_value', 'id_feature', 'feature', 'id_feature'), + array('group_reduction', 'id_group', 'group', 'id_group'), + array('group_reduction', 'id_category', 'category', 'id_category'), + array('homeslider', 'id_shop', 'shop', 'id_shop', 'homeslider'), + array('homeslider', 'id_homeslider_slides', 'homeslider_slides', 'id_homeslider_slides', 'homeslider'), + array('hook_module', 'id_hook', 'hook', 'id_hook'), + array('hook_module', 'id_module', 'module', 'id_module'), + array('hook_module_exceptions', 'id_hook', 'hook', 'id_hook'), + array('hook_module_exceptions', 'id_module', 'module', 'id_module'), + array('hook_module_exceptions', 'id_shop', 'shop', 'id_shop'), + array('image', 'id_product', 'product', 'id_product'), + array('message', 'id_cart', 'cart', 'id_cart'), + array('message_readed', 'id_message', 'message', 'id_message'), + array('message_readed', 'id_employee', 'employee', 'id_employee'), + array('module_access', 'id_profile', 'profile', 'id_profile'), + array('module_country', 'id_module', 'module', 'id_module'), + array('module_country', 'id_country', 'country', 'id_country'), + array('module_country', 'id_shop', 'shop', 'id_shop'), + array('module_currency', 'id_module', 'module', 'id_module'), + array('module_currency', 'id_currency', 'currency', 'id_currency'), + array('module_currency', 'id_shop', 'shop', 'id_shop'), + array('module_group', 'id_module', 'module', 'id_module'), + array('module_group', 'id_group', 'group', 'id_group'), + array('module_group', 'id_shop', 'shop', 'id_shop'), + array('module_preference', 'id_employee', 'employee', 'id_employee'), + array('orders', 'id_shop', 'shop', 'id_shop'), + array('orders', 'id_shop_group', 'group_shop', 'id_shop_group'), + array('order_carrier', 'id_order', 'orders', 'id_order'), + array('order_cart_rule', 'id_order', 'orders', 'id_order'), + array('order_detail', 'id_order', 'orders', 'id_order'), + array('order_detail_tax', 'id_order_detail', 'order_detail', 'id_order_detail'), + array('order_history', 'id_order', 'orders', 'id_order'), + array('order_invoice', 'id_order', 'orders', 'id_order'), + array('order_invoice_payment', 'id_order', 'orders', 'id_order'), + array('order_invoice_tax', 'id_order_invoice', 'order_invoice', 'id_order_invoice'), + array('order_return', 'id_order', 'orders', 'id_order'), + array('order_return_detail', 'id_order_return', 'order_return', 'id_order_return'), + array('order_slip', 'id_order', 'orders', 'id_order'), + array('order_slip_detail', 'id_order_slip', 'order_slip', 'id_order_slip'), + array('pack', 'id_product_pack', 'product', 'id_product'), + array('pack', 'id_product_item', 'product', 'id_product'), + array('page', 'id_page_type', 'page_type', 'id_page_type'), + array('page_viewed', 'id_shop', 'shop', 'id_shop'), + array('page_viewed', 'id_shop_group', 'shop_group', 'id_shop_group'), + array('page_viewed', 'id_date_range', 'date_range', 'id_date_range'), + array('product_attachment', 'id_attachment', 'attachment', 'id_attachment'), + array('product_attachment', 'id_product', 'product', 'id_product'), + array('product_attribute', 'id_product', 'product', 'id_product'), + array('product_attribute_combination', 'id_product_attribute', 'product_attribute', 'id_product_attribute'), + array('product_attribute_combination', 'id_attribute', 'attribute', 'id_attribute'), + array('product_attribute_image', 'id_image', 'image', 'id_image'), + array('product_attribute_image', 'id_product_attribute', 'product_attribute', 'id_product_attribute'), + array('product_carrier', 'id_product', 'product', 'id_product'), + array('product_carrier', 'id_shop', 'shop', 'id_shop'), + array('product_carrier', 'id_carrier_reference', 'carrier', 'id_reference'), + array('product_country_tax', 'id_product', 'product', 'id_product'), + array('product_country_tax', 'id_country', 'country', 'id_country'), + array('product_country_tax', 'id_tax', 'tax', 'id_tax'), + array('product_download', 'id_product', 'product', 'id_product'), + array('product_group_reduction_cache', 'id_product', 'product', 'id_product'), + array('product_group_reduction_cache', 'id_group', 'group', 'id_group'), + array('product_sale', 'id_product', 'product', 'id_product'), + array('product_supplier', 'id_product', 'product', 'id_product'), + array('product_supplier', 'id_supplier', 'supplier', 'id_supplier'), + array('product_tag', 'id_product', 'product', 'id_product'), + array('product_tag', 'id_tag', 'tag', 'id_tag'), + array('range_price', 'id_carrier', 'carrier', 'id_carrier'), + array('range_weight', 'id_carrier', 'carrier', 'id_carrier'), + array('referrer_cache', 'id_referrer', 'referrer', 'id_referrer'), + array('referrer_cache', 'id_connections_source', 'connections_source', 'id_connections_source'), + array('search_index', 'id_product', 'product', 'id_product'), + array('search_word', 'id_lang', 'lang', 'id_lang'), + array('search_word', 'id_shop', 'shop', 'id_shop'), + array('shop_url', 'id_shop', 'shop', 'id_shop'), + array('specific_price_priority', 'id_product', 'product', 'id_product'), + array('stock', 'id_warehouse', 'warehouse', 'id_warehouse'), + array('stock', 'id_product', 'product', 'id_product'), + array('stock_available', 'id_product', 'product', 'id_product'), + array('stock_mvt', 'id_stock', 'stock', 'id_stock'), + array('tab_module_preference', 'id_employee', 'employee', 'id_employee'), + array('tab_module_preference', 'id_tab', 'tab', 'id_tab'), + array('tax_rule', 'id_country', 'country', 'id_country'), + array('warehouse_carrier', 'id_warehouse', 'warehouse', 'id_warehouse'), + array('warehouse_carrier', 'id_carrier', 'carrier', 'id_carrier'), + array('warehouse_product_location', 'id_product', 'product', 'id_product'), + array('warehouse_product_location', 'id_warehouse', 'warehouse', 'id_warehouse'), + ) + ); + } + + public static function getCatalogRelatedTables() + { + $append = array(); + return array_merge( + $append, + array( + 'product', + 'product_shop', + 'feature_product', + 'product_lang', + 'category_product', + 'product_tag', + 'tag', + 'image', + 'image_lang', + 'image_shop', + 'specific_price', + 'specific_price_priority', + 'product_carrier', + 'cart_product', + 'product_attachment', + 'product_country_tax', + 'product_download', + 'product_group_reduction_cache', + 'product_sale', + 'product_supplier', + 'warehouse_product_location', + 'stock', + 'stock_available', + 'stock_mvt', + 'customization', + 'customization_field', + 'supply_order_detail', + 'attribute_impact', + 'product_attribute', + 'product_attribute_shop', + 'product_attribute_combination', + 'product_attribute_image', + 'attribute_impact', + 'attribute_lang', + 'attribute_group', + 'attribute_group_lang', + 'attribute_group_shop', + 'attribute_shop', + 'product_attribute', + 'product_attribute_shop', + 'product_attribute_combination', + 'product_attribute_image', + 'stock_available', + 'manufacturer', + 'manufacturer_lang', + 'manufacturer_shop', + 'supplier', + 'supplier_lang', + 'supplier_shop', + 'customization', + 'customization_field', + 'customization_field_lang', + 'customized_data', + 'feature', + 'feature_lang', + 'feature_product', + 'feature_shop', + 'feature_value', + 'feature_value_lang', + 'pack', + 'search_index', + 'search_word', + 'specific_price', + 'specific_price_priority', + 'specific_price_rule', + 'specific_price_rule_condition', + 'specific_price_rule_condition_group', + 'stock', + 'stock_available', + 'stock_mvt', + 'warehouse', + //Qlo modules tables + 'htl_room_type_feature_pricing_lang', + 'htl_room_type_feature_pricing', + 'htl_room_disable_dates', + 'htl_advance_payment', + 'htl_room_type', + 'htl_room_information', + 'htl_image', + 'htl_order_restrict_date', + 'htl_branch_features', + 'htl_branch_info_lang', + 'htl_branch_info', + 'htl_interior_image', + 'htl_features_block_data', + 'htl_features_block_data_lang', + 'htl_room_block_data', + 'htl_testimonials_block_data', + 'htl_testimonials_block_data_lang', + + + ) + ); + } + + public static function getSalesRelatedTables() + { + return array( + 'customer', + 'cart', + 'cart_product', + 'connections', + 'connections_page', + 'connections_source', + 'customer_group', + 'customer_message', + 'customer_message_sync_imap', + 'customer_thread', + 'guest', + 'message', + 'message_readed', + 'orders', + 'order_carrier', + 'order_cart_rule', + 'order_detail', + 'order_detail_tax', + 'order_history', + 'order_invoice', + 'order_invoice_payment', + 'order_invoice_tax', + 'order_message', + 'order_message_lang', + 'order_payment', + 'order_return', + 'order_return_detail', + 'order_slip', + 'order_slip_detail', + 'page', + 'page_type', + 'page_viewed', + 'product_sale', + 'referrer_cache', + //Qlo modules order tables + 'htl_customer_adv_payment', + 'htl_customer_adv_product_payment', + 'htl_order_refund_info', + 'htl_cart_booking_data', + 'htl_booking_detail', + ); + } +} diff --git a/modules/pscleaner/translations/en.php b/modules/pscleaner/translations/en.php new file mode 100644 index 000000000..a12904775 --- /dev/null +++ b/modules/pscleaner/translations/en.php @@ -0,0 +1,33 @@ +pscleaner_e5a8af934462c05509c7de5f2f2c18a3'] = 'PrestaShop Cleaner'; +$_MODULE['<{pscleaner}prestashop>pscleaner_4bcb9cc248b7f6c8dc7f5c323bde76de'] = 'Check and fix functional integrity constraints and remove default data'; +$_MODULE['<{pscleaner}prestashop>pscleaner_752369f18aebeed9ae8384d8f1b5dc5e'] = 'Be really careful with this tool - There is no possible rollback!'; +$_MODULE['<{pscleaner}prestashop>pscleaner_550b877b1a255ba717cfad4b82057731'] = 'The following queries successfuly fixed broken data:'; +$_MODULE['<{pscleaner}prestashop>pscleaner_14a7ab23d566b4505d0c711338c19a08'] = '%d line(s)'; +$_MODULE['<{pscleaner}prestashop>pscleaner_d1ff3c9d57acd4283d2793a36737479e'] = 'Nothing that need to be fixed'; +$_MODULE['<{pscleaner}prestashop>pscleaner_53d097f11855337bb74f1444d6c47c99'] = 'The following queries successfully cleaned your database:'; +$_MODULE['<{pscleaner}prestashop>pscleaner_098c3581a731f08d24311bbf515adbbb'] = 'Nothing that need to be cleaned'; +$_MODULE['<{pscleaner}prestashop>pscleaner_1bb7c5eb8682aeada82c407b40ec09c8'] = 'Catalog truncated'; +$_MODULE['<{pscleaner}prestashop>pscleaner_ed6ecb7169d5476ef5251524bb17552a'] = 'Orders and customers truncated'; +$_MODULE['<{pscleaner}prestashop>pscleaner_43364f357f96e8b70be4a44d44196807'] = 'Please read the disclaimer and click "Yes" above'; +$_MODULE['<{pscleaner}prestashop>pscleaner_6c69628e1d57fa6e39162b039a82133b'] = 'Are you sure that you want to delete all catalog data?'; +$_MODULE['<{pscleaner}prestashop>pscleaner_6a68264705f23c8e3d505fd2c93a87ba'] = 'Are you sure that you want to delete all sales data?'; +$_MODULE['<{pscleaner}prestashop>pscleaner_c32516babc5b6c47eb8ce1bfc223253c'] = 'Catalog'; +$_MODULE['<{pscleaner}prestashop>pscleaner_da69e50b7440e12fe63287904819eaa3'] = 'I understand that all the catalog data will be removed without possible rollback: products, features, categories, tags, images, prices, attachments, scenes, stocks, attribute groups and values, manufacturers, suppliers...'; +$_MODULE['<{pscleaner}prestashop>pscleaner_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled'; +$_MODULE['<{pscleaner}prestashop>pscleaner_b9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled'; +$_MODULE['<{pscleaner}prestashop>pscleaner_b2d7c99e984831bd36221baf34e9c26e'] = 'Delete catalog'; +$_MODULE['<{pscleaner}prestashop>pscleaner_3300d0bf086fa38cf593fe4feff351f1'] = 'Orders and customers'; +$_MODULE['<{pscleaner}prestashop>pscleaner_a01f9a9a340c3c68a2dc4663f46d8637'] = 'I understand that all the orders and customers will be removed without possible rollback: customers, carts, orders, connections, guests, messages, stats...'; +$_MODULE['<{pscleaner}prestashop>pscleaner_17ca7f22baf84821b6b73462c96fb1e3'] = 'Delete orders & customers'; +$_MODULE['<{pscleaner}prestashop>pscleaner_3535aa31bd9005bde626ad4312b67d6b'] = 'Functional integrity constraints'; +$_MODULE['<{pscleaner}prestashop>pscleaner_e84c6595e849214a70b35ed8f95d7d16'] = 'Check & fix'; +$_MODULE['<{pscleaner}prestashop>pscleaner_ccc27439e3e08c444690af3bed668e2d'] = 'Database cleaning'; +$_MODULE['<{pscleaner}prestashop>pscleaner_39707b9cfefe433d64f695623d2d3fd7'] = 'Clean & Optimize'; + + +return $_MODULE; diff --git a/modules/pscleaner/translations/fr.php b/modules/pscleaner/translations/fr.php new file mode 100644 index 000000000..46475f82a --- /dev/null +++ b/modules/pscleaner/translations/fr.php @@ -0,0 +1,33 @@ +pscleaner_e5a8af934462c05509c7de5f2f2c18a3'] = 'Nettoyage de PrestaShop'; +$_MODULE['<{pscleaner}prestashop>pscleaner_4bcb9cc248b7f6c8dc7f5c323bde76de'] = 'Vérifie et répare les problèmes d\'intégrité fonctionnelle et supprime les données par défaut (produits, commandes, clients)'; +$_MODULE['<{pscleaner}prestashop>pscleaner_752369f18aebeed9ae8384d8f1b5dc5e'] = 'Soyez très attentifs en utilisant cet outil, il n\'y a pas de retour en arrière possible !'; +$_MODULE['<{pscleaner}prestashop>pscleaner_550b877b1a255ba717cfad4b82057731'] = 'Les requêtes suivantes ont permis de réparer certaines données:'; +$_MODULE['<{pscleaner}prestashop>pscleaner_14a7ab23d566b4505d0c711338c19a08'] = '%d ligne(s)'; +$_MODULE['<{pscleaner}prestashop>pscleaner_d1ff3c9d57acd4283d2793a36737479e'] = 'Il n\'y a rien qui nécessite d\'être réparé.'; +$_MODULE['<{pscleaner}prestashop>pscleaner_53d097f11855337bb74f1444d6c47c99'] = 'Les requêtes suivantes ont permis de nettoyer votre base de données avec succès :'; +$_MODULE['<{pscleaner}prestashop>pscleaner_098c3581a731f08d24311bbf515adbbb'] = 'Félicitations, tout est déjà en ordre!'; +$_MODULE['<{pscleaner}prestashop>pscleaner_1bb7c5eb8682aeada82c407b40ec09c8'] = 'Catalogue supprimé'; +$_MODULE['<{pscleaner}prestashop>pscleaner_ed6ecb7169d5476ef5251524bb17552a'] = 'Commandes et clients supprimés'; +$_MODULE['<{pscleaner}prestashop>pscleaner_43364f357f96e8b70be4a44d44196807'] = 'Veuillez lire les mises en garde et cliquer sur le bouton pour les approuver.'; +$_MODULE['<{pscleaner}prestashop>pscleaner_6c69628e1d57fa6e39162b039a82133b'] = 'Souhaitez-vous supprimer le catalogue produit ?'; +$_MODULE['<{pscleaner}prestashop>pscleaner_6a68264705f23c8e3d505fd2c93a87ba'] = 'Souhaitez-vous supprimer commandes et clients ?'; +$_MODULE['<{pscleaner}prestashop>pscleaner_c32516babc5b6c47eb8ce1bfc223253c'] = 'Catalogue'; +$_MODULE['<{pscleaner}prestashop>pscleaner_da69e50b7440e12fe63287904819eaa3'] = 'J\'ai bien compris que tout le catalogue sera supprimé sans possibilité de retour en arrière : produits, caractéristiques, catégories, mot-clés, images, prix, fichiers joints, scènes, stocks, groupes et valeurs d\'attributs, fabricants, fournisseurs...'; +$_MODULE['<{pscleaner}prestashop>pscleaner_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé'; +$_MODULE['<{pscleaner}prestashop>pscleaner_b9f5c797ebbf55adccdd8539a65a0241'] = 'Désactivé'; +$_MODULE['<{pscleaner}prestashop>pscleaner_b2d7c99e984831bd36221baf34e9c26e'] = 'Supprimer le catalogue'; +$_MODULE['<{pscleaner}prestashop>pscleaner_3300d0bf086fa38cf593fe4feff351f1'] = 'Commandes et clients'; +$_MODULE['<{pscleaner}prestashop>pscleaner_a01f9a9a340c3c68a2dc4663f46d8637'] = 'J\'ai bien compris que tous les clients et commandes seront supprimés sans possibilité de retour en arrière : clients, paniers, commandes, connexions, visiteurs, stats...'; +$_MODULE['<{pscleaner}prestashop>pscleaner_17ca7f22baf84821b6b73462c96fb1e3'] = 'Supprimer les commandes et clients'; +$_MODULE['<{pscleaner}prestashop>pscleaner_3535aa31bd9005bde626ad4312b67d6b'] = 'Contraintes d\'intégrité fonctionnelle'; +$_MODULE['<{pscleaner}prestashop>pscleaner_e84c6595e849214a70b35ed8f95d7d16'] = 'Vérifier et réparer'; +$_MODULE['<{pscleaner}prestashop>pscleaner_ccc27439e3e08c444690af3bed668e2d'] = 'Nettoyage de la base de données'; +$_MODULE['<{pscleaner}prestashop>pscleaner_39707b9cfefe433d64f695623d2d3fd7'] = 'Nettoyer et optimiser'; + + +return $_MODULE; diff --git a/modules/statsbestmanufacturers/translations/index.php b/modules/pscleaner/translations/index.php similarity index 93% rename from modules/statsbestmanufacturers/translations/index.php rename to modules/pscleaner/translations/index.php index e5064df41..2a40ec79e 100644 --- a/modules/statsbestmanufacturers/translations/index.php +++ b/modules/pscleaner/translations/index.php @@ -23,13 +23,13 @@ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); -exit; \ No newline at end of file +exit; diff --git a/modules/statsbestmanufacturers/index.php b/modules/pscleaner/views/index.php similarity index 99% rename from modules/statsbestmanufacturers/index.php rename to modules/pscleaner/views/index.php index 8761a003e..3cc8f3917 100644 --- a/modules/statsbestmanufacturers/index.php +++ b/modules/pscleaner/views/index.php @@ -32,4 +32,4 @@ header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header('Location: ../'); -exit; \ No newline at end of file +exit; diff --git a/modules/pscleaner/views/templates/admin/_configure/helpers/form/form.tpl b/modules/pscleaner/views/templates/admin/_configure/helpers/form/form.tpl new file mode 100644 index 000000000..de18b7d1e --- /dev/null +++ b/modules/pscleaner/views/templates/admin/_configure/helpers/form/form.tpl @@ -0,0 +1,59 @@ +{* +* 2007-2016 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Academic Free License (AFL 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/afl-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@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2016 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*} + +{extends file="helpers/form/form.tpl"} +{block name="field"} + {if $input.type == 'desc'} +
    {$input.text}
    + {/if} + {$smarty.block.parent} +{/block} + +{block name="input"} + + {if $input.type == 'switch' && $smarty.const._PS_VERSION_|@addcslashes:'\'' < '1.6'} + {foreach $input.values as $value} + + + {if isset($input.br) && $input.br}
    {/if} + {if isset($value.p) && $value.p}

    {$value.p}

    {/if} + {/foreach} + {else} + {$smarty.block.parent} + {/if} + +{/block} \ No newline at end of file diff --git a/modules/statscarrier/index.php b/modules/pscleaner/views/templates/admin/_configure/helpers/form/index.php similarity index 99% rename from modules/statscarrier/index.php rename to modules/pscleaner/views/templates/admin/_configure/helpers/form/index.php index 8761a003e..3cc8f3917 100644 --- a/modules/statscarrier/index.php +++ b/modules/pscleaner/views/templates/admin/_configure/helpers/form/index.php @@ -32,4 +32,4 @@ header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header('Location: ../'); -exit; \ No newline at end of file +exit; diff --git a/modules/statsbestsuppliers/index.php b/modules/pscleaner/views/templates/admin/_configure/helpers/index.php similarity index 97% rename from modules/statsbestsuppliers/index.php rename to modules/pscleaner/views/templates/admin/_configure/helpers/index.php index 531cab52a..3cc8f3917 100644 --- a/modules/statsbestsuppliers/index.php +++ b/modules/pscleaner/views/templates/admin/_configure/helpers/index.php @@ -20,7 +20,6 @@ * * @author PrestaShop SA * @copyright 2007-2016 PrestaShop SA -* @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -33,4 +32,4 @@ header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header('Location: ../'); -exit; \ No newline at end of file +exit; diff --git a/modules/pscleaner/views/templates/admin/_configure/index.php b/modules/pscleaner/views/templates/admin/_configure/index.php new file mode 100644 index 000000000..3cc8f3917 --- /dev/null +++ b/modules/pscleaner/views/templates/admin/_configure/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2016 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/modules/pscleaner/views/templates/admin/index.php b/modules/pscleaner/views/templates/admin/index.php new file mode 100644 index 000000000..3cc8f3917 --- /dev/null +++ b/modules/pscleaner/views/templates/admin/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2016 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/modules/pscleaner/views/templates/index.php b/modules/pscleaner/views/templates/index.php new file mode 100644 index 000000000..3cc8f3917 --- /dev/null +++ b/modules/pscleaner/views/templates/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2016 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; diff --git a/modules/sekeywords/Readme.md b/modules/sekeywords/Readme.md deleted file mode 100644 index 8b3715694..000000000 --- a/modules/sekeywords/Readme.md +++ /dev/null @@ -1,37 +0,0 @@ -# Search engine keywords - -## About - -Displays which keywords have led visitors to your website. - -## Contributing - -PrestaShop modules are open-source extensions to the PrestaShop e-commerce solution. Everyone is welcome and even encouraged to contribute with their own improvements. - -### Requirements - -Contributors **must** follow the following rules: - -* **Make your Pull Request on the "dev" branch**, NOT the "master" branch. -* Do not update the module's version number. -* Follow [the coding standards][1]. - -### Process in details - -Contributors wishing to edit a module's files should follow the following process: - -1. Create your GitHub account, if you do not have one already. -2. Fork the sekeywords project to your GitHub account. -3. Clone your fork to your local machine in the ```/modules``` directory of your PrestaShop installation. -4. Create a branch in your local clone of the module for your changes. -5. Change the files in your branch. Be sure to follow [the coding standards][1]! -6. Push your changed branch to your fork in your GitHub account. -7. Create a pull request for your changes **on the _'dev'_ branch** of the module's project. Be sure to follow [the commit message norm][2] in your pull request. If you need help to make a pull request, read the [Github help page about creating pull requests][3]. -8. Wait for one of the core developers either to include your change in the codebase, or to comment on possible improvements you should make to your code. - -That's it: you have contributed to this open-source project! Congratulations! - -[1]: http://doc.prestashop.com/display/PS16/Coding+Standards -[2]: http://doc.prestashop.com/display/PS16/How+to+write+a+commit+message -[3]: https://help.github.com/articles/using-pull-requests - diff --git a/modules/sekeywords/index.php b/modules/sekeywords/index.php index 9f6ab7b95..531cab52a 100644 --- a/modules/sekeywords/index.php +++ b/modules/sekeywords/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/sekeywords/sekeywords.php b/modules/sekeywords/sekeywords.php index 2941f3f2c..0e7cd850a 100644 --- a/modules/sekeywords/sekeywords.php +++ b/modules/sekeywords/sekeywords.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -38,7 +38,7 @@ class SEKeywords extends ModuleGraph { $this->name = 'sekeywords'; $this->tab = 'analytics_stats'; - $this->version = '1.2.4'; + $this->version = '1.4.1'; $this->author = 'PrestaShop'; $this->need_instance = 0; @@ -56,6 +56,7 @@ class SEKeywords extends ModuleGraph $this->displayName = $this->l('Search engine keywords'); $this->description = $this->l('Displays which keywords have led visitors to your website.'); + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); } public function install() @@ -126,7 +127,7 @@ class SEKeywords extends ModuleGraph

    '.$this->l('How does it work?').'

    ' .$this->l('When a visitor comes to your website, the web server notes the URL of the site he/she comes from. This module then parses the URL, and if it finds a reference to a known search engine, it finds the keywords in it.').'
    '. - $this->l('This module can recognize all the search engines listed in Qloapps\'s Stats/Search Engine page -- and you can add more!').'
    '. + $this->l('This module can recognize all the search engines listed in QloApps\'s Stats/Search Engine page -- and you can add more!').'
    '. $this->l('IMPORTANT NOTE: in September 2013, Google chose to encrypt its searches queries using SSL. This means all the referer-based tools in the World (including this one) cannot identify Google keywords anymore.').'

    diff --git a/modules/sekeywords/translations/ag.php b/modules/sekeywords/translations/ag.php deleted file mode 100644 index 03005126b..000000000 --- a/modules/sekeywords/translations/ag.php +++ /dev/null @@ -1,29 +0,0 @@ -sekeywords_65b0b42febc8ea16db4652eab6f420a4'] = 'Palabras clave en el motor de búsqueda'; -$_MODULE['<{sekeywords}prestashop>sekeywords_8effa630c1740a748801b881acb90fa6'] = 'Mostrar qué palabras claves han llevado visitantes a su tienda.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6602bbeb2956c035fb4cb5e844a4861b'] = 'Guia'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9ed50bd6876a9273f2192c224b87657b'] = 'Identifique las palabras claves externas en los motores de la búsqueda'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7acbda50735929f05f6f463e05bc7ead'] = 'Una de las maneras más comunes de encontrar un sitio web a través de un motor de búsqueda.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_4ad084c0b816ff9278765a00720caf32'] = 'La identificación de las palabras clave más populares escritos por sus visitantes nuevos le permite ver los productos que debe poner por delante si quiere atraer a más visitantes y clientes potenciales.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_359f9e79e746fa9f684e5cda9e60ca2e'] = '¿Cómo funciona?'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ec2184245585ba979912af9e34d738c6'] = 'Cuando un visitante va a tu web, el servidor registra la URL de la web de la que viene esa persona. Este módulo analiza la URL y si encuentra una referencia de un servidor de búsqueda conocido, detecta las palabras clave.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ef79a74a2fd296e19e8cc58cdae91d43'] = 'Este módulo puede reconocer todos los motores de búsqueda listados en la página de estadísticas y motores de búsqueda de PrestaShop, ¡y tú puedes añadir más!'; -$_MODULE['<{sekeywords}prestashop>sekeywords_dcbcf5d190af87351a16edd5f132c657'] = 'NOTA IMPORTANTE: en septiembre de 2013, Google decidió encriptar sus consultas de búsqueda mediante SSL. Esto significa que todas las herramientas de referencia del mundo (incluyendo esta) son incapaces de identificar las palabras clave de Google.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_16d5f8dc3bc4411c85848ae9cf6a947a'] = '%d palabra clave encontrada para su búsqueda.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_5029f8eef402bb8ddd6191dffb5e7c19'] = '%d palabras clave encontrada para su búsqueda.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_0849140171616600e8f2c35f0a225212'] = 'Filtrar por palabra clave'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6e632566b6e16dbd2273e83d7c53182b'] = 'y un mínimo de incidencias'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9639e32cab248434a17ab32237cb3b71'] = 'Aplicar'; -$_MODULE['<{sekeywords}prestashop>sekeywords_867343577fa1f33caa632a19543bd252'] = 'Palabras clave'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e52e6aa1a43a0187e44f048f658db5f9'] = 'Frecuencia'; -$_MODULE['<{sekeywords}prestashop>sekeywords_998e4c5c80f27dec552e99dfed34889a'] = 'Exportar CSV'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7b48f6cc4a1dde7fca9597e717c2465f'] = 'No hay palabras clave'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e15832aa200f342e8f4ab580b43a72a8'] = '10 primeras palabras clave'; -$_MODULE['<{sekeywords}prestashop>sekeywords_52ef9633d88a7480b3a938ff9eaa2a25'] = 'Otros'; - - -return $_MODULE; diff --git a/modules/sekeywords/translations/ar.php b/modules/sekeywords/translations/ar.php deleted file mode 100644 index f67f36ff1..000000000 --- a/modules/sekeywords/translations/ar.php +++ /dev/null @@ -1,19 +0,0 @@ -sekeywords_65b0b42febc8ea16db4652eab6f420a4'] = 'الكلمات الرئيسية محرك البحث'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6602bbeb2956c035fb4cb5e844a4861b'] = 'المعالج'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9ed50bd6876a9273f2192c224b87657b'] = 'تحديد الكلمات الرئيسية محركات البحث الخارجية \''; -$_MODULE['<{sekeywords}prestashop>sekeywords_359f9e79e746fa9f684e5cda9e60ca2e'] = 'كيف تعمل هذه ؟'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9639e32cab248434a17ab32237cb3b71'] = 'تطبيق'; -$_MODULE['<{sekeywords}prestashop>sekeywords_867343577fa1f33caa632a19543bd252'] = 'الكلمات المفتاحية'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e52e6aa1a43a0187e44f048f658db5f9'] = 'الحوادث'; -$_MODULE['<{sekeywords}prestashop>sekeywords_998e4c5c80f27dec552e99dfed34889a'] = 'إستيراد ملف إعدادات'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7b48f6cc4a1dde7fca9597e717c2465f'] = 'لا يوجد كلمات مفتاحية'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e15832aa200f342e8f4ab580b43a72a8'] = '10 الكلمات first'; -$_MODULE['<{sekeywords}prestashop>sekeywords_52ef9633d88a7480b3a938ff9eaa2a25'] = 'أخرى'; - - -return $_MODULE; diff --git a/modules/sekeywords/translations/bg.php b/modules/sekeywords/translations/bg.php deleted file mode 100644 index b21a812b5..000000000 --- a/modules/sekeywords/translations/bg.php +++ /dev/null @@ -1,29 +0,0 @@ -sekeywords_65b0b42febc8ea16db4652eab6f420a4'] = 'Ключови думи за търсачки'; -$_MODULE['<{sekeywords}prestashop>sekeywords_8effa630c1740a748801b881acb90fa6'] = 'Показва кои ключови думи са отвели потребителите до магазина Ви.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6602bbeb2956c035fb4cb5e844a4861b'] = 'Инструкция'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9ed50bd6876a9273f2192c224b87657b'] = 'Идентифициране на ключови думи от външни търсачки'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7acbda50735929f05f6f463e05bc7ead'] = 'Това е един от най-популярните начини за намиране на уеб сайта с търсачка.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_4ad084c0b816ff9278765a00720caf32'] = 'Идентифицирането на най-популярните ключови думи, въведени от вашите нови посетители, ви позволява да видите продуктите, които трябва да са по-напред, ако желаете да постигнете по-добра видимост от търсачките.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_359f9e79e746fa9f684e5cda9e60ca2e'] = 'Как работи това?'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ec2184245585ba979912af9e34d738c6'] = 'Когато посетител посети сайта ви, уеб-сървърът отчита адреса (URL) на сайта, от който той/тя идва. След това този модул анализира адреса и ако намери референция към позната търсачка, намира ключовата дума в нея.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ef79a74a2fd296e19e8cc58cdae91d43'] = 'Този модул може да разпознае всички търсачки, изредени в PrestaShop страницата Статистики/Търсачки – и Вие можете да добавите още!'; -$_MODULE['<{sekeywords}prestashop>sekeywords_dcbcf5d190af87351a16edd5f132c657'] = 'ВАЖНО: през септември 2013 Гугъл избра да криптира заявките си за търсене, използвайки SSL. Това означава всички инструменти на реферали в света (включително и този) повече да не могат да разпознават ключовите думи.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_16d5f8dc3bc4411c85848ae9cf6a947a'] = 'Ключовата дума %d отговаря на заявката.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_5029f8eef402bb8ddd6191dffb5e7c19'] = 'Ключовите думи %d отговарят на заявката.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_0849140171616600e8f2c35f0a225212'] = 'Филтрирай по ключови думи'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6e632566b6e16dbd2273e83d7c53182b'] = 'И минимална повтаряемост'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9639e32cab248434a17ab32237cb3b71'] = 'Приложи'; -$_MODULE['<{sekeywords}prestashop>sekeywords_867343577fa1f33caa632a19543bd252'] = 'Ключови думи'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e52e6aa1a43a0187e44f048f658db5f9'] = 'Повтаряемост'; -$_MODULE['<{sekeywords}prestashop>sekeywords_998e4c5c80f27dec552e99dfed34889a'] = 'Експорт на CSV'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7b48f6cc4a1dde7fca9597e717c2465f'] = 'Няма ключови думи'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e15832aa200f342e8f4ab580b43a72a8'] = 'Топ 10 ключови думи'; -$_MODULE['<{sekeywords}prestashop>sekeywords_52ef9633d88a7480b3a938ff9eaa2a25'] = 'Други'; - - -return $_MODULE; diff --git a/modules/sekeywords/translations/br.php b/modules/sekeywords/translations/br.php deleted file mode 100644 index 9cf4244a3..000000000 --- a/modules/sekeywords/translations/br.php +++ /dev/null @@ -1,29 +0,0 @@ -sekeywords_65b0b42febc8ea16db4652eab6f420a4'] = 'Motor de buscas de palavras-chaves'; -$_MODULE['<{sekeywords}prestashop>sekeywords_8effa630c1740a748801b881acb90fa6'] = 'Mostra quais palavras trouxeram visitantes à sua loja'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6602bbeb2956c035fb4cb5e844a4861b'] = 'Guia'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9ed50bd6876a9273f2192c224b87657b'] = 'Identificar palavras-chave de mecanismos de busca externos'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7acbda50735929f05f6f463e05bc7ead'] = 'Esta é uma das formas mais comuns de encontrar um site através de um mecanismo de buscas.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_4ad084c0b816ff9278765a00720caf32'] = 'Identificando as palavras-chave mais populares informadas por seus clientes lhe permite ver os produtos que você deve colocar na página inicial para alcançar melhor visibilidade nos motores de busca.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_359f9e79e746fa9f684e5cda9e60ca2e'] = 'Como funciona?'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ec2184245585ba979912af9e34d738c6'] = 'Quando um visitante chega ao seu site, o servidor observa sua localização anterior. Este módulo analisa a URL e encontra as palavras-chave na mesma.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ef79a74a2fd296e19e8cc58cdae91d43'] = 'Este módulo reconhece todos os motores de busca listados na página Estatísticas -> Mecanismos de Busca -- e você pode adicionar mais!'; -$_MODULE['<{sekeywords}prestashop>sekeywords_dcbcf5d190af87351a16edd5f132c657'] = 'NOTA IMPORTANTE: em Setembro de 2013, Google escolheu criptografar consultas utilizando SSL. Isto significa que todas as ferramentas baseadas em sites de referência do mundo não podem mais identificar palavras no Google.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_16d5f8dc3bc4411c85848ae9cf6a947a'] = '%d palavra-chave corresponde à sua consulta.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_5029f8eef402bb8ddd6191dffb5e7c19'] = '%d palavras-chave corresponde à sua consulta.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_0849140171616600e8f2c35f0a225212'] = 'Filtrar por palavra-chave'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6e632566b6e16dbd2273e83d7c53182b'] = 'e ocorrências mínimas'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9639e32cab248434a17ab32237cb3b71'] = 'Aplicar'; -$_MODULE['<{sekeywords}prestashop>sekeywords_867343577fa1f33caa632a19543bd252'] = 'Palavras chaves'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e52e6aa1a43a0187e44f048f658db5f9'] = 'Ocorrências'; -$_MODULE['<{sekeywords}prestashop>sekeywords_998e4c5c80f27dec552e99dfed34889a'] = 'Exportar CSV'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7b48f6cc4a1dde7fca9597e717c2465f'] = 'Sem palavras-chave'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e15832aa200f342e8f4ab580b43a72a8'] = 'Primeiras 10 palavras-chave'; -$_MODULE['<{sekeywords}prestashop>sekeywords_52ef9633d88a7480b3a938ff9eaa2a25'] = 'Outros'; - - -return $_MODULE; diff --git a/modules/sekeywords/translations/ca.php b/modules/sekeywords/translations/ca.php deleted file mode 100644 index 8a5052647..000000000 --- a/modules/sekeywords/translations/ca.php +++ /dev/null @@ -1,29 +0,0 @@ -sekeywords_65b0b42febc8ea16db4652eab6f420a4'] = 'Motor de cerca de paraules clau'; -$_MODULE['<{sekeywords}prestashop>sekeywords_8effa630c1740a748801b881acb90fa6'] = 'Mostra les paraules clau que han portat els visitants al vostre lloc web.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6602bbeb2956c035fb4cb5e844a4861b'] = 'Guia'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9ed50bd6876a9273f2192c224b87657b'] = 'Identificar les paraules clau en motors externs de cerca'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7acbda50735929f05f6f463e05bc7ead'] = 'Aquest és un dels camins més comuns per trobar un lloc web mitjançant un motor de cerca.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_4ad084c0b816ff9278765a00720caf32'] = 'Identificant les paraules clau més populars que els vostres nous visitants han utilitzat veureu quins productes heu de posar a la pàgina d\'inici per tal d\'aconseguir millorar la visibilitat als motors de cerca.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_359f9e79e746fa9f684e5cda9e60ca2e'] = 'Com funciona?'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ec2184245585ba979912af9e34d738c6'] = 'Quan un visitant arriba al vostre lloc web, el servidor web s\'apunta l\'URL del lloc del qual procedeix el visitant. Aquest mòdul analitza l\'URL, i si troba alguna referència a un motor de cerca conegut, allí hi troba les paraules clau.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ef79a74a2fd296e19e8cc58cdae91d43'] = 'Aquest mòdul reconeix tots els motors de cerca llistats a la pàgina d\'Estadística/Motors de cerca de PrestaShop -- i n\'hi podeu afegir més!'; -$_MODULE['<{sekeywords}prestashop>sekeywords_dcbcf5d190af87351a16edd5f132c657'] = 'NOTA IMPORTANT: Al setembre de 2013, Google va decidir encriptar les consultes de cerca amb SSL. Això significa que totes les eines basades en l\'anàlisi de procedència (inclosa aquesta) ja no poden identificar més paraules clau de Google.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_16d5f8dc3bc4411c85848ae9cf6a947a'] = 'S\'han trobat %s coincidències a la vostra cerca.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_5029f8eef402bb8ddd6191dffb5e7c19'] = 'S\'ha trobat %s coincidència a la vostra cerca.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_0849140171616600e8f2c35f0a225212'] = 'Filtra per paraula clau'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6e632566b6e16dbd2273e83d7c53182b'] = 'i successos min'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9639e32cab248434a17ab32237cb3b71'] = 'Aplica'; -$_MODULE['<{sekeywords}prestashop>sekeywords_867343577fa1f33caa632a19543bd252'] = 'Paraules clau'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e52e6aa1a43a0187e44f048f658db5f9'] = 'Ocurrències'; -$_MODULE['<{sekeywords}prestashop>sekeywords_998e4c5c80f27dec552e99dfed34889a'] = 'Exportació CSV'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7b48f6cc4a1dde7fca9597e717c2465f'] = 'No hi ha paraules clau'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e15832aa200f342e8f4ab580b43a72a8'] = 'Primeres 10 paraules clau'; -$_MODULE['<{sekeywords}prestashop>sekeywords_52ef9633d88a7480b3a938ff9eaa2a25'] = 'Altres'; - - -return $_MODULE; diff --git a/modules/sekeywords/translations/de.php b/modules/sekeywords/translations/de.php deleted file mode 100644 index 034ce92f3..000000000 --- a/modules/sekeywords/translations/de.php +++ /dev/null @@ -1,29 +0,0 @@ -sekeywords_65b0b42febc8ea16db4652eab6f420a4'] = 'Suchmaschinen-Schlüsselworte'; -$_MODULE['<{sekeywords}prestashop>sekeywords_8effa630c1740a748801b881acb90fa6'] = 'Zeigt an, über welche Suchbegriffe Besucher Ihre Webseite gefunden haben'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6602bbeb2956c035fb4cb5e844a4861b'] = 'Erklärung'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9ed50bd6876a9273f2192c224b87657b'] = 'Externe Suchmaschinen-Schlüsselworte ermitteln'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7acbda50735929f05f6f463e05bc7ead'] = 'Eine der gängigsten Möglichkeiten, eine Website mittels einer Suchmaschine zu finden'; -$_MODULE['<{sekeywords}prestashop>sekeywords_4ad084c0b816ff9278765a00720caf32'] = 'Wenn Sie die von Neukunden bevorzugten Suchbegriffe herausfinden, wissen Sie auch, welche Artikel Sie an vorderster Stelle platzieren müssen, um mehr Besucher und potentielle Kunden anzuziehen.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_359f9e79e746fa9f684e5cda9e60ca2e'] = 'Wie funktioniert das?'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ec2184245585ba979912af9e34d738c6'] = 'Wenn jemand Ihre Webseite besucht, merkt sich der Webserver die Herkunfts-URL. Dieses Modul durchsucht die URL auf Hinweise auf bekannte Suchmaschinen, um die Suchbegriffe herauszufiltern.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ef79a74a2fd296e19e8cc58cdae91d43'] = 'Das Modul erkennt alle Suchmaschinen, die auf der PrestaShop-Suchmaschinenseite gelistet sind. Sie können aber auch neue hinzufügen. '; -$_MODULE['<{sekeywords}prestashop>sekeywords_dcbcf5d190af87351a16edd5f132c657'] = 'WICHTIG: Seit September verschlüsselt Google alle Suchanfragen, so dass die Suchbegriffe mit herkömmlichen Mitteln (die auch dieses Modul nutzt) nicht mehr gefunden werden können.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_16d5f8dc3bc4411c85848ae9cf6a947a'] = '%d Schlüsselworte erfüllen Ihre Abfragekriterien'; -$_MODULE['<{sekeywords}prestashop>sekeywords_5029f8eef402bb8ddd6191dffb5e7c19'] = '%d Schlüsselworte erfüllen Ihre Abfragekriterien'; -$_MODULE['<{sekeywords}prestashop>sekeywords_0849140171616600e8f2c35f0a225212'] = 'Filtern nach Schlüsselwort'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6e632566b6e16dbd2273e83d7c53182b'] = 'und Mindestvorkommen'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9639e32cab248434a17ab32237cb3b71'] = 'Anwenden'; -$_MODULE['<{sekeywords}prestashop>sekeywords_867343577fa1f33caa632a19543bd252'] = 'Suchbegriffe'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e52e6aa1a43a0187e44f048f658db5f9'] = 'Häufigkeit'; -$_MODULE['<{sekeywords}prestashop>sekeywords_998e4c5c80f27dec552e99dfed34889a'] = 'CSV-Export'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7b48f6cc4a1dde7fca9597e717c2465f'] = 'Keine Suchbegriffe'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e15832aa200f342e8f4ab580b43a72a8'] = '10 Haupt-Suchbegriffe'; -$_MODULE['<{sekeywords}prestashop>sekeywords_52ef9633d88a7480b3a938ff9eaa2a25'] = 'Andere'; - - -return $_MODULE; diff --git a/modules/sekeywords/translations/en.php b/modules/sekeywords/translations/en.php deleted file mode 100644 index 3d02ea639..000000000 --- a/modules/sekeywords/translations/en.php +++ /dev/null @@ -1,29 +0,0 @@ -sekeywords_65b0b42febc8ea16db4652eab6f420a4'] = 'Search engine keywords'; -$_MODULE['<{sekeywords}prestashop>sekeywords_8effa630c1740a748801b881acb90fa6'] = 'Displays which keywords have led visitors to your website.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6602bbeb2956c035fb4cb5e844a4861b'] = 'Guide'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9ed50bd6876a9273f2192c224b87657b'] = 'Identify external search engine keywords'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7acbda50735929f05f6f463e05bc7ead'] = 'This is one of the most common ways of finding a website through a search engine.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_4ad084c0b816ff9278765a00720caf32'] = 'Identifying the most popular keywords entered by your new visitors allows you to see the products you should put in front if you want to achieve better visibility in search engines.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_359f9e79e746fa9f684e5cda9e60ca2e'] = 'How does it work?'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ec2184245585ba979912af9e34d738c6'] = 'When a visitor comes to your website, the web server notes the URL of the site he/she comes from. This module then parses the URL, and if it finds a reference to a known search engine, it finds the keywords in it.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ef79a74a2fd296e19e8cc58cdae91d43'] = 'This module can recognize all the search engines listed in PrestaShop\'s Stats/Search Engine page -- and you can add more!'; -$_MODULE['<{sekeywords}prestashop>sekeywords_dcbcf5d190af87351a16edd5f132c657'] = 'IMPORTANT NOTE: in September 2013, Google chose to encrypt its searches queries using SSL. This means all the referer-based tools in the World (including this one) cannot identify Google keywords anymore.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_16d5f8dc3bc4411c85848ae9cf6a947a'] = '%d keyword matches your query.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_5029f8eef402bb8ddd6191dffb5e7c19'] = '%d keywords match your query.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_0849140171616600e8f2c35f0a225212'] = 'Filter by keyword'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6e632566b6e16dbd2273e83d7c53182b'] = 'And min occurrences'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9639e32cab248434a17ab32237cb3b71'] = 'Apply'; -$_MODULE['<{sekeywords}prestashop>sekeywords_867343577fa1f33caa632a19543bd252'] = 'Keywords'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e52e6aa1a43a0187e44f048f658db5f9'] = 'Occurrences'; -$_MODULE['<{sekeywords}prestashop>sekeywords_998e4c5c80f27dec552e99dfed34889a'] = 'CSV Export'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7b48f6cc4a1dde7fca9597e717c2465f'] = 'No keywords'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e15832aa200f342e8f4ab580b43a72a8'] = 'Top 10 keywords'; -$_MODULE['<{sekeywords}prestashop>sekeywords_52ef9633d88a7480b3a938ff9eaa2a25'] = 'Others'; - - -return $_MODULE; diff --git a/modules/sekeywords/translations/es.php b/modules/sekeywords/translations/es.php deleted file mode 100644 index 9da6e9b22..000000000 --- a/modules/sekeywords/translations/es.php +++ /dev/null @@ -1,29 +0,0 @@ -sekeywords_65b0b42febc8ea16db4652eab6f420a4'] = 'Palabras clave en el motor de búsqueda'; -$_MODULE['<{sekeywords}prestashop>sekeywords_8effa630c1740a748801b881acb90fa6'] = 'Mostrar qué palabras claves han llevado visitantes a su tienda.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6602bbeb2956c035fb4cb5e844a4861b'] = 'Guía'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9ed50bd6876a9273f2192c224b87657b'] = 'Identifique las palabras claves externas en los motores de la búsqueda'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7acbda50735929f05f6f463e05bc7ead'] = 'Una de las maneras más comunes de encontrar un sitio web a través de un motor de búsqueda.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_4ad084c0b816ff9278765a00720caf32'] = 'La identificación de las palabras clave más populares escritos por sus visitantes nuevos le permite ver los productos que debe poner por delante si quiere atraer a más visitantes y clientes potenciales.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_359f9e79e746fa9f684e5cda9e60ca2e'] = '¿Cómo funciona?'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ec2184245585ba979912af9e34d738c6'] = 'Cuando un visitante va a tu web, el servidor registra la URL de la web de la que viene esa persona. Este módulo analiza la URL y si encuentra una referencia de un servidor de búsqueda conocido, detecta las palabras clave.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ef79a74a2fd296e19e8cc58cdae91d43'] = 'Este módulo puede reconocer todos los motores de búsqueda listados en la página de estadísticas y motores de búsqueda de PrestaShop, ¡y tú puedes añadir más!'; -$_MODULE['<{sekeywords}prestashop>sekeywords_dcbcf5d190af87351a16edd5f132c657'] = 'NOTA IMPORTANTE: en septiembre de 2013, Google decidió encriptar sus consultas de búsqueda mediante SSL. Esto significa que todas las herramientas de referencia del mundo (incluyendo esta) son incapaces de identificar las palabras clave de Google.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_16d5f8dc3bc4411c85848ae9cf6a947a'] = '%d palabra clave encontrada para su búsqueda.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_5029f8eef402bb8ddd6191dffb5e7c19'] = '%d palabras clave encontrada para su búsqueda.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_0849140171616600e8f2c35f0a225212'] = 'Filtrar por palabra clave'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6e632566b6e16dbd2273e83d7c53182b'] = 'y un mínimo de incidencias'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9639e32cab248434a17ab32237cb3b71'] = 'Aplicar'; -$_MODULE['<{sekeywords}prestashop>sekeywords_867343577fa1f33caa632a19543bd252'] = 'Palabras clave'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e52e6aa1a43a0187e44f048f658db5f9'] = 'Frecuencia'; -$_MODULE['<{sekeywords}prestashop>sekeywords_998e4c5c80f27dec552e99dfed34889a'] = 'Exportar CSV'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7b48f6cc4a1dde7fca9597e717c2465f'] = 'No hay palabras clave'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e15832aa200f342e8f4ab580b43a72a8'] = '10 primeras palabras clave'; -$_MODULE['<{sekeywords}prestashop>sekeywords_52ef9633d88a7480b3a938ff9eaa2a25'] = 'Otros'; - - -return $_MODULE; diff --git a/modules/sekeywords/translations/fr.php b/modules/sekeywords/translations/fr.php deleted file mode 100644 index 94c8069e4..000000000 --- a/modules/sekeywords/translations/fr.php +++ /dev/null @@ -1,29 +0,0 @@ -sekeywords_65b0b42febc8ea16db4652eab6f420a4'] = 'Mots clés'; -$_MODULE['<{sekeywords}prestashop>sekeywords_8effa630c1740a748801b881acb90fa6'] = 'Affiche les mots clés qui ont mené les visiteurs jusqu\'à votre boutique.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6602bbeb2956c035fb4cb5e844a4861b'] = 'Guide'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9ed50bd6876a9273f2192c224b87657b'] = 'Identifier les mots-clés par moteurs de recherche externes'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7acbda50735929f05f6f463e05bc7ead'] = 'Il s\'agit d\'une des manières les plus connues de trouver un site web par le biais d\'un moteur de recherche.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_4ad084c0b816ff9278765a00720caf32'] = 'Identifier les mots-clés les plus populaires saisis par vos nouveaux visiteurs vous permet de voir les produits que vous devriez mettre en avant si vous voulez avoir une meilleure visibilité dans les moteurs de recherche.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_359f9e79e746fa9f684e5cda9e60ca2e'] = 'Comment ça marche ?'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ec2184245585ba979912af9e34d738c6'] = 'Quand un visiteur arrive sur votre site, le serveur web note l\'adresse du site duquel il vient. Ce module analyse ensuite l\'URL, et s\'il y trouve une référence à une moteur de recherche connu, il y trouvera le mot-clé.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ef79a74a2fd296e19e8cc58cdae91d43'] = 'Ce module peut reconnaître tous les moteurs de recherche listés dans la page Stats/Moteurs de recherche de PrestaShop -- et vous pouvez en ajouter d\'autres !'; -$_MODULE['<{sekeywords}prestashop>sekeywords_dcbcf5d190af87351a16edd5f132c657'] = 'NOTE IMPORTANTE : depuis septembre 2013, Google a choisi de chiffrer ses requêtes à l\'aide de SSL. Cela signifie que tous les outils basés sur les référants du monde (dont celui-ci) ne peuvent plus identifier les mots-clés en provenance de Google.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_16d5f8dc3bc4411c85848ae9cf6a947a'] = '%d mot-clé trouvé pour votre recherche.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_5029f8eef402bb8ddd6191dffb5e7c19'] = '%d mots-clés trouvés pour votre recherche.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_0849140171616600e8f2c35f0a225212'] = 'Filter par mot clé'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6e632566b6e16dbd2273e83d7c53182b'] = 'et minimum d\'occurrences'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9639e32cab248434a17ab32237cb3b71'] = 'Enregistrer'; -$_MODULE['<{sekeywords}prestashop>sekeywords_867343577fa1f33caa632a19543bd252'] = 'Mots clés'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e52e6aa1a43a0187e44f048f658db5f9'] = 'Occurences'; -$_MODULE['<{sekeywords}prestashop>sekeywords_998e4c5c80f27dec552e99dfed34889a'] = 'Export CSV'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7b48f6cc4a1dde7fca9597e717c2465f'] = 'Aucun mot clé'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e15832aa200f342e8f4ab580b43a72a8'] = '10 premiers mots-clés'; -$_MODULE['<{sekeywords}prestashop>sekeywords_52ef9633d88a7480b3a938ff9eaa2a25'] = 'Autres'; - - -return $_MODULE; diff --git a/modules/sekeywords/translations/gl.php b/modules/sekeywords/translations/gl.php deleted file mode 100644 index 7c3f8b394..000000000 --- a/modules/sekeywords/translations/gl.php +++ /dev/null @@ -1,11 +0,0 @@ -sekeywords_6602bbeb2956c035fb4cb5e844a4861b'] = 'Guia'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9639e32cab248434a17ab32237cb3b71'] = 'Aplicar'; -$_MODULE['<{sekeywords}prestashop>sekeywords_867343577fa1f33caa632a19543bd252'] = 'Palabras chave'; - - -return $_MODULE; diff --git a/modules/sekeywords/translations/id.php b/modules/sekeywords/translations/id.php deleted file mode 100644 index ff7945bdf..000000000 --- a/modules/sekeywords/translations/id.php +++ /dev/null @@ -1,29 +0,0 @@ -sekeywords_65b0b42febc8ea16db4652eab6f420a4'] = 'Mesin pencari kata kunci'; -$_MODULE['<{sekeywords}prestashop>sekeywords_8effa630c1740a748801b881acb90fa6'] = 'Menampilkan kata kunci yang menarik kunjungan ke website Anda.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6602bbeb2956c035fb4cb5e844a4861b'] = 'Panduan'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9ed50bd6876a9273f2192c224b87657b'] = 'Identify external search engines\' keywords'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7acbda50735929f05f6f463e05bc7ead'] = 'Adalah cara umum menemukan website menggunakan mesin pencari.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_4ad084c0b816ff9278765a00720caf32'] = 'Identifikasi keyword yang populer yang dimasukan pengunjung memungkinkan Anda untuk menyimpan produk dihalaman depan sehingga akan lebih optimal bagi mesin pencar.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_359f9e79e746fa9f684e5cda9e60ca2e'] = 'Bagaimana cara kerjanya?'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ec2184245585ba979912af9e34d738c6'] = 'Ketika pengunjung datang ke website Anda, web server mencatat URL asal mereka. Modul ini dapat mengenali URL, menemukan mesin pencari yang digunakan dan mencari keyword yang digunakan.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ef79a74a2fd296e19e8cc58cdae91d43'] = 'Modul ini dapat mengenali semua mesin pencari yang terdaftar di halaman statistik mesin pencari Prestashop -- dan Anda dapat menambahkan mesin pencari lainnya!'; -$_MODULE['<{sekeywords}prestashop>sekeywords_dcbcf5d190af87351a16edd5f132c657'] = 'CATATAN : pada September 2012, Google menggunakan SSL pada query pencarian. Hal ini berarti semua pengecekan referer (termasuk modul ini) tidak dapat mengidentifikasi keyword dari Google.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_16d5f8dc3bc4411c85848ae9cf6a947a'] = '%d keyword cocok dengan query Anda.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_5029f8eef402bb8ddd6191dffb5e7c19'] = '%d keyword cocok dengan query Anda.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_0849140171616600e8f2c35f0a225212'] = 'Filter dengan kata kunci'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6e632566b6e16dbd2273e83d7c53182b'] = 'dan min kejadian'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9639e32cab248434a17ab32237cb3b71'] = 'Berlaku'; -$_MODULE['<{sekeywords}prestashop>sekeywords_867343577fa1f33caa632a19543bd252'] = 'Kata kunci'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e52e6aa1a43a0187e44f048f658db5f9'] = 'Kemunculan'; -$_MODULE['<{sekeywords}prestashop>sekeywords_998e4c5c80f27dec552e99dfed34889a'] = 'Ekspor CSV'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7b48f6cc4a1dde7fca9597e717c2465f'] = 'Tidak ada kata kunci'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e15832aa200f342e8f4ab580b43a72a8'] = '10 keyword terpopuler'; -$_MODULE['<{sekeywords}prestashop>sekeywords_52ef9633d88a7480b3a938ff9eaa2a25'] = 'Lainnya'; - - -return $_MODULE; diff --git a/modules/sekeywords/translations/index.php b/modules/sekeywords/translations/index.php index a41987dff..e5064df41 100644 --- a/modules/sekeywords/translations/index.php +++ b/modules/sekeywords/translations/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/sekeywords/translations/nl.php b/modules/sekeywords/translations/nl.php deleted file mode 100644 index bb8e12b3a..000000000 --- a/modules/sekeywords/translations/nl.php +++ /dev/null @@ -1,29 +0,0 @@ -sekeywords_65b0b42febc8ea16db4652eab6f420a4'] = 'Zoekmachine sleutelwoorden'; -$_MODULE['<{sekeywords}prestashop>sekeywords_8effa630c1740a748801b881acb90fa6'] = 'Geef weer welke sleutelwoorden bezoekers naar uw website hebben geleid.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6602bbeb2956c035fb4cb5e844a4861b'] = 'Gids'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9ed50bd6876a9273f2192c224b87657b'] = 'Identificeer externe zoekmachine sleutelwoorden'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7acbda50735929f05f6f463e05bc7ead'] = 'Dit is een van meest gebruikelijke manieren om een website te vinden via de zoekmotor.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_4ad084c0b816ff9278765a00720caf32'] = 'Door de meest populaire zoekwoorden die door de nieuwe bezoekers worden ingegeven te identificeren, kunt u deze producten best vooraan zetten zodat ze beter opgemerkt worden door de zoekmotoren.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_359f9e79e746fa9f684e5cda9e60ca2e'] = 'Hoe werkt het?'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ec2184245585ba979912af9e34d738c6'] = 'Wanneer een bezoeker naar uw website komt, zal de web server de URL opslaan vanwaar hij/zij komt. Deze module verwerkt dan de URL en indien het een referentie vindt naar een gekende zoekmotor, dan zal het de trefwoorden hierin vinden.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_ef79a74a2fd296e19e8cc58cdae91d43'] = 'Deze module kan alle zoekmotoren herkennen die in Prestashop\'s Statistieken/Zoekmotor pagina opgesomd staan -- en u kan er nog meer toevoegen!'; -$_MODULE['<{sekeywords}prestashop>sekeywords_dcbcf5d190af87351a16edd5f132c657'] = 'BELANGRIJK BERICHT: in september 2013 heeft Google ervoor gekozen om zijn zoekresultaten te versleutelen via SSL. Dit betekent dat alle referentietools in de wereld (ook deze) de Google sleutelwoorden niet meer kan identificeren.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_16d5f8dc3bc4411c85848ae9cf6a947a'] = '%d sleutelwoord komt overeen met uw vraag.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_5029f8eef402bb8ddd6191dffb5e7c19'] = '%d sleutelwoorden komen overeen met uw vraag.'; -$_MODULE['<{sekeywords}prestashop>sekeywords_0849140171616600e8f2c35f0a225212'] = 'Filter op sleutelwoord'; -$_MODULE['<{sekeywords}prestashop>sekeywords_6e632566b6e16dbd2273e83d7c53182b'] = 'en minimum voorkomens'; -$_MODULE['<{sekeywords}prestashop>sekeywords_9639e32cab248434a17ab32237cb3b71'] = 'Toepassen'; -$_MODULE['<{sekeywords}prestashop>sekeywords_867343577fa1f33caa632a19543bd252'] = 'Sleutelwoorden'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e52e6aa1a43a0187e44f048f658db5f9'] = 'Voorkomens'; -$_MODULE['<{sekeywords}prestashop>sekeywords_998e4c5c80f27dec552e99dfed34889a'] = 'Export CSV'; -$_MODULE['<{sekeywords}prestashop>sekeywords_7b48f6cc4a1dde7fca9597e717c2465f'] = 'Geen sleutelwoorden'; -$_MODULE['<{sekeywords}prestashop>sekeywords_e15832aa200f342e8f4ab580b43a72a8'] = 'Eerste 10 sleutelwoorden'; -$_MODULE['<{sekeywords}prestashop>sekeywords_52ef9633d88a7480b3a938ff9eaa2a25'] = 'Overige'; - - -return $_MODULE; diff --git a/modules/sendtoafriend/Readme.md b/modules/sendtoafriend/Readme.md deleted file mode 100644 index 5153df61e..000000000 --- a/modules/sendtoafriend/Readme.md +++ /dev/null @@ -1,37 +0,0 @@ -# Send to a Friend module - -## About - -Allows customers to send a product link to a friend. - -## Contributing - -PrestaShop modules are open-source extensions to the PrestaShop e-commerce solution. Everyone is welcome and even encouraged to contribute with their own improvements. - -### Requirements - -Contributors **must** follow the following rules: - -* **Make your Pull Request on the "dev" branch**, NOT the "master" branch. -* Do not update the module's version number. -* Follow [the coding standards][1]. - -### Process in details - -Contributors wishing to edit a module's files should follow the following process: - -1. Create your GitHub account, if you do not have one already. -2. Fork the sendtoafriend project to your GitHub account. -3. Clone your fork to your local machine in the ```/modules``` directory of your PrestaShop installation. -4. Create a branch in your local clone of the module for your changes. -5. Change the files in your branch. Be sure to follow [the coding standards][1]! -6. Push your changed branch to your fork in your GitHub account. -7. Create a pull request for your changes **on the _'dev'_ branch** of the module's project. Be sure to follow [the commit message norm][2] in your pull request. If you need help to make a pull request, read the [Github help page about creating pull requests][3]. -8. Wait for one of the core developers either to include your change in the codebase, or to comment on possible improvements you should make to your code. - -That's it: you have contributed to this open-source project! Congratulations! - -[1]: http://doc.prestashop.com/display/PS16/Coding+Standards -[2]: http://doc.prestashop.com/display/PS16/How+to+write+a+commit+message -[3]: https://help.github.com/articles/using-pull-requests - diff --git a/modules/sendtoafriend/composer.json b/modules/sendtoafriend/composer.json deleted file mode 100644 index d8325281e..000000000 --- a/modules/sendtoafriend/composer.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "prestashop/sendtoafriend", - "description": "PrestaShop module sendtoafriend", - "homepage": "https://github.com/PrestaShop/sendtoafriend", - "license": "AFL - Academic Free License (AFL 3.0)", - "authors": [ - { - "name": "PrestaShop SA", - "email": "contact@prestashop.com" - } - ], - "require": { - "php": ">=5.3.2" - }, - "config": { - "preferred-install": "dist" - }, - "type": "prestashop-module" -} diff --git a/modules/sendtoafriend/config.xml b/modules/sendtoafriend/config.xml deleted file mode 100644 index 5f702956e..000000000 --- a/modules/sendtoafriend/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - sendtoafriend - - - - - - 0 - 0 - - \ No newline at end of file diff --git a/modules/sendtoafriend/index.php b/modules/sendtoafriend/index.php index 044cb85ee..e5064df41 100644 --- a/modules/sendtoafriend/index.php +++ b/modules/sendtoafriend/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/sendtoafriend/mails/ag/send_to_a_friend.html b/modules/sendtoafriend/mails/ag/send_to_a_friend.html deleted file mode 100644 index 5ec81d5b2..000000000 --- a/modules/sendtoafriend/mails/ag/send_to_a_friend.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - Mensaje desde {shop_name} - - - - - - -
    - {l s='Room No.' mod='hotelreservationsystem'} + + {l s='Floor' mod='hotelreservationsystem'} @@ -62,7 +64,7 @@ {l s='Status' mod='hotelreservationsystem'} + {l s='Extra Information' mod='hotelreservationsystem'}
    '; @@ -350,7 +352,7 @@ { if (parseInt(result) == 1) { - showSuccessMessage("{l s='Remove successful'}"); + showSuccessMessage("{l s='Removed successfully'}"); } } }); diff --git a/admin/themes/default/template/controllers/products/customization.tpl b/admin/themes/default/template/controllers/products/customization.tpl index 4712bf254..84cb43edc 100644 --- a/admin/themes/default/template/controllers/products/customization.tpl +++ b/admin/themes/default/template/controllers/products/customization.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/products/features.tpl b/admin/themes/default/template/controllers/products/features.tpl index f435889bf..67dde356c 100644 --- a/admin/themes/default/template/controllers/products/features.tpl +++ b/admin/themes/default/template/controllers/products/features.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -26,10 +26,10 @@ {if isset($product->id)}
    -

    {l s='Assign features to this product'}

    +

    {l s='Assign features to this room type'}

    - {l s='You can specify a value for each relevant feature regarding this product. Empty fields will not be displayed.'}
    + {l s='You can specify a value for each relevant feature regarding this room type. Empty fields will not be displayed.'}
    {l s='You can either create a specific value, or select among the existing pre-defined values you\'ve previously added.'}
    diff --git a/admin/themes/default/template/controllers/products/helpers/form/form.tpl b/admin/themes/default/template/controllers/products/helpers/form/form.tpl index 9cb32ac76..bab3ba992 100644 --- a/admin/themes/default/template/controllers/products/helpers/form/form.tpl +++ b/admin/themes/default/template/controllers/products/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -73,15 +73,14 @@
    diff --git a/admin/themes/default/template/controllers/products/helpers/tree/tree_associated_header.tpl b/admin/themes/default/template/controllers/products/helpers/tree/tree_associated_header.tpl index 4d9fa4dfb..34b00d3b9 100644 --- a/admin/themes/default/template/controllers/products/helpers/tree/tree_associated_header.tpl +++ b/admin/themes/default/template/controllers/products/helpers/tree/tree_associated_header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/products/helpers/tree/tree_categories.tpl b/admin/themes/default/template/controllers/products/helpers/tree/tree_categories.tpl index e045b75a2..a1698ea57 100644 --- a/admin/themes/default/template/controllers/products/helpers/tree/tree_categories.tpl +++ b/admin/themes/default/template/controllers/products/helpers/tree/tree_categories.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -35,17 +35,9 @@ \ No newline at end of file + diff --git a/admin/themes/default/template/controllers/products/helpers/uploader/index.php b/admin/themes/default/template/controllers/products/helpers/uploader/index.php index 72a733bd4..2cba03ab6 100644 --- a/admin/themes/default/template/controllers/products/helpers/uploader/index.php +++ b/admin/themes/default/template/controllers/products/helpers/uploader/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/products/helpers/uploader/virtual_product.tpl b/admin/themes/default/template/controllers/products/helpers/uploader/virtual_product.tpl index 23596b0b6..a9f7fe601 100644 --- a/admin/themes/default/template/controllers/products/helpers/uploader/virtual_product.tpl +++ b/admin/themes/default/template/controllers/products/helpers/uploader/virtual_product.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/admin/themes/default/template/controllers/products/images.tpl b/admin/themes/default/template/controllers/products/images.tpl index d39cfe5f6..3ffbce963 100644 --- a/admin/themes/default/template/controllers/products/images.tpl +++ b/admin/themes/default/template/controllers/products/images.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -35,7 +35,7 @@
    @@ -173,6 +173,7 @@ return $1 ? $1 + path : $0; }); line = line.replace(/image_path/g, path); + line = line.replace(/\.jpg"\s/g, '.jpg?time=' + new Date().getTime() + '" '); line = line.replace(/image_position/g, position); line = line.replace(/legend/g, legend); line = line.replace(/icon-check-empty/g, cover); @@ -205,7 +206,7 @@ } else assoc = false; - imageLine({$image->id}, "{$image->getExistingImgPath()}", {$image->position}, "{if $image->cover}icon-check-sign{else}icon-check-empty{/if}", assoc, "{$image->legend[$default_language]|@addcslashes:'\"'}"); + imageLine({$image->id}, "{$image->getExistingImgPath()}", {$image->position}, "{if $image->cover}icon-check-sign{else}icon-check-empty{/if}", assoc, "{$image->legend[$default_language]|escape:'htmlall'}"); {/foreach} {literal} var originalOrder = false; diff --git a/admin/themes/default/template/controllers/products/index.php b/admin/themes/default/template/controllers/products/index.php index f1226f56d..6174dac6d 100644 --- a/admin/themes/default/template/controllers/products/index.php +++ b/admin/themes/default/template/controllers/products/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/admin/themes/default/template/controllers/products/informations.tpl b/admin/themes/default/template/controllers/products/informations.tpl index 302fe9297..18697a83d 100644 --- a/admin/themes/default/template/controllers/products/informations.tpl +++ b/admin/themes/default/template/controllers/products/informations.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -33,8 +33,8 @@

    {l s='Information'}

    {if isset($display_common_field) && $display_common_field} -
    {l s='Warning, if you change the value of fields with an orange bullet %s, the value will be changed for all other shops for this product' sprintf=$bullet_common_field}
    +
    {l s='Warning, if you change the value of fields with an orange bullet %s, the value will be changed for all other shops for this room type' sprintf=$bullet_common_field}
    {/if} {include file="controllers/products/multishop/check_fields.tpl" product_tab="Informations"} @@ -150,7 +150,7 @@
    - {l s='Comments' mod='productcomments'} - + {l s='Comments' mod='productcomments'} +
    - {$grade} -
    + {$grade} + + {if isset($tab_grade[$id_product]) AND $tab_grade[$id_product]} +
    + {section loop=6 step=1 start=1 name=average} + + {/section} +
    + {else} + - + {/if} +
    + {l s='Average' mod='productcomments'} + - {if isset($tab_grade[$id_product]) AND $tab_grade[$id_product]} - {section loop=6 step=1 start=1 name=average} - - {/section} - {else} - - - {/if} - + {if isset($list_product_average[$id_product]) AND $list_product_average[$id_product]} +
    + {section loop=6 step=1 start=1 name=average} + + {/section} +
    + {else} + - + {/if} +
    {l s='Average' mod='productcomments'} - {if isset($list_product_average[$id_product]) AND $list_product_average[$id_product]} - {section loop=6 step=1 start=1 name=average} - - {/section} - {else} - - - {/if} -
      - {if isset($product_comments[$id_product]) AND $product_comments[$id_product]} - {l s='view comments' mod='productcomments'} - - {else} - - - {/if} -
      + {if isset($product_comments[$id_product]) AND $product_comments[$id_product]} + + + {l s='View comments' mod='productcomments'} + + + + {else} + - + {/if} +
    - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
    - - Hola {name},
    -
    -
    - - - - - - -
      - -

    - {customer} te ha enviado un vínculo a un producto que él piensa que pueden interesarle.

    - - Haga clic aquí para ver este artículo: {product} - -
    -
     
    -
    -
     
    - - \ No newline at end of file diff --git a/modules/sendtoafriend/mails/ag/send_to_a_friend.txt b/modules/sendtoafriend/mails/ag/send_to_a_friend.txt deleted file mode 100644 index 09c3dca48..000000000 --- a/modules/sendtoafriend/mails/ag/send_to_a_friend.txt +++ /dev/null @@ -1,11 +0,0 @@ - -[{shop_url}] - -Hola {name}, - -Haga clic aquí para ver este artículo: {product} -[{product_link}] - -{shop_name} [{shop_url}] creado por -Webkul(tm) [https://webkul.com/] - diff --git a/modules/sendtoafriend/mails/ar/send_to_a_friend.html b/modules/sendtoafriend/mails/ar/send_to_a_friend.html index 65e89f3fd..6ac17ffab 100644 --- a/modules/sendtoafriend/mails/ar/send_to_a_friend.html +++ b/modules/sendtoafriend/mails/ar/send_to_a_friend.html @@ -3,57 +3,57 @@ - Message from {shop_name} - - - - + @@ -70,7 +70,7 @@ @@ -85,9 +85,9 @@ @@ -102,7 +102,7 @@
     
    - Hi {name},
    + مرحبا {name}،

    - {customer} has sent you a link to a product that (s)he thinks may interest you.

    + {customer} ارسل لك رابط منتج ويعتقد انه سيعجبك.

    - Click here to view this item: {product} + انقر هنا لمشاهدة هذا المادة: {product}
    diff --git a/modules/sendtoafriend/mails/ar/send_to_a_friend.txt b/modules/sendtoafriend/mails/ar/send_to_a_friend.txt index 9cec19f85..aecb23ace 100644 --- a/modules/sendtoafriend/mails/ar/send_to_a_friend.txt +++ b/modules/sendtoafriend/mails/ar/send_to_a_friend.txt @@ -1,11 +1,11 @@ -[{shop_url}] +[/{shop_url}] -Hi {name}, +مرحبا {name}، -Click here to view this item: {product} -[{product_link}] +انقر هنا لمشاهدة هذا المادة: {product} +[/{product_link}] -{shop_name} [{shop_url}] powered by -Webkul(tm) [https://webkul.com/] +{shop_name} [/{shop_url}] مدعوم من بريستاشوب(tm) +[http://www.prestashop.com/] diff --git a/modules/sendtoafriend/mails/bg/send_to_a_friend.html b/modules/sendtoafriend/mails/bg/send_to_a_friend.html deleted file mode 100644 index ccd5896d5..000000000 --- a/modules/sendtoafriend/mails/bg/send_to_a_friend.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - Съобщение от {shop_name} - - - - - - - - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
    - - Здравейте {name},
    -
    -
    - - - - - - -
      - -

    - {customer} Ви изпрати линк към продукт, който е вероятно да Ви интересува.

    - - Натиснете тук за да видите този артикул: {product} - -
    -
     
    -
    -
     
    - - \ No newline at end of file diff --git a/modules/sendtoafriend/mails/bg/send_to_a_friend.txt b/modules/sendtoafriend/mails/bg/send_to_a_friend.txt deleted file mode 100644 index 2eb68f2dd..000000000 --- a/modules/sendtoafriend/mails/bg/send_to_a_friend.txt +++ /dev/null @@ -1,11 +0,0 @@ - -[{shop_url}] - -Здравейте {name}, - -Натиснете тук за да видите този -артикул: {product} [{product_link}] - -{shop_name} [{shop_url}] се управлява -с Webkul(tm) [https://webkul.com/] - diff --git a/modules/sendtoafriend/mails/br/send_to_a_friend.html b/modules/sendtoafriend/mails/br/send_to_a_friend.html deleted file mode 100644 index f73728768..000000000 --- a/modules/sendtoafriend/mails/br/send_to_a_friend.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - Mensagem da loja {shop_name} - - - - - - - - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
    - - Olá, {name}
    -
    -
    - - - - - - -
      - -

    - {customer} lhe enviou um link para um produto (s) que pode lhe interessar.

    - - Clique aqui para ver este item: {product} - -
    -
     
    -
    -
     
    - - \ No newline at end of file diff --git a/modules/sendtoafriend/mails/br/send_to_a_friend.txt b/modules/sendtoafriend/mails/br/send_to_a_friend.txt deleted file mode 100644 index 62b7b0d3c..000000000 --- a/modules/sendtoafriend/mails/br/send_to_a_friend.txt +++ /dev/null @@ -1,11 +0,0 @@ - -[{shop_url}] - -Olá, {name} - -Clique aqui para ver este item: {product} -[{product_link}] - -{shop_name} [{shop_url}] baseado em -Webkul(tm) [https://webkul.com/] - diff --git a/modules/sendtoafriend/mails/ca/send_to_a_friend.html b/modules/sendtoafriend/mails/ca/send_to_a_friend.html deleted file mode 100644 index d52261227..000000000 --- a/modules/sendtoafriend/mails/ca/send_to_a_friend.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - Missatge de {shop_name} - - - - - - - - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
    - - Hola {name},
    -
    -
    - - - - - - -
      - -

    - {customer} us ha enviat un enllaç a productes que potser poden ser del vostre interès.

    - - Feu un clic aquí per veure aquest element: {product} - -
    -
     
    -
    -
     
    - - \ No newline at end of file diff --git a/modules/sendtoafriend/mails/ca/send_to_a_friend.txt b/modules/sendtoafriend/mails/ca/send_to_a_friend.txt deleted file mode 100644 index 7d3d9e9bd..000000000 --- a/modules/sendtoafriend/mails/ca/send_to_a_friend.txt +++ /dev/null @@ -1,11 +0,0 @@ - -[{shop_url}] - -Hola {name}, - -Feu un clic aquí per veure aquest element: {product} -[{product_link}] - -{shop_name} [{shop_url}] desenvolupat amb -Webkul(tm) [https://webkul.com/] - diff --git a/modules/sendtoafriend/mails/de/send_to_a_friend.html b/modules/sendtoafriend/mails/de/send_to_a_friend.html deleted file mode 100644 index 4bb10ced9..000000000 --- a/modules/sendtoafriend/mails/de/send_to_a_friend.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - Nachricht von {shop_name} - - - - - - - - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
    - - Hallo {name},
    -
    -
    - - - - - - -
      - -

    - {customer} hat Ihnen einen Link zu dem Produkt gesandt, das Sie interessieren könnte.

    - - Klicken Sie hier, um den Artikel zu sehen: {product} - -
    -
     
    -
    -
     
    - - \ No newline at end of file diff --git a/modules/sendtoafriend/mails/de/send_to_a_friend.txt b/modules/sendtoafriend/mails/de/send_to_a_friend.txt deleted file mode 100644 index 997c77cb3..000000000 --- a/modules/sendtoafriend/mails/de/send_to_a_friend.txt +++ /dev/null @@ -1,11 +0,0 @@ - -[{shop_url}] - -Hallo {name}, - -Klicken Sie hier, um den Artikel zu sehen: {product} -[{product_link}] - -{shop_name} [{shop_url}] powered by -Webkul(tm) [https://webkul.com/] - diff --git a/modules/sendtoafriend/mails/en/index.php b/modules/sendtoafriend/mails/en/index.php index 044cb85ee..e5064df41 100644 --- a/modules/sendtoafriend/mails/en/index.php +++ b/modules/sendtoafriend/mails/en/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/sendtoafriend/mails/en/send_to_a_friend.html b/modules/sendtoafriend/mails/en/send_to_a_friend.html index 7f2dd2785..b0bc3ab91 100644 --- a/modules/sendtoafriend/mails/en/send_to_a_friend.html +++ b/modules/sendtoafriend/mails/en/send_to_a_friend.html @@ -4,56 +4,56 @@ Message from {shop_name} - - - - + @@ -102,7 +102,7 @@
     
    diff --git a/modules/sendtoafriend/mails/en/send_to_a_friend.txt b/modules/sendtoafriend/mails/en/send_to_a_friend.txt index 9cec19f85..c32f3d5ad 100644 --- a/modules/sendtoafriend/mails/en/send_to_a_friend.txt +++ b/modules/sendtoafriend/mails/en/send_to_a_friend.txt @@ -1,11 +1,10 @@ -[{shop_url}] +[/{shop_url}] Hi {name}, -Click here to view this item: {product} -[{product_link}] +Click here to view this item: {product} [/{product_link}] -{shop_name} [{shop_url}] powered by -Webkul(tm) [https://webkul.com/] +{shop_name} [/{shop_url}] powered by PrestaShop(tm) +[http://www.prestashop.com/] diff --git a/modules/sendtoafriend/mails/es/send_to_a_friend.html b/modules/sendtoafriend/mails/es/send_to_a_friend.html deleted file mode 100644 index 5ec81d5b2..000000000 --- a/modules/sendtoafriend/mails/es/send_to_a_friend.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - Mensaje desde {shop_name} - - - - - - - - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
    - - Hola {name},
    -
    -
    - - - - - - -
      - -

    - {customer} te ha enviado un vínculo a un producto que él piensa que pueden interesarle.

    - - Haga clic aquí para ver este artículo: {product} - -
    -
     
    -
    -
     
    - - \ No newline at end of file diff --git a/modules/sendtoafriend/mails/es/send_to_a_friend.txt b/modules/sendtoafriend/mails/es/send_to_a_friend.txt deleted file mode 100644 index 09c3dca48..000000000 --- a/modules/sendtoafriend/mails/es/send_to_a_friend.txt +++ /dev/null @@ -1,11 +0,0 @@ - -[{shop_url}] - -Hola {name}, - -Haga clic aquí para ver este artículo: {product} -[{product_link}] - -{shop_name} [{shop_url}] creado por -Webkul(tm) [https://webkul.com/] - diff --git a/modules/sendtoafriend/mails/fr/send_to_a_friend.html b/modules/sendtoafriend/mails/fr/send_to_a_friend.html index 807c91f85..8e8b75594 100644 --- a/modules/sendtoafriend/mails/fr/send_to_a_friend.html +++ b/modules/sendtoafriend/mails/fr/send_to_a_friend.html @@ -4,56 +4,56 @@ Message de {shop_name} - - - - + @@ -87,7 +87,7 @@

    {customer} vous envoie un lien vers un produit qui pourrait vous intéresser.

    - Il s'agit de: {product} + Il s'agit de : {product} @@ -102,7 +102,7 @@
     
    diff --git a/modules/sendtoafriend/mails/fr/send_to_a_friend.txt b/modules/sendtoafriend/mails/fr/send_to_a_friend.txt index 98e8b1c4b..4adac596b 100644 --- a/modules/sendtoafriend/mails/fr/send_to_a_friend.txt +++ b/modules/sendtoafriend/mails/fr/send_to_a_friend.txt @@ -1,10 +1,10 @@ -[{shop_url}] +[/{shop_url}] Bonjour {name}, -Il s'agit de: {product} [{product_link}] +Il s'agit de : {product} [/{product_link}] -{shop_name} [{shop_url}] réalisé avec -Webkul(tm) [https://webkul.com/] +{shop_name} [/{shop_url}] réalisé avec PrestaShop(tm) +[http://www.prestashop.com/] diff --git a/modules/sendtoafriend/mails/gl/send_to_a_friend.txt b/modules/sendtoafriend/mails/gl/send_to_a_friend.txt deleted file mode 100644 index 9cec19f85..000000000 --- a/modules/sendtoafriend/mails/gl/send_to_a_friend.txt +++ /dev/null @@ -1,11 +0,0 @@ - -[{shop_url}] - -Hi {name}, - -Click here to view this item: {product} -[{product_link}] - -{shop_name} [{shop_url}] powered by -Webkul(tm) [https://webkul.com/] - diff --git a/modules/sendtoafriend/mails/id/send_to_a_friend.txt b/modules/sendtoafriend/mails/id/send_to_a_friend.txt deleted file mode 100644 index 659c4b2eb..000000000 --- a/modules/sendtoafriend/mails/id/send_to_a_friend.txt +++ /dev/null @@ -1,11 +0,0 @@ - -[{shop_url}] - -Halo {name}, - -Klik disini untuk melihat item berikut: {product} -[{product_link}] - -{shop_name} [{shop_url}] didukung oleh -Webkul(tm) [https://webkul.com/] - diff --git a/modules/sendtoafriend/mails/index.php b/modules/sendtoafriend/mails/index.php index fac8d61a8..c044518e6 100644 --- a/modules/sendtoafriend/mails/index.php +++ b/modules/sendtoafriend/mails/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/sendtoafriend/mails/nl/send_to_a_friend.html b/modules/sendtoafriend/mails/nl/send_to_a_friend.html deleted file mode 100644 index 1ce9187ea..000000000 --- a/modules/sendtoafriend/mails/nl/send_to_a_friend.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - Bericht van {shop_name} - - - - - - - - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
    - - Hallo {name},
    -
    -
    - - - - - - -
      - -

    - {customer} heeft u een link gestuurd naar een product waarvan hij/zij denkt dat het u misschien zal interesseren.

    - - Klik hier om dit item te bekijken: {product} - -
    -
     
    -
    -
     
    - - \ No newline at end of file diff --git a/modules/sendtoafriend/mails/nl/send_to_a_friend.txt b/modules/sendtoafriend/mails/nl/send_to_a_friend.txt deleted file mode 100644 index 5d98a91e5..000000000 --- a/modules/sendtoafriend/mails/nl/send_to_a_friend.txt +++ /dev/null @@ -1,11 +0,0 @@ - -[{shop_url}] - -Hallo {name}, - -Klik hier om dit item te bekijken: {product} -[{product_link}] - -{shop_name} [{shop_url}] gebouwd met -Webkul(tm) [https://webkul.com/] - diff --git a/modules/sendtoafriend/product_page.tpl b/modules/sendtoafriend/product_page.tpl index 24847b14a..c42277426 100644 --- a/modules/sendtoafriend/product_page.tpl +++ b/modules/sendtoafriend/product_page.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2016 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/sendtoafriend/sendtoafriend-extra.tpl b/modules/sendtoafriend/sendtoafriend-extra.tpl index e2ad8bdb8..342e43e57 100644 --- a/modules/sendtoafriend/sendtoafriend-extra.tpl +++ b/modules/sendtoafriend/sendtoafriend-extra.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2016 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA @@ -31,7 +31,7 @@ $('document').ready(function(){ }); $('#sendEmail').click(function(){ - + var name = $('#friend_name').val(); var email = $('#friend_email').val(); var id_product = $('#id_product_comment_send').val(); @@ -45,7 +45,7 @@ $('document').ready(function(){ dataType: "json", success: function(result) { $.fancybox.close(); - var msg = result ? "{/literal}{l s='Your e-mail has been sent successfully' mod='sendtoafriend'}{literal}" : "{/literal}{l s='Your e-mail could not be sent. Please check the e-mail address and try again.' mod='sendtoafriend'}{literal}"; + var msg = result ? "{/literal}{l s='Your e-mail has been sent successfully' mod='sendtoafriend'}{literal}" : "{/literal}{l s='Your e-mail could not be sent. Please check the name and e-mail address and try again.' mod='sendtoafriend'}{literal}"; var title = "{/literal}{l s='Send to a friend' mod='sendtoafriend'}{literal}"; fancyMsgBox(msg, title); } @@ -71,7 +71,7 @@ $('document').ready(function(){ {$stf_product->description_short}
    - +
    diff --git a/modules/sendtoafriend/sendtoafriend.css b/modules/sendtoafriend/sendtoafriend.css index 90c3f2e58..19cef6bec 100644 --- a/modules/sendtoafriend/sendtoafriend.css +++ b/modules/sendtoafriend/sendtoafriend.css @@ -1,46 +1,46 @@ -/* ************************************************************************************************ - PAGE SEND TO FRIEND -************************************************************************************************ */ -#sendfriendpage form.std fieldset { - margin:0 0 20px 0; - padding: 10px 15px; - background: none repeat scroll 0 0 #eee -} - -#sendfriendpage .product {} -#sendfriendpage .product .img_link {float:left} -#sendfriendpage .product .img_link img { - margin:0 10px 0 0; - border:1px solid #ccc; -} -#sendfriendpage .product .product_desc { - float:left; - width:200px; - font-weight:bold; - font-size:12px; - color:#000; -} - -#sendfriendpage #send_friend_form_content {margin-top:40px} -#sendfriendpage #send_friend_form_content .text { - padding-bottom: 10px -} -#sendfriendpage #send_friend_form_content .text label { - display: inline-block; - padding: 6px 15px; - width: 180px; - font-size: 12px; - text-align: right -} -#sendfriendpage #send_friend_form_content .text input { - padding: 0 5px; - height: 22px; - width: 260px; - border: 1px solid #ccc; - font-size: 12px -} -#sendfriendpage #send_friend_form_content .submit { - margin:0 20px 0 0; - padding:5px 0; - text-align:right +/* ************************************************************************************************ + PAGE SEND TO FRIEND +************************************************************************************************ */ +#sendfriendpage form.std fieldset { + margin:0 0 20px 0; + padding: 10px 15px; + background: none repeat scroll 0 0 #eee +} + +#sendfriendpage .product {} +#sendfriendpage .product .img_link {float:left} +#sendfriendpage .product .img_link img { + margin:0 10px 0 0; + border:1px solid #ccc; +} +#sendfriendpage .product .product_desc { + float:left; + width:200px; + font-weight:bold; + font-size:12px; + color:#000; +} + +#sendfriendpage #send_friend_form_content {margin-top:40px} +#sendfriendpage #send_friend_form_content .text { + padding-bottom: 10px +} +#sendfriendpage #send_friend_form_content .text label { + display: inline-block; + padding: 6px 15px; + width: 180px; + font-size: 12px; + text-align: right +} +#sendfriendpage #send_friend_form_content .text input { + padding: 0 5px; + height: 22px; + width: 260px; + border: 1px solid #ccc; + font-size: 12px +} +#sendfriendpage #send_friend_form_content .submit { + margin:0 20px 0 0; + padding:5px 0; + text-align:right } \ No newline at end of file diff --git a/modules/sendtoafriend/sendtoafriend.php b/modules/sendtoafriend/sendtoafriend.php index 8d472b53e..0d13b48a8 100644 --- a/modules/sendtoafriend/sendtoafriend.php +++ b/modules/sendtoafriend/sendtoafriend.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -36,7 +36,7 @@ class sendToAFriend extends Module function __construct($dontTranslate = false) { $this->name = 'sendtoafriend'; - $this->version = '1.8.0'; + $this->version = '1.9.0'; $this->author = 'PrestaShop'; $this->tab = 'front_office_features'; $this->need_instance = 0; @@ -49,7 +49,7 @@ class sendToAFriend extends Module $this->displayName = $this->l('Send to a Friend module'); $this->description = $this->l('Allows customers to send a product link to a friend.'); } - $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.6.99.99'); } public function install() @@ -87,4 +87,35 @@ class sendToAFriend extends Module $this->context->controller->addJS($this->_path.'sendtoafriend.js'); } } -} \ No newline at end of file + + public function isValidName($name) + { + $isName = Validate::isName($name); + $isShortName = $this->isShortName($name); + $isNameLikeAnUrl = $this->isNameLikeAnUrl($name); + $isValidName = $isName && $isShortName && !$isNameLikeAnUrl; + + return $isValidName; + } + + public function isShortName($name) + { + $isShortName = (strlen($name) <= 50); + + return $isShortName; + } + + public function isNameLikeAnUrl($name) + { + // THIS REGEX IS NOT MEANT TO FIND A VALID URL + // the goal is to see if the given string for a Person Name is containing something similar to an url + // + // See all strings that i tested the regex against in https://regex101.com/r/yL7lU0/3 + // + // Please fork the regex if you can improve it and make a Pull Request + $regex = "/(https?:[\/]*.*)|([\.]*[[[:alnum:]]+\.[^ ]]*.*)/m"; + $isNameLikeAnUrl = (bool) preg_match_all($regex, $name); + + return $isNameLikeAnUrl; + } +} diff --git a/modules/sendtoafriend/sendtoafriend.tpl b/modules/sendtoafriend/sendtoafriend.tpl index 4f872d321..c91ec221a 100644 --- a/modules/sendtoafriend/sendtoafriend.tpl +++ b/modules/sendtoafriend/sendtoafriend.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2016 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/sendtoafriend/sendtoafriend_ajax.php b/modules/sendtoafriend/sendtoafriend_ajax.php index 1652a4ba0..cccceef4d 100644 --- a/modules/sendtoafriend/sendtoafriend_ajax.php +++ b/modules/sendtoafriend/sendtoafriend_ajax.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -30,7 +30,7 @@ include_once(dirname(__FILE__).'/sendtoafriend.php'); $module = new SendToAFriend(); -if (Tools::getValue('action') == 'sendToMyFriend' && Tools::getValue('secure_key') == $module->secure_key) +if (Module::isEnabled('sendtoafriend') && Tools::getValue('action') == 'sendToMyFriend' && Tools::getValue('secure_key') == $module->secure_key) { // Retrocompatibilty with old theme if($friend = Tools::getValue('friend')) @@ -57,6 +57,13 @@ if (Tools::getValue('action') == 'sendToMyFriend' && Tools::getValue('secure_key if (!$friendName || !$friendMail || !$id_product) die('0'); + $isValidEmail = Validate::isEmail($friendMail); + $isValidName = $module->isValidName($friendName); + + if (false === $isValidName || false === $isValidEmail) { + die('0'); + } + /* Email generation */ $product = new Product((int)$id_product, false, $module->context->language->id); $productLink = $module->context->link->getProductLink($product); diff --git a/modules/sendtoafriend/translations/ag.php b/modules/sendtoafriend/translations/ag.php deleted file mode 100644 index 8e0c827da..000000000 --- a/modules/sendtoafriend/translations/ag.php +++ /dev/null @@ -1,30 +0,0 @@ -sendtoafriend_ajax_22c4733a9ceb239bf825a0cecd1cfaec'] = 'Un amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2074615eb70699e55b1f9289c6c77c25'] = 'Módulo enviar a un amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_3234e2609dd694d8763c390fe97eba04'] = 'Permitir a los clientes enviar un enlace del producto a un amigo'; -$_MODULE['<{sendtoafriend}prestashop>product_page_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Enviar a un amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_11cbd9ec2e4b628c371094b6361b9c96'] = 'Tu e-mail ha sido enviado con éxito'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_36fb3f59b4a75949a0db90e7011b21f2'] = 'Su email no ha podido ser enviado. Por favor, compruebe la dirección de correo electrónico e inténtelo de nuevo.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Enviar a un amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_d1f092e79827eaffce4a33fa011fde24'] = 'No ha rellenado los campos obligatorios'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_5d6103b662f41b07e10687f03aca8fdc'] = 'Recipiente'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_bb6aa0be8236a10e6d3b315ebd5f2547'] = 'Nombre de tu amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_099bc8914b5be9e522a29e48cb3c01c4'] = 'E-mail de tu amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_70397c4b252a5168c5ec003931cea215'] = 'Archivos requeridos'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_ea4788705e6873b424c65e91c2846b19'] = 'Cancelar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'o'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'Enviar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Enviar a un amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_20589174124c25654cac3736e737d2a3'] = 'Enviar esta página a un amigo al que podía interesarle este artículo.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_b31afdfa73c89b567778f15180c2dd6c'] = 'Su email ha sido enviado con éxito'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_e55de03786f359e2b133f2a74612eba6'] = 'nombre del amigo:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_19f41c3d6db934fb2db1840ddefd2c51'] = 'Email del amigo:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2541d938b0a58946090d7abdde0d3890'] = 'enviar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_68728c1897e5936032fe21ffb6b10c2e'] = 'Volver a la página del producto'; - - -return $_MODULE; diff --git a/modules/sendtoafriend/translations/ar.php b/modules/sendtoafriend/translations/ar.php deleted file mode 100644 index 453808c15..000000000 --- a/modules/sendtoafriend/translations/ar.php +++ /dev/null @@ -1,15 +0,0 @@ -sendtoafriend_2074615eb70699e55b1f9289c6c77c25'] = 'إضافة إرسال لصديق'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_70397c4b252a5168c5ec003931cea215'] = 'حقول مطلوبة'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_ea4788705e6873b424c65e91c2846b19'] = 'إلغاء'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'أو'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'ارسل'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_e55de03786f359e2b133f2a74612eba6'] = 'اسم الصديق'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_19f41c3d6db934fb2db1840ddefd2c51'] = 'البريد الإلكتروني للصديق'; - - -return $_MODULE; diff --git a/modules/sendtoafriend/translations/bg.php b/modules/sendtoafriend/translations/bg.php deleted file mode 100644 index 90e59d01c..000000000 --- a/modules/sendtoafriend/translations/bg.php +++ /dev/null @@ -1,30 +0,0 @@ -sendtoafriend_ajax_22c4733a9ceb239bf825a0cecd1cfaec'] = 'Приятел'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2074615eb70699e55b1f9289c6c77c25'] = 'Модул Изпрати на приятел'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_3234e2609dd694d8763c390fe97eba04'] = 'Позволява на клиентите Ви да изпращат линк с продукт на приятел.'; -$_MODULE['<{sendtoafriend}prestashop>product_page_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Изпрати на приятел'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_11cbd9ec2e4b628c371094b6361b9c96'] = 'E-mail-ът ти беше изпратен успешно'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_36fb3f59b4a75949a0db90e7011b21f2'] = 'E-mail-ът ти не може да бъде изпратен. Провери e-mail адреса и опитай отново.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Изпрати на приятел'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_d1f092e79827eaffce4a33fa011fde24'] = 'Не си попълнил/а задължителните полета'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_5d6103b662f41b07e10687f03aca8fdc'] = 'Получател'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_bb6aa0be8236a10e6d3b315ebd5f2547'] = 'Име на вашият приятел'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_099bc8914b5be9e522a29e48cb3c01c4'] = 'E-mail адрес на вашият приятел'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_70397c4b252a5168c5ec003931cea215'] = 'Задължителни полета'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_ea4788705e6873b424c65e91c2846b19'] = 'Отказ'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'или'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'Изпращане'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Изпрати на приятел'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_20589174124c25654cac3736e737d2a3'] = 'Изпрати тази страница на приятел, който може да е заинтересован от продукта на нея.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_b31afdfa73c89b567778f15180c2dd6c'] = 'Вашият e-mail беше изпратен успешно'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_e55de03786f359e2b133f2a74612eba6'] = 'Име на приятеля:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_19f41c3d6db934fb2db1840ddefd2c51'] = 'E-mail на приятеля:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2541d938b0a58946090d7abdde0d3890'] = 'изпрати'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_68728c1897e5936032fe21ffb6b10c2e'] = 'Назад към страницата на продукта'; - - -return $_MODULE; diff --git a/modules/sendtoafriend/translations/br.php b/modules/sendtoafriend/translations/br.php deleted file mode 100644 index adfe51632..000000000 --- a/modules/sendtoafriend/translations/br.php +++ /dev/null @@ -1,30 +0,0 @@ -sendtoafriend_ajax_22c4733a9ceb239bf825a0cecd1cfaec'] = 'Um amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2074615eb70699e55b1f9289c6c77c25'] = 'Módulo de envio a um amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_3234e2609dd694d8763c390fe97eba04'] = 'Permite que os clientes enviem um link do produto a um amigo.'; -$_MODULE['<{sendtoafriend}prestashop>product_page_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Enviar a um amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_11cbd9ec2e4b628c371094b6361b9c96'] = 'Seu e-mail foi enviado com sucesso'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_36fb3f59b4a75949a0db90e7011b21f2'] = 'Seu e-mail não pode ser enviado. Por favor verifique o endereço de e-mail e tente novamente.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Enviar a um amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_d1f092e79827eaffce4a33fa011fde24'] = 'Você não preencheu os campos necessários'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_5d6103b662f41b07e10687f03aca8fdc'] = 'Destinatário:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_bb6aa0be8236a10e6d3b315ebd5f2547'] = 'Nome do seu amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_099bc8914b5be9e522a29e48cb3c01c4'] = 'Endereço de e-mail do seu amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_70397c4b252a5168c5ec003931cea215'] = 'Campos Obrigatórios'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_ea4788705e6873b424c65e91c2846b19'] = 'Cancelar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'ou'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'Enviar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Enviar a um amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_20589174124c25654cac3736e737d2a3'] = 'Enviar esta página a um amigo que eventualmente poderá estar interessado neste item.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_b31afdfa73c89b567778f15180c2dd6c'] = 'Seu e-mail foi enviado com sucesso'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_e55de03786f359e2b133f2a74612eba6'] = 'Nome do amigo:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_19f41c3d6db934fb2db1840ddefd2c51'] = 'Endereço de email do amigo:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2541d938b0a58946090d7abdde0d3890'] = 'Enviar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_68728c1897e5936032fe21ffb6b10c2e'] = 'Voltar à página do produto'; - - -return $_MODULE; diff --git a/modules/sendtoafriend/translations/ca.php b/modules/sendtoafriend/translations/ca.php deleted file mode 100644 index 302f99089..000000000 --- a/modules/sendtoafriend/translations/ca.php +++ /dev/null @@ -1,30 +0,0 @@ -sendtoafriend_ajax_22c4733a9ceb239bf825a0cecd1cfaec'] = 'Un amic'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2074615eb70699e55b1f9289c6c77c25'] = 'Mòdul d\'Enviar a un amic'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_3234e2609dd694d8763c390fe97eba04'] = 'Permetre als clients enviar un enllaç del producte a un amic.'; -$_MODULE['<{sendtoafriend}prestashop>product_page_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Enviar a un amic'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_11cbd9ec2e4b628c371094b6361b9c96'] = 'El vostre correu s\'ha enviat correctament'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_36fb3f59b4a75949a0db90e7011b21f2'] = 'El vostre correu no s\'ha enviat. Verifiqueu l\'adreça i proveu-ho de nou.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Enviar a un amic'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_d1f092e79827eaffce4a33fa011fde24'] = 'No heu emplenat algun camp requerit'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_5d6103b662f41b07e10687f03aca8fdc'] = 'Receptor:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_bb6aa0be8236a10e6d3b315ebd5f2547'] = 'Nom del vostre amic'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_099bc8914b5be9e522a29e48cb3c01c4'] = 'Adreça electrònica del vostre amic'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_70397c4b252a5168c5ec003931cea215'] = 'Camps exigits'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_ea4788705e6873b424c65e91c2846b19'] = 'Cancel·lar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'o'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'Enviar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Enviar a un amic'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_20589174124c25654cac3736e737d2a3'] = 'Enviar aquesta pàgina a un amic que podria estar interessat en aquest tema.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_b31afdfa73c89b567778f15180c2dd6c'] = 'El teu email ha estat enviat amb èxit'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_e55de03786f359e2b133f2a74612eba6'] = 'Nom del amic:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_19f41c3d6db934fb2db1840ddefd2c51'] = 'E-mail del amic:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2541d938b0a58946090d7abdde0d3890'] = 'enviar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_68728c1897e5936032fe21ffb6b10c2e'] = 'Tornar a la pàgina del producte'; - - -return $_MODULE; diff --git a/modules/sendtoafriend/translations/de.php b/modules/sendtoafriend/translations/de.php deleted file mode 100644 index 65742ff2c..000000000 --- a/modules/sendtoafriend/translations/de.php +++ /dev/null @@ -1,30 +0,0 @@ -sendtoafriend_ajax_22c4733a9ceb239bf825a0cecd1cfaec'] = 'Ein Freund'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2074615eb70699e55b1f9289c6c77c25'] = 'An einen Freund senden'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_3234e2609dd694d8763c390fe97eba04'] = 'Ermöglicht den Kunden, einen Produktlink an einen Freund zu senden'; -$_MODULE['<{sendtoafriend}prestashop>product_page_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'An einen Freund senden'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_11cbd9ec2e4b628c371094b6361b9c96'] = 'Ihre E-Mail wurde erfolgreich versendet'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_36fb3f59b4a75949a0db90e7011b21f2'] = 'Ihre E-Mail konnte nicht versandt werden. Überprüfen Sie bitte Ihre Eingabe und versuchen Sie es noch einmal.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'An einen Freund senden'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_d1f092e79827eaffce4a33fa011fde24'] = 'Bitte füllen Sie alle Pflichtfelder aus'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_5d6103b662f41b07e10687f03aca8fdc'] = 'Empfänger'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_bb6aa0be8236a10e6d3b315ebd5f2547'] = 'Name Ihrer/es Freundin/es'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_099bc8914b5be9e522a29e48cb3c01c4'] = 'E-Mailadresse Ihres Freundes'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_70397c4b252a5168c5ec003931cea215'] = 'Pflichtfelder'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_ea4788705e6873b424c65e91c2846b19'] = 'Abbrechen'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'oder'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'Senden'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'An einen Freund senden'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_20589174124c25654cac3736e737d2a3'] = 'Senden Sie diese Seite einem Freund, der an diesem Artiekl interessiert sein könnte.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_b31afdfa73c89b567778f15180c2dd6c'] = 'Ihre Email wurde erfolgreich versendet'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_e55de03786f359e2b133f2a74612eba6'] = 'Name des Freundes:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_19f41c3d6db934fb2db1840ddefd2c51'] = 'E-Mail des Freundes:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2541d938b0a58946090d7abdde0d3890'] = 'senden'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_68728c1897e5936032fe21ffb6b10c2e'] = 'Zurück zur Produktseite'; - - -return $_MODULE; diff --git a/modules/sendtoafriend/translations/en.php b/modules/sendtoafriend/translations/en.php deleted file mode 100644 index 8649609a2..000000000 --- a/modules/sendtoafriend/translations/en.php +++ /dev/null @@ -1,30 +0,0 @@ -sendtoafriend_ajax_22c4733a9ceb239bf825a0cecd1cfaec'] = 'A friend'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2074615eb70699e55b1f9289c6c77c25'] = 'Send to a Friend module'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_3234e2609dd694d8763c390fe97eba04'] = 'Allows customers to send a product link to a friend.'; -$_MODULE['<{sendtoafriend}prestashop>product_page_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Send to a friend'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_11cbd9ec2e4b628c371094b6361b9c96'] = 'Your e-mail has been sent successfully'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_36fb3f59b4a75949a0db90e7011b21f2'] = 'Your e-mail could not be sent. Please check the e-mail address and try again.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Send to a friend'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_d1f092e79827eaffce4a33fa011fde24'] = 'You did not fill required fields'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_5d6103b662f41b07e10687f03aca8fdc'] = 'Recipient'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_bb6aa0be8236a10e6d3b315ebd5f2547'] = 'Name of your friend'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_099bc8914b5be9e522a29e48cb3c01c4'] = 'E-mail address of your friend'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_70397c4b252a5168c5ec003931cea215'] = 'Required fields'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_ea4788705e6873b424c65e91c2846b19'] = 'Cancel'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'or'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'Send'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Send to a friend'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_20589174124c25654cac3736e737d2a3'] = 'Send this page to a friend who might be interested in the item below.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_b31afdfa73c89b567778f15180c2dd6c'] = 'Your email has been sent successfully'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_e55de03786f359e2b133f2a74612eba6'] = 'Friend\'s name'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_19f41c3d6db934fb2db1840ddefd2c51'] = 'Friend\'s email'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2541d938b0a58946090d7abdde0d3890'] = 'send'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_68728c1897e5936032fe21ffb6b10c2e'] = 'Back to product page'; - - -return $_MODULE; diff --git a/modules/sendtoafriend/translations/es.php b/modules/sendtoafriend/translations/es.php deleted file mode 100644 index 7a3faab66..000000000 --- a/modules/sendtoafriend/translations/es.php +++ /dev/null @@ -1,30 +0,0 @@ -sendtoafriend_ajax_22c4733a9ceb239bf825a0cecd1cfaec'] = 'Un amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2074615eb70699e55b1f9289c6c77c25'] = 'Módulo enviar a un amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_3234e2609dd694d8763c390fe97eba04'] = 'Permitir a los clientes enviar un enlace del producto a un amigo'; -$_MODULE['<{sendtoafriend}prestashop>product_page_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Enviar a un amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_11cbd9ec2e4b628c371094b6361b9c96'] = 'Tu e-mail ha sido enviado con éxito'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_36fb3f59b4a75949a0db90e7011b21f2'] = 'Su email no ha podido ser enviado. Por favor, compruebe la dirección de correo electrónico e inténtelo de nuevo.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Enviar a un amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_d1f092e79827eaffce4a33fa011fde24'] = 'No ha rellenado los campos obligatorios'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_5d6103b662f41b07e10687f03aca8fdc'] = 'Recipiente'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_bb6aa0be8236a10e6d3b315ebd5f2547'] = 'Nombre de tu amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_099bc8914b5be9e522a29e48cb3c01c4'] = 'E-mail de tu amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_70397c4b252a5168c5ec003931cea215'] = 'Campos obligatorios'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_ea4788705e6873b424c65e91c2846b19'] = 'Cancelar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'total'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'Enviar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Enviar a un amigo'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_20589174124c25654cac3736e737d2a3'] = 'Enviar esta página a un amigo al que podía interesarle este artículo.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_b31afdfa73c89b567778f15180c2dd6c'] = 'Su email ha sido enviado con éxito'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_e55de03786f359e2b133f2a74612eba6'] = 'nombre del amigo:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_19f41c3d6db934fb2db1840ddefd2c51'] = 'Email del amigo:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2541d938b0a58946090d7abdde0d3890'] = 'enviar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_68728c1897e5936032fe21ffb6b10c2e'] = 'Volver a la página del producto'; - - -return $_MODULE; diff --git a/modules/sendtoafriend/translations/fr.php b/modules/sendtoafriend/translations/fr.php deleted file mode 100644 index baf34625c..000000000 --- a/modules/sendtoafriend/translations/fr.php +++ /dev/null @@ -1,30 +0,0 @@ -sendtoafriend_ajax_22c4733a9ceb239bf825a0cecd1cfaec'] = 'Un ami'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2074615eb70699e55b1f9289c6c77c25'] = 'Module envoyer à un ami'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_3234e2609dd694d8763c390fe97eba04'] = 'Permet à vos clients d\'envoyer des liens à leurs amis'; -$_MODULE['<{sendtoafriend}prestashop>product_page_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Envoyer à un ami'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_11cbd9ec2e4b628c371094b6361b9c96'] = 'Votre e-mail a bien été envoyé'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_36fb3f59b4a75949a0db90e7011b21f2'] = 'Votre e-mail n\'a pas pu être envoyé. Veuillez vérifier l\'adresse et réessayer.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Envoyer à un ami'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_d1f092e79827eaffce4a33fa011fde24'] = 'Vous n\'avez pas rempli les champs requis'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_5d6103b662f41b07e10687f03aca8fdc'] = 'Destinataire'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_bb6aa0be8236a10e6d3b315ebd5f2547'] = 'Nom de votre ami'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_099bc8914b5be9e522a29e48cb3c01c4'] = 'Adresse e-mail de votre ami'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_70397c4b252a5168c5ec003931cea215'] = 'Champs requis'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_ea4788705e6873b424c65e91c2846b19'] = 'Annuler'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'OU'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'Envoyer'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Envoyer à un ami'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_20589174124c25654cac3736e737d2a3'] = 'Envoyer cette page à un ami susceptible d\'être intéressé par le produit ci-dessous'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_b31afdfa73c89b567778f15180c2dd6c'] = 'Votre e-mail a bien été envoyé'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_e55de03786f359e2b133f2a74612eba6'] = 'Nom de votre ami :'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_19f41c3d6db934fb2db1840ddefd2c51'] = 'E-mail de votre ami'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2541d938b0a58946090d7abdde0d3890'] = 'Envoyer'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_68728c1897e5936032fe21ffb6b10c2e'] = 'Retour à la fiche produit'; - - -return $_MODULE; diff --git a/modules/sendtoafriend/translations/gl.php b/modules/sendtoafriend/translations/gl.php deleted file mode 100644 index 927bae8bf..000000000 --- a/modules/sendtoafriend/translations/gl.php +++ /dev/null @@ -1,11 +0,0 @@ -sendtoafriend-extra_ea4788705e6873b424c65e91c2846b19'] = 'Cancelar'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'ou'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'Enviar'; - - -return $_MODULE; diff --git a/modules/sendtoafriend/translations/id.php b/modules/sendtoafriend/translations/id.php deleted file mode 100644 index 4058c97c5..000000000 --- a/modules/sendtoafriend/translations/id.php +++ /dev/null @@ -1,30 +0,0 @@ -sendtoafriend_ajax_22c4733a9ceb239bf825a0cecd1cfaec'] = 'Teman'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2074615eb70699e55b1f9289c6c77c25'] = 'Modul kirim ke teman'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_3234e2609dd694d8763c390fe97eba04'] = 'Memungkinkan pelanggan untuk mengirim tautan produk ke temannya.'; -$_MODULE['<{sendtoafriend}prestashop>product_page_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Kirim ke teman'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_11cbd9ec2e4b628c371094b6361b9c96'] = 'Email Anda berhasil dikirim'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_36fb3f59b4a75949a0db90e7011b21f2'] = 'Email tidak terkirim. Harap cek alamat email dan coba lagi.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Kirim ke teman'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_d1f092e79827eaffce4a33fa011fde24'] = 'Masih ada field yang belum diisi'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_5d6103b662f41b07e10687f03aca8fdc'] = 'Penerima:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_bb6aa0be8236a10e6d3b315ebd5f2547'] = 'Nama teman Anda'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_099bc8914b5be9e522a29e48cb3c01c4'] = 'Alamat email teman Anda'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_70397c4b252a5168c5ec003931cea215'] = 'Harus diisi'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_ea4788705e6873b424c65e91c2846b19'] = 'Batal'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'atau'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'Kirim'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Kirim ke teman'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_20589174124c25654cac3736e737d2a3'] = 'Kirim halaman ini ke teman yang mungkin tertarik pada item berikut.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_b31afdfa73c89b567778f15180c2dd6c'] = 'Email berhasil dikirim'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_e55de03786f359e2b133f2a74612eba6'] = 'Nama teman'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_19f41c3d6db934fb2db1840ddefd2c51'] = 'Email teman'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2541d938b0a58946090d7abdde0d3890'] = 'Kirim'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_68728c1897e5936032fe21ffb6b10c2e'] = 'Kembali ke halaman produk'; - - -return $_MODULE; diff --git a/modules/sendtoafriend/translations/index.php b/modules/sendtoafriend/translations/index.php index 044cb85ee..e5064df41 100644 --- a/modules/sendtoafriend/translations/index.php +++ b/modules/sendtoafriend/translations/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/sendtoafriend/translations/nl.php b/modules/sendtoafriend/translations/nl.php deleted file mode 100644 index 44a43e1cf..000000000 --- a/modules/sendtoafriend/translations/nl.php +++ /dev/null @@ -1,30 +0,0 @@ -sendtoafriend_ajax_22c4733a9ceb239bf825a0cecd1cfaec'] = 'Een vriend'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2074615eb70699e55b1f9289c6c77c25'] = 'Informeer een vriend module'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_3234e2609dd694d8763c390fe97eba04'] = 'Stelt klanten in staat een product link naar een vriend te sturen'; -$_MODULE['<{sendtoafriend}prestashop>product_page_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Informeer een vriend'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_11cbd9ec2e4b628c371094b6361b9c96'] = 'Uw e-mail is verstuurd'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_36fb3f59b4a75949a0db90e7011b21f2'] = 'Uw e-mail kon niet worden verstuurd. Controleer het e-mail adres en probeer het nogmaals.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Informeer een vriend'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_d1f092e79827eaffce4a33fa011fde24'] = 'U hebt de verplichte velden niet ingevuld'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_5d6103b662f41b07e10687f03aca8fdc'] = 'Ontvanger'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_bb6aa0be8236a10e6d3b315ebd5f2547'] = 'Naam van uw vriend'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_099bc8914b5be9e522a29e48cb3c01c4'] = 'E-mail adres van uw vriend'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_70397c4b252a5168c5ec003931cea215'] = 'Verplichte velden'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_ea4788705e6873b424c65e91c2846b19'] = 'Annuleer'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_e81c4e4f2b7b93b481e13a8553c2ae1b'] = 'of'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend-extra_94966d90747b97d1f0f206c98a8b1ac3'] = 'Verstuur'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2107f6398c37b4b9ee1e1b5afb5d3b2a'] = 'Informeer een vriend'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_20589174124c25654cac3736e737d2a3'] = 'Stuur deze pagina naar een vriend die mogelijk geinteresseerd kan zijn in onderstaand product.'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_b31afdfa73c89b567778f15180c2dd6c'] = 'Verzending van uw e-mail is geslaagd'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_e55de03786f359e2b133f2a74612eba6'] = 'Naam van uw vriend:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_19f41c3d6db934fb2db1840ddefd2c51'] = 'E-mailadres van uw vriend:'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_2541d938b0a58946090d7abdde0d3890'] = 'versturen'; -$_MODULE['<{sendtoafriend}prestashop>sendtoafriend_68728c1897e5936032fe21ffb6b10c2e'] = 'Terug naar product pagina'; - - -return $_MODULE; diff --git a/modules/socialsharing/config.xml b/modules/socialsharing/config.xml deleted file mode 100644 index 0c8f9de18..000000000 --- a/modules/socialsharing/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - socialsharing - - - - - - 1 - 0 - - \ No newline at end of file diff --git a/modules/statsbestcategories/CHANGELOG.txt b/modules/statsbestcategories/CHANGELOG.txt index 58cb81f70..9b20f98f4 100644 --- a/modules/statsbestcategories/CHANGELOG.txt +++ b/modules/statsbestcategories/CHANGELOG.txt @@ -1,3 +1,14 @@ +------------------------------ +# V1.5.1 to V1.5.2 +------------------------------ + +## Improved/Changed Features: + +* [CO] : Module is made compatible with QloApps. + +_____________________________________________________________________________________________________ + + 2014-03-27 17:16:31 +0100 / MO statsbestcategories : min ps_versions_compliancy modified (1.5.6.1 => 1.6) 2014-03-24 15:22:36 +0100 / MO statsbestcategories : ps_versions_compliancy added 2014-03-20 14:35:55 +0100 Initial commit diff --git a/modules/statsbestcategories/config.xml b/modules/statsbestcategories/config.xml deleted file mode 100644 index b2a17e5b4..000000000 --- a/modules/statsbestcategories/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - statsbestcategories - - - - - - 0 - 0 - - diff --git a/modules/statsbestcategories/statsbestcategories.php b/modules/statsbestcategories/statsbestcategories.php index 5cdc69ae9..fef2b8079 100644 --- a/modules/statsbestcategories/statsbestcategories.php +++ b/modules/statsbestcategories/statsbestcategories.php @@ -24,98 +24,100 @@ * International Registered Trademark & Property of PrestaShop SA */ -if (!defined('_PS_VERSION_')) - exit; +if (!defined('_PS_VERSION_')) { + exit; +} class StatsBestCategories extends ModuleGrid { - private $html; - private $query; - private $columns; - private $default_sort_column; - private $default_sort_direction; - private $empty_message; - private $paging_message; + private $html; + private $query; + private $columns; + private $default_sort_column; + private $default_sort_direction; + private $empty_message; + private $paging_message; - public function __construct() - { - $this->name = 'statsbestcategories'; - $this->tab = 'analytics_stats'; - $this->version = '1.5.1'; - $this->author = 'PrestaShop'; - $this->need_instance = 0; + public function __construct() + { + $this->name = 'statsbestcategories'; + $this->tab = 'analytics_stats'; + $this->version = '1.5.2'; + $this->author = 'PrestaShop'; + $this->need_instance = 0; - parent::__construct(); + parent::__construct(); - $this->default_sort_column = 'totalPriceSold'; - $this->default_sort_direction = 'DESC'; - $this->empty_message = $this->l('Empty recordset returned'); - $this->paging_message = sprintf($this->l('Displaying %1$s of %2$s'), '{0} - {1}', '{2}'); + $this->default_sort_column = 'totalPriceSold'; + $this->default_sort_direction = 'DESC'; + $this->empty_message = $this->l('Empty recordset returned'); + $this->paging_message = sprintf($this->l('Displaying %1$s of %2$s'), '{0} - {1}', '{2}'); - $this->columns = array( - array( - 'id' => 'name', - 'header' => $this->l('Name'), - 'dataIndex' => 'name', - 'align' => 'left' - ), - array( - 'id' => 'totalQuantitySold', - 'header' => $this->l('Total Quantity Sold'), - 'dataIndex' => 'totalQuantitySold', - 'align' => 'center' - ), - array( - 'id' => 'totalPriceSold', - 'header' => $this->l('Total Price'), - 'dataIndex' => 'totalPriceSold', - 'align' => 'right' - ), - array( - 'id' => 'totalWholeSalePriceSold', - 'header' => $this->l('Total Margin'), - 'dataIndex' => 'totalWholeSalePriceSold', - 'align' => 'center' - ), - array( - 'id' => 'totalPageViewed', - 'header' => $this->l('Total Viewed'), - 'dataIndex' => 'totalPageViewed', - 'align' => 'center' - ) - ); + $this->columns = array( + array( + 'id' => 'name', + 'header' => $this->l('Name'), + 'dataIndex' => 'name', + 'align' => 'left' + ), + array( + 'id' => 'totalRoomsBooked', + 'header' => $this->l('Total Rooms Booked'), + 'dataIndex' => 'totalRoomsBooked', + 'align' => 'center' + ), + array( + 'id' => 'totalPriceSold', + 'header' => $this->l('Total Price'), + 'dataIndex' => 'totalPriceSold', + 'align' => 'center' + ), + array( + 'id' => 'totalWholeSalePriceSold', + 'header' => $this->l('Total Margin'), + 'dataIndex' => 'totalWholeSalePriceSold', + 'align' => 'center' + ), + array( + 'id' => 'totalPageViewed', + 'header' => $this->l('Total Viewed'), + 'dataIndex' => 'totalPageViewed', + 'align' => 'center' + ) + ); - $this->displayName = $this->l('Best categories'); - $this->description = $this->l('Adds a list of the best categories to the Stats dashboard.'); - $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); - } + $this->displayName = $this->l('Best hotels'); + $this->description = $this->l('Adds a list of the best hotels to the Stats dashboard.'); + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); + } - public function install() - { - return (parent::install() && $this->registerHook('AdminStatsModules')); - } + public function install() + { + return (parent::install() && $this->registerHook('AdminStatsModules')); + } - public function hookAdminStatsModules($params) - { + public function hookAdminStatsModules($params) + { $onlyChildren = (int)Tools::getValue('onlyChildren'); - - $engine_params = array( - 'id' => 'id_category', - 'title' => $this->displayName, - 'columns' => $this->columns, - 'defaultSortColumn' => $this->default_sort_column, - 'defaultSortDirection' => $this->default_sort_direction, - 'emptyMessage' => $this->empty_message, - 'pagingMessage' => $this->paging_message, + + $engine_params = array( + 'id' => 'id_category', + 'title' => $this->displayName, + 'columns' => $this->columns, + 'defaultSortColumn' => $this->default_sort_column, + 'defaultSortDirection' => $this->default_sort_direction, + 'emptyMessage' => $this->empty_message, + 'pagingMessage' => $this->paging_message, 'customParams' => array( 'onlyChildren' => $onlyChildren, ) - ); + ); - if (Tools::getValue('export')) - $this->csvExport($engine_params); + if (Tools::getValue('export')) { + $this->csvExport($engine_params); + } - $this->html = ' + $this->html = '
    '.$this->displayName.'
    @@ -126,78 +128,58 @@ class StatsBestCategories extends ModuleGrid '.$this->l('CSV Export').'
    -
    -
    - -
    +
    '; - - - '; + return $this->html; + } - return $this->html; - } + public function getData() + { + $currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT')); + $date_between = $this->getDate(); + $id_lang = $this->getLang(); - public function getData() - { - $currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT')); - $date_between = $this->getDate(); - $id_lang = $this->getLang(); + //If column 'order_detail.original_wholesale_price' does not exist, create it + Db::getInstance(_PS_USE_SQL_SLAVE_)->query('SHOW COLUMNS FROM `'._DB_PREFIX_.'order_detail` LIKE "original_wholesale_price"'); + if (Db::getInstance()->NumRows() == 0) { + Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'order_detail` ADD `original_wholesale_price` DECIMAL( 20, 6 ) NOT NULL DEFAULT "0.000000"'); + } - //If column 'order_detail.original_wholesale_price' does not exist, create it - Db::getInstance(_PS_USE_SQL_SLAVE_)->query('SHOW COLUMNS FROM `'._DB_PREFIX_.'order_detail` LIKE "original_wholesale_price"'); - if (Db::getInstance()->NumRows() == 0) { - Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'order_detail` ADD `original_wholesale_price` DECIMAL( 20, 6 ) NOT NULL DEFAULT "0.000000"'); - } - - // If a shop is selected, get all children categories for the shop - $categories = array(); - if (Shop::getContext() != Shop::CONTEXT_ALL) - { - $sql = 'SELECT c.nleft, c.nright + // If a shop is selected, get all children categories for the shop + $categories = array(); + if (Shop::getContext() != Shop::CONTEXT_ALL) { + $sql = 'SELECT c.nleft, c.nright FROM '._DB_PREFIX_.'category c WHERE c.id_category IN ( - SELECT s.id_category - FROM '._DB_PREFIX_.'shop s - WHERE s.id_shop IN ('.implode(', ', Shop::getContextListShopID()).') - )'; - if ($result = Db::getInstance()->executeS($sql)) - { - $ntree_restriction = array(); - foreach ($result as $row) - $ntree_restriction[] = '(nleft >= '.$row['nleft'].' AND nright <= '.$row['nright'].')'; + SELECT hbi.id_category + FROM '._DB_PREFIX_.'htl_branch_info hbi)'; + if ($result = Db::getInstance()->executeS($sql)) { + $ntree_restriction = array(); + foreach ($result as $row) { + $ntree_restriction[] = '(nleft >= '.$row['nleft'].' AND nright <= '.$row['nright'].')'; + } - if ($ntree_restriction) - { - $sql = 'SELECT id_category + if ($ntree_restriction) { + $sql = 'SELECT id_category FROM '._DB_PREFIX_.'category WHERE '.implode(' OR ', $ntree_restriction); - if ($result = Db::getInstance()->executeS($sql)) - { - foreach ($result as $row) - $categories[] = $row['id_category']; - } - } - } - } + if ($result = Db::getInstance()->executeS($sql)) { + foreach ($result as $row) { + $categories[] = $row['id_category']; + } + } + } + } + } $onlyChildren = ''; if ((int)Tools::getValue('onlyChildren') == 1) { $onlyChildren = 'AND NOT EXISTS (SELECT NULL FROM '._DB_PREFIX_.'category WHERE id_parent = ca.id_category)'; } - // Get best categories - if (version_compare(_PS_VERSION_, '1.6.1.1', '>=')) { - $this->query = ' + // Get best categories + if (version_compare(_PS_VERSION_, '1.6.1.1', '>=')) { + $this->query = ' SELECT SQL_CALC_FOUND_ROWS ca.`id_category`, CONCAT(parent.name, \' > \', calang.`name`) as name, IFNULL(SUM(t.`totalQuantitySold`), 0) AS totalQuantitySold, ROUND(IFNULL(SUM(t.`totalPriceSold`), 0), 2) AS totalPriceSold, @@ -216,7 +198,12 @@ class StatsBestCategories extends ModuleGrid ) AS totalPageViewed, ( SELECT COUNT(id_category) FROM '._DB_PREFIX_.'category WHERE `id_parent` = ca.`id_category` - ) AS hasChildren + ) AS hasChildren, + ( + SELECT COUNT(`id_room`) FROM `'._DB_PREFIX_.'htl_booking_detail` hbd + LEFT JOIN `'._DB_PREFIX_.'orders` o ON (o.`id_order` = hbd.`id_order`) + WHERE `id_hotel` IN (SELECT `id` FROM `'._DB_PREFIX_.'htl_branch_info` hbi WHERE hbi.`id_category` = ca.`id_category`) AND o.`valid` = 1 AND o.`invoice_date` BETWEEN '.$date_between.' + ) AS totalRoomsBooked FROM `'._DB_PREFIX_.'category` ca LEFT JOIN `'._DB_PREFIX_.'category_lang` calang ON (ca.`id_category` = calang.`id_category` AND calang.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('calang').') LEFT JOIN `'._DB_PREFIX_.'category_lang` parent ON (ca.`id_parent` = parent.`id_category` AND parent.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('parent').') @@ -225,7 +212,7 @@ class StatsBestCategories extends ModuleGrid SELECT pr.`id_product`, t.`totalQuantitySold`, t.`totalPriceSold`, t.`totalWholeSalePriceSold` FROM `'._DB_PREFIX_.'product` pr LEFT JOIN ( - SELECT pr.`id_product`, pa.`wholesale_price`, + SELECT pr.`id_product`, pa.`wholesale_price`, IFNULL(SUM(cp.`product_quantity`), 0) AS totalQuantitySold, IFNULL(SUM(cp.`product_price` * cp.`product_quantity`), 0) / o.conversion_rate AS totalPriceSold, IFNULL(SUM( @@ -252,8 +239,8 @@ class StatsBestCategories extends ModuleGrid '.$onlyChildren.' GROUP BY ca.`id_category` HAVING ca.`id_category` != 1'; - }else{ - $this->query = ' + } else { + $this->query = ' SELECT SQL_CALC_FOUND_ROWS ca.`id_category`, CONCAT(parent.name, \' > \', calang.`name`) as name, IFNULL(SUM(t.`totalQuantitySold`), 0) AS totalQuantitySold, ROUND(IFNULL(SUM(t.`totalPriceSold`), 0), 2) AS totalPriceSold, @@ -296,39 +283,33 @@ class StatsBestCategories extends ModuleGrid '.$onlyChildren.' GROUP BY ca.`id_category` HAVING ca.`id_category` != 1'; - } + } - if (Validate::IsName($this->_sort)) - { - $this->query .= ' ORDER BY `'.bqSQL($this->_sort).'`'; - if (isset($this->_direction) && Validate::isSortDirection($this->_direction)) - $this->query .= ' '.$this->_direction; - } + if (Validate::IsName($this->_sort)) { + $this->query .= ' ORDER BY `'.bqSQL($this->_sort).'`'; + if (isset($this->_direction) && Validate::isSortDirection($this->_direction)) { + $this->query .= ' '.$this->_direction; + } + } - if (($this->_start === 0 || Validate::IsUnsignedInt($this->_start)) && Validate::IsUnsignedInt($this->_limit)) - $this->query .= ' LIMIT '.(int)$this->_start.', '.(int)$this->_limit; - - $values = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query); - foreach ($values as &$value){ + if (($this->_start === 0 || Validate::IsUnsignedInt($this->_start)) && Validate::IsUnsignedInt($this->_limit)) { + $this->query .= ' LIMIT '.(int)$this->_start.', '.(int)$this->_limit; + } + $values = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query); + foreach ($values as &$value) { if ((int)Tools::getIsset('export') == false) { $parts = explode('>', $value['name']); - $value['name'] = ' '.trim($parts[0]).' > '; - if ((int)$value['hasChildren'] == 0) { - $value['name'] .= '• '; - } else { - $value['name'] .= ' '; - } - $value['name'] .= trim($parts[1]); + $value['name'] = trim($parts[1]); } - if (isset($value['totalWholeSalePriceSold'])) { - $value['totalWholeSalePriceSold'] = Tools::displayPrice($value['totalPriceSold'] - $value['totalWholeSalePriceSold'], $currency); - } - $value['totalPriceSold'] = Tools::displayPrice($value['totalPriceSold'], $currency); - } + if (isset($value['totalWholeSalePriceSold'])) { + $value['totalWholeSalePriceSold'] = Tools::displayPrice($value['totalPriceSold'] - $value['totalWholeSalePriceSold'], $currency); + } + $value['totalPriceSold'] = Tools::displayPrice($value['totalPriceSold'], $currency); + } - $this->_values = $values; - $this->_totalCount = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT FOUND_ROWS()'); - } + $this->_values = $values; + $this->_totalCount = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT FOUND_ROWS()'); + } } diff --git a/modules/statsbestcategories/translations/en.php b/modules/statsbestcategories/translations/en.php new file mode 100644 index 000000000..5e1f1d22b --- /dev/null +++ b/modules/statsbestcategories/translations/en.php @@ -0,0 +1,19 @@ +statsbestcategories_4f29d8c727dcf2022ac241cb96c31083'] = 'Empty recordset returned'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_f5c493141bb4b2508c5938fd9353291a'] = 'Displaying %1$s of %2$s'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_49ee3087348e8d44e1feda1917443987'] = 'Name'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_eebfd2d9a7ea25b9e61e8260bcd4849c'] = 'Total Quantity Sold'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_f3547ae5e06426d87312eff7dda775aa'] = 'Total Price'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_89a4e26859399438513f41c4971795b5'] = 'Total Margin'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_c13329e42ec01a10f84c0f950274b404'] = 'Total Viewed'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_6e3b3150807da868ebd33ad2c991b8d7'] = 'Best categories'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_e5510869e31bbf721ca15dff21cf1169'] = 'Adds a list of the best categories to the Stats dashboard.'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_998e4c5c80f27dec552e99dfed34889a'] = 'CSV Export'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_26f1502c886f4daa37c43d27bb58d40d'] = 'Display final level categories only (that have no child categories)'; + + +return $_MODULE; diff --git a/modules/statsbestcategories/translations/tw.php b/modules/statsbestcategories/translations/tw.php new file mode 100644 index 000000000..6c108a22b --- /dev/null +++ b/modules/statsbestcategories/translations/tw.php @@ -0,0 +1,16 @@ +statsbestcategories_4f29d8c727dcf2022ac241cb96c31083'] = '返回空白記錄'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_f5c493141bb4b2508c5938fd9353291a'] = '顯示 %1$s / 共 %2$s'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_49ee3087348e8d44e1feda1917443987'] = '名稱'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_eebfd2d9a7ea25b9e61e8260bcd4849c'] = '銷售數量共計'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_f3547ae5e06426d87312eff7dda775aa'] = '總價'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_c13329e42ec01a10f84c0f950274b404'] = '瀏覽共計'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_6e3b3150807da868ebd33ad2c991b8d7'] = '最佳分類'; +$_MODULE['<{statsbestcategories}prestashop>statsbestcategories_998e4c5c80f27dec552e99dfed34889a'] = 'CSV輸出'; + + +return $_MODULE; diff --git a/modules/statsbestcustomers/config.xml b/modules/statsbestcustomers/config.xml deleted file mode 100644 index 122612b8c..000000000 --- a/modules/statsbestcustomers/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - statsbestcustomers - - - - - - 0 - 0 - - diff --git a/modules/statsbestmanufacturers/CHANGELOG.txt b/modules/statsbestmanufacturers/CHANGELOG.txt deleted file mode 100644 index 6dd3eaeb8..000000000 --- a/modules/statsbestmanufacturers/CHANGELOG.txt +++ /dev/null @@ -1,3 +0,0 @@ -2014-03-27 17:16:57 +0100 / MO statsbestmanufacturers : min ps_versions_compliancy modified (1.5.6.1 => 1.6) -2014-03-24 15:22:40 +0100 / MO statsbestmanufacturers : ps_versions_compliancy added -2014-03-20 14:36:00 +0100 Initial commit diff --git a/modules/statsbestmanufacturers/config.xml b/modules/statsbestmanufacturers/config.xml deleted file mode 100644 index a56032d54..000000000 --- a/modules/statsbestmanufacturers/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - statsbestmanufacturers - - - - - - 0 - 0 - - diff --git a/modules/statsbestmanufacturers/logo.gif b/modules/statsbestmanufacturers/logo.gif deleted file mode 100644 index fa3a15dd6..000000000 Binary files a/modules/statsbestmanufacturers/logo.gif and /dev/null differ diff --git a/modules/statsbestmanufacturers/logo.png b/modules/statsbestmanufacturers/logo.png deleted file mode 100644 index debbc734a..000000000 Binary files a/modules/statsbestmanufacturers/logo.png and /dev/null differ diff --git a/modules/statsbestmanufacturers/statsbestmanufacturers.php b/modules/statsbestmanufacturers/statsbestmanufacturers.php deleted file mode 100644 index 1f8001d03..000000000 --- a/modules/statsbestmanufacturers/statsbestmanufacturers.php +++ /dev/null @@ -1,158 +0,0 @@ - -* @copyright 2007-2016 PrestaShop SA -* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*/ - -if (!defined('_PS_VERSION_')) - exit; - -class StatsBestManufacturers extends ModuleGrid -{ - private $html = null; - private $query = null; - private $columns = null; - private $default_sort_column = null; - private $default_sort_direction = null; - private $empty_message = null; - private $paging_message = null; - - public function __construct() - { - $this->name = 'statsbestmanufacturers'; - $this->tab = 'analytics_stats'; - $this->version = '1.5.1'; - $this->author = 'PrestaShop'; - $this->need_instance = 0; - - parent::__construct(); - - $this->default_sort_column = 'sales'; - $this->default_sort_direction = 'DESC'; - $this->empty_message = $this->l('Empty recordset returned.'); - $this->paging_message = sprintf($this->l('Displaying %1$s of %2$s'), '{0} - {1}', '{2}'); - - $this->columns = array( - array( - 'id' => 'name', - 'header' => $this->l('Name'), - 'dataIndex' => 'name', - 'align' => 'left', - 'width' => 200 - ), - array( - 'id' => 'quantity', - 'header' => $this->l('Quantity sold'), - 'dataIndex' => 'quantity', - 'width' => 60, - 'align' => 'right' - ), - array( - 'id' => 'sales', - 'header' => $this->l('Total paid'), - 'dataIndex' => 'sales', - 'width' => 60, - 'align' => 'right' - ) - ); - - $this->displayName = $this->l('Best manufacturers'); - $this->description = $this->l('Adds a list of the best manufacturers to the Stats dashboard.'); - $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); - } - - public function install() - { - return (parent::install() && $this->registerHook('AdminStatsModules')); - } - - public function hookAdminStatsModules($params) - { - $engine_params = array( - 'id' => 'id_category', - 'title' => $this->displayName, - 'columns' => $this->columns, - 'defaultSortColumn' => $this->default_sort_column, - 'defaultSortDirection' => $this->default_sort_direction, - 'emptyMessage' => $this->empty_message, - 'pagingMessage' => $this->paging_message - ); - - if (Tools::getValue('export')) - $this->csvExport($engine_params); - - $this->html = ' -
    - '.$this->name.' '.$this->displayName.' - '.$this->engine($engine_params).'
    - asterisk'.$this->l('CSV Export').' -
    - '; - - return $this->html; - } - - public function getTotalCount() - { - $sql = 'SELECT COUNT(DISTINCT(m.id_manufacturer)) - FROM '._DB_PREFIX_.'order_detail od - LEFT JOIN '._DB_PREFIX_.'product p ON (p.id_product = od.product_id) - LEFT JOIN '._DB_PREFIX_.'orders o ON (o.id_order = od.id_order) - LEFT JOIN '._DB_PREFIX_.'manufacturer m ON (m.id_manufacturer = p.id_manufacturer) - WHERE o.invoice_date BETWEEN '.$this->getDate() - .Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o'). - 'AND o.valid = 1 - AND m.id_manufacturer IS NOT NULL'; - - return Db::getInstance()->getValue($sql); - } - - public function getData() - { - $this->_totalCount = $this->getTotalCount(); - - $this->query = 'SELECT m.name, SUM(od.product_quantity) as quantity, ROUND(SUM(od.product_quantity * od.product_price) / c.conversion_rate, 2) as sales - FROM '._DB_PREFIX_.'order_detail od - LEFT JOIN '._DB_PREFIX_.'product p ON (p.id_product = od.product_id) - LEFT JOIN '._DB_PREFIX_.'orders o ON (o.id_order = od.id_order) - LEFT JOIN '._DB_PREFIX_.'currency c ON (c.id_currency = o.id_currency) - LEFT JOIN '._DB_PREFIX_.'manufacturer m ON (m.id_manufacturer = p.id_manufacturer) - WHERE o.invoice_date BETWEEN '.$this->getDate().' - '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' - AND o.valid = 1 - AND m.id_manufacturer IS NOT NULL - GROUP BY p.id_manufacturer'; - - if (Validate::IsName($this->_sort)) - { - $this->query .= ' ORDER BY `'.bqSQL($this->_sort).'`'; - if (isset($this->_direction) && Validate::isSortDirection($this->_direction)) - $this->query .= ' '.$this->_direction; - } - - if (($this->_start === 0 || Validate::IsUnsignedInt($this->_start)) && Validate::IsUnsignedInt($this->_limit)) - $this->query .= ' LIMIT '.(int)$this->_start.', '.(int)$this->_limit; - - $this->_values = Db::getInstance()->executeS($this->query); - } -} diff --git a/modules/statsbestproducts/CHANGELOG.txt b/modules/statsbestproducts/CHANGELOG.txt index 3068d7bf0..e6513fa65 100644 --- a/modules/statsbestproducts/CHANGELOG.txt +++ b/modules/statsbestproducts/CHANGELOG.txt @@ -1,3 +1,13 @@ +------------------------------ +# V1.5.1 to V1.5.2 +------------------------------ + +## Improved/Changed Features: + +* [CO] : Module is made compatible with QloApps. + +_____________________________________________________________________________________________________ + 2014-03-27 17:17:12 +0100 / MO statsbestproducts : min ps_versions_compliancy modified (1.5.6.1 => 1.6) 2014-03-24 15:22:41 +0100 / MO statsbestproducts : ps_versions_compliancy added 2014-03-20 14:36:03 +0100 Initial commit diff --git a/modules/statsbestproducts/config.xml b/modules/statsbestproducts/config.xml deleted file mode 100644 index f0017c493..000000000 --- a/modules/statsbestproducts/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - statsbestproducts - - - - - - 0 - 0 - - diff --git a/modules/statsbestproducts/statsbestproducts.php b/modules/statsbestproducts/statsbestproducts.php index bee8bc029..e2e6d1179 100644 --- a/modules/statsbestproducts/statsbestproducts.php +++ b/modules/statsbestproducts/statsbestproducts.php @@ -24,135 +24,135 @@ * International Registered Trademark & Property of PrestaShop SA */ -if (!defined('_PS_VERSION_')) - exit; +if (!defined('_PS_VERSION_')) { + exit; +} + +require_once _PS_MODULE_DIR_.'hotelreservationsystem/define.php'; class StatsBestProducts extends ModuleGrid { - private $html = null; - private $query = null; - private $columns = null; - private $default_sort_column = null; - private $default_sort_direction = null; - private $empty_message = null; - private $paging_message = null; + private $html = null; + private $query = null; + private $columns = null; + private $default_sort_column = null; + private $default_sort_direction = null; + private $empty_message = null; + private $paging_message = null; - public function __construct() - { - $this->name = 'statsbestproducts'; - $this->tab = 'analytics_stats'; - $this->version = '1.5.1'; - $this->author = 'PrestaShop'; - $this->need_instance = 0; + public function __construct() + { + $this->name = 'statsbestproducts'; + $this->tab = 'analytics_stats'; + $this->version = '1.5.2'; + $this->author = 'PrestaShop'; + $this->need_instance = 0; - parent::__construct(); + parent::__construct(); - $this->default_sort_column = 'totalPriceSold'; - $this->default_sort_direction = 'DESC'; - $this->empty_message = $this->l('An empty record-set was returned.'); - $this->paging_message = sprintf($this->l('Displaying %1$s of %2$s'), '{0} - {1}', '{2}'); + $this->default_sort_column = 'totalPriceSold'; + $this->default_sort_direction = 'DESC'; + $this->empty_message = $this->l('An empty record-set was returned.'); + $this->paging_message = sprintf($this->l('Displaying %1$s of %2$s'), '{0} - {1}', '{2}'); - $this->columns = array( - array( - 'id' => 'reference', - 'header' => $this->l('Reference'), - 'dataIndex' => 'reference', - 'align' => 'left' - ), - array( - 'id' => 'name', - 'header' => $this->l('Name'), - 'dataIndex' => 'name', - 'align' => 'left' - ), - array( - 'id' => 'totalQuantitySold', - 'header' => $this->l('Quantity sold'), - 'dataIndex' => 'totalQuantitySold', - 'align' => 'center' - ), - array( - 'id' => 'avgPriceSold', - 'header' => $this->l('Price sold'), - 'dataIndex' => 'avgPriceSold', - 'align' => 'right' - ), - array( - 'id' => 'totalPriceSold', - 'header' => $this->l('Sales'), - 'dataIndex' => 'totalPriceSold', - 'align' => 'right' - ), - array( - 'id' => 'averageQuantitySold', - 'header' => $this->l('Quantity sold in a day'), - 'dataIndex' => 'averageQuantitySold', - 'align' => 'center' - ), - array( - 'id' => 'totalPageViewed', - 'header' => $this->l('Page views'), - 'dataIndex' => 'totalPageViewed', - 'align' => 'center' - ), - array( - 'id' => 'quantity', - 'header' => $this->l('Available quantity for sale'), - 'dataIndex' => 'quantity', - 'align' => 'center' - ), - array( - 'id' => 'active', - 'header' => $this->l('Active'), - 'dataIndex' => 'active', - 'align' => 'center' - ) - ); + $this->columns = array( + array( + 'id' => 'name', + 'header' => $this->l('Room Type Name'), + 'dataIndex' => 'name', + 'align' => 'left' + ), + array( + 'id' => 'hotel_name', + 'header' => $this->l('Hotel Name'), + 'dataIndex' => 'hotel_name', + 'align' => 'left' + ), + array( + 'id' => 'totalRoomsSold', + 'header' => $this->l('Rooms sold'), + 'dataIndex' => 'totalRoomsSold', + 'align' => 'center' + ), + array( + 'id' => 'avgPriceSold', + 'header' => $this->l('Price sold'), + 'dataIndex' => 'avgPriceSold', + 'align' => 'right' + ), + array( + 'id' => 'totalPriceSold', + 'header' => $this->l('Sales'), + 'dataIndex' => 'totalPriceSold', + 'align' => 'right' + ), + array( + 'id' => 'averageQuantitySold', + 'header' => $this->l('Rooms sold in a day'), + 'dataIndex' => 'averageQuantitySold', + 'align' => 'center' + ), + array( + 'id' => 'totalPageViewed', + 'header' => $this->l('Page views'), + 'dataIndex' => 'totalPageViewed', + 'align' => 'center' + ), + array( + 'id' => 'avail_rooms', + 'header' => $this->l('Available rooms'), + 'dataIndex' => 'avail_rooms', + 'align' => 'center' + ), + array( + 'id' => 'active', + 'header' => $this->l('Active'), + 'dataIndex' => 'active', + 'align' => 'center' + ) + ); - $this->displayName = $this->l('Best-selling products'); - $this->description = $this->l('Adds a list of the best-selling products to the Stats dashboard.'); - $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); - } + $this->displayName = $this->l('Best-selling room types'); + $this->description = $this->l('Adds a list of the best-selling room types to the Stats dashboard.'); + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); + } - public function install() - { - return (parent::install() && $this->registerHook('AdminStatsModules')); - } + public function install() + { + return (parent::install() && $this->registerHook('AdminStatsModules')); + } - public function hookAdminStatsModules($params) - { - $engine_params = array( - 'id' => 'id_product', - 'title' => $this->displayName, - 'columns' => $this->columns, - 'defaultSortColumn' => $this->default_sort_column, - 'defaultSortDirection' => $this->default_sort_direction, - 'emptyMessage' => $this->empty_message, - 'pagingMessage' => $this->paging_message - ); + public function hookAdminStatsModules($params) + { + $engine_params = array( + 'id' => 'id_product', + 'title' => $this->displayName, + 'columns' => $this->columns, + 'defaultSortColumn' => $this->default_sort_column, + 'defaultSortDirection' => $this->default_sort_direction, + 'emptyMessage' => $this->empty_message, + 'pagingMessage' => $this->paging_message + ); - if (Tools::getValue('export')) - $this->csvExport($engine_params); + if (Tools::getValue('export')) { + $this->csvExport($engine_params); + } - return '
    '.$this->displayName.'
    + return '
    '.$this->displayName.'
    '.$this->engine($engine_params).' '.$this->l('CSV Export').' '; - } + } - public function getData() - { - $currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT')); - $date_between = $this->getDate(); - $array_date_between = explode(' AND ', $date_between); - - $this->query = 'SELECT SQL_CALC_FOUND_ROWS p.reference, p.id_product, pl.name, - ROUND(AVG(od.product_price / o.conversion_rate), 2) as avgPriceSold, - IFNULL(stock.quantity, 0) as quantity, - IFNULL(SUM(od.product_quantity), 0) AS totalQuantitySold, - ROUND(IFNULL(IFNULL(SUM(od.product_quantity), 0) / (1 + LEAST(TO_DAYS('.$array_date_between[1].'), TO_DAYS(NOW())) - GREATEST(TO_DAYS('.$array_date_between[0].'), TO_DAYS(product_shop.date_add))), 0), 2) as averageQuantitySold, - ROUND(IFNULL(SUM((od.product_price * od.product_quantity) / o.conversion_rate), 0), 2) AS totalPriceSold, + public function getData() + { + $currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT')); + $date_between = $this->getDate(); + $array_date_between = explode(' AND ', $date_between); + $this->query = 'SELECT SQL_CALC_FOUND_ROWS hbil.`hotel_name`, hbil.`id` as id_hotel, p.`id_product`, pl.`name`, + ROUND(AVG(od.`product_price` / o.`conversion_rate`), 2) as avgPriceSold, + ROUND(IFNULL(SUM((od.`product_price` * od.`product_quantity`) / o.`conversion_rate`), 0), 2) AS totalPriceSold, ( SELECT IFNULL(SUM(pv.counter), 0) FROM '._DB_PREFIX_.'page pa @@ -162,10 +162,14 @@ class StatsBestProducts extends ModuleGrid AND dr.time_start BETWEEN '.$date_between.' AND dr.time_end BETWEEN '.$date_between.' ) AS totalPageViewed, + (SELECT COUNT(hbd.`id_room`) FROM '._DB_PREFIX_.'htl_booking_detail hbd WHERE hbd.`id_product` = p.id_product) AS totalRoomsSold, + ROUND(IFNULL(IFNULL((SELECT COUNT(hbd.`id_room`) FROM '._DB_PREFIX_.'htl_booking_detail hbd WHERE hbd.`id_product` = p.id_product), 0) / (1 + LEAST(TO_DAYS('.$array_date_between[1].'), TO_DAYS(NOW())) - GREATEST(TO_DAYS('.$array_date_between[0].'), TO_DAYS(product_shop.date_add))), 0), 2) as averageQuantitySold, product_shop.active FROM '._DB_PREFIX_.'product p '.Shop::addSqlAssociation('product', 'p').' LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (p.id_product = pl.id_product AND pl.id_lang = '.(int)$this->getLang().' '.Shop::addSqlRestrictionOnLang('pl').') + LEFT JOIN '._DB_PREFIX_.'htl_room_type hrt ON hrt.id_product = p.id_product + LEFT JOIN '._DB_PREFIX_.'htl_branch_info_lang hbil ON (hbil.id = hrt.id_hotel AND hbil.id_lang = '.(int)$this->getLang().') LEFT JOIN '._DB_PREFIX_.'order_detail od ON od.product_id = p.id_product LEFT JOIN '._DB_PREFIX_.'orders o ON od.id_order = o.id_order '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' @@ -174,25 +178,40 @@ class StatsBestProducts extends ModuleGrid AND o.invoice_date BETWEEN '.$date_between.' GROUP BY od.product_id'; - if (Validate::IsName($this->_sort)) - { - $this->query .= ' ORDER BY `'.bqSQL($this->_sort).'`'; - if (isset($this->_direction) && Validate::isSortDirection($this->_direction)) - $this->query .= ' '.$this->_direction; - } + if (Validate::IsName($this->_sort)) { + $this->query .= ' ORDER BY `'.bqSQL($this->_sort).'`'; + if (isset($this->_direction) && Validate::isSortDirection($this->_direction)) { + $this->query .= ' '.$this->_direction; + } + } - if (($this->_start === 0 || Validate::IsUnsignedInt($this->_start)) && Validate::IsUnsignedInt($this->_limit)) - $this->query .= ' LIMIT '.(int)$this->_start.', '.(int)$this->_limit; + if (($this->_start === 0 || Validate::IsUnsignedInt($this->_start)) && Validate::IsUnsignedInt($this->_limit)) { + $this->query .= ' LIMIT '.(int)$this->_start.', '.(int)$this->_limit; + } - $values = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query); - foreach ($values as &$value) - { - $value['avgPriceSold'] = Tools::displayPrice($value['avgPriceSold'], $currency); - $value['totalPriceSold'] = Tools::displayPrice($value['totalPriceSold'], $currency); - } - unset($value); + $values = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query); + $dateFrom = date("Y-m-d", strtotime($this->_employee->stats_date_from)); + $dateTo = date("Y-m-d", strtotime($this->_employee->stats_date_to)); - $this->_values = $values; - $this->_totalCount = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT FOUND_ROWS()'); - } + $objBookingDtl = new HotelBookingDetail(); + $bookingParams = array(); + $bookingParams['date_from'] = $dateFrom; + $bookingParams['date_to'] = $dateTo; + foreach ($values as &$value) { + $bookingParams['hotel_id'] = $value['id_hotel']; + $bookingParams['room_type'] = $value['id_product']; + $booking_data = $objBookingDtl->getBookingData($bookingParams); + if (isset($booking_data['stats']['num_avail'])) { + $value['avail_rooms'] = $booking_data['stats']['num_avail']; + } else { + $value['avail_rooms'] = 0; + } + $value['avgPriceSold'] = Tools::displayPrice($value['avgPriceSold'], $currency); + $value['totalPriceSold'] = Tools::displayPrice($value['totalPriceSold'], $currency); + } + unset($value); + + $this->_values = $values; + $this->_totalCount = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT FOUND_ROWS()'); + } } diff --git a/modules/statsbestproducts/translations/en.php b/modules/statsbestproducts/translations/en.php new file mode 100644 index 000000000..ed310525a --- /dev/null +++ b/modules/statsbestproducts/translations/en.php @@ -0,0 +1,22 @@ +statsbestproducts_8c4d7af5f578693f9a6cf391e912ee33'] = 'An empty record-set was returned.'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_f5c493141bb4b2508c5938fd9353291a'] = 'Displaying %1$s of %2$s'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_63d5049791d9d79d86e9a108b0a999ca'] = 'Reference'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_49ee3087348e8d44e1feda1917443987'] = 'Name'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_2a0440eec72540c5b30d9199c01f348c'] = 'Quantity sold'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_6771f2d557a34bd89ea7abc92a0a069c'] = 'Price sold'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Sales'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_25f4b31e8f3baec8b2f266e05af88943'] = 'Quantity sold in a day'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_7664a37e0cc56aaf39aebf2edbd3f98e'] = 'Page views'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_7bd5825a187064017975513b95d7f7de'] = 'Available quantity for sale'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Active'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_950cf49f8ca529be64c924f16fcb5404'] = 'Best-selling products'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_15429f69e40860368f6e113e4cba5601'] = 'Adds a list of the best-selling products to the Stats dashboard.'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_998e4c5c80f27dec552e99dfed34889a'] = 'CSV Export'; + + +return $_MODULE; diff --git a/modules/statsbestproducts/translations/tw.php b/modules/statsbestproducts/translations/tw.php new file mode 100644 index 000000000..792c3a866 --- /dev/null +++ b/modules/statsbestproducts/translations/tw.php @@ -0,0 +1,20 @@ +statsbestproducts_8c4d7af5f578693f9a6cf391e912ee33'] = '傳回一個空的資料集合'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_f5c493141bb4b2508c5938fd9353291a'] = '顯示 %1$s / 共 %2$s'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_63d5049791d9d79d86e9a108b0a999ca'] = '編號'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_49ee3087348e8d44e1feda1917443987'] = '名稱'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_2a0440eec72540c5b30d9199c01f348c'] = '已銷售數量'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_6771f2d557a34bd89ea7abc92a0a069c'] = '價格出售'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_11ff9f68afb6b8b5b8eda218d7c83a65'] = '銷售'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_7664a37e0cc56aaf39aebf2edbd3f98e'] = '頁面瀏覽量'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_7bd5825a187064017975513b95d7f7de'] = '可供銷售數量'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_4d3d769b812b6faa6b76e1a8abaece2d'] = '啟用'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_950cf49f8ca529be64c924f16fcb5404'] = '熱賣產品'; +$_MODULE['<{statsbestproducts}prestashop>statsbestproducts_998e4c5c80f27dec552e99dfed34889a'] = 'CSV輸出'; + + +return $_MODULE; diff --git a/modules/statsbestsuppliers/CHANGELOG.txt b/modules/statsbestsuppliers/CHANGELOG.txt deleted file mode 100644 index c819071ff..000000000 --- a/modules/statsbestsuppliers/CHANGELOG.txt +++ /dev/null @@ -1,3 +0,0 @@ -2014-03-27 17:17:25 +0100 / MO statsbestsuppliers : min ps_versions_compliancy modified (1.5.6.1 => 1.6) -2014-03-24 15:22:41 +0100 / MO statsbestsuppliers : ps_versions_compliancy added -2014-03-20 14:36:05 +0100 Initial commit diff --git a/modules/statsbestsuppliers/config.xml b/modules/statsbestsuppliers/config.xml deleted file mode 100644 index 5effd0a7e..000000000 --- a/modules/statsbestsuppliers/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - statsbestsuppliers - - - - - - 0 - 0 - - \ No newline at end of file diff --git a/modules/statsbestsuppliers/logo.gif b/modules/statsbestsuppliers/logo.gif deleted file mode 100644 index fa3a15dd6..000000000 Binary files a/modules/statsbestsuppliers/logo.gif and /dev/null differ diff --git a/modules/statsbestsuppliers/logo.png b/modules/statsbestsuppliers/logo.png deleted file mode 100644 index 4daa9d32a..000000000 Binary files a/modules/statsbestsuppliers/logo.png and /dev/null differ diff --git a/modules/statsbestsuppliers/statsbestsuppliers.php b/modules/statsbestsuppliers/statsbestsuppliers.php deleted file mode 100644 index 4f8172a76..000000000 --- a/modules/statsbestsuppliers/statsbestsuppliers.php +++ /dev/null @@ -1,153 +0,0 @@ - -* @copyright 2007-2016 PrestaShop SA -* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*/ - -if (!defined('_PS_VERSION_')) - exit; - -class StatsBestSuppliers extends ModuleGrid -{ - private $html = null; - private $query = null; - private $columns = null; - private $default_sort_column = null; - private $default_sort_direction = null; - private $empty_message = null; - private $paging_message = null; - - public function __construct() - { - $this->name = 'statsbestsuppliers'; - $this->tab = 'analytics_stats'; - $this->version = '1.4.1'; - $this->author = 'PrestaShop'; - $this->need_instance = 0; - - parent::__construct(); - - $this->default_sort_column = 'sales'; - $this->default_sort_direction = 'DESC'; - $this->empty_message = $this->l('Empty record set returned'); - $this->paging_message = sprintf($this->l('Displaying %1$s of %2$s'), '{0} - {1}', '{2}'); - - $this->columns = array( - array( - 'id' => 'name', - 'header' => $this->l('Name'), - 'dataIndex' => 'name', - 'align' => 'center' - ), - array( - 'id' => 'quantity', - 'header' => $this->l('Quantity sold'), - 'dataIndex' => 'quantity', - 'align' => 'center' - ), - array( - 'id' => 'sales', - 'header' => $this->l('Total paid'), - 'dataIndex' => 'sales', - 'align' => 'center' - ) - ); - - $this->displayName = $this->l('Best suppliers'); - $this->description = $this->l('Adds a list of the best suppliers to the Stats dashboard.'); - $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); - } - - public function install() - { - return (parent::install() && $this->registerHook('AdminStatsModules')); - } - - public function hookAdminStatsModules($params) - { - $engine_params = array( - 'id' => 'id_category', - 'title' => $this->displayName, - 'columns' => $this->columns, - 'defaultSortColumn' => $this->default_sort_column, - 'defaultSortDirection' => $this->default_sort_direction, - 'emptyMessage' => $this->empty_message, - 'pagingMessage' => $this->paging_message - ); - - if (Tools::getValue('export') == 1) - $this->csvExport($engine_params); - $this->html = ' -
    - '.$this->displayName.' -
    - '.$this->engine($engine_params).' - - '.$this->l('CSV Export').' - '; - return $this->html; - } - - /** - * @return int Get total of distinct suppliers - */ - public function getTotalCount() - { - $sql = 'SELECT COUNT(DISTINCT(s.id_supplier)) - FROM '._DB_PREFIX_.'order_detail od - LEFT JOIN '._DB_PREFIX_.'product p ON p.id_product = od.product_id - LEFT JOIN '._DB_PREFIX_.'orders o ON o.id_order = od.id_order - LEFT JOIN '._DB_PREFIX_.'supplier s ON s.id_supplier = p.id_supplier - WHERE o.invoice_date BETWEEN '.$this->getDate().' - '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' - AND o.valid = 1 - AND s.id_supplier IS NOT NULL'; - return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); - } - - public function getData() - { - $this->_totalCount = $this->getTotalCount(); - - $this->query = 'SELECT s.name, SUM(od.product_quantity) as quantity, ROUND(SUM(od.product_quantity * od.product_price) / o.conversion_rate, 2) as sales - FROM '._DB_PREFIX_.'order_detail od - LEFT JOIN '._DB_PREFIX_.'product p ON p.id_product = od.product_id - LEFT JOIN '._DB_PREFIX_.'orders o ON o.id_order = od.id_order - LEFT JOIN '._DB_PREFIX_.'supplier s ON s.id_supplier = p.id_supplier - WHERE o.invoice_date BETWEEN '.$this->getDate().' - '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' - AND o.valid = 1 - AND s.id_supplier IS NOT NULL - GROUP BY p.id_supplier'; - if (Validate::IsName($this->_sort)) - { - $this->query .= ' ORDER BY `'.$this->_sort.'`'; - if (isset($this->_direction) && Validate::isSortDirection($this->_direction)) - $this->query .= ' '.$this->_direction; - } - - if (($this->_start === 0 || Validate::IsUnsignedInt($this->_start)) && Validate::IsUnsignedInt($this->_limit)) - $this->query .= ' LIMIT '.$this->_start.', '.($this->_limit); - $this->_values = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query); - } -} diff --git a/modules/statscarrier/CHANGELOG.txt b/modules/statscarrier/CHANGELOG.txt deleted file mode 100644 index df34a2ac4..000000000 --- a/modules/statscarrier/CHANGELOG.txt +++ /dev/null @@ -1,3 +0,0 @@ -2014-03-27 17:17:58 +0100 / MO statscarrier : min ps_versions_compliancy modified (1.5.6.1 => 1.6) -2014-03-24 15:22:43 +0100 / MO statscarrier : ps_versions_compliancy added -2014-03-20 14:36:21 +0100 Initial commit diff --git a/modules/statscarrier/config.xml b/modules/statscarrier/config.xml deleted file mode 100644 index d58c60adb..000000000 --- a/modules/statscarrier/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - statscarrier - - - - - - 0 - 0 - - \ No newline at end of file diff --git a/modules/statscarrier/logo.gif b/modules/statscarrier/logo.gif deleted file mode 100644 index 482ceea3c..000000000 Binary files a/modules/statscarrier/logo.gif and /dev/null differ diff --git a/modules/statscarrier/logo.png b/modules/statscarrier/logo.png deleted file mode 100644 index 4b8f5c05a..000000000 Binary files a/modules/statscarrier/logo.png and /dev/null differ diff --git a/modules/statscarrier/statscarrier.php b/modules/statscarrier/statscarrier.php deleted file mode 100644 index 4203d5ed1..000000000 --- a/modules/statscarrier/statscarrier.php +++ /dev/null @@ -1,138 +0,0 @@ - -* @copyright 2007-2016 PrestaShop SA -* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*/ - -if (!defined('_PS_VERSION_')) - exit; - -class StatsCarrier extends ModuleGraph -{ - private $html = ''; - private $option = ''; - - public function __construct() - { - $this->name = 'statscarrier'; - $this->tab = 'analytics_stats'; - $this->version = '1.4.1'; - $this->author = 'PrestaShop'; - $this->need_instance = 0; - - parent::__construct(); - - $this->displayName = $this->l('Carrier distribution'); - $this->description = $this->l('Adds a graph displaying each carriers\' distribution to the Stats dashboard.'); - $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); - } - - public function install() - { - return (parent::install() && $this->registerHook('AdminStatsModules')); - } - - public function hookAdminStatsModules($params) - { - $sql = 'SELECT COUNT(o.`id_order`) as total - FROM `'._DB_PREFIX_.'orders` o - WHERE o.`date_add` BETWEEN '.ModuleGraph::getDateBetween().' - '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' - '.((int)Tools::getValue('id_order_state') ? 'AND (SELECT oh.id_order_state FROM `'._DB_PREFIX_.'order_history` oh WHERE o.id_order = oh.id_order ORDER BY oh.date_add DESC, oh.id_order_history DESC LIMIT 1) = '.(int)Tools::getValue('id_order_state') : ''); - $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql); - $states = OrderState::getOrderStates($this->context->language->id); - - if (Tools::getValue('export')) - $this->csvExport(array('type' => 'pie', 'option' => Tools::getValue('id_order_state'))); - $this->html = ' -
    - '.$this->displayName.' -
    -
    -
    -
    - -
    -
    - -
    -
    -
    - -
    - '.$this->l('This graph represents the carrier distribution for your orders. You can also narrow the focus of the graph to display distribution for a particular order status.').' -
    -
    -
    -
    - '.($result['total'] ? $this->engine(array( - 'type' => 'pie', - 'option' => Tools::getValue('id_order_state') - )).' -
    -
    - - '.$this->l('CSV Export').' - ' : $this->l('No valid orders have been received for this period.')).' -
    -
    -
    '; - - return $this->html; - } - - public function setOption($option, $layers = 1) - { - $this->option = (int)$option; - } - - protected function getData($layers) - { - $state_query = ''; - if ((int)$this->option) - $state_query = 'AND ( - SELECT oh.id_order_state FROM `'._DB_PREFIX_.'order_history` oh - WHERE o.id_order = oh.id_order - ORDER BY oh.date_add DESC, oh.id_order_history DESC - LIMIT 1) = '.(int)$this->option; - $this->_titles['main'] = $this->l('Percentage of orders listed by carrier.'); - - $sql = 'SELECT c.name, COUNT(DISTINCT o.`id_order`) as total - FROM `'._DB_PREFIX_.'carrier` c - LEFT JOIN `'._DB_PREFIX_.'orders` o ON o.id_carrier = c.id_carrier - WHERE o.`date_add` BETWEEN '.ModuleGraph::getDateBetween().' - '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' - '.$state_query.' - GROUP BY c.`id_carrier`'; - $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); - foreach ($result as $row) - { - $this->_values[] = $row['total']; - $this->_legend[] = $row['name']; - } - } -} diff --git a/modules/statscatalog/CHANGELOG.txt b/modules/statscatalog/CHANGELOG.txt index ea1c4eb02..4900977d1 100644 --- a/modules/statscatalog/CHANGELOG.txt +++ b/modules/statscatalog/CHANGELOG.txt @@ -1,3 +1,13 @@ +------------------------------ +# V1.4.0 to V1.4.1 +------------------------------ + +## Improved/Changed Features: + +* [CO] : Module is made compatible with QloApps. + +_____________________________________________________________________________________________________ + 2014-04-17 12:15:47 +0200 [-] MO : statscatalog - Fix 1.5 ps_version_compliancy issue 2014-03-24 15:22:44 +0100 / MO statscatalog : ps_versions_compliancy added 2014-03-20 14:36:24 +0100 Initial commit diff --git a/modules/statscatalog/config.xml b/modules/statscatalog/config.xml deleted file mode 100644 index 0d656d802..000000000 --- a/modules/statscatalog/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - statscatalog - - - - - - 0 - 0 - - \ No newline at end of file diff --git a/modules/statscatalog/statscatalog.php b/modules/statscatalog/statscatalog.php index a5a5fb640..c683d4018 100644 --- a/modules/statscatalog/statscatalog.php +++ b/modules/statscatalog/statscatalog.php @@ -24,198 +24,224 @@ * International Registered Trademark & Property of PrestaShop SA */ -if (!defined('_PS_VERSION_')) - exit; +if (!defined('_PS_VERSION_')) { + exit; +} + +require_once _PS_MODULE_DIR_.'hotelreservationsystem/define.php'; class StatsCatalog extends Module { - private $join = ''; - private $where = ''; + private $join = ''; + private $where = ''; + private $id_hotel = ''; - public function __construct() - { - $this->name = 'statscatalog'; - $this->tab = 'analytics_stats'; - $this->version = '1.4.0'; - $this->author = 'PrestaShop'; - $this->need_instance = 0; + public function __construct() + { + $this->name = 'statscatalog'; + $this->tab = 'analytics_stats'; + $this->version = '1.4.1'; + $this->author = 'PrestaShop'; + $this->need_instance = 0; - parent::__construct(); + parent::__construct(); - $this->displayName = $this->l('Catalog statistics'); - $this->description = $this->l('Adds a tab containing general statistics about your catalog to the Stats dashboard.'); - $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); - } + $this->displayName = $this->l('Catalog statistics'); + $this->description = $this->l('Adds a tab containing general statistics about your catalog to the Stats dashboard.'); + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); + } - public function install() - { - return (parent::install() && $this->registerHook('AdminStatsModules')); - } + public function install() + { + return (parent::install() && $this->registerHook('AdminStatsModules')); + } - public function getQuery1() - { - $sql = 'SELECT COUNT(DISTINCT p.`id_product`) AS total, SUM(product_shop.`price`) / COUNT(product_shop.`price`) AS average_price, COUNT(DISTINCT i.`id_image`) AS images + public function getQuery1() + { + $sql = 'SELECT COUNT(DISTINCT p.`id_product`) AS total, SUM(product_shop.`price`) / COUNT(product_shop.`price`) AS average_price, COUNT(DISTINCT i.`id_image`) AS images FROM `'._DB_PREFIX_.'product` p '.Shop::addSqlAssociation('product', 'p').' + INNER JOIN `'._DB_PREFIX_.'htl_room_type` hrt ON (p.`id_product` = hrt.`id_product`) LEFT JOIN `'._DB_PREFIX_.'image` i ON i.`id_product` = p.`id_product` '.$this->join.' WHERE product_shop.`active` = 1 '.$this->where; + if ($this->id_hotel) { + $sql .= ' AND hrt.`id_hotel` = '.(int)$this->id_hotel; + } - return DB::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql); - } + return DB::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql); + } - public function getTotalPageViewed() - { - return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' - SELECT SUM(pv.`counter`) + public function getTotalPageViewed() + { + $sql = 'SELECT SUM(pv.`counter`) FROM `'._DB_PREFIX_.'product` p '.Shop::addSqlAssociation('product', 'p').' + INNER JOIN `'._DB_PREFIX_.'htl_room_type` hrt ON (p.`id_product` = hrt.`id_product`) LEFT JOIN `'._DB_PREFIX_.'page` pa ON p.`id_product` = pa.`id_object` LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON (pt.`id_page_type` = pa.`id_page_type` AND pt.`name` IN ("product.php", "product")) LEFT JOIN `'._DB_PREFIX_.'page_viewed` pv ON pv.`id_page` = pa.`id_page` '.$this->join.' WHERE product_shop.`active` = 1 - '.$this->where); - } + '.$this->where; - public function getTotalProductViewed() - { - return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' - SELECT COUNT(DISTINCT pa.`id_object`) + if ($this->id_hotel) { + $sql .= ' AND hrt.`id_hotel` = '.(int)$this->id_hotel; + } + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); + } + + public function getTotalProductViewed() + { + $sql = 'SELECT COUNT(DISTINCT pa.`id_object`) FROM `'._DB_PREFIX_.'page_viewed` pv LEFT JOIN `'._DB_PREFIX_.'page` pa ON pv.`id_page` = pa.`id_page` LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON pt.`id_page_type` = pa.`id_page_type` LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = pa.`id_object` + LEFT JOIN `'._DB_PREFIX_.'htl_room_type` hrt ON (p.`id_product` = hrt.`id_product`) '.Shop::addSqlAssociation('product', 'p').' '.$this->join.' WHERE pt.`name` IN ("product.php", "product") AND product_shop.`active` = 1 - '.$this->where); - } + '.$this->where; - public function getTotalBought() - { - return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' - SELECT SUM(od.`product_quantity`) - FROM `'._DB_PREFIX_.'orders` o - LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.`id_order` = od.`id_order` - LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = od.`product_id` - '.$this->join.' - WHERE o.valid = 1 - '.$this->where); - } + if ($this->id_hotel) { + $sql .= ' AND hrt.`id_hotel` = '.(int)$this->id_hotel; + } + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); + } - public function getProductsNB($id_lang) - { - $sql = 'SELECT p.`id_product` + public function getTotalBookedRooms() + { + $sql = 'SELECT COUNT(`id_room`) FROM `'._DB_PREFIX_.'htl_booking_detail`'; + if ($this->id_hotel) { + $sql .= ' WHERE `id_hotel` = '.(int)$this->id_hotel; + } + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); + } + + public function getProductsNB($id_lang) + { + $sql = 'SELECT p.`id_product` FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.`id_order` = od.`id_order` LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = od.`product_id` + LEFT JOIN `'._DB_PREFIX_.'htl_room_type` hrt ON (p.`id_product` = hrt.`id_product`) '.Shop::addSqlAssociation('product', 'p').' '.$this->join.' WHERE o.valid = 1 '.$this->where.' - AND product_shop.`active` = 1 - GROUP BY p.`id_product`'; - $precalc = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); + AND product_shop.`active` = 1'; + if ($this->id_hotel) { + $sql .= ' AND hrt.`id_hotel` = '.(int)$this->id_hotel; + } + $sql .= ' GROUP BY p.`id_product`'; + $precalc = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); - $precalc2 = array(); - foreach ($precalc as $array) - $precalc2[] = (int)$array['id_product']; + $precalc2 = array(); + foreach ($precalc as $array) { + $precalc2[] = (int)$array['id_product']; + } - $sql = 'SELECT p.id_product, pl.name, pl.link_rewrite + $sql = 'SELECT p.id_product, pl.name, pl.link_rewrite FROM `'._DB_PREFIX_.'product` p '.Shop::addSqlAssociation('product', 'p').' + LEFT JOIN `'._DB_PREFIX_.'htl_room_type` hrt ON (p.`id_product` = hrt.`id_product`) LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.`id_product` = p.`id_product` AND pl.id_lang = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').') '.$this->join.' WHERE product_shop.`active` = 1 '.(count($precalc2) ? 'AND p.`id_product` NOT IN ('.implode(',', $precalc2).')' : '').' '.$this->where; - $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); + if ($this->id_hotel) { + $sql .= ' AND hrt.`id_hotel` = '.(int)$this->id_hotel; + } + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); - return array('total' => Db::getInstance(_PS_USE_SQL_SLAVE_)->NumRows(), 'result' => $result); - } + return array('total' => Db::getInstance(_PS_USE_SQL_SLAVE_)->NumRows(), 'result' => $result); + } - public function hookAdminStatsModules($params) - { - $categories = Category::getCategories($this->context->language->id, true, false); - $product_token = Tools::getAdminToken('AdminProducts'.(int)Tab::getIdFromClassName('AdminProducts').(int)$this->context->employee->id); - $irow = 0; + public function hookAdminStatsModules($params) + { + $objBranchInfo = new HotelBranchInformation(); + $hotels = $objBranchInfo->hotelBranchesInfo((int)$this->context->language->id); - if ($id_category = (int)Tools::getValue('id_category')) - { - $this->join = ' LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_product` = p.`id_product`)'; - $this->where = ' AND cp.`id_category` = '.$id_category; - } + $product_token = Tools::getAdminToken('AdminProducts'.(int)Tab::getIdFromClassName('AdminProducts').(int)$this->context->employee->id); + $irow = 0; - $result1 = $this->getQuery1(true); - $total = $result1['total']; - $average_price = $result1['average_price']; - $total_pictures = $result1['images']; - $average_pictures = $total ? $total_pictures / $total : 0; + if ($id_hotel = (int)Tools::getValue('id_hotel')) { + $this->id_hotel = $id_hotel; + } - $never_bought = $this->getProductsNB($this->context->language->id); - $total_nb = $never_bought['total']; - $products_nb = $never_bought['result']; + $result1 = $this->getQuery1(true); + $total = $result1['total']; + $average_price = $result1['average_price']; + $total_pictures = $result1['images']; + $average_pictures = $total ? $total_pictures / $total : 0; - $total_bought = $this->getTotalBought(); - $average_purchase = $total ? ($total_bought / $total) : 0; + $never_bought = $this->getProductsNB($this->context->language->id); + $total_nb = $never_bought['total']; + $products_nb = $never_bought['result']; - $total_page_viewed = $this->getTotalPageViewed(); - $average_viewed = $total ? ($total_page_viewed / $total) : 0; - $conversion = number_format((float)($total_page_viewed ? ($total_bought / $total_page_viewed) : 0), 2, '.', ''); - if ($conversion_reverse = number_format((float)($total_bought ? ($total_page_viewed / $total_bought) : 0), 2, '.', '')) - $conversion .= sprintf($this->l('(1 purchase / %d visits)'), $conversion_reverse); + $total_booked_rooms = $this->getTotalBookedRooms(); + $average_purchase = $total ? ($total_booked_rooms / $total) : 0; - $total_nv = $total - $this->getTotalProductViewed(); + $total_page_viewed = $this->getTotalPageViewed(); + $average_viewed = $total ? ($total_page_viewed / $total) : 0; + $conversion = number_format((float)($total_page_viewed ? ($total_booked_rooms / $total_page_viewed) : 0), 2, '.', ''); + if ($conversion_reverse = number_format((float)($total_booked_rooms ? ($total_page_viewed / $total_booked_rooms) : 0), 2, '.', '')) { + $conversion .= sprintf($this->l('(1 purchase / %d visits)'), $conversion_reverse); + } - $html = ' + $total_nv = $total - $this->getTotalProductViewed(); + + $html = '
    '.$this->displayName.'
    -
    +
    - '; - foreach ($categories as $category) - $html .= ''; - $html .= ' + } + $html .= '
      -
    • '.$this->returnLine($this->l('Products available:'), ''.(int)$total).'
    • +
    • '.$this->returnLine($this->l('Room types available:'), ''.(int)$total).'
    • '.$this->returnLine($this->l('Average price (base price):'), ''.Tools::displayPrice($average_price, $this->context->currency)).'
    • -
    • '.$this->returnLine($this->l('Product pages viewed:'), ''.(int)$total_page_viewed).'
    • -
    • '.$this->returnLine($this->l('Products bought:'), ''.(int)$total_bought).'
    • +
    • '.$this->returnLine($this->l('Room type pages viewed:'), ''.(int)$total_page_viewed).'
    • +
    • '.$this->returnLine($this->l('Booked Rooms:'), ''.(int)$total_booked_rooms).'
    • '.$this->returnLine($this->l('Average number of page visits:'), ''.number_format((float)$average_viewed, 2, '.', '')).'
    • -
    • '.$this->returnLine($this->l('Average number of purchases:'), ''.number_format((float)$average_purchase, 2, '.', '')).'
    • +
    • '.$this->returnLine($this->l('Average number of bookings:'), ''.number_format((float)$average_purchase, 2, '.', '')).'
    • '.$this->returnLine($this->l('Images available:'), ''.(int)$total_pictures).'
    • '.$this->returnLine($this->l('Average number of images:'), ''.number_format((float)$average_pictures, 2, '.', '')).'
    • -
    • '.$this->returnLine($this->l('Products never viewed:'), ''.(int)$total_nv.' / '.(int)$total).'
    • -
    • '.$this->returnLine($this->l('Products never purchased:'), ''.(int)$total_nb.' / '.(int)$total).'
    • +
    • '.$this->returnLine($this->l('Room types never viewed:'), ''.(int)$total_nv.' / '.(int)$total).'
    • +
    • '.$this->returnLine($this->l('Room types never purchased:'), ''.(int)$total_nb.' / '.(int)$total).'
    • '.$this->returnLine($this->l('Conversion rate*:'), ''.$conversion).'

    - '.$this->l('Defines the average conversion rate for the product page. It is possible to purchase a product without viewing the product page, so this rate can be greater than 1.').' + '.$this->l('Defines the average conversion rate for the room type page. It is possible to book a room type without viewing the room type page, so this rate can be greater than 1.').'

    '; - if (count($products_nb) && count($products_nb) < 50) - { - $html .= ' -
    '.$this->l('Products never purchased').'
    + if (count($products_nb) && count($products_nb) < 50) { + $html .= ' +
    '.$this->l('Room type never booked').'
    @@ -225,9 +251,9 @@ class StatsCatalog extends Module '; - foreach ($products_nb as $product) { - $urlParams = array('id_product' => $product['id_product'], 'updateproduct' => '1'); - $html .= ' + foreach ($products_nb as $product) { + $urlParams = array('id_product' => $product['id_product'], 'updateproduct' => '1'); + $html .= ' @@ -249,17 +275,17 @@ class StatsCatalog extends Module '; - } - $html .= ' + } + $html .= '
    '.$product['id_product'].' '.$product['name'].'
    '; - } + } - return $html; - } + return $html; + } - private function returnLine($label, $data) - { - return $label.$data; - } + private function returnLine($label, $data) + { + return $label.$data; + } } diff --git a/modules/statscatalog/translations/en.php b/modules/statscatalog/translations/en.php new file mode 100644 index 000000000..61e74e2e8 --- /dev/null +++ b/modules/statscatalog/translations/en.php @@ -0,0 +1,31 @@ +statscatalog_cf3aa21c6a2147ddbd86f34091daeccd'] = 'Catalog statistics'; +$_MODULE['<{statscatalog}prestashop>statscatalog_08a7c3cf820979d2c8d4de4f47abb5e6'] = 'Adds a tab containing general statistics about your catalog to the Stats dashboard.'; +$_MODULE['<{statscatalog}prestashop>statscatalog_74cda5a02df704cc5c3e8fee7fc0f7bc'] = '(1 purchase / %d visits)'; +$_MODULE['<{statscatalog}prestashop>statscatalog_0173374ac20f5843d58b553d5b226ef6'] = 'Choose a category'; +$_MODULE['<{statscatalog}prestashop>statscatalog_b1c94ca2fbc3e78fc30069c8d0f01680'] = 'All'; +$_MODULE['<{statscatalog}prestashop>statscatalog_a7b623414d4b6a3225b4e935babec6d2'] = 'Products available:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_1099377f1598a0856e2457a5145d89c2'] = 'Average price (base price):'; +$_MODULE['<{statscatalog}prestashop>statscatalog_48a93dc02c74f3065af1ba47fca070d0'] = 'Product pages viewed:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_156e5c5872c9af24a5c982da07a883c2'] = 'Products bought:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_85f179d4142ca061d49605a7fffdc09d'] = 'Average number of page visits:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_05ff4bfc3baf0acd31a72f1ac754de04'] = 'Average number of purchases:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_c09d09e371989d89847049c9574b6b8e'] = 'Images available:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_65275d1b04037d8c8e42425002110363'] = 'Average number of images:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_51b8891d531ad91128ba58c8928322ab'] = 'Products never viewed:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_8725647ef741e5d48c1e6f652ce80b50'] = 'Products never purchased:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_b86770bc713186bcf43dbb1164c5fd28'] = 'Conversion rate*:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_082d537edb8c61539b9f266eb331c88e'] = 'Defines the average conversion rate for the product page. It is possible to purchase a product without viewing the product page, so this rate can be greater than 1.'; +$_MODULE['<{statscatalog}prestashop>statscatalog_58a714d3e9bb2902a5b688c99bd4d8e6'] = 'Products never purchased'; +$_MODULE['<{statscatalog}prestashop>statscatalog_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; +$_MODULE['<{statscatalog}prestashop>statscatalog_49ee3087348e8d44e1feda1917443987'] = 'Name'; +$_MODULE['<{statscatalog}prestashop>statscatalog_8e7c9a35104a5a68199678bd6bc5d187'] = 'Edit / View'; +$_MODULE['<{statscatalog}prestashop>statscatalog_7dce122004969d56ae2e0245cb754d35'] = 'Edit'; +$_MODULE['<{statscatalog}prestashop>statscatalog_4351cfebe4b61d8aa5efa1d020710005'] = 'View'; + + +return $_MODULE; diff --git a/modules/statscatalog/translations/tw.php b/modules/statscatalog/translations/tw.php new file mode 100644 index 000000000..d40bfbefa --- /dev/null +++ b/modules/statscatalog/translations/tw.php @@ -0,0 +1,31 @@ +statscatalog_cf3aa21c6a2147ddbd86f34091daeccd'] = '目錄統計'; +$_MODULE['<{statscatalog}prestashop>statscatalog_08a7c3cf820979d2c8d4de4f47abb5e6'] = '在儀錶盤添加包含有關您目錄的一般統計標籤。'; +$_MODULE['<{statscatalog}prestashop>statscatalog_74cda5a02df704cc5c3e8fee7fc0f7bc'] = '(1 個訂單 / %d 訪問次數)'; +$_MODULE['<{statscatalog}prestashop>statscatalog_0173374ac20f5843d58b553d5b226ef6'] = '選擇一個分類'; +$_MODULE['<{statscatalog}prestashop>statscatalog_b1c94ca2fbc3e78fc30069c8d0f01680'] = '全部'; +$_MODULE['<{statscatalog}prestashop>statscatalog_a7b623414d4b6a3225b4e935babec6d2'] = '可購產品:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_1099377f1598a0856e2457a5145d89c2'] = '平均價格(基礎價格):'; +$_MODULE['<{statscatalog}prestashop>statscatalog_48a93dc02c74f3065af1ba47fca070d0'] = '已瀏覽產品頁面:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_156e5c5872c9af24a5c982da07a883c2'] = '被購產品:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_85f179d4142ca061d49605a7fffdc09d'] = '平均頁面訪問:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_05ff4bfc3baf0acd31a72f1ac754de04'] = '平均購買:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_c09d09e371989d89847049c9574b6b8e'] = '可用圖片:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_65275d1b04037d8c8e42425002110363'] = '平均圖片數:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_51b8891d531ad91128ba58c8928322ab'] = '從未被查看的產品:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_8725647ef741e5d48c1e6f652ce80b50'] = '產品永不購買:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_b86770bc713186bcf43dbb1164c5fd28'] = '調價*:'; +$_MODULE['<{statscatalog}prestashop>statscatalog_082d537edb8c61539b9f266eb331c88e'] = '設定商品頁平均轉換率(因為訂購產品有可能沒有瀏覽產品頁,所以這個比率可以大於 1)'; +$_MODULE['<{statscatalog}prestashop>statscatalog_58a714d3e9bb2902a5b688c99bd4d8e6'] = '產品永不購買'; +$_MODULE['<{statscatalog}prestashop>statscatalog_b718adec73e04ce3ec720dd11a06a308'] = '編號'; +$_MODULE['<{statscatalog}prestashop>statscatalog_49ee3087348e8d44e1feda1917443987'] = '名稱'; +$_MODULE['<{statscatalog}prestashop>statscatalog_8e7c9a35104a5a68199678bd6bc5d187'] = '編輯/查看'; +$_MODULE['<{statscatalog}prestashop>statscatalog_7dce122004969d56ae2e0245cb754d35'] = '編輯'; +$_MODULE['<{statscatalog}prestashop>statscatalog_4351cfebe4b61d8aa5efa1d020710005'] = '瀏覽'; + + +return $_MODULE; diff --git a/modules/statscheckup/CHANGELOG.txt b/modules/statscheckup/CHANGELOG.txt index 08d8e030e..c3e4e353b 100644 --- a/modules/statscheckup/CHANGELOG.txt +++ b/modules/statscheckup/CHANGELOG.txt @@ -1,3 +1,13 @@ +------------------------------ +# V1.5.0 to V1.5.1 +------------------------------ + +## Improved/Changed Features: + +* [CO] : Module is made compatible with QloApps. + +_____________________________________________________________________________________________________ + 2014-03-27 17:22:41 +0100 / MO statscheckup : min ps_versions_compliancy modified (1.5.6.1 => 1.6) 2014-03-24 15:22:44 +0100 / MO statscheckup : ps_versions_compliancy added 2014-03-20 14:36:37 +0100 Initial commit diff --git a/modules/statscheckup/config.xml b/modules/statscheckup/config.xml deleted file mode 100644 index e85a53255..000000000 --- a/modules/statscheckup/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - statscheckup - - - - - - 0 - 0 - - \ No newline at end of file diff --git a/modules/statscheckup/statscheckup.php b/modules/statscheckup/statscheckup.php index 403119910..545d53d96 100644 --- a/modules/statscheckup/statscheckup.php +++ b/modules/statscheckup/statscheckup.php @@ -24,118 +24,123 @@ * International Registered Trademark & Property of PrestaShop SA */ -if (!defined('_PS_VERSION_')) - exit; +if (!defined('_PS_VERSION_')) { + exit; +} + +require_once _PS_MODULE_DIR_.'hotelreservationsystem/define.php'; class StatsCheckUp extends Module { - private $html = ''; + private $html = ''; - public function __construct() - { - $this->name = 'statscheckup'; - $this->tab = 'analytics_stats'; - $this->version = '1.5.0'; - $this->author = 'PrestaShop'; - $this->need_instance = 0; + public function __construct() + { + $this->name = 'statscheckup'; + $this->tab = 'analytics_stats'; + $this->version = '1.5.1'; + $this->author = 'PrestaShop'; + $this->need_instance = 0; - parent::__construct(); + parent::__construct(); - $this->displayName = $this->l('Catalog evaluation'); - $this->description = $this->l('Adds a quick evaluation of your catalog quality to the Stats dashboard.'); - $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); - } + $this->displayName = $this->l('Catalog evaluation'); + $this->description = $this->l('Adds a quick evaluation of your catalog quality to the Stats dashboard.'); + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); + } - public function install() - { - $confs = array( - 'CHECKUP_DESCRIPTIONS_LT' => 100, - 'CHECKUP_DESCRIPTIONS_GT' => 400, - 'CHECKUP_IMAGES_LT' => 1, - 'CHECKUP_IMAGES_GT' => 2, - 'CHECKUP_SALES_LT' => 1, - 'CHECKUP_SALES_GT' => 2, - 'CHECKUP_STOCK_LT' => 1, - 'CHECKUP_STOCK_GT' => 3 - ); - foreach ($confs as $confname => $confdefault) - if (!Configuration::get($confname)) - Configuration::updateValue($confname, (int)$confdefault); - return (parent::install() && $this->registerHook('AdminStatsModules')); - } + public function install() + { + $confs = array( + 'CHECKUP_DESCRIPTIONS_LT' => 100, + 'CHECKUP_DESCRIPTIONS_GT' => 400, + 'CHECKUP_IMAGES_LT' => 1, + 'CHECKUP_IMAGES_GT' => 2, + 'CHECKUP_SALES_LT' => 1, + 'CHECKUP_SALES_GT' => 2, + 'CHECKUP_STOCK_LT' => 1, + 'CHECKUP_STOCK_GT' => 3 + ); + foreach ($confs as $confname => $confdefault) { + if (!Configuration::get($confname)) { + Configuration::updateValue($confname, (int)$confdefault); + } + } + return (parent::install() && $this->registerHook('AdminStatsModules')); + } - public function hookAdminStatsModules() - { - if (Tools::isSubmit('submitCheckup')) - { - $confs = array( - 'CHECKUP_DESCRIPTIONS_LT', - 'CHECKUP_DESCRIPTIONS_GT', - 'CHECKUP_IMAGES_LT', - 'CHECKUP_IMAGES_GT', - 'CHECKUP_SALES_LT', - 'CHECKUP_SALES_GT', - 'CHECKUP_STOCK_LT', - 'CHECKUP_STOCK_GT' - ); - foreach ($confs as $confname) - Configuration::updateValue($confname, (int)Tools::getValue($confname)); - echo '
    '.$this->l('Configuration updated').'
    '; - } + public function hookAdminStatsModules() + { + if (Tools::isSubmit('submitCheckup')) { + $confs = array( + 'CHECKUP_DESCRIPTIONS_LT', + 'CHECKUP_DESCRIPTIONS_GT', + 'CHECKUP_IMAGES_LT', + 'CHECKUP_IMAGES_GT', + 'CHECKUP_SALES_LT', + 'CHECKUP_SALES_GT', + 'CHECKUP_STOCK_LT', + 'CHECKUP_STOCK_GT' + ); + foreach ($confs as $confname) { + Configuration::updateValue($confname, (int)Tools::getValue($confname)); + } + echo '
    '.$this->l('Configuration updated').'
    '; + } - if (Tools::isSubmit('submitCheckupOrder')) - { - $this->context->cookie->checkup_order = (int)Tools::getValue('submitCheckupOrder'); - echo '
    '.$this->l('Configuration updated').'
    '; - } + if (Tools::isSubmit('submitCheckupOrder')) { + $this->context->cookie->checkup_order = (int)Tools::getValue('submitCheckupOrder'); + echo '
    '.$this->l('Configuration updated').'
    '; + } - if (!isset($this->context->cookie->checkup_order)) - $this->context->cookie->checkup_order = 1; + if (!isset($this->context->cookie->checkup_order)) { + $this->context->cookie->checkup_order = 1; + } - $db = Db::getInstance(_PS_USE_SQL_SLAVE_); - $employee = Context::getContext()->employee; - $prop30 = ((strtotime($employee->stats_date_to.' 23:59:59') - strtotime($employee->stats_date_from.' 00:00:00')) / 60 / 60 / 24) / 30; + $db = Db::getInstance(_PS_USE_SQL_SLAVE_); + $employee = Context::getContext()->employee; + $prop30 = ((strtotime($employee->stats_date_to.' 23:59:59') - strtotime($employee->stats_date_from.' 00:00:00')) / 60 / 60 / 24) / 30; - // Get languages - $sql = 'SELECT l.* + // Get languages + $sql = 'SELECT l.* FROM '._DB_PREFIX_.'lang l' - .Shop::addSqlAssociation('lang', 'l'); - $languages = $db->executeS($sql); + .Shop::addSqlAssociation('lang', 'l'); + $languages = $db->executeS($sql); - $array_colors = array( - 0 => ''.$this->l('Bad').'', - 1 => ''.$this->l('Average').'', - 2 => ''.$this->l('Good').'' - ); - $token_products = Tools::getAdminToken('AdminProducts'.(int)Tab::getIdFromClassName('AdminProducts').(int)Context::getContext()->employee->id); - $divisor = 4; - $totals = array('products' => 0, 'active' => 0, 'images' => 0, 'sales' => 0, 'stock' => 0); - foreach ($languages as $language) - { - $divisor++; - $totals['description_'.$language['iso_code']] = 0; - } + $array_colors = array( + 0 => ''.$this->l('Bad').'', + 1 => ''.$this->l('Average').'', + 2 => ''.$this->l('Good').'' + ); + $token_products = Tools::getAdminToken('AdminProducts'.(int)Tab::getIdFromClassName('AdminProducts').(int)Context::getContext()->employee->id); + $divisor = 4; + $totals = array('products' => 0, 'active' => 0, 'images' => 0, 'sales' => 0, 'stock' => 0); + foreach ($languages as $language) { + $divisor++; + $totals['description_'.$language['iso_code']] = 0; + } - $order_by = 'p.id_product'; - if ($this->context->cookie->checkup_order == 2) - $order_by = 'pl.name'; - else if ($this->context->cookie->checkup_order == 3) - $order_by = 'nbSales DESC'; + $order_by = 'p.id_product'; + if ($this->context->cookie->checkup_order == 2) { + $order_by = 'pl.name'; + } elseif ($this->context->cookie->checkup_order == 3) { + $order_by = 'nbSales DESC'; + } - // Get products stats - $sql = 'SELECT p.id_product, product_shop.active, pl.name, ( + // Get products stats + $sql = 'SELECT p.id_product, product_shop.active, pl.name, ( SELECT COUNT(*) FROM '._DB_PREFIX_.'image i '.Shop::addSqlAssociation('image', 'i').' WHERE i.id_product = p.id_product '; - if (version_compare(_PS_VERSION_, '1.7.0.0', '>=')) { - $sql .= 'AND p.state = ' . Product::STATE_SAVED . ' '; - } - $sql .= ') as nbImages, ( - SELECT SUM(od.product_quantity) - FROM '._DB_PREFIX_.'orders o - LEFT JOIN '._DB_PREFIX_.'order_detail od ON o.id_order = od.id_order - WHERE od.product_id = p.id_product + if (version_compare(_PS_VERSION_, '1.7.0.0', '>=')) { + $sql .= 'AND p.state = ' . Product::STATE_SAVED . ' '; + } + $sql .= ') as nbImages, ( + SELECT COUNT(hbd.id_room) + FROM '._DB_PREFIX_.'htl_booking_detail hbd + INNER JOIN '._DB_PREFIX_.'orders o ON o.id_order = hbd.id_order + WHERE hbd.id_product = p.id_product AND o.invoice_date BETWEEN '.ModuleGraph::getDateBetween().' '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' ) as nbSales, @@ -145,25 +150,26 @@ class StatsCheckUp extends Module '.Product::sqlStock('p', 0).' LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (p.id_product = pl.id_product AND pl.id_lang = '.(int)$this->context->language->id.Shop::addSqlRestrictionOnLang('pl').')'; - if (version_compare(_PS_VERSION_, '1.7.0.0', '>=')) { - $sql .= 'WHERE p.state = '. Product::STATE_SAVED . ' '; - } - $sql .= 'ORDER BY '.$order_by; - $result = $db->executeS($sql); + if (version_compare(_PS_VERSION_, '1.7.0.0', '>=')) { + $sql .= 'WHERE p.state = '. Product::STATE_SAVED . ' '; + } + $sql .= 'ORDER BY '.$order_by; + $result = $db->executeS($sql); - if (!$result) - return $this->l('No product was found.'); + if (!$result) { + return $this->l('No room type was found.'); + } - $array_conf = array( - 'DESCRIPTIONS' => array('name' => $this->l('Descriptions'), 'text' => $this->l('chars (without HTML)')), - 'IMAGES' => array('name' => $this->l('Images'), 'text' => $this->l('images')), - 'SALES' => array('name' => $this->l('Sales'), 'text' => $this->l('orders / month')), - 'STOCK' => array('name' => $this->l('Available quantity for sale'), 'text' => $this->l('items')) - ); + $array_conf = array( + 'DESCRIPTIONS' => array('name' => $this->l('Descriptions'), 'text' => $this->l('chars (without HTML)')), + 'IMAGES' => array('name' => $this->l('Images'), 'text' => $this->l('images')), + 'SALES' => array('name' => $this->l('Sales'), 'text' => $this->l('orders / month')), + 'STOCK' => array('name' => $this->l('Available rooms'), 'text' => $this->l('items')) + ); - $this->html = ' + $this->html = '
    ' - .$this->displayName.' + .$this->displayName.'
    @@ -174,8 +180,8 @@ class StatsCheckUp extends Module '; - foreach ($array_conf as $conf => $translations) - $this->html .= ' + foreach ($array_conf as $conf => $translations) { + $this->html .= ' '; - $this->html .= '
    '.$array_colors[2].' '.$this->l('Alright').'
    @@ -201,10 +207,11 @@ class StatsCheckUp extends Module
    + } + $this->html .= ' +
    @@ -227,104 +234,128 @@ class StatsCheckUp extends Module '.$this->l('ID').' '.$this->l('Item').' '.$this->l('Active').''; - foreach ($languages as $language) - $this->html .= ''.$this->l('Desc.').' ('.Tools::strtoupper($language['iso_code']).')'; - $this->html .= ' + foreach ($languages as $language) { + $this->html .= ''.$this->l('Desc.').' ('.Tools::strtoupper($language['iso_code']).')'; + } + $this->html .= ' '.$this->l('Images').' '.$this->l('Sales').' - '.$this->l('Available quantity for sale').' + '.$this->l('Available rooms').' '.$this->l('Global').' '; - foreach ($result as $row) - { - $totals['products']++; - $scores = array( - 'active' => ($row['active'] ? 2 : 0), - 'images' => ($row['nbImages'] < Configuration::get('CHECKUP_IMAGES_LT') ? 0 : ($row['nbImages'] > Configuration::get('CHECKUP_IMAGES_GT') ? 2 : 1)), - 'sales' => (($row['nbSales'] * $prop30 < Configuration::get('CHECKUP_SALES_LT')) ? 0 : (($row['nbSales'] * $prop30 > Configuration::get('CHECKUP_SALES_GT')) ? 2 : 1)), - 'stock' => (($row['stock'] < Configuration::get('CHECKUP_STOCK_LT')) ? 0 : (($row['stock'] > Configuration::get('CHECKUP_STOCK_GT')) ? 2 : 1)), - ); - $totals['active'] += (int)$scores['active']; - $totals['images'] += (int)$scores['images']; - $totals['sales'] += (int)$scores['sales']; - $totals['stock'] += (int)$scores['stock']; - $descriptions = $db->executeS(' + // get room type info + $objBookingDtl = new HotelBookingDetail(); + $objHotelRoomType = new HotelRoomType(); + $dateFrom = date("Y-m-d", strtotime($this->context->employee->stats_date_from)); + $dateTo = date("Y-m-d", strtotime($this->context->employee->stats_date_to)); + if ($dateFrom == $dateTo) { + $dateTo = date('Y-m-d', strtotime('+1 day', strtotime($dateTo))); + } + $bookingParams = array(); + $bookingParams['date_from'] = $dateFrom; + $bookingParams['date_to'] = $dateTo; + foreach ($result as $row) { + $row['stock'] = 0; + if ($roomTypeInfo = $objHotelRoomType->getRoomTypeInfoByIdProduct($row['id_product'])) { + $bookingParams['hotel_id'] = $roomTypeInfo['id_hotel']; + $bookingParams['room_type'] = $row['id_product']; + if ($booking_data = $objBookingDtl->getBookingData($bookingParams)) { + if (isset($booking_data['stats']['num_avail'])) { + $row['stock'] = $booking_data['stats']['num_avail']; + } + } + } + + $totals['products']++; + $scores = array( + 'active' => ($row['active'] ? 2 : 0), + 'images' => ($row['nbImages'] < Configuration::get('CHECKUP_IMAGES_LT') ? 0 : ($row['nbImages'] > Configuration::get('CHECKUP_IMAGES_GT') ? 2 : 1)), + 'sales' => (($row['nbSales'] * $prop30 < Configuration::get('CHECKUP_SALES_LT')) ? 0 : (($row['nbSales'] * $prop30 > Configuration::get('CHECKUP_SALES_GT')) ? 2 : 1)), + 'stock' => (($row['stock'] < Configuration::get('CHECKUP_STOCK_LT')) ? 0 : (($row['stock'] > Configuration::get('CHECKUP_STOCK_GT')) ? 2 : 1)), + ); + $totals['active'] += (int)$scores['active']; + $totals['images'] += (int)$scores['images']; + $totals['sales'] += (int)$scores['sales']; + $totals['stock'] += (int)$scores['stock']; + $descriptions = $db->executeS(' SELECT l.iso_code, pl.description FROM '._DB_PREFIX_.'product_lang pl LEFT JOIN '._DB_PREFIX_.'lang l ON pl.id_lang = l.id_lang WHERE id_product = '.(int)$row['id_product'].Shop::addSqlRestrictionOnLang('pl')); - foreach ($descriptions as $description) - { - if (isset($description['iso_code']) && isset($description['description'])) - $row['desclength_'.$description['iso_code']] = Tools::strlen(strip_tags($description['description'])); - if (isset($description['iso_code'])) - { - $scores['description_'.$description['iso_code']] = ($row['desclength_'.$description['iso_code']] < Configuration::get('CHECKUP_DESCRIPTIONS_LT') ? 0 : ($row['desclength_'.$description['iso_code']] > Configuration::get('CHECKUP_DESCRIPTIONS_GT') ? 2 : 1)); - $totals['description_'.$description['iso_code']] += $scores['description_'.$description['iso_code']]; - } - } - $scores['average'] = array_sum($scores) / $divisor; - $scores['average'] = ($scores['average'] < 1 ? 0 : ($scores['average'] > 1.5 ? 2 : 1)); + foreach ($descriptions as $description) { + if (isset($description['iso_code']) && isset($description['description'])) { + $row['desclength_'.$description['iso_code']] = Tools::strlen(strip_tags($description['description'])); + } + if (isset($description['iso_code'])) { + $scores['description_'.$description['iso_code']] = ($row['desclength_'.$description['iso_code']] < Configuration::get('CHECKUP_DESCRIPTIONS_LT') ? 0 : ($row['desclength_'.$description['iso_code']] > Configuration::get('CHECKUP_DESCRIPTIONS_GT') ? 2 : 1)); + $totals['description_'.$description['iso_code']] += $scores['description_'.$description['iso_code']]; + } + } + $scores['average'] = array_sum($scores) / $divisor; + $scores['average'] = ($scores['average'] < 1 ? 0 : ($scores['average'] > 1.5 ? 2 : 1)); - $urlParams = array('id_product' => $row['id_product'], 'updateproduct' => 1, 'token' => $token_products); - $this->html .= ' + $urlParams = array('id_product' => $row['id_product'], 'updateproduct' => 1, 'token' => $token_products); + $this->html .= ' '.$row['id_product'].' context->link->getAdminLink('AdminProducts', true, $urlParams))).'">'.Tools::substr($row['name'], 0, 42).' '.$array_colors[$scores['active']].''; - foreach ($languages as $language) - if (isset($row['desclength_'.$language['iso_code']])) - $this->html .= ''.(int)$row['desclength_'.$language['iso_code']].' '.$array_colors[$scores['description_'.$language['iso_code']]].''; - else - $this->html .= '0 '.$array_colors[0].''; - $this->html .= ' + foreach ($languages as $language) { + if (isset($row['desclength_'.$language['iso_code']])) { + $this->html .= ''.(int)$row['desclength_'.$language['iso_code']].' '.$array_colors[$scores['description_'.$language['iso_code']]].''; + } else { + $this->html .= '0 '.$array_colors[0].''; + } + } + $this->html .= ' '.(int)$row['nbImages'].' '.$array_colors[$scores['images']].' '.(int)$row['nbSales'].' '.$array_colors[$scores['sales']].' '.(int)$row['stock'].' '.$array_colors[$scores['stock']].' '.$array_colors[$scores['average']].' '; - } + } - $this->html .= ''; + $this->html .= ''; - $totals['active'] = $totals['active'] / $totals['products']; - $totals['active'] = ($totals['active'] < 1 ? 0 : ($totals['active'] > 1.5 ? 2 : 1)); - $totals['images'] = $totals['images'] / $totals['products']; - $totals['images'] = ($totals['images'] < 1 ? 0 : ($totals['images'] > 1.5 ? 2 : 1)); - $totals['sales'] = $totals['sales'] / $totals['products']; - $totals['sales'] = ($totals['sales'] < 1 ? 0 : ($totals['sales'] > 1.5 ? 2 : 1)); - $totals['stock'] = $totals['stock'] / $totals['products']; - $totals['stock'] = ($totals['stock'] < 1 ? 0 : ($totals['stock'] > 1.5 ? 2 : 1)); - foreach ($languages as $language) - { - $totals['description_'.$language['iso_code']] = $totals['description_'.$language['iso_code']] / $totals['products']; - $totals['description_'.$language['iso_code']] = ($totals['description_'.$language['iso_code']] < 1 ? 0 : ($totals['description_'.$language['iso_code']] > 1.5 ? 2 : 1)); - } - $totals['average'] = array_sum($totals) / $divisor; - $totals['average'] = ($totals['average'] < 1 ? 0 : ($totals['average'] > 1.5 ? 2 : 1)); + $totals['active'] = $totals['active'] / $totals['products']; + $totals['active'] = ($totals['active'] < 1 ? 0 : ($totals['active'] > 1.5 ? 2 : 1)); + $totals['images'] = $totals['images'] / $totals['products']; + $totals['images'] = ($totals['images'] < 1 ? 0 : ($totals['images'] > 1.5 ? 2 : 1)); + $totals['sales'] = $totals['sales'] / $totals['products']; + $totals['sales'] = ($totals['sales'] < 1 ? 0 : ($totals['sales'] > 1.5 ? 2 : 1)); + $totals['stock'] = $totals['stock'] / $totals['products']; + $totals['stock'] = ($totals['stock'] < 1 ? 0 : ($totals['stock'] > 1.5 ? 2 : 1)); + foreach ($languages as $language) { + $totals['description_'.$language['iso_code']] = $totals['description_'.$language['iso_code']] / $totals['products']; + $totals['description_'.$language['iso_code']] = ($totals['description_'.$language['iso_code']] < 1 ? 0 : ($totals['description_'.$language['iso_code']] > 1.5 ? 2 : 1)); + } + $totals['average'] = array_sum($totals) / $divisor; + $totals['average'] = ($totals['average'] < 1 ? 0 : ($totals['average'] > 1.5 ? 2 : 1)); - $this->html .= ' + $this->html .= ' '.$this->l('Active').''; - foreach ($languages as $language) - $this->html .= ''.$this->l('Desc.').' ('.Tools::strtoupper($language['iso_code']).')'; - $this->html .= ' + foreach ($languages as $language) { + $this->html .= ''.$this->l('Desc.').' ('.Tools::strtoupper($language['iso_code']).')'; + } + $this->html .= ' '.$this->l('Images').' '.$this->l('Sales').' - '.$this->l('Available quantity for sale').' + '.$this->l('Available rooms').' '.$this->l('Global').' '.$array_colors[$totals['active']].''; - foreach ($languages as $language) - $this->html .= ''.$array_colors[$totals['description_'.$language['iso_code']]].''; - $this->html .= ' + foreach ($languages as $language) { + $this->html .= ''.$array_colors[$totals['description_'.$language['iso_code']]].''; + } + $this->html .= ' '.$array_colors[$totals['images']].' '.$array_colors[$totals['sales']].' '.$array_colors[$totals['stock']].' @@ -333,6 +364,6 @@ class StatsCheckUp extends Module
    '; - return $this->html; - } + return $this->html; + } } diff --git a/modules/statscheckup/translations/en.php b/modules/statscheckup/translations/en.php new file mode 100644 index 000000000..c6d56a0e0 --- /dev/null +++ b/modules/statscheckup/translations/en.php @@ -0,0 +1,35 @@ +statscheckup_e7a908d79d3758c911692ba791da9c70'] = 'Catalog evaluation'; +$_MODULE['<{statscheckup}prestashop>statscheckup_11c7290f636a816cbcffb9059958b5c0'] = 'Adds a quick evaluation of your catalog quality to the Stats dashboard.'; +$_MODULE['<{statscheckup}prestashop>statscheckup_20015706a8cbd457cbb6ea3e7d5dc9b3'] = 'Configuration updated'; +$_MODULE['<{statscheckup}prestashop>statscheckup_7ff3e75ce6aca348bc513ed3d5882946'] = 'Bad'; +$_MODULE['<{statscheckup}prestashop>statscheckup_b1897515d548a960afe49ecf66a29021'] = 'Average'; +$_MODULE['<{statscheckup}prestashop>statscheckup_0c6ad70beb3a7e76c3fc7adab7c46acc'] = 'Good'; +$_MODULE['<{statscheckup}prestashop>statscheckup_619a1efbedc7855aa27c0a50579c104e'] = 'No product was found.'; +$_MODULE['<{statscheckup}prestashop>statscheckup_8bc84316c4078bf66723fd019616d920'] = 'Descriptions'; +$_MODULE['<{statscheckup}prestashop>statscheckup_5cd1930570823694abdd596f29c8943d'] = 'chars (without HTML)'; +$_MODULE['<{statscheckup}prestashop>statscheckup_fff0d600f8a0b5e19e88bfb821dd1157'] = 'Images'; +$_MODULE['<{statscheckup}prestashop>statscheckup_59b514174bffe4ae402b3d63aad79fe0'] = 'images'; +$_MODULE['<{statscheckup}prestashop>statscheckup_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Sales'; +$_MODULE['<{statscheckup}prestashop>statscheckup_c3917e1f7138a24c6dc954fe81b86679'] = 'orders / month'; +$_MODULE['<{statscheckup}prestashop>statscheckup_7bd5825a187064017975513b95d7f7de'] = 'Available quantity for sale'; +$_MODULE['<{statscheckup}prestashop>statscheckup_691d502cfd0e0626cd3b058e5682ad1c'] = 'items'; +$_MODULE['<{statscheckup}prestashop>statscheckup_dc270bcf468689b19074a5eef7581b52'] = 'Not enough'; +$_MODULE['<{statscheckup}prestashop>statscheckup_f4abc77d498c89880f67331609406774'] = 'Alright'; +$_MODULE['<{statscheckup}prestashop>statscheckup_ad647e4ae904c7ed54ee93040d8298c7'] = 'Less than'; +$_MODULE['<{statscheckup}prestashop>statscheckup_05824b7be006782aaefd1fdb97c71e06'] = 'Greater than'; +$_MODULE['<{statscheckup}prestashop>statscheckup_c9cc8cce247e49bae79f15173ce97354'] = 'Save'; +$_MODULE['<{statscheckup}prestashop>statscheckup_01fda57aa6c7e9f07f5aa36b108e95cb'] = 'Order by'; +$_MODULE['<{statscheckup}prestashop>statscheckup_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; +$_MODULE['<{statscheckup}prestashop>statscheckup_49ee3087348e8d44e1feda1917443987'] = 'Name'; +$_MODULE['<{statscheckup}prestashop>statscheckup_7d74f3b92b19da5e606d737d339a9679'] = 'Item'; +$_MODULE['<{statscheckup}prestashop>statscheckup_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Active'; +$_MODULE['<{statscheckup}prestashop>statscheckup_3f74e68055b1123e5d7deb32cd8b0b1b'] = 'Desc.'; +$_MODULE['<{statscheckup}prestashop>statscheckup_4cc6684df7b4a92b1dec6fce3264fac8'] = 'Global'; + + +return $_MODULE; diff --git a/modules/statscheckup/translations/tw.php b/modules/statscheckup/translations/tw.php new file mode 100644 index 000000000..7901d7bcf --- /dev/null +++ b/modules/statscheckup/translations/tw.php @@ -0,0 +1,33 @@ +statscheckup_e7a908d79d3758c911692ba791da9c70'] = '產品評價'; +$_MODULE['<{statscheckup}prestashop>statscheckup_20015706a8cbd457cbb6ea3e7d5dc9b3'] = '設定已更新'; +$_MODULE['<{statscheckup}prestashop>statscheckup_7ff3e75ce6aca348bc513ed3d5882946'] = '壞'; +$_MODULE['<{statscheckup}prestashop>statscheckup_b1897515d548a960afe49ecf66a29021'] = '平均'; +$_MODULE['<{statscheckup}prestashop>statscheckup_0c6ad70beb3a7e76c3fc7adab7c46acc'] = '好'; +$_MODULE['<{statscheckup}prestashop>statscheckup_619a1efbedc7855aa27c0a50579c104e'] = '找不到產品'; +$_MODULE['<{statscheckup}prestashop>statscheckup_8bc84316c4078bf66723fd019616d920'] = '說明'; +$_MODULE['<{statscheckup}prestashop>statscheckup_5cd1930570823694abdd596f29c8943d'] = '字元(不帶HTML)'; +$_MODULE['<{statscheckup}prestashop>statscheckup_fff0d600f8a0b5e19e88bfb821dd1157'] = '圖片'; +$_MODULE['<{statscheckup}prestashop>statscheckup_59b514174bffe4ae402b3d63aad79fe0'] = '圖像'; +$_MODULE['<{statscheckup}prestashop>statscheckup_11ff9f68afb6b8b5b8eda218d7c83a65'] = '銷售'; +$_MODULE['<{statscheckup}prestashop>statscheckup_c3917e1f7138a24c6dc954fe81b86679'] = '訂單/月'; +$_MODULE['<{statscheckup}prestashop>statscheckup_7bd5825a187064017975513b95d7f7de'] = '可供銷售數量'; +$_MODULE['<{statscheckup}prestashop>statscheckup_dc270bcf468689b19074a5eef7581b52'] = '不夠'; +$_MODULE['<{statscheckup}prestashop>statscheckup_f4abc77d498c89880f67331609406774'] = '好吧'; +$_MODULE['<{statscheckup}prestashop>statscheckup_ad647e4ae904c7ed54ee93040d8298c7'] = '少於'; +$_MODULE['<{statscheckup}prestashop>statscheckup_05824b7be006782aaefd1fdb97c71e06'] = '大於'; +$_MODULE['<{statscheckup}prestashop>statscheckup_c9cc8cce247e49bae79f15173ce97354'] = '儲存'; +$_MODULE['<{statscheckup}prestashop>statscheckup_01fda57aa6c7e9f07f5aa36b108e95cb'] = '排序'; +$_MODULE['<{statscheckup}prestashop>statscheckup_b718adec73e04ce3ec720dd11a06a308'] = '編號'; +$_MODULE['<{statscheckup}prestashop>statscheckup_49ee3087348e8d44e1feda1917443987'] = '名稱'; +$_MODULE['<{statscheckup}prestashop>statscheckup_7d74f3b92b19da5e606d737d339a9679'] = '項目'; +$_MODULE['<{statscheckup}prestashop>statscheckup_4d3d769b812b6faa6b76e1a8abaece2d'] = '啟用'; +$_MODULE['<{statscheckup}prestashop>statscheckup_3f74e68055b1123e5d7deb32cd8b0b1b'] = '圖示。'; +$_MODULE['<{statscheckup}prestashop>statscheckup_4cc6684df7b4a92b1dec6fce3264fac8'] = '全域'; + + +return $_MODULE; diff --git a/modules/statsforecast/CHANGELOG.txt b/modules/statsforecast/CHANGELOG.txt index f3b8e5df6..198baa977 100644 --- a/modules/statsforecast/CHANGELOG.txt +++ b/modules/statsforecast/CHANGELOG.txt @@ -1,3 +1,13 @@ +------------------------------ +# V1.4.1 to V1.4.2 +------------------------------ + +## Improved/Changed Features: + +* [CO] : Module is made compatible with QloApps. + +_____________________________________________________________________________________________________ + 2014-04-10 15:42:40 +0200 // Statsforecast: typo. 2014-03-27 17:19:43 +0100 / MO statsforecast : min ps_versions_compliancy modified (1.5.6.1 => 1.6) 2014-03-24 15:22:46 +0100 / MO statsforecast : ps_versions_compliancy added diff --git a/modules/statsforecast/config.xml b/modules/statsforecast/config.xml deleted file mode 100644 index c73dc89b3..000000000 --- a/modules/statsforecast/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - statsforecast - - - - - - 1 - 0 - - \ No newline at end of file diff --git a/modules/statsforecast/statsforecast.php b/modules/statsforecast/statsforecast.php index 00a308755..0f5132af0 100644 --- a/modules/statsforecast/statsforecast.php +++ b/modules/statsforecast/statsforecast.php @@ -24,111 +24,124 @@ * International Registered Trademark & Property of PrestaShop SA */ -if (!defined('_PS_VERSION_')) - exit; +if (!defined('_PS_VERSION_')) { + exit; +} class StatsForecast extends Module { - private $html = ''; - private $t1 = 0; - private $t2 = 0; - private $t3 = 0; - private $t4 = 0; - private $t5 = 0; - private $t6 = 0; - private $t7 = 0; - private $t8 = 0; + private $html = ''; + private $t1 = 0; + private $t2 = 0; + private $t3 = 0; + private $t4 = 0; + private $t5 = 0; + private $t6 = 0; + private $t7 = 0; + private $t8 = 0; - public function __construct() - { - $this->name = 'statsforecast'; - $this->tab = 'analytics_stats'; - $this->version = '1.4.1'; - $this->author = 'PrestaShop'; - $this->need_instance = 0; + public function __construct() + { + $this->name = 'statsforecast'; + $this->tab = 'analytics_stats'; + $this->version = '1.4.2'; + $this->author = 'PrestaShop'; + $this->need_instance = 0; - parent::__construct(); + parent::__construct(); - $this->displayName = $this->l('Stats Dashboard'); - $this->description = $this->l('This is the main module for the Stats dashboard. It displays a summary of all your current statistics.'); - $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); - } + $this->displayName = $this->l('Stats Dashboard'); + $this->description = $this->l('This is the main module for the Stats dashboard. It displays a summary of all your current statistics.'); + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); + } - public function install() - { - return (parent::install() && $this->registerHook('AdminStatsModules')); - } + public function install() + { + return (parent::install() && $this->registerHook('AdminStatsModules')); + } - public function getContent() - { - Tools::redirectAdmin('index.php?controller=AdminStats&module=statsforecast&token='.Tools::getAdminTokenLite('AdminStats')); - } + public function getContent() + { + Tools::redirectAdmin('index.php?controller=AdminStats&module=statsforecast&token='.Tools::getAdminTokenLite('AdminStats')); + } - public function hookAdminStatsModules() - { - $ru = AdminController::$currentIndex.'&module='.$this->name.'&token='.Tools::getValue('token'); + public function hookAdminStatsModules() + { + $ru = AdminController::$currentIndex.'&module='.$this->name.'&token='.Tools::getValue('token'); - $db = Db::getInstance(); + $db = Db::getInstance(); - if (!isset($this->context->cookie->stats_granularity)) - $this->context->cookie->stats_granularity = 10; - if (Tools::isSubmit('submitIdZone')) - $this->context->cookie->stats_id_zone = (int)Tools::getValue('stats_id_zone'); - if (Tools::isSubmit('submitGranularity')) - $this->context->cookie->stats_granularity = Tools::getValue('stats_granularity'); + if (!isset($this->context->cookie->stats_granularity)) { + $this->context->cookie->stats_granularity = 10; + } + if (Tools::isSubmit('submitIdZone')) { + $this->context->cookie->stats_id_zone = (int)Tools::getValue('stats_id_zone'); + } + if (Tools::isSubmit('submitGranularity')) { + $this->context->cookie->stats_granularity = Tools::getValue('stats_granularity'); + } - $currency = $this->context->currency; - $employee = $this->context->employee; + $currency = $this->context->currency; + $employee = $this->context->employee; - $from = max(strtotime(_PS_CREATION_DATE_.' 00:00:00'), strtotime($employee->stats_date_from.' 00:00:00')); - $to = strtotime($employee->stats_date_to.' 23:59:59'); - $to2 = min(time(), $to); - $interval = ($to - $from) / 60 / 60 / 24; - $interval2 = ($to2 - $from) / 60 / 60 / 24; - $prop30 = $interval / $interval2; + $from = max(strtotime(_PS_CREATION_DATE_.' 00:00:00'), strtotime($employee->stats_date_from.' 00:00:00')); + $to = strtotime($employee->stats_date_to.' 23:59:59'); + $to2 = min(time(), $to); + $interval = ($to - $from) / 60 / 60 / 24; + $interval2 = ($to2 - $from) / 60 / 60 / 24; + $prop30 = $interval / $interval2; - if ($this->context->cookie->stats_granularity == 7) - $interval_avg = $interval2 / 30; - if ($this->context->cookie->stats_granularity == 4) - $interval_avg = $interval2 / 365; - if ($this->context->cookie->stats_granularity == 10) - $interval_avg = $interval2; - if ($this->context->cookie->stats_granularity == 42) - $interval_avg = $interval2 / 7; + if ($this->context->cookie->stats_granularity == 7) { + $interval_avg = $interval2 / 30; + } + if ($this->context->cookie->stats_granularity == 4) { + $interval_avg = $interval2 / 365; + } + if ($this->context->cookie->stats_granularity == 10) { + $interval_avg = $interval2; + } + if ($this->context->cookie->stats_granularity == 42) { + $interval_avg = $interval2 / 7; + } - $data_table = array(); - if ($this->context->cookie->stats_granularity == 10) - for ($i = $from; $i <= $to2; $i = strtotime('+1 day', $i)) - $data_table[date('Y-m-d', $i)] = array( - 'fix_date' => date('Y-m-d', $i), - 'countOrders' => 0, - 'countProducts' => 0, - 'totalSales' => 0 - ); + $data_table = array(); + if ($this->context->cookie->stats_granularity == 10) { + for ($i = $from; $i <= $to2; $i = strtotime('+1 day', $i)) { + $data_table[date('Y-m-d', $i)] = array( + 'fix_date' => date('Y-m-d', $i), + 'countOrders' => 0, + 'roomBooked' => 0, + 'totalSales' => 0 + ); + } + } - $date_from_gadd = ($this->context->cookie->stats_granularity != 42 - ? 'LEFT(date_add, '.(int)$this->context->cookie->stats_granularity.')' - : 'IFNULL(MAKEDATE(YEAR(date_add),DAYOFYEAR(date_add)-WEEKDAY(date_add)), CONCAT(YEAR(date_add),"-01-01*"))'); + $date_from_gadd = ($this->context->cookie->stats_granularity != 42 + ? 'LEFT(date_add, '.(int)$this->context->cookie->stats_granularity.')' + : 'IFNULL(MAKEDATE(YEAR(date_add),DAYOFYEAR(date_add)-WEEKDAY(date_add)), CONCAT(YEAR(date_add),"-01-01*"))'); - $date_from_ginvoice = ($this->context->cookie->stats_granularity != 42 - ? 'LEFT(invoice_date, '.(int)$this->context->cookie->stats_granularity.')' - : 'IFNULL(MAKEDATE(YEAR(invoice_date),DAYOFYEAR(invoice_date)-WEEKDAY(invoice_date)), CONCAT(YEAR(invoice_date),"-01-01*"))'); + $date_from_ginvoice = ($this->context->cookie->stats_granularity != 42 + ? 'LEFT(invoice_date, '.(int)$this->context->cookie->stats_granularity.')' + : 'IFNULL(MAKEDATE(YEAR(invoice_date),DAYOFYEAR(invoice_date)-WEEKDAY(invoice_date)), CONCAT(YEAR(invoice_date),"-01-01*"))'); - $result = $db->query(' + $result = $db->query(' SELECT '.$date_from_ginvoice.' as fix_date, - COUNT(*) as countOrders, + COUNT(o.id_order) as countOrders, SUM((SELECT SUM(od.product_quantity) FROM '._DB_PREFIX_.'order_detail od WHERE o.id_order = od.id_order)) as countProducts, + SUM((SELECT COUNT(`id_room`) FROM `'._DB_PREFIX_.'htl_booking_detail` hbd WHERE o.`id_order` = hbd.`id_order` + )) AS roomBooked, SUM(o.total_paid_tax_excl / o.conversion_rate) as totalSales FROM '._DB_PREFIX_.'orders o WHERE o.valid = 1 AND o.invoice_date BETWEEN '.ModuleGraph::getDateBetween().' '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' GROUP BY '.$date_from_ginvoice); - while ($row = $db->nextRow($result)) - $data_table[$row['fix_date']] = $row; + while ($row = $db->nextRow($result)) { + $data_table[$row['fix_date']] = $row; + } - $this->html .= '
    + $this->html .= '
    '.$this->displayName.'
    '.$this->l('The listed amounts do not include tax.').'
    @@ -152,141 +165,141 @@ class StatsForecast extends Module - '.$this->l('Visits').' - '.$this->l('Registrations').' - '.$this->l('Placed orders').' - '.$this->l('Bought items').' - '.$this->l('Percentage of registrations').' - '.$this->l('Percentage of orders').' - '.$this->l('Revenue').' + '.$this->l('Visits').' + '.$this->l('Registrations').' + '.$this->l('Placed orders').' + '.$this->l('Booked Rooms').' + '.$this->l('Percentage of registrations').' + '.$this->l('Percentage of orders').' + '.$this->l('Revenue').' '; - $visit_array = array(); - $sql = 'SELECT '.$date_from_gadd.' as fix_date, COUNT(*) as visits + $visit_array = array(); + $sql = 'SELECT '.$date_from_gadd.' as fix_date, COUNT(*) as visits FROM '._DB_PREFIX_.'connections c WHERE c.date_add BETWEEN '.ModuleGraph::getDateBetween().' '.Shop::addSqlRestriction(false, 'c').' GROUP BY '.$date_from_gadd; - $visits = Db::getInstance()->query($sql); - while ($row = $db->nextRow($visits)) - $visit_array[$row['fix_date']] = $row['visits']; + $visits = Db::getInstance()->query($sql); + while ($row = $db->nextRow($visits)) { + $visit_array[$row['fix_date']] = $row['visits']; + } - foreach ($data_table as $row) - { - $visits_today = (int)(isset($visit_array[$row['fix_date']]) ? $visit_array[$row['fix_date']] : 0); + foreach ($data_table as $row) { + $visits_today = (int)(isset($visit_array[$row['fix_date']]) ? $visit_array[$row['fix_date']] : 0); - $date_from_greg = ($this->context->cookie->stats_granularity != 42 - ? 'LIKE \''.$row['fix_date'].'%\'' - : 'BETWEEN \''.Tools::substr($row['fix_date'], 0, 10).' 00:00:00\' AND DATE_ADD(\''.Tools::substr($row['fix_date'], 0, 8).Tools::substr($row['fix_date'], 8, 2).' 23:59:59\', INTERVAL 7 DAY)'); - $row['registrations'] = Db::getInstance()->getValue(' + $date_from_greg = ($this->context->cookie->stats_granularity != 42 + ? 'LIKE \''.$row['fix_date'].'%\'' + : 'BETWEEN \''.Tools::substr($row['fix_date'], 0, 10).' 00:00:00\' AND DATE_ADD(\''.Tools::substr($row['fix_date'], 0, 8).Tools::substr($row['fix_date'], 8, 2).' 23:59:59\', INTERVAL 7 DAY)'); + $row['registrations'] = Db::getInstance()->getValue(' SELECT COUNT(*) FROM '._DB_PREFIX_.'customer WHERE date_add BETWEEN '.ModuleGraph::getDateBetween().' AND date_add '.$date_from_greg - .Shop::addSqlRestriction(Shop::SHARE_CUSTOMER)); + .Shop::addSqlRestriction(Shop::SHARE_CUSTOMER)); - $this->html .= ' + $this->html .= ' '.$row['fix_date'].' - '.$visits_today.' - '.(int)$row['registrations'].' - '.(int)$row['countOrders'].' - '.(int)$row['countProducts'].' - '.($visits_today ? round(100 * (int)$row['registrations'] / $visits_today, 2).' %' : '-').' - '.($visits_today ? round(100 * (int)$row['countOrders'] / $visits_today, 2).' %' : '-').' - '.Tools::displayPrice($row['totalSales'], $currency).' + '.$visits_today.' + '.(int)$row['registrations'].' + '.(int)$row['countOrders'].' + '.(int)$row['roomBooked'].' + '.($visits_today ? round(100 * (int)$row['registrations'] / $visits_today, 2).' %' : '-').' + '.($visits_today ? round(100 * (int)$row['countOrders'] / $visits_today, 2).' %' : '-').' + '.Tools::displayPrice($row['totalSales'], $currency).' '; - $this->t1 += $visits_today; - $this->t2 += (int)$row['registrations']; - $this->t3 += (int)$row['countOrders']; - $this->t4 += (int)$row['countProducts']; - $this->t8 += $row['totalSales']; - } + $this->t1 += $visits_today; + $this->t2 += (int)$row['registrations']; + $this->t3 += (int)$row['countOrders']; + $this->t4 += (int)$row['roomBooked']; + $this->t8 += $row['totalSales']; + } - $this->html .= ' + $this->html .= ' - '.$this->l('Visits').' - '.$this->l('Registrations').' - '.$this->l('Placed orders').' - '.$this->l('Bought items').' - '.$this->l('Percentage of registrations').' - '.$this->l('Percentage of orders').' - '.$this->l('Revenue').' + '.$this->l('Visits').' + '.$this->l('Registrations').' + '.$this->l('Placed orders').' + '.$this->l('Booked Rooms').' + '.$this->l('Percentage of registrations').' + '.$this->l('Percentage of orders').' + '.$this->l('Revenue').' '.$this->l('Total').' - '.(int)$this->t1.' - '.(int)$this->t2.' - '.(int)$this->t3.' - '.(int)$this->t4.' - -- - -- - '.Tools::displayPrice($this->t8, $currency).' + '.(int)$this->t1.' + '.(int)$this->t2.' + '.(int)$this->t3.' + '.(int)$this->t4.' + -- + -- + '.Tools::displayPrice($this->t8, $currency).' '.$this->l('Average').' - '.(int)($this->t1 / $interval_avg).' - '.(int)($this->t2 / $interval_avg).' - '.(int)($this->t3 / $interval_avg).' - '.(int)($this->t4 / $interval_avg).' - '.($this->t1 ? round(100 * $this->t2 / $this->t1, 2).' %' : '-').' - '.($this->t1 ? round(100 * $this->t3 / $this->t1, 2).' %' : '-').' - '.Tools::displayPrice($this->t8 / $interval_avg, $currency).' + '.(int)($this->t1 / $interval_avg).' + '.(int)($this->t2 / $interval_avg).' + '.(int)($this->t3 / $interval_avg).' + '.(int)($this->t4 / $interval_avg).' + '.($this->t1 ? round(100 * $this->t2 / $this->t1, 2).' %' : '-').' + '.($this->t1 ? round(100 * $this->t3 / $this->t1, 2).' %' : '-').' + '.Tools::displayPrice($this->t8 / $interval_avg, $currency).' '.$this->l('Forecast').' - '.(int)($this->t1 * $prop30).' - '.(int)($this->t2 * $prop30).' - '.(int)($this->t3 * $prop30).' - '.(int)($this->t4 * $prop30).' - -- - -- - '.Tools::displayPrice($this->t8 * $prop30, $currency).' + '.(int)($this->t1 * $prop30).' + '.(int)($this->t2 * $prop30).' + '.(int)($this->t3 * $prop30).' + '.(int)($this->t4 * $prop30).' + -- + -- + '.Tools::displayPrice($this->t8 * $prop30, $currency).'
    '; - $ca = $this->getRealCA(); + $ca = $this->getRealCA(); - $sql = 'SELECT COUNT(DISTINCT c.id_guest) + $sql = 'SELECT COUNT(DISTINCT c.id_guest) FROM '._DB_PREFIX_.'connections c WHERE c.date_add BETWEEN '.ModuleGraph::getDateBetween().' '.Shop::addSqlRestriction(false, 'c'); - $visitors = Db::getInstance()->getValue($sql); + $visitors = Db::getInstance()->getValue($sql); - $sql = 'SELECT COUNT(DISTINCT g.id_customer) + $sql = 'SELECT COUNT(DISTINCT g.id_customer) FROM '._DB_PREFIX_.'connections c INNER JOIN '._DB_PREFIX_.'guest g ON c.id_guest = g.id_guest WHERE g.id_customer != 0 AND c.date_add BETWEEN '.ModuleGraph::getDateBetween().' '.Shop::addSqlRestriction(false, 'c'); - $customers = Db::getInstance()->getValue($sql); + $customers = Db::getInstance()->getValue($sql); - $sql = 'SELECT COUNT(DISTINCT c.id_cart) - FROM '._DB_PREFIX_.'cart c + $sql = 'SELECT COUNT(DISTINCT c.id_cart) + FROM '._DB_PREFIX_.'cart c INNER JOIN '._DB_PREFIX_.'cart_product cp on c.id_cart = cp.id_cart WHERE (c.date_add BETWEEN '.ModuleGraph::getDateBetween().' OR c.date_upd BETWEEN '.ModuleGraph::getDateBetween().') '.Shop::addSqlRestriction(false, 'c'); - $carts = Db::getInstance()->getValue($sql); + $carts = Db::getInstance()->getValue($sql); - $sql = 'SELECT COUNT(DISTINCT c.id_cart) - FROM '._DB_PREFIX_.'cart c + $sql = 'SELECT COUNT(DISTINCT c.id_cart) + FROM '._DB_PREFIX_.'cart c INNER JOIN '._DB_PREFIX_.'cart_product cp on c.id_cart = cp.id_cart WHERE (c.date_add BETWEEN '.ModuleGraph::getDateBetween().' OR c.date_upd BETWEEN '.ModuleGraph::getDateBetween().') AND id_address_invoice != 0 '.Shop::addSqlRestriction(false, 'c'); - $fullcarts = Db::getInstance()->getValue($sql); + $fullcarts = Db::getInstance()->getValue($sql); - $sql = 'SELECT COUNT(*) + $sql = 'SELECT COUNT(*) FROM '._DB_PREFIX_.'orders o WHERE o.valid = 1 AND o.date_add BETWEEN '.ModuleGraph::getDateBetween().' '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o'); - $orders = Db::getInstance()->getValue($sql); + $orders = Db::getInstance()->getValue($sql); - $this->html .= ' + $this->html .= '

    '.$this->l('Conversion').'

    @@ -294,75 +307,75 @@ class StatsForecast extends Module - - - - - - - - - - - - - - - - - - - @@ -376,15 +389,15 @@ class StatsForecast extends Module

    '.$this->l('On average, each registered visitor places an order for this amount:').' '.Tools::displayPrice($ca['ventil']['total'] / max(1, $customers), $currency).'.

    '; - $from = strtotime($employee->stats_date_from.' 00:00:00'); - $to = strtotime($employee->stats_date_to.' 23:59:59'); - $interval = ($to - $from) / 60 / 60 / 24; + $from = strtotime($employee->stats_date_from.' 00:00:00'); + $to = strtotime($employee->stats_date_to.' 23:59:59'); + $interval = ($to - $from) / 60 / 60 / 24; - $this->html .= ' + $this->html .= '

    '.$this->l('Payment distribution').'

    ' - .$this->l('The amounts include taxes, so you can get an estimation of the commission due to the payment method.').' + .$this->l('The amounts include taxes, so you can get an estimation of the commission due to the payment method.').'
    @@ -395,9 +408,10 @@ class StatsForecast extends Module
    @@ -405,66 +419,23 @@ class StatsForecast extends Module
    +

    '.$this->l('Visitors').'

    '.$visitors.'

    +

    '.round(100 * $customers / max(1, $visitors), 2).' %

    +

    '.$this->l('Accounts').'

    '.$customers.'

    +

    '.round(100 * $fullcarts / max(1, $customers), 2).' %

    +

    '.$this->l('Full carts').'

    '.$fullcarts.'

    +

    '.round(100 * $orders / max(1, $fullcarts), 2).' %

    +

    '.$this->l('Orders').'

    '.$orders.'

    +

    '.$this->l('Registered visitors').'

    + +

    '.round(100 * $orders / max(1, $customers), 2).' %

    + +

    '.$this->l('Orders').'

    +

    '.$this->l('Visitors').'

    + +

    '.round(100 * $orders / max(1, $visitors), 2).' %

    +

    '.$this->l('Orders').'

    +

    '.round(100 * $carts / max(1, $visitors)).' %

    +

    '.$this->l('Carts').'

    '.$carts.'

    +

    '.round(100 * $fullcarts / max(1, $carts)).' %

    - - - - + + + + '; - foreach ($ca['payment'] as $payment) - $this->html .= ' + foreach ($ca['payment'] as $payment) { + $this->html .= ' - - - - + + + + '; - $this->html .= ' - -
    '.$this->l('Module').''.$this->l('Orders').''.$this->l('Sales').''.$this->l('Average cart value').''.$this->l('Module').''.$this->l('Orders').''.$this->l('Sales').''.$this->l('Average cart value').'
    '.$payment['payment_method'].''.(int)$payment['nb'].''.Tools::displayPrice($payment['total'], $currency).''.Tools::displayPrice($payment['total'] / (int)$payment['nb'], $currency).''.$payment['payment_method'].''.(int)$payment['nb'].''.Tools::displayPrice($payment['total'], $currency).''.Tools::displayPrice($payment['total'] / (int)$payment['nb'], $currency).'
    -
    -
    -

    '.$this->l('Category distribution').'

    - -
    - -
    - - -
    -
    - - - - - - - - - - - - - '; - foreach ($ca['cat'] as $catrow) - $this->html .= ' - - - - - - - - '; - $this->html .= ' + } + $this->html .= '
    '.$this->l('Category').''.$this->l('Products sold').''.$this->l('Sales').''.$this->l('Percentage of products sold').''.$this->l('Percentage of sales').''.$this->l('Average price').'
    '.(empty($catrow['name']) ? $this->l('Unknown') : $catrow['name']).''.$catrow['orderQty'].''.Tools::displayPrice($catrow['orderSum'], $currency).''.number_format((100 * $catrow['orderQty'] / $this->t4), 1, '.', ' ').'%'.((int)$ca['ventil']['total'] ? number_format((100 * $catrow['orderSum'] / $ca['ventil']['total']), 1, '.', ' ') : '0').'%'.Tools::displayPrice($catrow['priveAvg'], $currency).'
    @@ -473,26 +444,25 @@ class StatsForecast extends Module - - - - + + + + '; - foreach ($ca['lang'] as $ophone => $amount) - { - $percent = (int)($ca['langprev'][$ophone]) ? number_format((100 * $amount / $ca['langprev'][$ophone]) - 100, 1, '.', ' ') : '∞'; - $this->html .= ' + foreach ($ca['lang'] as $ophone => $amount) { + $percent = (int)($ca['langprev'][$ophone]) ? number_format((100 * $amount / $ca['langprev'][$ophone]) - 100, 1, '.', ' ') : '∞'; + $this->html .= ' - - - - - + + + + + '; - } - $this->html .= ' + } + $this->html .= '
    '.$this->l('Language').''.$this->l('Sales').''.$this->l('Percentage').''.$this->l('Growth').''.$this->l('Language').''.$this->l('Sales').''.$this->l('Percentage').''.$this->l('Growth').'
    '.$ophone.''.Tools::displayPrice($amount, $currency).''.((int)$ca['ventil']['total'] ? number_format((100 * $amount / $ca['ventil']['total']), 1, '.', ' ').'%' : '-').''.(($percent > 0 || $percent == '∞') ? '' : ' ').''.(($percent > 0 || $percent == '∞') ? '+' : '').$percent.'%'.$ophone.''.Tools::displayPrice($amount, $currency).''.((int)$ca['ventil']['total'] ? number_format((100 * $amount / $ca['ventil']['total']), 1, '.', ' ').'%' : '-').''.(($percent > 0 || $percent == '∞') ? '' : ' ').''.(($percent > 0 || $percent == '∞') ? '+' : '').$percent.'%
    @@ -501,24 +471,25 @@ class StatsForecast extends Module - - - - - + + + + + '; - foreach ($ca['zones'] as $zone) - $this->html .= ' + foreach ($ca['zones'] as $zone) { + $this->html .= ' - - - - - + + + + + '; - $this->html .= ' + } + $this->html .= '
    '.$this->l('Zone').''.$this->l('Orders').''.$this->l('Sales').''.$this->l('Percentage of orders').''.$this->l('Percentage of sales').''.$this->l('Zone').''.$this->l('Orders').''.$this->l('Sales').''.$this->l('Percentage of orders').''.$this->l('Percentage of sales').'
    '.(isset($zone['name']) ? $zone['name'] : $this->l('Undefined')).''.(int)($zone['nb']).''.Tools::displayPrice($zone['total'], $currency).''.($ca['ventil']['nb'] ? number_format((100 * $zone['nb'] / $ca['ventil']['nb']), 1, '.', ' ') : '0').'%'.((int)$ca['ventil']['total'] ? number_format((100 * $zone['total'] / $ca['ventil']['total']), 1, '.', ' ') : '0').'%'.(isset($zone['name']) ? $zone['name'] : $this->l('Undefined')).''.(int)($zone['nb']).''.Tools::displayPrice($zone['total'], $currency).''.($ca['ventil']['nb'] ? number_format((100 * $zone['nb'] / $ca['ventil']['nb']), 1, '.', ' ') : '0').'%'.((int)$ca['ventil']['total'] ? number_format((100 * $zone['total'] / $ca['ventil']['total']), 1, '.', ' ') : '0').'%
    @@ -533,9 +504,10 @@ class StatsForecast extends Module @@ -543,127 +515,88 @@ class StatsForecast extends Module - - - - - + + + + + '; - foreach ($ca['currencies'] as $currency_row) - $this->html .= ' + foreach ($ca['currencies'] as $currency_row) { + $this->html .= ' - - - - - + + + + + '; - $this->html .= ' - -
    '.$this->l('Currency').''.$this->l('Orders').''.$this->l('Sales (converted)').''.$this->l('Percentage of orders').''.$this->l('Percentage of sales').''.$this->l('Currency').''.$this->l('Orders').''.$this->l('Sales (converted)').''.$this->l('Percentage of orders').''.$this->l('Percentage of sales').'
    '.$currency_row['name'].''.(int)($currency_row['nb']).''.Tools::displayPrice($currency_row['total'], $currency).''.($ca['ventil']['nb'] ? number_format((100 * $currency_row['nb'] / $ca['ventil']['nb']), 1, '.', ' ') : '0').'%'.((int)$ca['ventil']['total'] ? number_format((100 * $currency_row['total'] / $ca['ventil']['total']), 1, '.', ' ') : '0').'%'.$currency_row['name'].''.(int)($currency_row['nb']).''.Tools::displayPrice($currency_row['total'], $currency).''.($ca['ventil']['nb'] ? number_format((100 * $currency_row['nb'] / $ca['ventil']['nb']), 1, '.', ' ') : '0').'%'.((int)$ca['ventil']['total'] ? number_format((100 * $currency_row['total'] / $ca['ventil']['total']), 1, '.', ' ') : '0').'%
    - -
    -

    '.$this->l('Attribute distribution').'

    - - - - - - - - - '; - foreach ($ca['attributes'] as $attribut) - $this->html .= ' - - - - - '; - $this->html .= ' + } + $this->html .= '
    '.$this->l('Group').''.$this->l('Attribute').''.$this->l('Quantity of products sold').'
    '.$attribut['gname'].''.$attribut['aname'].''.(int)($attribut['total']).'
    '; - return $this->html; - } + return $this->html; + } - private function getRealCA() - { - $employee = $this->context->employee; - $ca = array(); + private function getRealCA() + { + $employee = $this->context->employee; + $ca = array(); - $where = $join = ''; - if ((int)$this->context->cookie->stats_id_zone) - { - $join = ' LEFT JOIN `'._DB_PREFIX_.'address` a ON o.id_address_invoice = a.id_address LEFT JOIN `'._DB_PREFIX_.'country` co ON co.id_country = a.id_country'; - $where = ' AND co.id_zone = '.(int)$this->context->cookie->stats_id_zone.' '; - } + $where = $join = ''; + if ((int)$this->context->cookie->stats_id_zone) { + $join = ' LEFT JOIN `'._DB_PREFIX_.'address` a ON o.id_address_invoice = a.id_address LEFT JOIN `'._DB_PREFIX_.'country` co ON co.id_country = a.id_country'; + $where = ' AND co.id_zone = '.(int)$this->context->cookie->stats_id_zone.' '; + } - $sql = 'SELECT SUM(od.`product_price` * od.`product_quantity` / o.conversion_rate) as orderSum, SUM(od.product_quantity) as orderQty, cl.name, AVG(od.`product_price` / o.conversion_rate) as priveAvg - FROM `'._DB_PREFIX_.'orders` o - STRAIGHT_JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order - LEFT JOIN `'._DB_PREFIX_.'product` p ON p.id_product = od.product_id - '.Shop::addSqlAssociation('product', 'p').' - LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (product_shop.id_category_default = cl.id_category AND cl.id_lang = '.(int)$this->context->language->id.Shop::addSqlRestrictionOnLang('cl').') - '.$join.' - WHERE o.valid = 1 - AND o.`invoice_date` BETWEEN '.ModuleGraph::getDateBetween().' - '.$where.' - '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' - GROUP BY product_shop.id_category_default'; - $ca['cat'] = Db::getInstance()->executeS($sql); - uasort($ca['cat'], 'statsforecast_sort'); - - $lang_values = ''; - $sql = 'SELECT l.id_lang, l.iso_code + $lang_values = ''; + $sql = 'SELECT l.id_lang, l.iso_code FROM `'._DB_PREFIX_.'lang` l '.Shop::addSqlAssociation('lang', 'l').' WHERE l.active = 1'; - $languages = Db::getInstance()->executeS($sql); - foreach ($languages as $language) - $lang_values .= 'SUM(IF(o.id_lang = '.(int)$language['id_lang'].', total_paid_tax_excl / o.conversion_rate, 0)) as '.pSQL($language['iso_code']).','; - $lang_values = rtrim($lang_values, ','); + $languages = Db::getInstance()->executeS($sql); + foreach ($languages as $language) { + $lang_values .= 'SUM(IF(o.id_lang = '.(int)$language['id_lang'].', total_paid_tax_excl / o.conversion_rate, 0)) as '.pSQL($language['iso_code']).','; + } + $lang_values = rtrim($lang_values, ','); - if ($lang_values) - { - $sql = 'SELECT '.$lang_values.' + if ($lang_values) { + $sql = 'SELECT '.$lang_values.' FROM `'._DB_PREFIX_.'orders` o WHERE o.valid = 1 AND o.`invoice_date` BETWEEN '.ModuleGraph::getDateBetween().' '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o'); - $ca['lang'] = Db::getInstance()->getRow($sql); - arsort($ca['lang']); + $ca['lang'] = Db::getInstance()->getRow($sql); + arsort($ca['lang']); - $sql = 'SELECT '.$lang_values.' + $sql = 'SELECT '.$lang_values.' FROM `'._DB_PREFIX_.'orders` o WHERE o.valid = 1 AND ADDDATE(o.`invoice_date`, interval 30 day) BETWEEN \''.$employee->stats_date_from.' 00:00:00\' AND \''.min(date('Y-m-d H:i:s'), $employee->stats_date_to.' 23:59:59').'\' '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o'); - $ca['langprev'] = Db::getInstance()->getRow($sql); - } - else - { - $ca['lang'] = array(); - $ca['langprev'] = array(); - } + $ca['langprev'] = Db::getInstance()->getRow($sql); + } else { + $ca['lang'] = array(); + $ca['langprev'] = array(); + } - $sql = 'SELECT reference + $sql = 'SELECT reference FROM `'._DB_PREFIX_.'orders` o '.$join.' WHERE o.valid '.$where.' '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' AND o.invoice_date BETWEEN '.ModuleGraph::getDateBetween().''; - $result = Db::getInstance()->executeS($sql); - if (count($result)) - { - $references = array(); - foreach ($result as $r) - $references[] = $r['reference']; - $sql = 'SELECT op.payment_method, SUM(op.amount / op.conversion_rate) as total, COUNT(DISTINCT op.order_reference) as nb + $result = Db::getInstance()->executeS($sql); + if (count($result)) { + $references = array(); + foreach ($result as $r) { + $references[] = $r['reference']; + } + $sql = 'SELECT op.payment_method, SUM(op.amount / op.conversion_rate) as total, COUNT(DISTINCT op.order_reference) as nb FROM `'._DB_PREFIX_.'order_payment` op WHERE op.`date_add` BETWEEN '.ModuleGraph::getDateBetween().' AND op.order_reference IN ( @@ -671,12 +604,12 @@ class StatsForecast extends Module ) GROUP BY op.payment_method ORDER BY total DESC'; - $ca['payment'] = Db::getInstance()->executeS($sql); - } - else - $ca['payment'] = array(); + $ca['payment'] = Db::getInstance()->executeS($sql); + } else { + $ca['payment'] = array(); + } - $sql = 'SELECT z.name, SUM(o.total_paid_tax_excl / o.conversion_rate) as total, COUNT(*) as nb + $sql = 'SELECT z.name, SUM(o.total_paid_tax_excl / o.conversion_rate) as total, COUNT(*) as nb FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'address` a ON o.id_address_invoice = a.id_address LEFT JOIN `'._DB_PREFIX_.'country` c ON c.id_country = a.id_country @@ -686,9 +619,9 @@ class StatsForecast extends Module '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' GROUP BY c.id_zone ORDER BY total DESC'; - $ca['zones'] = Db::getInstance()->executeS($sql); + $ca['zones'] = Db::getInstance()->executeS($sql); - $sql = 'SELECT cu.name, SUM(o.total_paid_tax_excl / o.conversion_rate) as total, COUNT(*) as nb + $sql = 'SELECT cu.name, SUM(o.total_paid_tax_excl / o.conversion_rate) as total, COUNT(*) as nb FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'currency` cu ON o.id_currency = cu.id_currency '.$join.' @@ -698,16 +631,16 @@ class StatsForecast extends Module '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' GROUP BY o.id_currency ORDER BY total DESC'; - $ca['currencies'] = Db::getInstance()->executeS($sql); + $ca['currencies'] = Db::getInstance()->executeS($sql); - $sql = 'SELECT SUM(total_paid_tax_excl / o.conversion_rate) as total, COUNT(*) AS nb + $sql = 'SELECT SUM(total_paid_tax_excl / o.conversion_rate) as total, COUNT(*) AS nb FROM `'._DB_PREFIX_.'orders` o WHERE o.valid = 1 AND o.`invoice_date` BETWEEN '.ModuleGraph::getDateBetween().' '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o'); - $ca['ventil'] = Db::getInstance()->getRow($sql); + $ca['ventil'] = Db::getInstance()->getRow($sql); - $sql = 'SELECT /*pac.id_attribute,*/ agl.name as gname, al.name as aname, COUNT(*) as total + $sql = 'SELECT /*pac.id_attribute,*/ agl.name as gname, al.name as aname, COUNT(*) as total FROM '._DB_PREFIX_.'orders o LEFT JOIN '._DB_PREFIX_.'order_detail od ON o.id_order = od.id_order INNER JOIN '._DB_PREFIX_.'product_attribute_combination pac ON od.product_attribute_id = pac.id_product_attribute @@ -718,16 +651,17 @@ class StatsForecast extends Module AND o.`invoice_date` BETWEEN '.ModuleGraph::getDateBetween().' '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' GROUP BY pac.id_attribute'; - $ca['attributes'] = Db::getInstance()->executeS($sql); + $ca['attributes'] = Db::getInstance()->executeS($sql); - return $ca; - } + return $ca; + } } function statsforecast_sort($a, $b) { - if ($a['orderSum'] == $b['orderSum']) - return 0; + if ($a['orderSum'] == $b['orderSum']) { + return 0; + } - return ($a['orderSum'] > $b['orderSum']) ? -1 : 1; + return ($a['orderSum'] > $b['orderSum']) ? -1 : 1; } diff --git a/modules/statsforecast/translations/en.php b/modules/statsforecast/translations/en.php new file mode 100644 index 000000000..f048e1419 --- /dev/null +++ b/modules/statsforecast/translations/en.php @@ -0,0 +1,64 @@ +statsforecast_240c994d8b61c7bd68ac1c5182bbdb2e'] = 'Stats Dashboard'; +$_MODULE['<{statsforecast}prestashop>statsforecast_b17fbc0dacaf9964df883d8065118b98'] = 'This is the main module for the Stats dashboard. It displays a summary of all your current statistics.'; +$_MODULE['<{statsforecast}prestashop>statsforecast_7a27f506c0104592dcb95c31e650cfed'] = 'The listed amounts do not include tax.'; +$_MODULE['<{statsforecast}prestashop>statsforecast_0f65535c189c29b4a5326a319baa4a8d'] = 'Time frame'; +$_MODULE['<{statsforecast}prestashop>statsforecast_c512b685438f41daa7386329a3b8f8d3'] = 'Daily'; +$_MODULE['<{statsforecast}prestashop>statsforecast_6c25e6a6da95b3d583c6ec4c3f82ed4d'] = 'Weekly'; +$_MODULE['<{statsforecast}prestashop>statsforecast_9030e39f00132d583da4122532e509e9'] = 'Monthly'; +$_MODULE['<{statsforecast}prestashop>statsforecast_cf5ea7953dc47105e0eb179dbefaaf46'] = 'Yearly'; +$_MODULE['<{statsforecast}prestashop>statsforecast_d7e637a6e9ff116de2fa89551240a94d'] = 'Visits'; +$_MODULE['<{statsforecast}prestashop>statsforecast_a28735af01fbb1e35371cb120985ac47'] = 'Registrations'; +$_MODULE['<{statsforecast}prestashop>statsforecast_fc6e0920b914b164802d44220e6163f3'] = 'Placed orders'; +$_MODULE['<{statsforecast}prestashop>statsforecast_95deefb44d887f65b77407b87684b593'] = 'Bought items'; +$_MODULE['<{statsforecast}prestashop>statsforecast_51f2b17f5537de83c8b52dc52867fb1c'] = 'Percentage of registrations'; +$_MODULE['<{statsforecast}prestashop>statsforecast_688cb5b32405309351ee01da0ff3c3ac'] = 'Percentage of orders'; +$_MODULE['<{statsforecast}prestashop>statsforecast_54358a914f51e1af19df8520159fe607'] = 'Revenue'; +$_MODULE['<{statsforecast}prestashop>statsforecast_96b0141273eabab320119c467cdcaf17'] = 'Total'; +$_MODULE['<{statsforecast}prestashop>statsforecast_b1897515d548a960afe49ecf66a29021'] = 'Average'; +$_MODULE['<{statsforecast}prestashop>statsforecast_89c1265be62d3ba835a3d963db5956b0'] = 'Forecast'; +$_MODULE['<{statsforecast}prestashop>statsforecast_3bb1503332637805beddb73a2dd1fe1b'] = 'Conversion'; +$_MODULE['<{statsforecast}prestashop>statsforecast_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitors'; +$_MODULE['<{statsforecast}prestashop>statsforecast_9b945efebb006547a94415eadaa12921'] = 'Accounts'; +$_MODULE['<{statsforecast}prestashop>statsforecast_87cac5a0b60008003ccf46dc1d49e0c3'] = 'Full carts'; +$_MODULE['<{statsforecast}prestashop>statsforecast_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Orders'; +$_MODULE['<{statsforecast}prestashop>statsforecast_5a9e532b24379dca2ab0e973172a78e1'] = 'Registered visitors'; +$_MODULE['<{statsforecast}prestashop>statsforecast_fc26e55e0993a75e892175deb02aae15'] = 'Carts'; +$_MODULE['<{statsforecast}prestashop>statsforecast_a34f9feb654595d53807df17b041d804'] = 'A simple statistical calculation lets you know the monetary value of your visitors:'; +$_MODULE['<{statsforecast}prestashop>statsforecast_42de3b7ec2450ded7d6c600b359def52'] = 'On average, each visitor places an order for this amount:'; +$_MODULE['<{statsforecast}prestashop>statsforecast_c06cbe5e69067225dbcab04fb85200fa'] = 'On average, each registered visitor places an order for this amount:'; +$_MODULE['<{statsforecast}prestashop>statsforecast_3fa6443ce3f838b6901b70cd812abf0d'] = 'Payment distribution'; +$_MODULE['<{statsforecast}prestashop>statsforecast_cbb3a9a8d0b10c0618904ce4ecb08716'] = 'The amounts include taxes, so you can get an estimation of the commission due to the payment method.'; +$_MODULE['<{statsforecast}prestashop>statsforecast_e6e42855066e7a3ae050b2c698021b14'] = 'Zone:'; +$_MODULE['<{statsforecast}prestashop>statsforecast_5ed26836c96d7dcae8a40307e8e250c3'] = '-- No filter --'; +$_MODULE['<{statsforecast}prestashop>statsforecast_e55f75a29310d7b60f7ac1d390c8ae42'] = 'Module'; +$_MODULE['<{statsforecast}prestashop>statsforecast_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Sales'; +$_MODULE['<{statsforecast}prestashop>statsforecast_71241798130f714cbd2786df3da2cf0b'] = 'Average cart value'; +$_MODULE['<{statsforecast}prestashop>statsforecast_f13877f6ad53ce91fcb20fb8b7969698'] = 'Category distribution'; +$_MODULE['<{statsforecast}prestashop>statsforecast_b3ff996fe5c77610359114835baf9b38'] = 'Zone'; +$_MODULE['<{statsforecast}prestashop>statsforecast_3adbdb3ac060038aa0e6e6c138ef9873'] = 'Category'; +$_MODULE['<{statsforecast}prestashop>statsforecast_d1873a71f318c4e4733240f0b5911af3'] = 'Products sold'; +$_MODULE['<{statsforecast}prestashop>statsforecast_954b04c203e651728d12622da369cd80'] = 'Percentage of products sold'; +$_MODULE['<{statsforecast}prestashop>statsforecast_a613e7309e4cb7fdaf416fa4f8bfd360'] = 'Percentage of sales'; +$_MODULE['<{statsforecast}prestashop>statsforecast_844c29394eea07066bb2efefc35784ec'] = 'Average price'; +$_MODULE['<{statsforecast}prestashop>statsforecast_88183b946cc5f0e8c96b2e66e1c74a7e'] = 'Unknown'; +$_MODULE['<{statsforecast}prestashop>statsforecast_f1dd68fb6a00d3e4d7f751deacde995d'] = 'Language distribution'; +$_MODULE['<{statsforecast}prestashop>statsforecast_4994a8ffeba4ac3140beb89e8d41f174'] = 'Language'; +$_MODULE['<{statsforecast}prestashop>statsforecast_37be07209f53a5d636d5c904ca9ae64c'] = 'Percentage'; +$_MODULE['<{statsforecast}prestashop>statsforecast_699aed86dada6ca01ef74013a4464066'] = 'Growth'; +$_MODULE['<{statsforecast}prestashop>statsforecast_07aa83862ec591697b4325b66d36a78b'] = 'Zone distribution'; +$_MODULE['<{statsforecast}prestashop>statsforecast_ec0fc0100c4fc1ce4eea230c3dc10360'] = 'Undefined'; +$_MODULE['<{statsforecast}prestashop>statsforecast_28e81c8343702f6c813cc31a7f90616a'] = 'Currency distribution'; +$_MODULE['<{statsforecast}prestashop>statsforecast_386c339d37e737a436499d423a77df0c'] = 'Currency'; +$_MODULE['<{statsforecast}prestashop>statsforecast_61569923d8075889a162c4e603258e6e'] = 'Sales (converted)'; +$_MODULE['<{statsforecast}prestashop>statsforecast_8471eed257db7258f935588a664ba4f3'] = 'Attribute distribution'; +$_MODULE['<{statsforecast}prestashop>statsforecast_03937134cedab9078be39a77ee3a48a0'] = 'Group'; +$_MODULE['<{statsforecast}prestashop>statsforecast_f2bbdf9f72c085adc4d0404e370f0f4c'] = 'Attribute'; +$_MODULE['<{statsforecast}prestashop>statsforecast_9b95278ceb25bd5ddfcd7b22be6e4000'] = 'Quantity of products sold'; + + +return $_MODULE; diff --git a/modules/statsforecast/translations/tw.php b/modules/statsforecast/translations/tw.php new file mode 100644 index 000000000..b0952c30c --- /dev/null +++ b/modules/statsforecast/translations/tw.php @@ -0,0 +1,44 @@ +statsforecast_240c994d8b61c7bd68ac1c5182bbdb2e'] = '統計報表'; +$_MODULE['<{statsforecast}prestashop>statsforecast_d7e637a6e9ff116de2fa89551240a94d'] = '訪問'; +$_MODULE['<{statsforecast}prestashop>statsforecast_a28735af01fbb1e35371cb120985ac47'] = '註冊'; +$_MODULE['<{statsforecast}prestashop>statsforecast_96b0141273eabab320119c467cdcaf17'] = '總計'; +$_MODULE['<{statsforecast}prestashop>statsforecast_b1897515d548a960afe49ecf66a29021'] = '平均'; +$_MODULE['<{statsforecast}prestashop>statsforecast_89c1265be62d3ba835a3d963db5956b0'] = '預測'; +$_MODULE['<{statsforecast}prestashop>statsforecast_3bb1503332637805beddb73a2dd1fe1b'] = '轉換'; +$_MODULE['<{statsforecast}prestashop>statsforecast_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = '訪客'; +$_MODULE['<{statsforecast}prestashop>statsforecast_9b945efebb006547a94415eadaa12921'] = '帳號'; +$_MODULE['<{statsforecast}prestashop>statsforecast_87cac5a0b60008003ccf46dc1d49e0c3'] = '全車'; +$_MODULE['<{statsforecast}prestashop>statsforecast_7442e29d7d53e549b78d93c46b8cdcfc'] = '訂單'; +$_MODULE['<{statsforecast}prestashop>statsforecast_5a9e532b24379dca2ab0e973172a78e1'] = '註冊會員'; +$_MODULE['<{statsforecast}prestashop>statsforecast_fc26e55e0993a75e892175deb02aae15'] = '購物車'; +$_MODULE['<{statsforecast}prestashop>statsforecast_3fa6443ce3f838b6901b70cd812abf0d'] = '付款分佈'; +$_MODULE['<{statsforecast}prestashop>statsforecast_e6e42855066e7a3ae050b2c698021b14'] = '區塊'; +$_MODULE['<{statsforecast}prestashop>statsforecast_5ed26836c96d7dcae8a40307e8e250c3'] = '- 無篩選器 -'; +$_MODULE['<{statsforecast}prestashop>statsforecast_e55f75a29310d7b60f7ac1d390c8ae42'] = '模組'; +$_MODULE['<{statsforecast}prestashop>statsforecast_11ff9f68afb6b8b5b8eda218d7c83a65'] = '銷售'; +$_MODULE['<{statsforecast}prestashop>statsforecast_71241798130f714cbd2786df3da2cf0b'] = '平均購物車價值'; +$_MODULE['<{statsforecast}prestashop>statsforecast_f13877f6ad53ce91fcb20fb8b7969698'] = '分類分佈'; +$_MODULE['<{statsforecast}prestashop>statsforecast_b3ff996fe5c77610359114835baf9b38'] = '區塊'; +$_MODULE['<{statsforecast}prestashop>statsforecast_3adbdb3ac060038aa0e6e6c138ef9873'] = '分類'; +$_MODULE['<{statsforecast}prestashop>statsforecast_844c29394eea07066bb2efefc35784ec'] = '平均價格'; +$_MODULE['<{statsforecast}prestashop>statsforecast_88183b946cc5f0e8c96b2e66e1c74a7e'] = '未知'; +$_MODULE['<{statsforecast}prestashop>statsforecast_f1dd68fb6a00d3e4d7f751deacde995d'] = '語言分佈'; +$_MODULE['<{statsforecast}prestashop>statsforecast_4994a8ffeba4ac3140beb89e8d41f174'] = '語言'; +$_MODULE['<{statsforecast}prestashop>statsforecast_37be07209f53a5d636d5c904ca9ae64c'] = '百分比'; +$_MODULE['<{statsforecast}prestashop>statsforecast_699aed86dada6ca01ef74013a4464066'] = '生長'; +$_MODULE['<{statsforecast}prestashop>statsforecast_07aa83862ec591697b4325b66d36a78b'] = '區分佈'; +$_MODULE['<{statsforecast}prestashop>statsforecast_ec0fc0100c4fc1ce4eea230c3dc10360'] = '未定義'; +$_MODULE['<{statsforecast}prestashop>statsforecast_28e81c8343702f6c813cc31a7f90616a'] = '貨幣分佈'; +$_MODULE['<{statsforecast}prestashop>statsforecast_386c339d37e737a436499d423a77df0c'] = '貨幣'; +$_MODULE['<{statsforecast}prestashop>statsforecast_61569923d8075889a162c4e603258e6e'] = '銷售(總額)'; +$_MODULE['<{statsforecast}prestashop>statsforecast_8471eed257db7258f935588a664ba4f3'] = '屬性分佈'; +$_MODULE['<{statsforecast}prestashop>statsforecast_03937134cedab9078be39a77ee3a48a0'] = '群組'; +$_MODULE['<{statsforecast}prestashop>statsforecast_f2bbdf9f72c085adc4d0404e370f0f4c'] = '屬性'; + + +return $_MODULE; diff --git a/modules/statsproduct/CHANGELOG.txt b/modules/statsproduct/CHANGELOG.txt index 036fa78d8..4087b0ea3 100644 --- a/modules/statsproduct/CHANGELOG.txt +++ b/modules/statsproduct/CHANGELOG.txt @@ -1,3 +1,13 @@ +------------------------------ +# V1.5.1 to V1.5.2 +------------------------------ + +## Improved/Changed Features: + +* [CO] : Module is made compatible with QloApps. + +_____________________________________________________________________________________________________ + 2014-03-27 17:20:47 +0100 / MO statsproduct : min ps_versions_compliancy modified (1.5.6.1 => 1.6) 2014-03-24 15:22:53 +0100 / MO statsproduct : ps_versions_compliancy added 2014-03-20 14:37:15 +0100 Initial commit diff --git a/modules/statsproduct/config.xml b/modules/statsproduct/config.xml deleted file mode 100644 index afcd33096..000000000 --- a/modules/statsproduct/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - statsproduct - - - - - - 0 - 0 - - diff --git a/modules/statsproduct/statsproduct.php b/modules/statsproduct/statsproduct.php index 0bffc1bab..5814d7c41 100644 --- a/modules/statsproduct/statsproduct.php +++ b/modules/statsproduct/statsproduct.php @@ -24,40 +24,57 @@ * International Registered Trademark & Property of PrestaShop SA */ -if (!defined('_PS_VERSION_')) - exit; +if (!defined('_PS_VERSION_')) { + exit; +} + +require_once _PS_MODULE_DIR_.'hotelreservationsystem/define.php'; class StatsProduct extends ModuleGraph { - private $html = ''; - private $query = ''; - private $option = 0; - private $id_product = 0; + private $html = ''; + private $query = ''; + private $option = 0; + private $id_product = 0; - public function __construct() - { - $this->name = 'statsproduct'; - $this->tab = 'analytics_stats'; - $this->version = '1.5.1'; - $this->author = 'PrestaShop'; - $this->need_instance = 0; + public function __construct() + { + $this->name = 'statsproduct'; + $this->tab = 'analytics_stats'; + $this->version = '1.5.2'; + $this->author = 'PrestaShop'; + $this->need_instance = 0; - parent::__construct(); + parent::__construct(); - $this->displayName = $this->l('Product details'); - $this->description = $this->l('Adds detailed statistics for each product to the Stats dashboard.'); - $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); - } + $this->displayName = $this->l('Room type details'); + $this->description = $this->l('Adds detailed statistics for each room type to the Stats dashboard.'); + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.7.0.99'); + } - public function install() - { - return (parent::install() && $this->registerHook('AdminStatsModules')); - } + public function install() + { + return (parent::install() && $this->registerHook('AdminStatsModules')); + } - public function getTotalBought($id_product) - { - $date_between = ModuleGraph::getDateBetween(); - $sql = 'SELECT SUM(od.`product_quantity`) AS total + public function getTotalBought($id_product) + { + $date_between = ModuleGraph::getDateBetween(); + $sql = 'SELECT COUNT(hbd.`id_room`) AS total_booked + FROM `'._DB_PREFIX_.'htl_booking_detail` hbd + LEFT JOIN `'._DB_PREFIX_.'orders` o ON o.`id_order` = hbd.`id_order` + WHERE hbd.`id_product` = '.(int)$id_product.' + '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' + AND o.valid = 1 + AND o.`date_add` BETWEEN '.$date_between; + + return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); + } + + public function getTotalSales($id_product) + { + $date_between = ModuleGraph::getDateBetween(); + $sql = 'SELECT SUM(od.`total_price_tax_excl`) AS total FROM `'._DB_PREFIX_.'order_detail` od LEFT JOIN `'._DB_PREFIX_.'orders` o ON o.`id_order` = od.`id_order` WHERE od.`product_id` = '.(int)$id_product.' @@ -65,27 +82,13 @@ class StatsProduct extends ModuleGraph AND o.valid = 1 AND o.`date_add` BETWEEN '.$date_between; - return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); - } + return (float)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); + } - public function getTotalSales($id_product) - { - $date_between = ModuleGraph::getDateBetween(); - $sql = 'SELECT SUM(od.`total_price_tax_excl`) AS total - FROM `'._DB_PREFIX_.'order_detail` od - LEFT JOIN `'._DB_PREFIX_.'orders` o ON o.`id_order` = od.`id_order` - WHERE od.`product_id` = '.(int)$id_product.' - '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' - AND o.valid = 1 - AND o.`date_add` BETWEEN '.$date_between; - - return (float)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); - } - - public function getTotalViewed($id_product) - { - $date_between = ModuleGraph::getDateBetween(); - $sql = 'SELECT SUM(pv.`counter`) AS total + public function getTotalViewed($id_product) + { + $date_between = ModuleGraph::getDateBetween(); + $sql = 'SELECT SUM(pv.`counter`) AS total FROM `'._DB_PREFIX_.'page_viewed` pv LEFT JOIN `'._DB_PREFIX_.'date_range` dr ON pv.`id_date_range` = dr.`id_date_range` LEFT JOIN `'._DB_PREFIX_.'page` p ON pv.`id_page` = p.`id_page` @@ -95,47 +98,45 @@ class StatsProduct extends ModuleGraph AND p.`id_object` = '.(int)$id_product.' AND dr.`time_start` BETWEEN '.$date_between.' AND dr.`time_end` BETWEEN '.$date_between; - $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql); - return isset($result['total']) ? $result['total'] : 0; - } + return isset($result['total']) ? $result['total'] : 0; + } - private function getProducts($id_lang) - { - $sql = 'SELECT p.`id_product`, p.reference, pl.`name`, IFNULL(stock.quantity, 0) as quantity + private function getProducts($id_lang) + { + $sql = 'SELECT p.`id_product`, p.reference, pl.`name`, IFNULL(stock.quantity, 0) as quantity FROM `'._DB_PREFIX_.'product` p - '.Product::sqlStock('p', 0).' - LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON p.`id_product` = pl.`id_product`'.Shop::addSqlRestrictionOnLang('pl').' - '.Shop::addSqlAssociation('product', 'p').' - '.(Tools::getValue('id_category') ? 'LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON p.`id_product` = cp.`id_product`' : '').' - WHERE pl.`id_lang` = '.(int)$id_lang.' - '.(Tools::getValue('id_category') ? 'AND cp.id_category = '.(int)Tools::getValue('id_category') : ''); - if (version_compare(_PS_VERSION_, '1.7.0.0', '>=')) { - $sql .= ' AND p.state = ' . Product::STATE_SAVED; - } - $sql .= ' ORDER BY pl.`name`'; + '.Product::sqlStock('p', 0); + if (Tools::getValue('id_hotel')) { + $sql .= ' INNER JOIN `'._DB_PREFIX_.'htl_room_type` hrt ON (hrt.`id_product` = p.`id_product` AND hrt.`id_hotel` = '.(int)Tools::getValue('id_hotel').')'; + } + $sql .= ' LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang`='. + (int)$this->context->language->id.')'; + $sql .= ' ORDER BY pl.`name`'; + return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); + } - return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); - } - - private function getSales($id_product) - { - $sql = 'SELECT o.date_add, o.id_order, o.id_customer, od.product_quantity, (od.product_price * od.product_quantity) as total, od.tax_name, od.product_name + private function getSales($id_product) + { + $sql = 'SELECT o.`date_add`, o.`id_order`, o.`id_customer`, od.`product_quantity`, (od.`product_price` * od.`product_quantity`) as total, od.`tax_name`, od.`product_name`, COUNT(hbd.`id_room`) AS total_booked FROM `'._DB_PREFIX_.'orders` o - LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order - WHERE o.date_add BETWEEN '.$this->getDate().' + LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.`id_order` = od.`id_order` + LEFT JOIN `'._DB_PREFIX_.'htl_booking_detail` hbd ON (od.`id_order` = hbd.`id_order` AND od.`product_id` = hbd.`id_product`) + WHERE o.`date_add` BETWEEN '.$this->getDate().' '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' - AND o.valid = 1 - AND od.product_id = '.(int)$id_product; + AND o.valid = 1 + AND od.product_id = '.(int)$id_product.' GROUP BY od.`id_order`'; - return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); - } + return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); + } - private function getCrossSales($id_product, $id_lang) - { - $sql = 'SELECT pl.name as pname, pl.id_product, SUM(od.product_quantity) as pqty, AVG(od.product_price) as pprice + private function getCrossSales($id_product, $id_lang) + { + $sql = 'SELECT pl.`name` as pname, pl.`id_product`, SUM(od.`product_quantity`) as pqty, AVG(od.`product_price`) as pprice, COUNT(hbd.`id_room`) AS total_booked FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order + INNER JOIN `'._DB_PREFIX_.'htl_booking_detail` hbd ON (o.`id_order` = hbd.`id_order` AND od.`product_id` = hbd.`id_product`) LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.id_product = od.product_id AND pl.id_lang = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').') WHERE o.id_customer IN ( SELECT o.id_customer @@ -152,69 +153,70 @@ class StatsProduct extends ModuleGraph GROUP BY od.product_id ORDER BY pqty DESC'; - return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); - } + return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); + } - public function hookAdminStatsModules() - { - $id_category = (int)Tools::getValue('id_category'); - $currency = Context::getContext()->currency; + public function hookAdminStatsModules() + { + $id_hotel = (int)Tools::getValue('id_hotel'); + $currency = Context::getContext()->currency; - if (Tools::getValue('export')) - if (!Tools::getValue('exportType')) - $this->csvExport(array( - 'layers' => 2, - 'type' => 'line', - 'option' => '42' - )); + if (Tools::getValue('export')) { + if (!Tools::getValue('exportType')) { + $this->csvExport(array( + 'layers' => 2, + 'type' => 'line', + 'option' => '42' + )); + } + } - $this->html = ' + $this->html = '
    '.$this->displayName.'

    '.$this->l('Guide').'

    '.$this->l('Number of purchases compared to number of views').'

    - '.$this->l('After choosing a category and selecting a product, informational graphs will appear.').' + '.$this->l('After choosing a hotel and selecting a room type, informational graphs will appear.').'
      -
    • '.$this->l('If you notice that a product is often purchased but viewed infrequently, you should display it more prominently in your Front Office.').'
    • -
    • '.$this->l('On the other hand, if a product has many views but is not often purchased, we advise you to check or modify this product\'s information, description and photography again, see if you can find something better.').' +
    • '.$this->l('If you notice that a room type is often booked but viewed infrequently, you should display it more prominently in your Front Office.').'
    • +
    • '.$this->l('On the other hand, if a room type has many views but is not often booked, we advise you to check or modify this room type\'s information, description and photography again, see if you can find something better.').'
    '; - if ($id_product = (int)Tools::getValue('id_product')) - { - if (Tools::getValue('export')) - { - if (Tools::getValue('exportType') == 1) - $this->csvExport(array( - 'layers' => 2, - 'type' => 'line', - 'option' => '1-'.$id_product - )); - elseif (Tools::getValue('exportType') == 2) - $this->csvExport(array( - 'type' => 'pie', - 'option' => '3-'.$id_product - )); - } - $product = new Product($id_product, false, $this->context->language->id); - $total_bought = $this->getTotalBought($product->id); - $total_sales = $this->getTotalSales($product->id); - $total_viewed = $this->getTotalViewed($product->id); - $this->html .= '

    '.$product->name.' - '.$this->l('Details').'

    + if ($id_product = (int)Tools::getValue('id_product')) { + if (Tools::getValue('export')) { + if (Tools::getValue('exportType') == 1) { + $this->csvExport(array( + 'layers' => 2, + 'type' => 'line', + 'option' => '1-'.$id_product + )); + } elseif (Tools::getValue('exportType') == 2) { + $this->csvExport(array( + 'type' => 'pie', + 'option' => '3-'.$id_product + )); + } + } + $product = new Product($id_product, false, $this->context->language->id); + $total_bought = $this->getTotalBought($product->id); + $total_sales = $this->getTotalSales($product->id); + $total_viewed = $this->getTotalViewed($product->id); + $this->html .= '

    '.$product->name.' - '.$this->l('Details').'

    '.$this->engine(array( - 'layers' => 2, - 'type' => 'line', - 'option' => '1-'.$id_product - )).' + 'layers' => 2, + 'type' => 'line', + 'option' => '1-'.$id_product + )).'
      -
    • '.$this->l('Total bought').' '.$total_bought.'
    • +
    • '.$this->l('Total booked').' '.$total_bought.'
    • '.$this->l('Sales (tax excluded)').' '.Tools::displayprice($total_sales, $currency).'
    • '.$this->l('Total viewed').' '.$total_viewed.'
    • '.$this->l('Conversion rate').' '.number_format($total_viewed ? $total_bought / $total_viewed : 0, 2).'
    • @@ -225,15 +227,15 @@ class StatsProduct extends ModuleGraph
    '; - if ($has_attribute = $product->hasAttributes() && $total_bought) - $this->html .= ' + if ($has_attribute = $product->hasAttributes() && $total_bought) { + $this->html .= '

    '.$this->l('Attribute sales distribution').'

    '.$this->engine(array('type' => 'pie', 'option' => '3-'.$id_product)).'

    '.$this->l('CSV Export').''; - if ($total_bought) - { - $sales = $this->getSales($id_product); - $this->html .= ' + } + if ($total_bought) { + $sales = $this->getSales($id_product); + $this->html .= '

    '.$this->l('Sales').'

    @@ -250,7 +252,7 @@ class StatsProduct extends ModuleGraph '.($has_attribute ? '' : '').' '; - $token_order = Tools::getAdminToken('AdminOrders'.(int)Tab::getIdFromClassName('AdminOrders').(int)$this->context->employee->id); - $token_customer = Tools::getAdminToken('AdminCustomers'.(int)Tab::getIdFromClassName('AdminCustomers').(int)$this->context->employee->id); - foreach ($sales as $sale) - $this->html .= ' + $token_order = Tools::getAdminToken('AdminOrders'.(int)Tab::getIdFromClassName('AdminOrders').(int)$this->context->employee->id); + $token_customer = Tools::getAdminToken('AdminCustomers'.(int)Tab::getIdFromClassName('AdminCustomers').(int)$this->context->employee->id); + foreach ($sales as $sale) { + $this->html .= ' - - + + '.($has_attribute ? '' : '').' - + '; - $this->html .= ' + } + $this->html .= '
    '.$this->l('Attribute').' - '.$this->l('Quantity').' + '.$this->l('Rooms Booked').' '.$this->l('Price').' @@ -258,37 +260,37 @@ class StatsProduct extends ModuleGraph
    '.Tools::displayDate($sale['date_add'], null, false).''.(int)$sale['id_order'].''.(int)$sale['id_customer'].''.(int)$sale['id_order'].''.(int)$sale['id_customer'].''.$sale['product_name'].''.(int)$sale['product_quantity'].''.(int)$sale['total_booked'].' '.Tools::displayprice($sale['total'], $currency).'
    '; - $cross_selling = $this->getCrossSales($id_product, $this->context->language->id); - if (count($cross_selling)) - { - $this->html .= ' + $cross_selling = $this->getCrossSales($id_product, $this->context->language->id); + if (count($cross_selling)) { + $this->html .= '

    '.$this->l('Cross selling').'

    '; - $token_products = Tools::getAdminToken('AdminProducts'.(int)Tab::getIdFromClassName('AdminProducts').(int)$this->context->employee->id); - foreach ($cross_selling as $selling) { - $urlParams = array('id_product' => (int)$selling['id_product'], 'updateproduct' => 1, 'token' => $token_products); - $this->html .= ' + $token_products = Tools::getAdminToken('AdminProducts'.(int)Tab::getIdFromClassName('AdminProducts').(int)$this->context->employee->id); + foreach ($cross_selling as $selling) { + $urlParams = array('id_product' => (int)$selling['id_product'], 'updateproduct' => 1, 'token' => $token_products); + $this->html .= ' - - + + '; - } - $this->html .= ' + } + $this->html .= '
    - '.$this->l('Product name').' + '.$this->l('Room Type name').' - '.$this->l('Quantity sold').' + '.$this->l('Rooms Booked').' '.$this->l('Average price').' @@ -296,106 +298,122 @@ class StatsProduct extends ModuleGraph
    ' . $selling['pname'] . ''.(int)$selling['pqty'].''.Tools::displayprice($selling['pprice'], $currency).''.(int)$selling['total_booked'].''.Tools::displayprice($selling['pprice'], $currency).'
    '; - } - } - } - else - { - $categories = Category::getCategories((int)$this->context->language->id, true, false); - $this->html .= ' -
    + } + } + } else { + $objBranchInfo = new HotelBranchInformation(); + $hotels = $objBranchInfo->hotelBranchesInfo((int)$this->context->language->id); + $this->html .= ' +
    - '; - foreach ($categories as $category) - $this->html .= ''; - $this->html .= ' + foreach ($hotels as $hotel) { + $this->html .= ''; + } + $this->html .= '
    -

    '.$this->l('Products available').'

    +

    '.$this->l('Room types available').'

    - - '; + '; + // get room type info + $objBookingDtl = new HotelBookingDetail(); + $objHotelRoomType = new HotelRoomType(); + $dateFrom = date("Y-m-d", strtotime($this->context->employee->stats_date_from)); + $dateTo = date("Y-m-d", strtotime($this->context->employee->stats_date_to)); - foreach ($this->getProducts($this->context->language->id) as $product) - $this->html .= ' + $bookingParams = array(); + $bookingParams['date_from'] = $dateFrom; + $bookingParams['date_to'] = $dateTo; + foreach ($this->getProducts($this->context->language->id) as $product) { + $availRooms = 0; + if ($roomTypeInfo = $objHotelRoomType->getRoomTypeInfoByIdProduct($product['id_product'])) { + $bookingParams['hotel_id'] = $roomTypeInfo['id_hotel']; + $bookingParams['room_type'] = $product['id_product']; + if ($booking_data = $objBookingDtl->getBookingData($bookingParams)) { + if (isset($booking_data['stats']['num_avail'])) { + $availRooms = $booking_data['stats']['num_avail']; + } + } + } + $this->html .= ' - - + '; + } - $this->html .= ' + $this->html .= '
    - '.$this->l('Reference').' + '.$this->l('Room Type Name').' - '.$this->l('Name').' - - '.$this->l('Available quantity for sale').' + '.$this->l('Available rooms').'
    '.$product['reference'].' '.$product['name'].' '.$product['quantity'].''.$availRooms.'
    '.$this->l('CSV Export').' '; - } + } - return $this->html; - } + return $this->html; + } - public function setOption($option, $layers = 1) - { - $options = explode('-', $option); - if (count($options) === 2) - list($this->option, $this->id_product) = $options; - else - $this->option = $option; - $date_between = $this->getDate(); - switch ($this->option) - { - case 1: - $this->_titles['main'][0] = $this->l('Popularity'); - $this->_titles['main'][1] = $this->l('Sales'); - $this->_titles['main'][2] = $this->l('Visits (x100)'); - $this->query[0] = 'SELECT o.`date_add`, SUM(od.`product_quantity`) AS total + public function setOption($option, $layers = 1) + { + $options = explode('-', $option); + if (count($options) === 2) { + list($this->option, $this->id_product) = $options; + } else { + $this->option = $option; + } + $date_between = $this->getDate(); + switch ($this->option) { + case 1: + $this->_titles['main'][0] = $this->l('Popularity'); + $this->_titles['main'][1] = $this->l('Sales'); + $this->_titles['main'][2] = $this->l('Visits (x100)'); + $this->query[0] = 'SELECT o.`date_add`, COUNT(hbd.`id_room`) AS total FROM `'._DB_PREFIX_.'order_detail` od LEFT JOIN `'._DB_PREFIX_.'orders` o ON o.`id_order` = od.`id_order` + INNER JOIN `'._DB_PREFIX_.'htl_booking_detail` hbd ON (o.`id_order` = hbd.`id_order` AND od.`product_id` = hbd.`id_product`) WHERE od.`product_id` = '.(int)$this->id_product.' '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' AND o.valid = 1 AND o.`date_add` BETWEEN '.$date_between.' GROUP BY o.`date_add`'; - $this->query[1] = 'SELECT dr.`time_start` AS date_add, (SUM(pv.`counter`) / 100) AS total + $this->query[1] = 'SELECT dr.`time_start` AS date_add, (SUM(pv.`counter`) / 100) AS total FROM `'._DB_PREFIX_.'page_viewed` pv LEFT JOIN `'._DB_PREFIX_.'date_range` dr ON pv.`id_date_range` = dr.`id_date_range` LEFT JOIN `'._DB_PREFIX_.'page` p ON pv.`id_page` = p.`id_page` @@ -406,110 +424,118 @@ class StatsProduct extends ModuleGraph AND dr.`time_start` BETWEEN '.$date_between.' AND dr.`time_end` BETWEEN '.$date_between.' GROUP BY dr.`time_start`'; - break; + break; - case 3: - $this->query = 'SELECT product_attribute_id, SUM(od.`product_quantity`) AS total + case 3: + $this->query = 'SELECT product_attribute_id, COUNT(hbd.`id_room`) AS total FROM `'._DB_PREFIX_.'orders` o LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.`id_order` = od.`id_order` + INNER JOIN `'._DB_PREFIX_.'htl_booking_detail` hbd ON (o.`id_order` = hbd.`id_order` AND od.`product_id` = hbd.`id_product`) WHERE od.`product_id` = '.(int)$this->id_product.' '.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').' AND o.valid = 1 AND o.`date_add` BETWEEN '.$date_between.' GROUP BY od.`product_attribute_id`'; - $this->_titles['main'] = $this->l('Attributes'); - break; + $this->_titles['main'] = $this->l('Attributes'); + break; - case 42: - $this->_titles['main'][1] = $this->l('Reference'); - $this->_titles['main'][2] = $this->l('Name'); - $this->_titles['main'][3] = $this->l('Stock'); - break; - } - } + case 42: + $this->_titles['main'][1] = $this->l('Reference'); + $this->_titles['main'][2] = $this->l('Name'); + $this->_titles['main'][3] = $this->l('Stock'); + break; + } + } - protected function getData($layers) - { - if ($this->option == 42) - { - $products = $this->getProducts($this->context->language->id); - foreach ($products as $product) - { - $this->_values[0][] = $product['reference']; - $this->_values[1][] = $product['name']; - $this->_values[2][] = $product['quantity']; - $this->_legend[] = $product['id_product']; - } - } - else if ($this->option != 3) - $this->setDateGraph($layers, true); - else - { - $product = new Product($this->id_product, false, (int)$this->getLang()); + private function getHotelCategories($idLang) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( + 'SELECT c.*, cl.`name` FROM `'._DB_PREFIX_.'category` c + INNER JOIN `'._DB_PREFIX_.'htl_branch_info` hbi ON (hbi.`id_category` = c.`id_category`) + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl + ON (c.`id_category` = cl.`id_category` AND cl.`id_lang` = '.(int)$idLang.')' + ); + return $result; + } - $comb_array = array(); - $assoc_names = array(); - $combinations = $product->getAttributeCombinations((int)$this->getLang()); - foreach ($combinations as $combination) - $comb_array[$combination['id_product_attribute']][] = array( - 'group' => $combination['group_name'], - 'attr' => $combination['attribute_name'] - ); - foreach ($comb_array as $id_product_attribute => $product_attribute) - { - $list = ''; - foreach ($product_attribute as $attribute) - $list .= trim($attribute['group']).' - '.trim($attribute['attr']).', '; - $list = rtrim($list, ', '); - $assoc_names[$id_product_attribute] = $list; - } + protected function getData($layers) + { + if ($this->option == 42) { + $products = $this->getProducts($this->context->language->id); + foreach ($products as $product) { + $this->_values[0][] = $product['reference']; + $this->_values[1][] = $product['name']; + $this->_values[2][] = $product['quantity']; + $this->_legend[] = $product['id_product']; + } + } elseif ($this->option != 3) { + $this->setDateGraph($layers, true); + } else { + $product = new Product($this->id_product, false, (int)$this->getLang()); - $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query); - foreach ($result as $row) - { - $this->_values[] = $row['total']; - $this->_legend[] = @$assoc_names[$row['product_attribute_id']]; - } - } - } + $comb_array = array(); + $assoc_names = array(); + $combinations = $product->getAttributeCombinations((int)$this->getLang()); + foreach ($combinations as $combination) { + $comb_array[$combination['id_product_attribute']][] = array( + 'group' => $combination['group_name'], + 'attr' => $combination['attribute_name'] + ); + } + foreach ($comb_array as $id_product_attribute => $product_attribute) { + $list = ''; + foreach ($product_attribute as $attribute) { + $list .= trim($attribute['group']).' - '.trim($attribute['attr']).', '; + } + $list = rtrim($list, ', '); + $assoc_names[$id_product_attribute] = $list; + } - protected function setAllTimeValues($layers) - { - for ($i = 0; $i < $layers; $i++) - { - $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query[$i]); - foreach ($result as $row) - $this->_values[$i][(int)substr($row['date_add'], 0, 4)] += $row['total']; - } - } + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query); + foreach ($result as $row) { + $this->_values[] = $row['total']; + $this->_legend[] = @$assoc_names[$row['product_attribute_id']]; + } + } + } - protected function setYearValues($layers) - { - for ($i = 0; $i < $layers; $i++) - { - $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query[$i]); - foreach ($result as $row) - $this->_values[$i][(int)substr($row['date_add'], 5, 2)] += $row['total']; - } - } + protected function setAllTimeValues($layers) + { + for ($i = 0; $i < $layers; $i++) { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query[$i]); + foreach ($result as $row) { + $this->_values[$i][(int)substr($row['date_add'], 0, 4)] += $row['total']; + } + } + } - protected function setMonthValues($layers) - { - for ($i = 0; $i < $layers; $i++) - { - $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query[$i]); - foreach ($result as $row) - $this->_values[$i][(int)substr($row['date_add'], 8, 2)] += $row['total']; - } - } + protected function setYearValues($layers) + { + for ($i = 0; $i < $layers; $i++) { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query[$i]); + foreach ($result as $row) { + $this->_values[$i][(int)substr($row['date_add'], 5, 2)] += $row['total']; + } + } + } - protected function setDayValues($layers) - { - for ($i = 0; $i < $layers; $i++) - { - $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query[$i]); - foreach ($result as $row) - $this->_values[$i][(int)substr($row['date_add'], 11, 2)] += $row['total']; - } - } + protected function setMonthValues($layers) + { + for ($i = 0; $i < $layers; $i++) { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query[$i]); + foreach ($result as $row) { + $this->_values[$i][(int)substr($row['date_add'], 8, 2)] += $row['total']; + } + } + } + + protected function setDayValues($layers) + { + for ($i = 0; $i < $layers; $i++) { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($this->query[$i]); + foreach ($result as $row) { + $this->_values[$i][(int)substr($row['date_add'], 11, 2)] += $row['total']; + } + } + } } diff --git a/modules/statsproduct/translations/en.php b/modules/statsproduct/translations/en.php new file mode 100644 index 000000000..1ccbcaa1f --- /dev/null +++ b/modules/statsproduct/translations/en.php @@ -0,0 +1,44 @@ +statsproduct_78e454064a7d3a7755a011a3b79f31a7'] = 'Product details'; +$_MODULE['<{statsproduct}prestashop>statsproduct_15944ce3356cfd0513cbc76e7df9d233'] = 'Adds detailed statistics for each product to the Stats dashboard.'; +$_MODULE['<{statsproduct}prestashop>statsproduct_6602bbeb2956c035fb4cb5e844a4861b'] = 'Guide'; +$_MODULE['<{statsproduct}prestashop>statsproduct_f083d0403991f2b0ae72ea8782518f36'] = 'Number of purchases compared to number of views'; +$_MODULE['<{statsproduct}prestashop>statsproduct_6e13e61b8535a66feb27d285f5c42855'] = 'After choosing a category and selecting a product, informational graphs will appear.'; +$_MODULE['<{statsproduct}prestashop>statsproduct_6734b1d16e064d64d9ea4affaed74cc7'] = 'If you notice that a product is often purchased but viewed infrequently, you should display it more prominently in your Front Office.'; +$_MODULE['<{statsproduct}prestashop>statsproduct_f3a492ed300e8565dcdbbc1da340d226'] = 'On the other hand, if a product has many views but is not often purchased, we advise you to check or modify this product\'s information, description and photography again, see if you can find something better.'; +$_MODULE['<{statsproduct}prestashop>statsproduct_3ec365dd533ddb7ef3d1c111186ce872'] = 'Details'; +$_MODULE['<{statsproduct}prestashop>statsproduct_290b169159edc205e3a46902d4554d52'] = 'Total bought'; +$_MODULE['<{statsproduct}prestashop>statsproduct_155d5c362e6887660600763fc0d55f02'] = 'Sales (tax excluded)'; +$_MODULE['<{statsproduct}prestashop>statsproduct_8041d874fe39d54c6e78156c27341c85'] = 'Total viewed'; +$_MODULE['<{statsproduct}prestashop>statsproduct_d311128c6b9f34f85e6b0e29bcbcd165'] = 'Conversion rate'; +$_MODULE['<{statsproduct}prestashop>statsproduct_998e4c5c80f27dec552e99dfed34889a'] = 'CSV Export'; +$_MODULE['<{statsproduct}prestashop>statsproduct_c90b9dca2d3f5bb6e0d0bdceac8a631d'] = 'Attribute sales distribution'; +$_MODULE['<{statsproduct}prestashop>statsproduct_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Sales'; +$_MODULE['<{statsproduct}prestashop>statsproduct_44749712dbec183e983dcd78a7736c41'] = 'Date'; +$_MODULE['<{statsproduct}prestashop>statsproduct_a240fa27925a635b08dc28c9e4f9216d'] = 'Order'; +$_MODULE['<{statsproduct}prestashop>statsproduct_ce26601dac0dea138b7295f02b7620a7'] = 'Customer'; +$_MODULE['<{statsproduct}prestashop>statsproduct_f2bbdf9f72c085adc4d0404e370f0f4c'] = 'Attribute'; +$_MODULE['<{statsproduct}prestashop>statsproduct_694e8d1f2ee056f98ee488bdc4982d73'] = 'Quantity'; +$_MODULE['<{statsproduct}prestashop>statsproduct_3601146c4e948c32b6424d2c0a7f0118'] = 'Price'; +$_MODULE['<{statsproduct}prestashop>statsproduct_87017c9259838bb0918a2ab4f96016c0'] = 'Cross selling'; +$_MODULE['<{statsproduct}prestashop>statsproduct_df644ae155e79abf54175bd15d75f363'] = 'Product name'; +$_MODULE['<{statsproduct}prestashop>statsproduct_2a0440eec72540c5b30d9199c01f348c'] = 'Quantity sold'; +$_MODULE['<{statsproduct}prestashop>statsproduct_844c29394eea07066bb2efefc35784ec'] = 'Average price'; +$_MODULE['<{statsproduct}prestashop>statsproduct_818f7defe18dbc97da82d054831df2ad'] = 'Click on a product to access its statistics!'; +$_MODULE['<{statsproduct}prestashop>statsproduct_0173374ac20f5843d58b553d5b226ef6'] = 'Choose a category'; +$_MODULE['<{statsproduct}prestashop>statsproduct_b1c94ca2fbc3e78fc30069c8d0f01680'] = 'All'; +$_MODULE['<{statsproduct}prestashop>statsproduct_6ccf03bc05e4b749b74b5d577c7e7d3a'] = 'Products available'; +$_MODULE['<{statsproduct}prestashop>statsproduct_63d5049791d9d79d86e9a108b0a999ca'] = 'Reference'; +$_MODULE['<{statsproduct}prestashop>statsproduct_49ee3087348e8d44e1feda1917443987'] = 'Name'; +$_MODULE['<{statsproduct}prestashop>statsproduct_7bd5825a187064017975513b95d7f7de'] = 'Available quantity for sale'; +$_MODULE['<{statsproduct}prestashop>statsproduct_e22269bb51f9f2394e148716babbafbb'] = 'Popularity'; +$_MODULE['<{statsproduct}prestashop>statsproduct_5e9613e58f3bdbc89b1fef07274c0877'] = 'Visits (x100)'; +$_MODULE['<{statsproduct}prestashop>statsproduct_287234a1ff35a314b5b6bc4e5828e745'] = 'Attributes'; +$_MODULE['<{statsproduct}prestashop>statsproduct_27ce7f8b5623b2e2df568d64cf051607'] = 'Stock'; + + +return $_MODULE; diff --git a/modules/statsproduct/translations/tw.php b/modules/statsproduct/translations/tw.php new file mode 100644 index 000000000..1d04551f0 --- /dev/null +++ b/modules/statsproduct/translations/tw.php @@ -0,0 +1,40 @@ +statsproduct_78e454064a7d3a7755a011a3b79f31a7'] = '產品資訊'; +$_MODULE['<{statsproduct}prestashop>statsproduct_6602bbeb2956c035fb4cb5e844a4861b'] = '導引'; +$_MODULE['<{statsproduct}prestashop>statsproduct_f083d0403991f2b0ae72ea8782518f36'] = '購買次數和瀏覽次數比較'; +$_MODULE['<{statsproduct}prestashop>statsproduct_6e13e61b8535a66feb27d285f5c42855'] = '在選擇了分類、產品後,會顯示資訊圖表'; +$_MODULE['<{statsproduct}prestashop>statsproduct_6734b1d16e064d64d9ea4affaed74cc7'] = '如果您發現一個商品經常被訂購但是瀏覽次數不多,您應該將它放在前台比較醒目的位置。'; +$_MODULE['<{statsproduct}prestashop>statsproduct_3ec365dd533ddb7ef3d1c111186ce872'] = '詳細資料'; +$_MODULE['<{statsproduct}prestashop>statsproduct_8041d874fe39d54c6e78156c27341c85'] = '瀏覽共計'; +$_MODULE['<{statsproduct}prestashop>statsproduct_d311128c6b9f34f85e6b0e29bcbcd165'] = '轉換率'; +$_MODULE['<{statsproduct}prestashop>statsproduct_998e4c5c80f27dec552e99dfed34889a'] = 'CSV輸出'; +$_MODULE['<{statsproduct}prestashop>statsproduct_c90b9dca2d3f5bb6e0d0bdceac8a631d'] = '售出功能分佈'; +$_MODULE['<{statsproduct}prestashop>statsproduct_11ff9f68afb6b8b5b8eda218d7c83a65'] = '銷售'; +$_MODULE['<{statsproduct}prestashop>statsproduct_44749712dbec183e983dcd78a7736c41'] = '日期'; +$_MODULE['<{statsproduct}prestashop>statsproduct_a240fa27925a635b08dc28c9e4f9216d'] = '訂單'; +$_MODULE['<{statsproduct}prestashop>statsproduct_ce26601dac0dea138b7295f02b7620a7'] = '客戶'; +$_MODULE['<{statsproduct}prestashop>statsproduct_f2bbdf9f72c085adc4d0404e370f0f4c'] = '屬性'; +$_MODULE['<{statsproduct}prestashop>statsproduct_694e8d1f2ee056f98ee488bdc4982d73'] = '數量'; +$_MODULE['<{statsproduct}prestashop>statsproduct_3601146c4e948c32b6424d2c0a7f0118'] = '價格'; +$_MODULE['<{statsproduct}prestashop>statsproduct_87017c9259838bb0918a2ab4f96016c0'] = '交叉銷售'; +$_MODULE['<{statsproduct}prestashop>statsproduct_df644ae155e79abf54175bd15d75f363'] = '產品名稱'; +$_MODULE['<{statsproduct}prestashop>statsproduct_2a0440eec72540c5b30d9199c01f348c'] = '已銷售數量'; +$_MODULE['<{statsproduct}prestashop>statsproduct_844c29394eea07066bb2efefc35784ec'] = '平均價格'; +$_MODULE['<{statsproduct}prestashop>statsproduct_818f7defe18dbc97da82d054831df2ad'] = '點選一個產品查看它的統計'; +$_MODULE['<{statsproduct}prestashop>statsproduct_0173374ac20f5843d58b553d5b226ef6'] = '選擇一個分類'; +$_MODULE['<{statsproduct}prestashop>statsproduct_b1c94ca2fbc3e78fc30069c8d0f01680'] = '全部'; +$_MODULE['<{statsproduct}prestashop>statsproduct_6ccf03bc05e4b749b74b5d577c7e7d3a'] = '可用產品'; +$_MODULE['<{statsproduct}prestashop>statsproduct_63d5049791d9d79d86e9a108b0a999ca'] = '編號'; +$_MODULE['<{statsproduct}prestashop>statsproduct_49ee3087348e8d44e1feda1917443987'] = '名稱'; +$_MODULE['<{statsproduct}prestashop>statsproduct_7bd5825a187064017975513b95d7f7de'] = '可供銷售數量'; +$_MODULE['<{statsproduct}prestashop>statsproduct_e22269bb51f9f2394e148716babbafbb'] = '熱門度'; +$_MODULE['<{statsproduct}prestashop>statsproduct_5e9613e58f3bdbc89b1fef07274c0877'] = '訪問(x100)'; +$_MODULE['<{statsproduct}prestashop>statsproduct_287234a1ff35a314b5b6bc4e5828e745'] = '屬性'; +$_MODULE['<{statsproduct}prestashop>statsproduct_27ce7f8b5623b2e2df568d64cf051607'] = '庫存'; + + +return $_MODULE; diff --git a/modules/trackingfront/CHANGELOG.txt b/modules/trackingfront/CHANGELOG.txt index 71921ff14..085e2473b 100644 --- a/modules/trackingfront/CHANGELOG.txt +++ b/modules/trackingfront/CHANGELOG.txt @@ -1,3 +1,12 @@ +------------------------------ +# V1.8.3 to V1.8.4 +------------------------------ + +## Improved/Changed Features: + +* [CO] : Updated with latest PS version - 1.6.1.23. + + 2014-03-27 17:33:35 +0100 / MO : min ps_versions_compliancy modified 2014-03-25 11:55:41 +0100 Merge branch 'master' of https://github.com/PrestaShop/trackingfront 2014-03-24 16:08:37 +0100 // Typos. diff --git a/modules/trackingfront/Readme.md b/modules/trackingfront/Readme.md deleted file mode 100644 index 260eaccd1..000000000 --- a/modules/trackingfront/Readme.md +++ /dev/null @@ -1,37 +0,0 @@ -# Tracking - Front office - -## About - -Enables your affiliates to access their own statistics. See Stats/Referrers. - -## Contributing - -PrestaShop modules are open-source extensions to the PrestaShop e-commerce solution. Everyone is welcome and even encouraged to contribute with their own improvements. - -### Requirements - -Contributors **must** follow the following rules: - -* **Make your Pull Request on the "dev" branch**, NOT the "master" branch. -* Do not update the module's version number. -* Follow [the coding standards][1]. - -### Process in details - -Contributors wishing to edit a module's files should follow the following process: - -1. Create your GitHub account, if you do not have one already. -2. Fork the trackingfront project to your GitHub account. -3. Clone your fork to your local machine in the ```/modules``` directory of your PrestaShop installation. -4. Create a branch in your local clone of the module for your changes. -5. Change the files in your branch. Be sure to follow [the coding standards][1]! -6. Push your changed branch to your fork in your GitHub account. -7. Create a pull request for your changes **on the _'dev'_ branch** of the module's project. Be sure to follow [the commit message norm][2] in your pull request. If you need help to make a pull request, read the [Github help page about creating pull requests][3]. -8. Wait for one of the core developers either to include your change in the codebase, or to comment on possible improvements you should make to your code. - -That's it: you have contributed to this open-source project! Congratulations! - -[1]: http://doc.prestashop.com/display/PS16/Coding+Standards -[2]: http://doc.prestashop.com/display/PS16/How+to+write+a+commit+message -[3]: https://help.github.com/articles/using-pull-requests - diff --git a/modules/trackingfront/config.xml b/modules/trackingfront/config.xml deleted file mode 100644 index b2181a180..000000000 --- a/modules/trackingfront/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - trackingfront - - - - - - 0 - 0 - - \ No newline at end of file diff --git a/modules/trackingfront/index.php b/modules/trackingfront/index.php index 9f6ab7b95..531cab52a 100644 --- a/modules/trackingfront/index.php +++ b/modules/trackingfront/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/trackingfront/js/index.php b/modules/trackingfront/js/index.php index 09c88ff95..c98ece472 100644 --- a/modules/trackingfront/js/index.php +++ b/modules/trackingfront/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/trackingfront/js/trackingfront.js b/modules/trackingfront/js/trackingfront.js index bc778059b..0113cdcf3 100644 --- a/modules/trackingfront/js/trackingfront.js +++ b/modules/trackingfront/js/trackingfront.js @@ -1,5 +1,5 @@ /* - * 2007-2014 PrestaShop + * 2007-2016 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA - * @copyright 2007-2014 PrestaShop SA + * @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/trackingfront/stats.php b/modules/trackingfront/stats.php index f4cabb45e..5f44b9cfb 100644 --- a/modules/trackingfront/stats.php +++ b/modules/trackingfront/stats.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/trackingfront/trackingfront.php b/modules/trackingfront/trackingfront.php index acb9647cb..e6a17bfed 100644 --- a/modules/trackingfront/trackingfront.php +++ b/modules/trackingfront/trackingfront.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -33,14 +33,14 @@ class TrackingFront extends Module { $this->name = 'trackingfront'; $this->tab = 'shipping_logistics'; - $this->version = '1.8.3'; + $this->version = '1.8.4'; $this->author = 'PrestaShop'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('Tracking - Front office'); - $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.6.99.99'); $this->description = $this->l('Enables your affiliates to access their own statistics. See Stats/Referrers.'); } diff --git a/modules/trackingfront/translations/ag.php b/modules/trackingfront/translations/ag.php deleted file mode 100644 index 4bbabcfb6..000000000 --- a/modules/trackingfront/translations/ag.php +++ /dev/null @@ -1,55 +0,0 @@ -trackingfront_e8a827db4eca37d2c6cdef8e406f6fa9'] = 'Tracking-Front office'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d565f36c06949442a4eb998354376c5b'] = 'Activa tus afiliados para acceder a tus propias estadísticas. Véase Estadísticas/Referidos.'; -$_MODULE['<{trackingfront}prestashop>trackingfront_8f5ac7793b2547cd025a7335f4934d26'] = 'El login es necesario'; -$_MODULE['<{trackingfront}prestashop>trackingfront_6f658a5bbec855ca5ae4ef4c94eb5d43'] = 'login no válido'; -$_MODULE['<{trackingfront}prestashop>trackingfront_962c91be4b1056412febf0c272760814'] = 'se necesita una contraseña'; -$_MODULE['<{trackingfront}prestashop>trackingfront_703c2b69e5d9f7072b7db5338214448b'] = 'contraseña no válida'; -$_MODULE['<{trackingfront}prestashop>trackingfront_c41c77e4dddc04b1e0752a6050ae5656'] = 'autentificación errónea'; -$_MODULE['<{trackingfront}prestashop>trackingfront_10965b2740f42ad4887932c35cee26ab'] = 'Visitantes únicos'; -$_MODULE['<{trackingfront}prestashop>trackingfront_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitantes'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d7e637a6e9ff116de2fa89551240a94d'] = 'visitas'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d3139f39f1ad6324c80a9ddd50cc7867'] = 'Páginas vistas'; -$_MODULE['<{trackingfront}prestashop>trackingfront_a28735af01fbb1e35371cb120985ac47'] = 'Registros'; -$_MODULE['<{trackingfront}prestashop>trackingfront_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Pedidos'; -$_MODULE['<{trackingfront}prestashop>trackingfront_2e27c4006a026eacfc1f85b41bf9bc4c'] = 'Tarifa base'; -$_MODULE['<{trackingfront}prestashop>trackingfront_86190054fc32554662ffbb12b717e8d0'] = 'Porcentaje de tarifa'; -$_MODULE['<{trackingfront}prestashop>trackingfront_51d53cd2ecdae6b5dd3397875197e898'] = 'Tarifa por clic'; -$_MODULE['<{trackingfront}prestashop>trackingfront_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Ventas'; -$_MODULE['<{trackingfront}prestashop>trackingfront_da9cb586c6689202ca65cd77fd9b84ef'] = 'Carrito medio'; -$_MODULE['<{trackingfront}prestashop>trackingfront_200f5c9c419f0a53d5d361eff7b33abc'] = '% de registros'; -$_MODULE['<{trackingfront}prestashop>trackingfront_89741aae300253f498b0993fa678fa18'] = '% de pedidos'; -$_MODULE['<{trackingfront}prestashop>account_8954e140059f7b2544469f40161ba507'] = 'Espacio afiliación'; -$_MODULE['<{trackingfront}prestashop>account_c87aacf5673fada1108c9f809d354311'] = 'Cerrar sesión'; -$_MODULE['<{trackingfront}prestashop>account_1dd1c5fb7f25cd41b291d43a89e3aefd'] = 'Hoy'; -$_MODULE['<{trackingfront}prestashop>account_7cbb885aa1164b390a0bc050a64e1812'] = 'Mes'; -$_MODULE['<{trackingfront}prestashop>account_537c66b24ef5c83b7382cdc3f34885f2'] = 'Año'; -$_MODULE['<{trackingfront}prestashop>account_1e6d57e813355689e9c77e947d73ad8f'] = 'Desde:'; -$_MODULE['<{trackingfront}prestashop>account_33caa076f23f453dd4061726f3706325'] = 'Hasta:'; -$_MODULE['<{trackingfront}prestashop>account_5fa8aff419bb8e614b178cf1563ac13a'] = 'Mostrar detalles del producto'; -$_MODULE['<{trackingfront}prestashop>account_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; -$_MODULE['<{trackingfront}prestashop>account_49ee3087348e8d44e1feda1917443987'] = 'Nombre'; -$_MODULE['<{trackingfront}prestashop>account_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitantes'; -$_MODULE['<{trackingfront}prestashop>account_d7e637a6e9ff116de2fa89551240a94d'] = 'visitas'; -$_MODULE['<{trackingfront}prestashop>account_453aceb005ceaf54a47da15fee8b2a26'] = 'Páginas'; -$_MODULE['<{trackingfront}prestashop>account_591411cc8927851db2002208676d8330'] = 'Clientes'; -$_MODULE['<{trackingfront}prestashop>account_a9841e29f2c8180709b16cd2a13c55fe'] = 'Ped.'; -$_MODULE['<{trackingfront}prestashop>account_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Ventas'; -$_MODULE['<{trackingfront}prestashop>account_a85eba4c6c699122b2bb1387ea4813ad'] = 'Carrito:'; -$_MODULE['<{trackingfront}prestashop>account_43005b13d452a4ad6f2d8e29b499c55a'] = '% de registros'; -$_MODULE['<{trackingfront}prestashop>account_e14c8640d236365d11a060832b219a11'] = 'pedido Reg.'; -$_MODULE['<{trackingfront}prestashop>account_316853cc3718335f11c048e33b9be98a'] = 'Clic'; -$_MODULE['<{trackingfront}prestashop>account_b450fdef2453e92c31263a70f14fbd7b'] = '¤'; -$_MODULE['<{trackingfront}prestashop>account_0bcef9c45bd8a48eda1b26eb0c61c869'] = '%'; -$_MODULE['<{trackingfront}prestashop>header_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Afiliación'; -$_MODULE['<{trackingfront}prestashop>login_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Afiliación'; -$_MODULE['<{trackingfront}prestashop>login_8954e140059f7b2544469f40161ba507'] = 'Espacio afiliación'; -$_MODULE['<{trackingfront}prestashop>login_b6d4223e60986fa4c9af77ee5f7149c5'] = 'Iniciar sesión'; -$_MODULE['<{trackingfront}prestashop>login_dc647eb65e6711e155375218212b3964'] = 'Contraseña'; - - -return $_MODULE; diff --git a/modules/trackingfront/translations/ar.php b/modules/trackingfront/translations/ar.php deleted file mode 100644 index 5c981aae5..000000000 --- a/modules/trackingfront/translations/ar.php +++ /dev/null @@ -1,41 +0,0 @@ -trackingfront_c41c77e4dddc04b1e0752a6050ae5656'] = 'البريد الإلكتروني أو كلمة المرور غير صحيحة'; -$_MODULE['<{trackingfront}prestashop>trackingfront_10965b2740f42ad4887932c35cee26ab'] = 'فريدة الزوار'; -$_MODULE['<{trackingfront}prestashop>trackingfront_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'الزوار'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d7e637a6e9ff116de2fa89551240a94d'] = 'الزيارات'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d3139f39f1ad6324c80a9ddd50cc7867'] = 'صفحات شوهدت'; -$_MODULE['<{trackingfront}prestashop>trackingfront_a28735af01fbb1e35371cb120985ac47'] = 'التسجيلات'; -$_MODULE['<{trackingfront}prestashop>trackingfront_7442e29d7d53e549b78d93c46b8cdcfc'] = 'الطلبات'; -$_MODULE['<{trackingfront}prestashop>trackingfront_2e27c4006a026eacfc1f85b41bf9bc4c'] = 'قاعدة الرسم'; -$_MODULE['<{trackingfront}prestashop>trackingfront_86190054fc32554662ffbb12b717e8d0'] = 'الرسم في المئة'; -$_MODULE['<{trackingfront}prestashop>trackingfront_51d53cd2ecdae6b5dd3397875197e898'] = 'فوق الرسم'; -$_MODULE['<{trackingfront}prestashop>trackingfront_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'المبيعات'; -$_MODULE['<{trackingfront}prestashop>trackingfront_200f5c9c419f0a53d5d361eff7b33abc'] = 'تسجيل معدل'; -$_MODULE['<{trackingfront}prestashop>trackingfront_89741aae300253f498b0993fa678fa18'] = 'معدل طلب الشراء'; -$_MODULE['<{trackingfront}prestashop>account_c87aacf5673fada1108c9f809d354311'] = 'تسجيل خروج'; -$_MODULE['<{trackingfront}prestashop>account_1dd1c5fb7f25cd41b291d43a89e3aefd'] = 'اليوم'; -$_MODULE['<{trackingfront}prestashop>account_7cbb885aa1164b390a0bc050a64e1812'] = 'الشهر'; -$_MODULE['<{trackingfront}prestashop>account_537c66b24ef5c83b7382cdc3f34885f2'] = 'السنة'; -$_MODULE['<{trackingfront}prestashop>account_1e6d57e813355689e9c77e947d73ad8f'] = 'من'; -$_MODULE['<{trackingfront}prestashop>account_33caa076f23f453dd4061726f3706325'] = 'إلى:'; -$_MODULE['<{trackingfront}prestashop>account_b718adec73e04ce3ec720dd11a06a308'] = 'الرقم التعريفي'; -$_MODULE['<{trackingfront}prestashop>account_49ee3087348e8d44e1feda1917443987'] = 'الاسم'; -$_MODULE['<{trackingfront}prestashop>account_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'الزوار'; -$_MODULE['<{trackingfront}prestashop>account_d7e637a6e9ff116de2fa89551240a94d'] = 'الزيارات'; -$_MODULE['<{trackingfront}prestashop>account_453aceb005ceaf54a47da15fee8b2a26'] = 'الصفحات'; -$_MODULE['<{trackingfront}prestashop>account_591411cc8927851db2002208676d8330'] = 'ليموزين.'; -$_MODULE['<{trackingfront}prestashop>account_a9841e29f2c8180709b16cd2a13c55fe'] = 'ORD.'; -$_MODULE['<{trackingfront}prestashop>account_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'المبيعات'; -$_MODULE['<{trackingfront}prestashop>account_a85eba4c6c699122b2bb1387ea4813ad'] = 'سلة الشراء'; -$_MODULE['<{trackingfront}prestashop>account_43005b13d452a4ad6f2d8e29b499c55a'] = 'ليموزين. معدل'; -$_MODULE['<{trackingfront}prestashop>account_316853cc3718335f11c048e33b9be98a'] = 'فوق'; -$_MODULE['<{trackingfront}prestashop>account_0bcef9c45bd8a48eda1b26eb0c61c869'] = '٪'; -$_MODULE['<{trackingfront}prestashop>login_b6d4223e60986fa4c9af77ee5f7149c5'] = 'تسجيل الدخول'; -$_MODULE['<{trackingfront}prestashop>login_dc647eb65e6711e155375218212b3964'] = 'كلمة المرور'; - - -return $_MODULE; diff --git a/modules/trackingfront/translations/bg.php b/modules/trackingfront/translations/bg.php deleted file mode 100644 index c18618035..000000000 --- a/modules/trackingfront/translations/bg.php +++ /dev/null @@ -1,55 +0,0 @@ -trackingfront_e8a827db4eca37d2c6cdef8e406f6fa9'] = 'Проследяване - Потребителски профил'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d565f36c06949442a4eb998354376c5b'] = 'Позволява достъп на партньорите Ви до тяхната статистика. Вижте Статистики/Реферали.'; -$_MODULE['<{trackingfront}prestashop>trackingfront_8f5ac7793b2547cd025a7335f4934d26'] = 'трябва да влезете'; -$_MODULE['<{trackingfront}prestashop>trackingfront_6f658a5bbec855ca5ae4ef4c94eb5d43'] = 'невалидно влизане'; -$_MODULE['<{trackingfront}prestashop>trackingfront_962c91be4b1056412febf0c272760814'] = 'изисква се парола'; -$_MODULE['<{trackingfront}prestashop>trackingfront_703c2b69e5d9f7072b7db5338214448b'] = 'невалидна парола'; -$_MODULE['<{trackingfront}prestashop>trackingfront_c41c77e4dddc04b1e0752a6050ae5656'] = 'неуспешно удостоверяване'; -$_MODULE['<{trackingfront}prestashop>trackingfront_10965b2740f42ad4887932c35cee26ab'] = 'Уникални посетители'; -$_MODULE['<{trackingfront}prestashop>trackingfront_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Посетители'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d7e637a6e9ff116de2fa89551240a94d'] = 'Посещения'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d3139f39f1ad6324c80a9ddd50cc7867'] = 'Разгледани страници'; -$_MODULE['<{trackingfront}prestashop>trackingfront_a28735af01fbb1e35371cb120985ac47'] = 'Регистрации'; -$_MODULE['<{trackingfront}prestashop>trackingfront_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Поръчки'; -$_MODULE['<{trackingfront}prestashop>trackingfront_2e27c4006a026eacfc1f85b41bf9bc4c'] = 'Базова такса'; -$_MODULE['<{trackingfront}prestashop>trackingfront_86190054fc32554662ffbb12b717e8d0'] = 'Процентна такса'; -$_MODULE['<{trackingfront}prestashop>trackingfront_51d53cd2ecdae6b5dd3397875197e898'] = 'Такса на клик'; -$_MODULE['<{trackingfront}prestashop>trackingfront_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Продажби'; -$_MODULE['<{trackingfront}prestashop>trackingfront_da9cb586c6689202ca65cd77fd9b84ef'] = 'Средно за колички'; -$_MODULE['<{trackingfront}prestashop>trackingfront_200f5c9c419f0a53d5d361eff7b33abc'] = 'Ниво на регистрациите'; -$_MODULE['<{trackingfront}prestashop>trackingfront_89741aae300253f498b0993fa678fa18'] = 'Поръчки рейтинг'; -$_MODULE['<{trackingfront}prestashop>account_8954e140059f7b2544469f40161ba507'] = 'Партньорско пространство'; -$_MODULE['<{trackingfront}prestashop>account_c87aacf5673fada1108c9f809d354311'] = 'Изход'; -$_MODULE['<{trackingfront}prestashop>account_1dd1c5fb7f25cd41b291d43a89e3aefd'] = 'Днес'; -$_MODULE['<{trackingfront}prestashop>account_7cbb885aa1164b390a0bc050a64e1812'] = 'Месец'; -$_MODULE['<{trackingfront}prestashop>account_537c66b24ef5c83b7382cdc3f34885f2'] = 'Година'; -$_MODULE['<{trackingfront}prestashop>account_1e6d57e813355689e9c77e947d73ad8f'] = 'От:'; -$_MODULE['<{trackingfront}prestashop>account_33caa076f23f453dd4061726f3706325'] = 'До:'; -$_MODULE['<{trackingfront}prestashop>account_5fa8aff419bb8e614b178cf1563ac13a'] = 'Показване на подробности за продуктите'; -$_MODULE['<{trackingfront}prestashop>account_b718adec73e04ce3ec720dd11a06a308'] = 'ИД'; -$_MODULE['<{trackingfront}prestashop>account_49ee3087348e8d44e1feda1917443987'] = 'Име'; -$_MODULE['<{trackingfront}prestashop>account_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Посетители'; -$_MODULE['<{trackingfront}prestashop>account_d7e637a6e9ff116de2fa89551240a94d'] = 'Посещения'; -$_MODULE['<{trackingfront}prestashop>account_453aceb005ceaf54a47da15fee8b2a26'] = 'Страници'; -$_MODULE['<{trackingfront}prestashop>account_591411cc8927851db2002208676d8330'] = 'Рег.'; -$_MODULE['<{trackingfront}prestashop>account_a9841e29f2c8180709b16cd2a13c55fe'] = 'Пор.'; -$_MODULE['<{trackingfront}prestashop>account_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Продажби'; -$_MODULE['<{trackingfront}prestashop>account_a85eba4c6c699122b2bb1387ea4813ad'] = 'Количка'; -$_MODULE['<{trackingfront}prestashop>account_43005b13d452a4ad6f2d8e29b499c55a'] = 'Рег. рейтинг'; -$_MODULE['<{trackingfront}prestashop>account_e14c8640d236365d11a060832b219a11'] = 'Ниво на поръчки'; -$_MODULE['<{trackingfront}prestashop>account_316853cc3718335f11c048e33b9be98a'] = 'Клик'; -$_MODULE['<{trackingfront}prestashop>account_b450fdef2453e92c31263a70f14fbd7b'] = '¤'; -$_MODULE['<{trackingfront}prestashop>account_0bcef9c45bd8a48eda1b26eb0c61c869'] = '%'; -$_MODULE['<{trackingfront}prestashop>header_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Партньорство'; -$_MODULE['<{trackingfront}prestashop>login_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Партньорство'; -$_MODULE['<{trackingfront}prestashop>login_8954e140059f7b2544469f40161ba507'] = 'Партньорско пространство'; -$_MODULE['<{trackingfront}prestashop>login_b6d4223e60986fa4c9af77ee5f7149c5'] = 'Вход'; -$_MODULE['<{trackingfront}prestashop>login_dc647eb65e6711e155375218212b3964'] = 'Парола'; - - -return $_MODULE; diff --git a/modules/trackingfront/translations/br.php b/modules/trackingfront/translations/br.php deleted file mode 100644 index 84a1bee36..000000000 --- a/modules/trackingfront/translations/br.php +++ /dev/null @@ -1,55 +0,0 @@ -trackingfront_e8a827db4eca37d2c6cdef8e406f6fa9'] = 'Rastreamento - Loja'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d565f36c06949442a4eb998354376c5b'] = 'Permite a seus afiliados acessar suas próprias estatísticas. Ver Estatísticas > Sites de Referência.'; -$_MODULE['<{trackingfront}prestashop>trackingfront_8f5ac7793b2547cd025a7335f4934d26'] = 'Login é obrigatório'; -$_MODULE['<{trackingfront}prestashop>trackingfront_6f658a5bbec855ca5ae4ef4c94eb5d43'] = 'Login inválido'; -$_MODULE['<{trackingfront}prestashop>trackingfront_962c91be4b1056412febf0c272760814'] = 'senha requerida'; -$_MODULE['<{trackingfront}prestashop>trackingfront_703c2b69e5d9f7072b7db5338214448b'] = 'senha inválida'; -$_MODULE['<{trackingfront}prestashop>trackingfront_c41c77e4dddc04b1e0752a6050ae5656'] = 'autenticação falhou'; -$_MODULE['<{trackingfront}prestashop>trackingfront_10965b2740f42ad4887932c35cee26ab'] = 'Visitante únicos'; -$_MODULE['<{trackingfront}prestashop>trackingfront_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitantes'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d7e637a6e9ff116de2fa89551240a94d'] = 'Visitas'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d3139f39f1ad6324c80a9ddd50cc7867'] = 'Páginas vistas'; -$_MODULE['<{trackingfront}prestashop>trackingfront_a28735af01fbb1e35371cb120985ac47'] = 'Cadastros'; -$_MODULE['<{trackingfront}prestashop>trackingfront_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Pedidos'; -$_MODULE['<{trackingfront}prestashop>trackingfront_2e27c4006a026eacfc1f85b41bf9bc4c'] = 'Tarifa básica'; -$_MODULE['<{trackingfront}prestashop>trackingfront_86190054fc32554662ffbb12b717e8d0'] = 'Taxa de porcentagem'; -$_MODULE['<{trackingfront}prestashop>trackingfront_51d53cd2ecdae6b5dd3397875197e898'] = 'Tarifa por clique'; -$_MODULE['<{trackingfront}prestashop>trackingfront_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Vendas'; -$_MODULE['<{trackingfront}prestashop>trackingfront_da9cb586c6689202ca65cd77fd9b84ef'] = 'Média do carrinho'; -$_MODULE['<{trackingfront}prestashop>trackingfront_200f5c9c419f0a53d5d361eff7b33abc'] = 'Número de cadastros'; -$_MODULE['<{trackingfront}prestashop>trackingfront_89741aae300253f498b0993fa678fa18'] = 'Número de compras'; -$_MODULE['<{trackingfront}prestashop>account_8954e140059f7b2544469f40161ba507'] = 'Espaço de Afiliação'; -$_MODULE['<{trackingfront}prestashop>account_c87aacf5673fada1108c9f809d354311'] = 'Sair'; -$_MODULE['<{trackingfront}prestashop>account_1dd1c5fb7f25cd41b291d43a89e3aefd'] = 'Hoje'; -$_MODULE['<{trackingfront}prestashop>account_7cbb885aa1164b390a0bc050a64e1812'] = 'Mês'; -$_MODULE['<{trackingfront}prestashop>account_537c66b24ef5c83b7382cdc3f34885f2'] = 'Ano'; -$_MODULE['<{trackingfront}prestashop>account_1e6d57e813355689e9c77e947d73ad8f'] = 'De:'; -$_MODULE['<{trackingfront}prestashop>account_33caa076f23f453dd4061726f3706325'] = 'Para:'; -$_MODULE['<{trackingfront}prestashop>account_5fa8aff419bb8e614b178cf1563ac13a'] = 'Mostrar detalhes dos produtos'; -$_MODULE['<{trackingfront}prestashop>account_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; -$_MODULE['<{trackingfront}prestashop>account_49ee3087348e8d44e1feda1917443987'] = 'Nome'; -$_MODULE['<{trackingfront}prestashop>account_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitantes'; -$_MODULE['<{trackingfront}prestashop>account_d7e637a6e9ff116de2fa89551240a94d'] = 'Visitas'; -$_MODULE['<{trackingfront}prestashop>account_453aceb005ceaf54a47da15fee8b2a26'] = 'Páginas'; -$_MODULE['<{trackingfront}prestashop>account_591411cc8927851db2002208676d8330'] = 'Cad.'; -$_MODULE['<{trackingfront}prestashop>account_a9841e29f2c8180709b16cd2a13c55fe'] = 'Com.'; -$_MODULE['<{trackingfront}prestashop>account_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Vendas'; -$_MODULE['<{trackingfront}prestashop>account_a85eba4c6c699122b2bb1387ea4813ad'] = 'Carrinho'; -$_MODULE['<{trackingfront}prestashop>account_43005b13d452a4ad6f2d8e29b499c55a'] = 'Número de Cad.'; -$_MODULE['<{trackingfront}prestashop>account_e14c8640d236365d11a060832b219a11'] = 'Número de com.'; -$_MODULE['<{trackingfront}prestashop>account_316853cc3718335f11c048e33b9be98a'] = 'Clique'; -$_MODULE['<{trackingfront}prestashop>account_b450fdef2453e92c31263a70f14fbd7b'] = '¤'; -$_MODULE['<{trackingfront}prestashop>account_0bcef9c45bd8a48eda1b26eb0c61c869'] = '%'; -$_MODULE['<{trackingfront}prestashop>header_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Afiliação'; -$_MODULE['<{trackingfront}prestashop>login_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Afiliação'; -$_MODULE['<{trackingfront}prestashop>login_8954e140059f7b2544469f40161ba507'] = 'Espaço de Afiliação'; -$_MODULE['<{trackingfront}prestashop>login_b6d4223e60986fa4c9af77ee5f7149c5'] = 'Entrar'; -$_MODULE['<{trackingfront}prestashop>login_dc647eb65e6711e155375218212b3964'] = 'Senha'; - - -return $_MODULE; diff --git a/modules/trackingfront/translations/ca.php b/modules/trackingfront/translations/ca.php deleted file mode 100644 index 9bb03bc39..000000000 --- a/modules/trackingfront/translations/ca.php +++ /dev/null @@ -1,55 +0,0 @@ -trackingfront_e8a827db4eca37d2c6cdef8e406f6fa9'] = 'Seguiment - Tauler del web públic'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d565f36c06949442a4eb998354376c5b'] = 'Permeteu als vostres afiliats accedir a les seves estadístiques. Veieu Estadístiques/Referències.'; -$_MODULE['<{trackingfront}prestashop>trackingfront_8f5ac7793b2547cd025a7335f4934d26'] = 'Inici de sessió necessari'; -$_MODULE['<{trackingfront}prestashop>trackingfront_6f658a5bbec855ca5ae4ef4c94eb5d43'] = 'Inici de sessió no vàlid'; -$_MODULE['<{trackingfront}prestashop>trackingfront_962c91be4b1056412febf0c272760814'] = 'es necessita contrasenya'; -$_MODULE['<{trackingfront}prestashop>trackingfront_703c2b69e5d9f7072b7db5338214448b'] = 'contrasenya no vàlida'; -$_MODULE['<{trackingfront}prestashop>trackingfront_c41c77e4dddc04b1e0752a6050ae5656'] = 'Error d\'autenticació'; -$_MODULE['<{trackingfront}prestashop>trackingfront_10965b2740f42ad4887932c35cee26ab'] = 'Visitants únics'; -$_MODULE['<{trackingfront}prestashop>trackingfront_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitants'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d7e637a6e9ff116de2fa89551240a94d'] = 'Visites'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d3139f39f1ad6324c80a9ddd50cc7867'] = 'Pàgines vistes'; -$_MODULE['<{trackingfront}prestashop>trackingfront_a28735af01fbb1e35371cb120985ac47'] = 'Registres'; -$_MODULE['<{trackingfront}prestashop>trackingfront_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Comandes'; -$_MODULE['<{trackingfront}prestashop>trackingfront_2e27c4006a026eacfc1f85b41bf9bc4c'] = 'Tarifa de base'; -$_MODULE['<{trackingfront}prestashop>trackingfront_86190054fc32554662ffbb12b717e8d0'] = 'Percentatge de tarifa'; -$_MODULE['<{trackingfront}prestashop>trackingfront_51d53cd2ecdae6b5dd3397875197e898'] = 'Feu clic a la tarifa'; -$_MODULE['<{trackingfront}prestashop>trackingfront_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Vendes'; -$_MODULE['<{trackingfront}prestashop>trackingfront_da9cb586c6689202ca65cd77fd9b84ef'] = 'Mitjana del carret'; -$_MODULE['<{trackingfront}prestashop>trackingfront_200f5c9c419f0a53d5d361eff7b33abc'] = 'Taxa d\'inscripció'; -$_MODULE['<{trackingfront}prestashop>trackingfront_89741aae300253f498b0993fa678fa18'] = 'Taxa de comandes'; -$_MODULE['<{trackingfront}prestashop>account_8954e140059f7b2544469f40161ba507'] = 'Espai per a l\'afiliciació'; -$_MODULE['<{trackingfront}prestashop>account_c87aacf5673fada1108c9f809d354311'] = 'Tancar sessió'; -$_MODULE['<{trackingfront}prestashop>account_1dd1c5fb7f25cd41b291d43a89e3aefd'] = 'Avui'; -$_MODULE['<{trackingfront}prestashop>account_7cbb885aa1164b390a0bc050a64e1812'] = 'Mes'; -$_MODULE['<{trackingfront}prestashop>account_537c66b24ef5c83b7382cdc3f34885f2'] = 'Any'; -$_MODULE['<{trackingfront}prestashop>account_1e6d57e813355689e9c77e947d73ad8f'] = 'De:'; -$_MODULE['<{trackingfront}prestashop>account_33caa076f23f453dd4061726f3706325'] = 'A:'; -$_MODULE['<{trackingfront}prestashop>account_5fa8aff419bb8e614b178cf1563ac13a'] = 'Mostrar detalls del producte'; -$_MODULE['<{trackingfront}prestashop>account_b718adec73e04ce3ec720dd11a06a308'] = 'Identificació'; -$_MODULE['<{trackingfront}prestashop>account_49ee3087348e8d44e1feda1917443987'] = 'Nom'; -$_MODULE['<{trackingfront}prestashop>account_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitants'; -$_MODULE['<{trackingfront}prestashop>account_d7e637a6e9ff116de2fa89551240a94d'] = 'Visites'; -$_MODULE['<{trackingfront}prestashop>account_453aceb005ceaf54a47da15fee8b2a26'] = 'Pàgines'; -$_MODULE['<{trackingfront}prestashop>account_591411cc8927851db2002208676d8330'] = 'Reg.'; -$_MODULE['<{trackingfront}prestashop>account_a9841e29f2c8180709b16cd2a13c55fe'] = 'Com.'; -$_MODULE['<{trackingfront}prestashop>account_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Vendes'; -$_MODULE['<{trackingfront}prestashop>account_a85eba4c6c699122b2bb1387ea4813ad'] = 'Carret'; -$_MODULE['<{trackingfront}prestashop>account_43005b13d452a4ad6f2d8e29b499c55a'] = 'Rati Reg.'; -$_MODULE['<{trackingfront}prestashop>account_e14c8640d236365d11a060832b219a11'] = 'Rati Com.'; -$_MODULE['<{trackingfront}prestashop>account_316853cc3718335f11c048e33b9be98a'] = 'Clic'; -$_MODULE['<{trackingfront}prestashop>account_b450fdef2453e92c31263a70f14fbd7b'] = '¤'; -$_MODULE['<{trackingfront}prestashop>account_0bcef9c45bd8a48eda1b26eb0c61c869'] = '%'; -$_MODULE['<{trackingfront}prestashop>header_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Afiliació'; -$_MODULE['<{trackingfront}prestashop>login_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Afiliació'; -$_MODULE['<{trackingfront}prestashop>login_8954e140059f7b2544469f40161ba507'] = 'Espai per a l\'afiliciació'; -$_MODULE['<{trackingfront}prestashop>login_b6d4223e60986fa4c9af77ee5f7149c5'] = 'Entreu'; -$_MODULE['<{trackingfront}prestashop>login_dc647eb65e6711e155375218212b3964'] = 'Contrasenya'; - - -return $_MODULE; diff --git a/modules/trackingfront/translations/de.php b/modules/trackingfront/translations/de.php deleted file mode 100644 index d5c30f56b..000000000 --- a/modules/trackingfront/translations/de.php +++ /dev/null @@ -1,55 +0,0 @@ -trackingfront_e8a827db4eca37d2c6cdef8e406f6fa9'] = 'Tracking - Front Office'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d565f36c06949442a4eb998354376c5b'] = 'Ermöglichen Sie Ihren Partnern, auf ihre eigenen Statistiken zugreifen (vgl. Statistk/Referrer)'; -$_MODULE['<{trackingfront}prestashop>trackingfront_8f5ac7793b2547cd025a7335f4934d26'] = 'Anmeldung ist erforderlich'; -$_MODULE['<{trackingfront}prestashop>trackingfront_6f658a5bbec855ca5ae4ef4c94eb5d43'] = 'ungültige Anmeldung'; -$_MODULE['<{trackingfront}prestashop>trackingfront_962c91be4b1056412febf0c272760814'] = 'Passwort erforderlich'; -$_MODULE['<{trackingfront}prestashop>trackingfront_703c2b69e5d9f7072b7db5338214448b'] = 'ungültiges Passwort'; -$_MODULE['<{trackingfront}prestashop>trackingfront_c41c77e4dddc04b1e0752a6050ae5656'] = 'Authentifizierung fehlgeschlagen'; -$_MODULE['<{trackingfront}prestashop>trackingfront_10965b2740f42ad4887932c35cee26ab'] = 'Einmalige Besucher'; -$_MODULE['<{trackingfront}prestashop>trackingfront_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Besucher'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d7e637a6e9ff116de2fa89551240a94d'] = 'Besuche'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d3139f39f1ad6324c80a9ddd50cc7867'] = 'Seitenaufrufe'; -$_MODULE['<{trackingfront}prestashop>trackingfront_a28735af01fbb1e35371cb120985ac47'] = 'Anmeldungen'; -$_MODULE['<{trackingfront}prestashop>trackingfront_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Bestellungen'; -$_MODULE['<{trackingfront}prestashop>trackingfront_2e27c4006a026eacfc1f85b41bf9bc4c'] = 'Grundgebühr'; -$_MODULE['<{trackingfront}prestashop>trackingfront_86190054fc32554662ffbb12b717e8d0'] = 'Anteilige Gebühr'; -$_MODULE['<{trackingfront}prestashop>trackingfront_51d53cd2ecdae6b5dd3397875197e898'] = 'Klick-Gebühr'; -$_MODULE['<{trackingfront}prestashop>trackingfront_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Umsatz'; -$_MODULE['<{trackingfront}prestashop>trackingfront_da9cb586c6689202ca65cd77fd9b84ef'] = 'Durchschnittlicher Warenkorb'; -$_MODULE['<{trackingfront}prestashop>trackingfront_200f5c9c419f0a53d5d361eff7b33abc'] = 'Anmeldezahlen'; -$_MODULE['<{trackingfront}prestashop>trackingfront_89741aae300253f498b0993fa678fa18'] = 'Bestellrate'; -$_MODULE['<{trackingfront}prestashop>account_8954e140059f7b2544469f40161ba507'] = 'Mitgliederbereich'; -$_MODULE['<{trackingfront}prestashop>account_c87aacf5673fada1108c9f809d354311'] = 'Abmelden'; -$_MODULE['<{trackingfront}prestashop>account_1dd1c5fb7f25cd41b291d43a89e3aefd'] = 'Heute'; -$_MODULE['<{trackingfront}prestashop>account_7cbb885aa1164b390a0bc050a64e1812'] = 'Monat'; -$_MODULE['<{trackingfront}prestashop>account_537c66b24ef5c83b7382cdc3f34885f2'] = 'Jahr'; -$_MODULE['<{trackingfront}prestashop>account_1e6d57e813355689e9c77e947d73ad8f'] = 'von'; -$_MODULE['<{trackingfront}prestashop>account_33caa076f23f453dd4061726f3706325'] = 'bis'; -$_MODULE['<{trackingfront}prestashop>account_5fa8aff419bb8e614b178cf1563ac13a'] = 'Artikeldetails anzeigen'; -$_MODULE['<{trackingfront}prestashop>account_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; -$_MODULE['<{trackingfront}prestashop>account_49ee3087348e8d44e1feda1917443987'] = 'Name'; -$_MODULE['<{trackingfront}prestashop>account_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Besucher'; -$_MODULE['<{trackingfront}prestashop>account_d7e637a6e9ff116de2fa89551240a94d'] = 'Besuche'; -$_MODULE['<{trackingfront}prestashop>account_453aceb005ceaf54a47da15fee8b2a26'] = 'Seiten'; -$_MODULE['<{trackingfront}prestashop>account_591411cc8927851db2002208676d8330'] = 'Registrierungen'; -$_MODULE['<{trackingfront}prestashop>account_a9841e29f2c8180709b16cd2a13c55fe'] = 'Best.'; -$_MODULE['<{trackingfront}prestashop>account_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Umsatz'; -$_MODULE['<{trackingfront}prestashop>account_a85eba4c6c699122b2bb1387ea4813ad'] = 'Warenkorb'; -$_MODULE['<{trackingfront}prestashop>account_43005b13d452a4ad6f2d8e29b499c55a'] = 'Reg.-Rate'; -$_MODULE['<{trackingfront}prestashop>account_e14c8640d236365d11a060832b219a11'] = 'Best.-Rate'; -$_MODULE['<{trackingfront}prestashop>account_316853cc3718335f11c048e33b9be98a'] = 'Klicks'; -$_MODULE['<{trackingfront}prestashop>account_b450fdef2453e92c31263a70f14fbd7b'] = '*'; -$_MODULE['<{trackingfront}prestashop>account_0bcef9c45bd8a48eda1b26eb0c61c869'] = '%'; -$_MODULE['<{trackingfront}prestashop>header_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Mitgliedschaft'; -$_MODULE['<{trackingfront}prestashop>login_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Mitgliedschaft'; -$_MODULE['<{trackingfront}prestashop>login_8954e140059f7b2544469f40161ba507'] = 'Mitgliederbereich'; -$_MODULE['<{trackingfront}prestashop>login_b6d4223e60986fa4c9af77ee5f7149c5'] = 'Anmelden'; -$_MODULE['<{trackingfront}prestashop>login_dc647eb65e6711e155375218212b3964'] = 'Passwort'; - - -return $_MODULE; diff --git a/modules/trackingfront/translations/en.php b/modules/trackingfront/translations/en.php deleted file mode 100644 index d9c552b7e..000000000 --- a/modules/trackingfront/translations/en.php +++ /dev/null @@ -1,55 +0,0 @@ -trackingfront_e8a827db4eca37d2c6cdef8e406f6fa9'] = 'Tracking - Front office'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d565f36c06949442a4eb998354376c5b'] = 'Enables your affiliates to access their own statistics. See Stats/Referrers.'; -$_MODULE['<{trackingfront}prestashop>trackingfront_8f5ac7793b2547cd025a7335f4934d26'] = 'login is required'; -$_MODULE['<{trackingfront}prestashop>trackingfront_6f658a5bbec855ca5ae4ef4c94eb5d43'] = 'invalid login'; -$_MODULE['<{trackingfront}prestashop>trackingfront_962c91be4b1056412febf0c272760814'] = 'password is required'; -$_MODULE['<{trackingfront}prestashop>trackingfront_703c2b69e5d9f7072b7db5338214448b'] = 'invalid password'; -$_MODULE['<{trackingfront}prestashop>trackingfront_c41c77e4dddc04b1e0752a6050ae5656'] = 'authentication failed'; -$_MODULE['<{trackingfront}prestashop>trackingfront_10965b2740f42ad4887932c35cee26ab'] = 'Unique visitors'; -$_MODULE['<{trackingfront}prestashop>trackingfront_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitors'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d7e637a6e9ff116de2fa89551240a94d'] = 'Visits'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d3139f39f1ad6324c80a9ddd50cc7867'] = 'Pages viewed'; -$_MODULE['<{trackingfront}prestashop>trackingfront_a28735af01fbb1e35371cb120985ac47'] = 'Registrations'; -$_MODULE['<{trackingfront}prestashop>trackingfront_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Orders'; -$_MODULE['<{trackingfront}prestashop>trackingfront_2e27c4006a026eacfc1f85b41bf9bc4c'] = 'Base fee'; -$_MODULE['<{trackingfront}prestashop>trackingfront_86190054fc32554662ffbb12b717e8d0'] = 'Percent fee'; -$_MODULE['<{trackingfront}prestashop>trackingfront_51d53cd2ecdae6b5dd3397875197e898'] = 'Click fee'; -$_MODULE['<{trackingfront}prestashop>trackingfront_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Sales'; -$_MODULE['<{trackingfront}prestashop>trackingfront_da9cb586c6689202ca65cd77fd9b84ef'] = 'Average cart'; -$_MODULE['<{trackingfront}prestashop>trackingfront_200f5c9c419f0a53d5d361eff7b33abc'] = 'Registration rate'; -$_MODULE['<{trackingfront}prestashop>trackingfront_89741aae300253f498b0993fa678fa18'] = 'Order rate'; -$_MODULE['<{trackingfront}prestashop>account_8954e140059f7b2544469f40161ba507'] = 'Affiliation space'; -$_MODULE['<{trackingfront}prestashop>account_c87aacf5673fada1108c9f809d354311'] = 'Sign out'; -$_MODULE['<{trackingfront}prestashop>account_1dd1c5fb7f25cd41b291d43a89e3aefd'] = 'Today'; -$_MODULE['<{trackingfront}prestashop>account_7cbb885aa1164b390a0bc050a64e1812'] = 'Month'; -$_MODULE['<{trackingfront}prestashop>account_537c66b24ef5c83b7382cdc3f34885f2'] = 'Year'; -$_MODULE['<{trackingfront}prestashop>account_1e6d57e813355689e9c77e947d73ad8f'] = 'From:'; -$_MODULE['<{trackingfront}prestashop>account_33caa076f23f453dd4061726f3706325'] = 'To:'; -$_MODULE['<{trackingfront}prestashop>account_5fa8aff419bb8e614b178cf1563ac13a'] = 'Show products details'; -$_MODULE['<{trackingfront}prestashop>account_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; -$_MODULE['<{trackingfront}prestashop>account_49ee3087348e8d44e1feda1917443987'] = 'Name'; -$_MODULE['<{trackingfront}prestashop>account_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitors'; -$_MODULE['<{trackingfront}prestashop>account_d7e637a6e9ff116de2fa89551240a94d'] = 'Visits'; -$_MODULE['<{trackingfront}prestashop>account_453aceb005ceaf54a47da15fee8b2a26'] = 'Pages'; -$_MODULE['<{trackingfront}prestashop>account_591411cc8927851db2002208676d8330'] = 'Reg.'; -$_MODULE['<{trackingfront}prestashop>account_a9841e29f2c8180709b16cd2a13c55fe'] = 'Ord.'; -$_MODULE['<{trackingfront}prestashop>account_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Sales'; -$_MODULE['<{trackingfront}prestashop>account_a85eba4c6c699122b2bb1387ea4813ad'] = 'Cart'; -$_MODULE['<{trackingfront}prestashop>account_43005b13d452a4ad6f2d8e29b499c55a'] = 'Reg. rate'; -$_MODULE['<{trackingfront}prestashop>account_e14c8640d236365d11a060832b219a11'] = 'Ord. rate'; -$_MODULE['<{trackingfront}prestashop>account_316853cc3718335f11c048e33b9be98a'] = 'Click'; -$_MODULE['<{trackingfront}prestashop>account_b450fdef2453e92c31263a70f14fbd7b'] = '¤'; -$_MODULE['<{trackingfront}prestashop>account_0bcef9c45bd8a48eda1b26eb0c61c869'] = '%'; -$_MODULE['<{trackingfront}prestashop>header_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Affiliation'; -$_MODULE['<{trackingfront}prestashop>login_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Affiliation'; -$_MODULE['<{trackingfront}prestashop>login_8954e140059f7b2544469f40161ba507'] = 'Affiliation space'; -$_MODULE['<{trackingfront}prestashop>login_b6d4223e60986fa4c9af77ee5f7149c5'] = 'Sign in'; -$_MODULE['<{trackingfront}prestashop>login_dc647eb65e6711e155375218212b3964'] = 'Password'; - - -return $_MODULE; diff --git a/modules/trackingfront/translations/es.php b/modules/trackingfront/translations/es.php deleted file mode 100644 index 936f44573..000000000 --- a/modules/trackingfront/translations/es.php +++ /dev/null @@ -1,55 +0,0 @@ -trackingfront_e8a827db4eca37d2c6cdef8e406f6fa9'] = 'Tracking-Front office'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d565f36c06949442a4eb998354376c5b'] = 'Activa tus afiliados para acceder a tus propias estadísticas. Véase Estadísticas/Referidos.'; -$_MODULE['<{trackingfront}prestashop>trackingfront_8f5ac7793b2547cd025a7335f4934d26'] = 'El login es necesario'; -$_MODULE['<{trackingfront}prestashop>trackingfront_6f658a5bbec855ca5ae4ef4c94eb5d43'] = 'login no válido'; -$_MODULE['<{trackingfront}prestashop>trackingfront_962c91be4b1056412febf0c272760814'] = 'se necesita una contraseña'; -$_MODULE['<{trackingfront}prestashop>trackingfront_703c2b69e5d9f7072b7db5338214448b'] = 'contraseña no válida'; -$_MODULE['<{trackingfront}prestashop>trackingfront_c41c77e4dddc04b1e0752a6050ae5656'] = 'autentificación errónea'; -$_MODULE['<{trackingfront}prestashop>trackingfront_10965b2740f42ad4887932c35cee26ab'] = 'Visitantes únicos'; -$_MODULE['<{trackingfront}prestashop>trackingfront_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitantes'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d7e637a6e9ff116de2fa89551240a94d'] = 'Visitas'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d3139f39f1ad6324c80a9ddd50cc7867'] = 'Páginas vistas'; -$_MODULE['<{trackingfront}prestashop>trackingfront_a28735af01fbb1e35371cb120985ac47'] = 'Registros'; -$_MODULE['<{trackingfront}prestashop>trackingfront_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Pedidos'; -$_MODULE['<{trackingfront}prestashop>trackingfront_2e27c4006a026eacfc1f85b41bf9bc4c'] = 'Tarifa base'; -$_MODULE['<{trackingfront}prestashop>trackingfront_86190054fc32554662ffbb12b717e8d0'] = 'Porcentaje de tarifa'; -$_MODULE['<{trackingfront}prestashop>trackingfront_51d53cd2ecdae6b5dd3397875197e898'] = 'Tarifa por clic'; -$_MODULE['<{trackingfront}prestashop>trackingfront_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Ventas'; -$_MODULE['<{trackingfront}prestashop>trackingfront_da9cb586c6689202ca65cd77fd9b84ef'] = 'Carrito medio'; -$_MODULE['<{trackingfront}prestashop>trackingfront_200f5c9c419f0a53d5d361eff7b33abc'] = '% de registros'; -$_MODULE['<{trackingfront}prestashop>trackingfront_89741aae300253f498b0993fa678fa18'] = '% de pedidos'; -$_MODULE['<{trackingfront}prestashop>account_8954e140059f7b2544469f40161ba507'] = 'espacio afiliados'; -$_MODULE['<{trackingfront}prestashop>account_c87aacf5673fada1108c9f809d354311'] = 'Cerrar sesión'; -$_MODULE['<{trackingfront}prestashop>account_1dd1c5fb7f25cd41b291d43a89e3aefd'] = 'Hoy'; -$_MODULE['<{trackingfront}prestashop>account_7cbb885aa1164b390a0bc050a64e1812'] = 'Mes'; -$_MODULE['<{trackingfront}prestashop>account_537c66b24ef5c83b7382cdc3f34885f2'] = 'Año'; -$_MODULE['<{trackingfront}prestashop>account_1e6d57e813355689e9c77e947d73ad8f'] = 'De:'; -$_MODULE['<{trackingfront}prestashop>account_33caa076f23f453dd4061726f3706325'] = 'a:'; -$_MODULE['<{trackingfront}prestashop>account_5fa8aff419bb8e614b178cf1563ac13a'] = 'Mostrar detalles del producto'; -$_MODULE['<{trackingfront}prestashop>account_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; -$_MODULE['<{trackingfront}prestashop>account_49ee3087348e8d44e1feda1917443987'] = 'Nombre'; -$_MODULE['<{trackingfront}prestashop>account_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitantes'; -$_MODULE['<{trackingfront}prestashop>account_d7e637a6e9ff116de2fa89551240a94d'] = 'Visitas'; -$_MODULE['<{trackingfront}prestashop>account_453aceb005ceaf54a47da15fee8b2a26'] = 'Páginas'; -$_MODULE['<{trackingfront}prestashop>account_591411cc8927851db2002208676d8330'] = 'Clientes'; -$_MODULE['<{trackingfront}prestashop>account_a9841e29f2c8180709b16cd2a13c55fe'] = 'Ped.'; -$_MODULE['<{trackingfront}prestashop>account_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Ventas'; -$_MODULE['<{trackingfront}prestashop>account_a85eba4c6c699122b2bb1387ea4813ad'] = 'Carrito:'; -$_MODULE['<{trackingfront}prestashop>account_43005b13d452a4ad6f2d8e29b499c55a'] = '% de registros'; -$_MODULE['<{trackingfront}prestashop>account_e14c8640d236365d11a060832b219a11'] = 'pedido Reg.'; -$_MODULE['<{trackingfront}prestashop>account_316853cc3718335f11c048e33b9be98a'] = 'Clic'; -$_MODULE['<{trackingfront}prestashop>account_b450fdef2453e92c31263a70f14fbd7b'] = '¤'; -$_MODULE['<{trackingfront}prestashop>account_0bcef9c45bd8a48eda1b26eb0c61c869'] = '%'; -$_MODULE['<{trackingfront}prestashop>header_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Afiliación'; -$_MODULE['<{trackingfront}prestashop>login_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Afiliación'; -$_MODULE['<{trackingfront}prestashop>login_8954e140059f7b2544469f40161ba507'] = 'espacio afiliados'; -$_MODULE['<{trackingfront}prestashop>login_b6d4223e60986fa4c9af77ee5f7149c5'] = 'Iniciar sesión'; -$_MODULE['<{trackingfront}prestashop>login_dc647eb65e6711e155375218212b3964'] = 'Contraseña'; - - -return $_MODULE; diff --git a/modules/trackingfront/translations/fr.php b/modules/trackingfront/translations/fr.php deleted file mode 100644 index bc547ff07..000000000 --- a/modules/trackingfront/translations/fr.php +++ /dev/null @@ -1,55 +0,0 @@ -trackingfront_e8a827db4eca37d2c6cdef8e406f6fa9'] = 'Affiliation - Accès boutique'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d565f36c06949442a4eb998354376c5b'] = 'Permet à vos affiliés d\'accéder à leurs propres statistiques. Voir Statistiques/Affiliés.'; -$_MODULE['<{trackingfront}prestashop>trackingfront_8f5ac7793b2547cd025a7335f4934d26'] = 'identifiant requis'; -$_MODULE['<{trackingfront}prestashop>trackingfront_6f658a5bbec855ca5ae4ef4c94eb5d43'] = 'identifiant invalide'; -$_MODULE['<{trackingfront}prestashop>trackingfront_962c91be4b1056412febf0c272760814'] = 'mot de passe requis'; -$_MODULE['<{trackingfront}prestashop>trackingfront_703c2b69e5d9f7072b7db5338214448b'] = 'mot de passe invalide'; -$_MODULE['<{trackingfront}prestashop>trackingfront_c41c77e4dddc04b1e0752a6050ae5656'] = 'Échec lors de l\'identification'; -$_MODULE['<{trackingfront}prestashop>trackingfront_10965b2740f42ad4887932c35cee26ab'] = 'Visiteurs Uniques'; -$_MODULE['<{trackingfront}prestashop>trackingfront_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visiteurs'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d7e637a6e9ff116de2fa89551240a94d'] = 'Visites'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d3139f39f1ad6324c80a9ddd50cc7867'] = 'Pages vues'; -$_MODULE['<{trackingfront}prestashop>trackingfront_a28735af01fbb1e35371cb120985ac47'] = 'Inscriptions'; -$_MODULE['<{trackingfront}prestashop>trackingfront_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Commandes'; -$_MODULE['<{trackingfront}prestashop>trackingfront_2e27c4006a026eacfc1f85b41bf9bc4c'] = 'Commission de base'; -$_MODULE['<{trackingfront}prestashop>trackingfront_86190054fc32554662ffbb12b717e8d0'] = 'Commission %'; -$_MODULE['<{trackingfront}prestashop>trackingfront_51d53cd2ecdae6b5dd3397875197e898'] = 'Rémunération au clic'; -$_MODULE['<{trackingfront}prestashop>trackingfront_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Ventes'; -$_MODULE['<{trackingfront}prestashop>trackingfront_da9cb586c6689202ca65cd77fd9b84ef'] = 'Panier moyen'; -$_MODULE['<{trackingfront}prestashop>trackingfront_200f5c9c419f0a53d5d361eff7b33abc'] = 'Taux d\'inscription'; -$_MODULE['<{trackingfront}prestashop>trackingfront_89741aae300253f498b0993fa678fa18'] = 'Taux de commandes'; -$_MODULE['<{trackingfront}prestashop>account_8954e140059f7b2544469f40161ba507'] = 'Espace affilié'; -$_MODULE['<{trackingfront}prestashop>account_c87aacf5673fada1108c9f809d354311'] = 'Déconnexion'; -$_MODULE['<{trackingfront}prestashop>account_1dd1c5fb7f25cd41b291d43a89e3aefd'] = 'Aujourd\'hui'; -$_MODULE['<{trackingfront}prestashop>account_7cbb885aa1164b390a0bc050a64e1812'] = 'Mois'; -$_MODULE['<{trackingfront}prestashop>account_537c66b24ef5c83b7382cdc3f34885f2'] = 'Année'; -$_MODULE['<{trackingfront}prestashop>account_1e6d57e813355689e9c77e947d73ad8f'] = 'Du'; -$_MODULE['<{trackingfront}prestashop>account_33caa076f23f453dd4061726f3706325'] = 'au'; -$_MODULE['<{trackingfront}prestashop>account_5fa8aff419bb8e614b178cf1563ac13a'] = 'Afficher les détails des produits'; -$_MODULE['<{trackingfront}prestashop>account_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; -$_MODULE['<{trackingfront}prestashop>account_49ee3087348e8d44e1feda1917443987'] = 'Nom'; -$_MODULE['<{trackingfront}prestashop>account_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visiteurs'; -$_MODULE['<{trackingfront}prestashop>account_d7e637a6e9ff116de2fa89551240a94d'] = 'Visites'; -$_MODULE['<{trackingfront}prestashop>account_453aceb005ceaf54a47da15fee8b2a26'] = 'Pages vues'; -$_MODULE['<{trackingfront}prestashop>account_591411cc8927851db2002208676d8330'] = 'Inscriptions'; -$_MODULE['<{trackingfront}prestashop>account_a9841e29f2c8180709b16cd2a13c55fe'] = 'Com.'; -$_MODULE['<{trackingfront}prestashop>account_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Ventes'; -$_MODULE['<{trackingfront}prestashop>account_a85eba4c6c699122b2bb1387ea4813ad'] = 'Panier'; -$_MODULE['<{trackingfront}prestashop>account_43005b13d452a4ad6f2d8e29b499c55a'] = 'Tx insc.'; -$_MODULE['<{trackingfront}prestashop>account_e14c8640d236365d11a060832b219a11'] = 'Tx com.'; -$_MODULE['<{trackingfront}prestashop>account_316853cc3718335f11c048e33b9be98a'] = 'Clics'; -$_MODULE['<{trackingfront}prestashop>account_b450fdef2453e92c31263a70f14fbd7b'] = '¤'; -$_MODULE['<{trackingfront}prestashop>account_0bcef9c45bd8a48eda1b26eb0c61c869'] = '%'; -$_MODULE['<{trackingfront}prestashop>header_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Affiliation'; -$_MODULE['<{trackingfront}prestashop>login_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Affiliation'; -$_MODULE['<{trackingfront}prestashop>login_8954e140059f7b2544469f40161ba507'] = 'Espace affilié'; -$_MODULE['<{trackingfront}prestashop>login_b6d4223e60986fa4c9af77ee5f7149c5'] = 'Connexion'; -$_MODULE['<{trackingfront}prestashop>login_dc647eb65e6711e155375218212b3964'] = 'Mot de passe'; - - -return $_MODULE; diff --git a/modules/trackingfront/translations/gl.php b/modules/trackingfront/translations/gl.php deleted file mode 100644 index 208637de7..000000000 --- a/modules/trackingfront/translations/gl.php +++ /dev/null @@ -1,28 +0,0 @@ -trackingfront_10965b2740f42ad4887932c35cee26ab'] = 'Visitas unicas'; -$_MODULE['<{trackingfront}prestashop>trackingfront_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitantes'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d7e637a6e9ff116de2fa89551240a94d'] = 'Visitas'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d3139f39f1ad6324c80a9ddd50cc7867'] = 'Paxinas olladas'; -$_MODULE['<{trackingfront}prestashop>trackingfront_a28735af01fbb1e35371cb120985ac47'] = 'Rexistros'; -$_MODULE['<{trackingfront}prestashop>trackingfront_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Pedidos'; -$_MODULE['<{trackingfront}prestashop>trackingfront_86190054fc32554662ffbb12b717e8d0'] = 'Porcentaxe'; -$_MODULE['<{trackingfront}prestashop>trackingfront_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Ventas'; -$_MODULE['<{trackingfront}prestashop>account_1dd1c5fb7f25cd41b291d43a89e3aefd'] = 'Hoxe'; -$_MODULE['<{trackingfront}prestashop>account_7cbb885aa1164b390a0bc050a64e1812'] = 'Mes'; -$_MODULE['<{trackingfront}prestashop>account_537c66b24ef5c83b7382cdc3f34885f2'] = 'Ano'; -$_MODULE['<{trackingfront}prestashop>account_1e6d57e813355689e9c77e947d73ad8f'] = 'Dende:'; -$_MODULE['<{trackingfront}prestashop>account_33caa076f23f453dd4061726f3706325'] = 'Asta:'; -$_MODULE['<{trackingfront}prestashop>account_49ee3087348e8d44e1feda1917443987'] = 'Nome'; -$_MODULE['<{trackingfront}prestashop>account_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Visitantes'; -$_MODULE['<{trackingfront}prestashop>account_d7e637a6e9ff116de2fa89551240a94d'] = 'Visitas'; -$_MODULE['<{trackingfront}prestashop>account_453aceb005ceaf54a47da15fee8b2a26'] = 'Páxinas'; -$_MODULE['<{trackingfront}prestashop>account_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Ventas'; -$_MODULE['<{trackingfront}prestashop>account_a85eba4c6c699122b2bb1387ea4813ad'] = 'Cesta'; -$_MODULE['<{trackingfront}prestashop>login_dc647eb65e6711e155375218212b3964'] = 'Contrasinal'; - - -return $_MODULE; diff --git a/modules/trackingfront/translations/id.php b/modules/trackingfront/translations/id.php deleted file mode 100644 index c4e3031ef..000000000 --- a/modules/trackingfront/translations/id.php +++ /dev/null @@ -1,55 +0,0 @@ -trackingfront_e8a827db4eca37d2c6cdef8e406f6fa9'] = 'Pelacakan - Depan kantor'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d565f36c06949442a4eb998354376c5b'] = 'Mengijinkan afiliasi Anda untuk melihat statistik mereka. Lihat Stats/Referrer.'; -$_MODULE['<{trackingfront}prestashop>trackingfront_8f5ac7793b2547cd025a7335f4934d26'] = 'login diperlukan'; -$_MODULE['<{trackingfront}prestashop>trackingfront_6f658a5bbec855ca5ae4ef4c94eb5d43'] = 'tidak valid Login'; -$_MODULE['<{trackingfront}prestashop>trackingfront_962c91be4b1056412febf0c272760814'] = 'password diperlukan'; -$_MODULE['<{trackingfront}prestashop>trackingfront_703c2b69e5d9f7072b7db5338214448b'] = 'sandi tidak valid'; -$_MODULE['<{trackingfront}prestashop>trackingfront_c41c77e4dddc04b1e0752a6050ae5656'] = 'otentikasi gagal'; -$_MODULE['<{trackingfront}prestashop>trackingfront_10965b2740f42ad4887932c35cee26ab'] = 'Pengunjung Unik'; -$_MODULE['<{trackingfront}prestashop>trackingfront_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Pengunjung'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d7e637a6e9ff116de2fa89551240a94d'] = 'Kunjungan'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d3139f39f1ad6324c80a9ddd50cc7867'] = 'Halaman yang dilihat'; -$_MODULE['<{trackingfront}prestashop>trackingfront_a28735af01fbb1e35371cb120985ac47'] = 'Pendaftaran'; -$_MODULE['<{trackingfront}prestashop>trackingfront_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Penjualan'; -$_MODULE['<{trackingfront}prestashop>trackingfront_2e27c4006a026eacfc1f85b41bf9bc4c'] = 'Basis Biaya'; -$_MODULE['<{trackingfront}prestashop>trackingfront_86190054fc32554662ffbb12b717e8d0'] = 'Biaya Persen'; -$_MODULE['<{trackingfront}prestashop>trackingfront_51d53cd2ecdae6b5dd3397875197e898'] = 'Klik biaya'; -$_MODULE['<{trackingfront}prestashop>trackingfront_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Penjualan'; -$_MODULE['<{trackingfront}prestashop>trackingfront_da9cb586c6689202ca65cd77fd9b84ef'] = 'Rata-rata keranjang'; -$_MODULE['<{trackingfront}prestashop>trackingfront_200f5c9c419f0a53d5d361eff7b33abc'] = 'Pendaftaran tingkat'; -$_MODULE['<{trackingfront}prestashop>trackingfront_89741aae300253f498b0993fa678fa18'] = 'Orde tingkat'; -$_MODULE['<{trackingfront}prestashop>account_8954e140059f7b2544469f40161ba507'] = 'Afiliasi ruang'; -$_MODULE['<{trackingfront}prestashop>account_c87aacf5673fada1108c9f809d354311'] = 'Keluar'; -$_MODULE['<{trackingfront}prestashop>account_1dd1c5fb7f25cd41b291d43a89e3aefd'] = 'Hari ini'; -$_MODULE['<{trackingfront}prestashop>account_7cbb885aa1164b390a0bc050a64e1812'] = 'Bulan'; -$_MODULE['<{trackingfront}prestashop>account_537c66b24ef5c83b7382cdc3f34885f2'] = 'Tahun'; -$_MODULE['<{trackingfront}prestashop>account_1e6d57e813355689e9c77e947d73ad8f'] = 'Dari:'; -$_MODULE['<{trackingfront}prestashop>account_33caa076f23f453dd4061726f3706325'] = 'Untuk:'; -$_MODULE['<{trackingfront}prestashop>account_5fa8aff419bb8e614b178cf1563ac13a'] = 'Tampilkan detail produk'; -$_MODULE['<{trackingfront}prestashop>account_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; -$_MODULE['<{trackingfront}prestashop>account_49ee3087348e8d44e1feda1917443987'] = 'Nama'; -$_MODULE['<{trackingfront}prestashop>account_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Pengunjung'; -$_MODULE['<{trackingfront}prestashop>account_d7e637a6e9ff116de2fa89551240a94d'] = 'Kunjungan'; -$_MODULE['<{trackingfront}prestashop>account_453aceb005ceaf54a47da15fee8b2a26'] = 'Halaman'; -$_MODULE['<{trackingfront}prestashop>account_591411cc8927851db2002208676d8330'] = 'Reg.'; -$_MODULE['<{trackingfront}prestashop>account_a9841e29f2c8180709b16cd2a13c55fe'] = 'Ord.'; -$_MODULE['<{trackingfront}prestashop>account_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Penjualan'; -$_MODULE['<{trackingfront}prestashop>account_a85eba4c6c699122b2bb1387ea4813ad'] = 'Troli'; -$_MODULE['<{trackingfront}prestashop>account_43005b13d452a4ad6f2d8e29b499c55a'] = 'Reg. tingkat'; -$_MODULE['<{trackingfront}prestashop>account_e14c8640d236365d11a060832b219a11'] = 'Ord. rate'; -$_MODULE['<{trackingfront}prestashop>account_316853cc3718335f11c048e33b9be98a'] = 'Klik'; -$_MODULE['<{trackingfront}prestashop>account_b450fdef2453e92c31263a70f14fbd7b'] = '¤'; -$_MODULE['<{trackingfront}prestashop>account_0bcef9c45bd8a48eda1b26eb0c61c869'] = '%'; -$_MODULE['<{trackingfront}prestashop>header_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Afiliasi'; -$_MODULE['<{trackingfront}prestashop>login_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Afiliasi'; -$_MODULE['<{trackingfront}prestashop>login_8954e140059f7b2544469f40161ba507'] = 'Afiliasi ruang'; -$_MODULE['<{trackingfront}prestashop>login_b6d4223e60986fa4c9af77ee5f7149c5'] = 'Login'; -$_MODULE['<{trackingfront}prestashop>login_dc647eb65e6711e155375218212b3964'] = 'Password'; - - -return $_MODULE; diff --git a/modules/trackingfront/translations/index.php b/modules/trackingfront/translations/index.php index a41987dff..e5064df41 100644 --- a/modules/trackingfront/translations/index.php +++ b/modules/trackingfront/translations/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/trackingfront/translations/nl.php b/modules/trackingfront/translations/nl.php deleted file mode 100644 index fee0d056d..000000000 --- a/modules/trackingfront/translations/nl.php +++ /dev/null @@ -1,55 +0,0 @@ -trackingfront_e8a827db4eca37d2c6cdef8e406f6fa9'] = 'Tracering - Winkel'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d565f36c06949442a4eb998354376c5b'] = 'Laat uw affiliaties toegang krijgen tot hun eigen statistieken. Zie Stats / verwijzers.'; -$_MODULE['<{trackingfront}prestashop>trackingfront_8f5ac7793b2547cd025a7335f4934d26'] = 'Inloggen verplicht'; -$_MODULE['<{trackingfront}prestashop>trackingfront_6f658a5bbec855ca5ae4ef4c94eb5d43'] = 'Ongeldige login'; -$_MODULE['<{trackingfront}prestashop>trackingfront_962c91be4b1056412febf0c272760814'] = 'Wachtwoord verplicht'; -$_MODULE['<{trackingfront}prestashop>trackingfront_703c2b69e5d9f7072b7db5338214448b'] = 'Ongeldig wachtwoord'; -$_MODULE['<{trackingfront}prestashop>trackingfront_c41c77e4dddc04b1e0752a6050ae5656'] = 'Aanmelden mislukt'; -$_MODULE['<{trackingfront}prestashop>trackingfront_10965b2740f42ad4887932c35cee26ab'] = 'Unieke bezoekers'; -$_MODULE['<{trackingfront}prestashop>trackingfront_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Bezoekers'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d7e637a6e9ff116de2fa89551240a94d'] = 'Visites'; -$_MODULE['<{trackingfront}prestashop>trackingfront_d3139f39f1ad6324c80a9ddd50cc7867'] = 'Bekeken pagina\'s'; -$_MODULE['<{trackingfront}prestashop>trackingfront_a28735af01fbb1e35371cb120985ac47'] = 'Registraties'; -$_MODULE['<{trackingfront}prestashop>trackingfront_7442e29d7d53e549b78d93c46b8cdcfc'] = 'Bestellingen'; -$_MODULE['<{trackingfront}prestashop>trackingfront_2e27c4006a026eacfc1f85b41bf9bc4c'] = 'Basis vergoeding'; -$_MODULE['<{trackingfront}prestashop>trackingfront_86190054fc32554662ffbb12b717e8d0'] = 'Percentage vergoeding'; -$_MODULE['<{trackingfront}prestashop>trackingfront_51d53cd2ecdae6b5dd3397875197e898'] = 'Klikvergoeding'; -$_MODULE['<{trackingfront}prestashop>trackingfront_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Verkopen'; -$_MODULE['<{trackingfront}prestashop>trackingfront_da9cb586c6689202ca65cd77fd9b84ef'] = 'Gemiddelde winkelwagen'; -$_MODULE['<{trackingfront}prestashop>trackingfront_200f5c9c419f0a53d5d361eff7b33abc'] = 'Registratie snelheid'; -$_MODULE['<{trackingfront}prestashop>trackingfront_89741aae300253f498b0993fa678fa18'] = 'Bestelling tarief'; -$_MODULE['<{trackingfront}prestashop>account_8954e140059f7b2544469f40161ba507'] = 'Affiliate ruimte'; -$_MODULE['<{trackingfront}prestashop>account_c87aacf5673fada1108c9f809d354311'] = 'Afmelden'; -$_MODULE['<{trackingfront}prestashop>account_1dd1c5fb7f25cd41b291d43a89e3aefd'] = 'Vandaag'; -$_MODULE['<{trackingfront}prestashop>account_7cbb885aa1164b390a0bc050a64e1812'] = 'Maand'; -$_MODULE['<{trackingfront}prestashop>account_537c66b24ef5c83b7382cdc3f34885f2'] = 'Jaar'; -$_MODULE['<{trackingfront}prestashop>account_1e6d57e813355689e9c77e947d73ad8f'] = 'Van:'; -$_MODULE['<{trackingfront}prestashop>account_33caa076f23f453dd4061726f3706325'] = 'Tot:'; -$_MODULE['<{trackingfront}prestashop>account_5fa8aff419bb8e614b178cf1563ac13a'] = 'Toon detail van het product'; -$_MODULE['<{trackingfront}prestashop>account_b718adec73e04ce3ec720dd11a06a308'] = 'ID'; -$_MODULE['<{trackingfront}prestashop>account_49ee3087348e8d44e1feda1917443987'] = 'Naam'; -$_MODULE['<{trackingfront}prestashop>account_ae5d01b6efa819cc7a7c05a8c57fcc2c'] = 'Bezoekers'; -$_MODULE['<{trackingfront}prestashop>account_d7e637a6e9ff116de2fa89551240a94d'] = 'Visites'; -$_MODULE['<{trackingfront}prestashop>account_453aceb005ceaf54a47da15fee8b2a26'] = 'Pagina\'s'; -$_MODULE['<{trackingfront}prestashop>account_591411cc8927851db2002208676d8330'] = 'Reg.'; -$_MODULE['<{trackingfront}prestashop>account_a9841e29f2c8180709b16cd2a13c55fe'] = 'Best.'; -$_MODULE['<{trackingfront}prestashop>account_11ff9f68afb6b8b5b8eda218d7c83a65'] = 'Verkopen'; -$_MODULE['<{trackingfront}prestashop>account_a85eba4c6c699122b2bb1387ea4813ad'] = 'Winkelwagen'; -$_MODULE['<{trackingfront}prestashop>account_43005b13d452a4ad6f2d8e29b499c55a'] = 'Reg. tarief'; -$_MODULE['<{trackingfront}prestashop>account_e14c8640d236365d11a060832b219a11'] = 'Bestelsnelheid'; -$_MODULE['<{trackingfront}prestashop>account_316853cc3718335f11c048e33b9be98a'] = 'Klik'; -$_MODULE['<{trackingfront}prestashop>account_b450fdef2453e92c31263a70f14fbd7b'] = '¤'; -$_MODULE['<{trackingfront}prestashop>account_0bcef9c45bd8a48eda1b26eb0c61c869'] = '%'; -$_MODULE['<{trackingfront}prestashop>header_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Affiliate'; -$_MODULE['<{trackingfront}prestashop>login_bf15e68d25d8a2b7664950ba7385ed0a'] = 'Affiliate'; -$_MODULE['<{trackingfront}prestashop>login_8954e140059f7b2544469f40161ba507'] = 'Affiliate ruimte'; -$_MODULE['<{trackingfront}prestashop>login_b6d4223e60986fa4c9af77ee5f7149c5'] = 'Inloggen'; -$_MODULE['<{trackingfront}prestashop>login_dc647eb65e6711e155375218212b3964'] = 'Wachtwoord'; - - -return $_MODULE; diff --git a/modules/trackingfront/views/index.php b/modules/trackingfront/views/index.php index 9f6ab7b95..531cab52a 100644 --- a/modules/trackingfront/views/index.php +++ b/modules/trackingfront/views/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/trackingfront/views/templates/front/account.tpl b/modules/trackingfront/views/templates/front/account.tpl index d321ca80c..81f042be2 100644 --- a/modules/trackingfront/views/templates/front/account.tpl +++ b/modules/trackingfront/views/templates/front/account.tpl @@ -1,5 +1,5 @@ {* -* 2007-2014 PrestaShop +* 2007-2016 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/modules/trackingfront/views/templates/front/footer.tpl b/modules/trackingfront/views/templates/front/footer.tpl index 7c741a360..eac8dd6fa 100644 --- a/modules/trackingfront/views/templates/front/footer.tpl +++ b/modules/trackingfront/views/templates/front/footer.tpl @@ -1,5 +1,5 @@ {* -* 2007-2014 PrestaShop +* 2007-2016 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/modules/trackingfront/views/templates/front/header.tpl b/modules/trackingfront/views/templates/front/header.tpl index 72b266b03..047ebc6ab 100644 --- a/modules/trackingfront/views/templates/front/header.tpl +++ b/modules/trackingfront/views/templates/front/header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2014 PrestaShop +* 2007-2016 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/modules/trackingfront/views/templates/front/index.php b/modules/trackingfront/views/templates/front/index.php index 9f6ab7b95..531cab52a 100644 --- a/modules/trackingfront/views/templates/front/index.php +++ b/modules/trackingfront/views/templates/front/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/trackingfront/views/templates/front/login.tpl b/modules/trackingfront/views/templates/front/login.tpl index 11e17ef85..b0409e4a4 100644 --- a/modules/trackingfront/views/templates/front/login.tpl +++ b/modules/trackingfront/views/templates/front/login.tpl @@ -1,5 +1,5 @@ {* -* 2007-2014 PrestaShop +* 2007-2016 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/modules/trackingfront/views/templates/index.php b/modules/trackingfront/views/templates/index.php index 9f6ab7b95..531cab52a 100644 --- a/modules/trackingfront/views/templates/index.php +++ b/modules/trackingfront/views/templates/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2016 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/modules/vatnumber/CHANGELOG.txt b/modules/vatnumber/CHANGELOG.txt index 38bf192d4..d1ab0de20 100644 --- a/modules/vatnumber/CHANGELOG.txt +++ b/modules/vatnumber/CHANGELOG.txt @@ -1,3 +1,12 @@ +------------------------------ +# V1.8.0 to V2.0.0 +------------------------------ + +## Improved/Changed Features: + +* [CO] : Updated with latest PS version - 1.6.1.23. + + 2014-04-18 17:05:53 +0200 // update version for release 2014-04-18 16:55:22 +0200 [-] Fix retrocompat PrestaShop 1.5 2014-04-17 11:40:40 +0200 Bug fix (PS 1.5): ps_version_compliancy removed diff --git a/modules/vatnumber/Readme.md b/modules/vatnumber/Readme.md deleted file mode 100644 index efbfbacf0..000000000 --- a/modules/vatnumber/Readme.md +++ /dev/null @@ -1,37 +0,0 @@ -# European VAT number - -## About - -Enables you to enter the intra-community VAT number when creating the address. You must fill in the company field to allow entering the VAT number. - -## Contributing - -PrestaShop modules are open-source extensions to the PrestaShop e-commerce solution. Everyone is welcome and even encouraged to contribute with their own improvements. - -### Requirements - -Contributors **must** follow the following rules: - -* **Make your Pull Request on the "dev" branch**, NOT the "master" branch. -* Do not update the module's version number. -* Follow [the coding standards][1]. - -### Process in details - -Contributors wishing to edit a module's files should follow the following process: - -1. Create your GitHub account, if you do not have one already. -2. Fork the vatnumber project to your GitHub account. -3. Clone your fork to your local machine in the ```/modules``` directory of your PrestaShop installation. -4. Create a branch in your local clone of the module for your changes. -5. Change the files in your branch. Be sure to follow [the coding standards][1]! -6. Push your changed branch to your fork in your GitHub account. -7. Create a pull request for your changes **on the _'dev'_ branch** of the module's project. Be sure to follow [the commit message norm][2] in your pull request. If you need help to make a pull request, read the [Github help page about creating pull requests][3]. -8. Wait for one of the core developers either to include your change in the codebase, or to comment on possible improvements you should make to your code. - -That's it: you have contributed to this open-source project! Congratulations! - -[1]: http://doc.prestashop.com/display/PS16/Coding+Standards -[2]: http://doc.prestashop.com/display/PS16/How+to+write+a+commit+message -[3]: https://help.github.com/articles/using-pull-requests - diff --git a/modules/vatnumber/VATNumberTaxManager.php b/modules/vatnumber/VATNumberTaxManager.php index cf49f4548..eb939ccee 100644 --- a/modules/vatnumber/VATNumberTaxManager.php +++ b/modules/vatnumber/VATNumberTaxManager.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -42,4 +42,4 @@ class VATNumberTaxManager implements TaxManagerInterface return new TaxCalculator(array($tax)); } -} \ No newline at end of file +} diff --git a/modules/vatnumber/ajax.php b/modules/vatnumber/ajax.php index c48fad473..ee3aff6d6 100644 --- a/modules/vatnumber/ajax.php +++ b/modules/vatnumber/ajax.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/vatnumber/composer.json b/modules/vatnumber/composer.json deleted file mode 100644 index e316ecf75..000000000 --- a/modules/vatnumber/composer.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "PrestaShop/vatnumber", - "description": "PrestaShop module vatnumber", - "homepage": "https://github.com/PrestaShop/vatnumber", - "license": "AFL - Academic Free License (AFL 3.0)", - "authors": [ - { - "name": "PrestaShop SA", - "email": "contact@prestashop.com" - } - ], - "require": { - "php": ">=5.3.2" - }, - "config": { - "preferred-install": "dist" - }, - "type": "prestashop-module" -} diff --git a/modules/vatnumber/config.xml b/modules/vatnumber/config.xml deleted file mode 100644 index 9c066a40d..000000000 --- a/modules/vatnumber/config.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - vatnumber - - - - - - 1 - 0 - - \ No newline at end of file diff --git a/modules/vatnumber/index.php b/modules/vatnumber/index.php index 5244cdaa4..0875d0aac 100644 --- a/modules/vatnumber/index.php +++ b/modules/vatnumber/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA @@ -33,4 +33,4 @@ header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header('Location: ../'); -exit; \ No newline at end of file +exit; diff --git a/modules/vatnumber/translations/ag.php b/modules/vatnumber/translations/ag.php deleted file mode 100644 index e016ab679..000000000 --- a/modules/vatnumber/translations/ag.php +++ /dev/null @@ -1,23 +0,0 @@ -vatnumber_b0b9a606a1c251323825ca45d40964dc'] = 'No hay pais por defecto'; -$_MODULE['<{vatnumber}prestashop>vatnumber_cee549912e318726d2c4989bb507665f'] = 'Número de IVA europeo'; -$_MODULE['<{vatnumber}prestashop>vatnumber_9fa70ad6139f2a83269df74eb6747816'] = 'Te permite introducir número VAT intercomunitario al crear la dirección. Debes rellenar el campo de empresa para introducir el número VAT.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_162b29cf61678af2aaac37f440265c28'] = 'Actualización de su país.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_0ca51bcd22e4d7b56b6f1d8a01cefc1f'] = 'La comprobación del número de IVA con el WebService se encuentra activada.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_467c214bb76759108ece49873eda44e4'] = 'La comprobación del número de IVA con el WebService se encuentra desactivada.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_038b34b36ec9eaf5f96d11e17f208f1b'] = '--Elija un país--'; -$_MODULE['<{vatnumber}prestashop>vatnumber_f4f70727dc34561dfde1a3c529b6205c'] = 'Ajustes'; -$_MODULE['<{vatnumber}prestashop>vatnumber_fa01fd956e87307bce4c90a0de9b0437'] = 'País del cliente'; -$_MODULE['<{vatnumber}prestashop>vatnumber_7599b57d77ef1608b2f6da579794cc5b'] = 'Filtrar por país del cliente.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_da0e4b4c2ffe78456b5a1d67fd854389'] = 'Activar la comprobación del número de IVA con el WebService'; -$_MODULE['<{vatnumber}prestashop>vatnumber_59e1a8522a3bfca342cd7110b1d67b24'] = 'La verificación a través del webservice es lenta. Habilitar esta opción puede ralentizar tu tienda.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado'; -$_MODULE['<{vatnumber}prestashop>vatnumber_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado'; -$_MODULE['<{vatnumber}prestashop>vatnumber_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar'; - - -return $_MODULE; diff --git a/modules/vatnumber/translations/ar.php b/modules/vatnumber/translations/ar.php deleted file mode 100644 index f97884174..000000000 --- a/modules/vatnumber/translations/ar.php +++ /dev/null @@ -1,17 +0,0 @@ -vatnumber_b0b9a606a1c251323825ca45d40964dc'] = 'لم يتم تحديد الدوالة الافتراضية.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_cee549912e318726d2c4989bb507665f'] = 'رقم الضريبة الأوروبية على القيمة المضافة'; -$_MODULE['<{vatnumber}prestashop>vatnumber_162b29cf61678af2aaac37f440265c28'] = 'تم تحديث الدولة.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_038b34b36ec9eaf5f96d11e17f208f1b'] = '-- اختر الدولة --'; -$_MODULE['<{vatnumber}prestashop>vatnumber_f4f70727dc34561dfde1a3c529b6205c'] = 'الإعدادات'; -$_MODULE['<{vatnumber}prestashop>vatnumber_fa01fd956e87307bce4c90a0de9b0437'] = 'دولة العملاء'; -$_MODULE['<{vatnumber}prestashop>vatnumber_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'مفعل'; -$_MODULE['<{vatnumber}prestashop>vatnumber_b9f5c797ebbf55adccdd8539a65a0241'] = 'غير مفعل'; -$_MODULE['<{vatnumber}prestashop>vatnumber_c9cc8cce247e49bae79f15173ce97354'] = 'حفظ'; - - -return $_MODULE; diff --git a/modules/vatnumber/translations/bg.php b/modules/vatnumber/translations/bg.php deleted file mode 100644 index baff49b04..000000000 --- a/modules/vatnumber/translations/bg.php +++ /dev/null @@ -1,23 +0,0 @@ -vatnumber_b0b9a606a1c251323825ca45d40964dc'] = 'Няма държава по подразбиране.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_cee549912e318726d2c4989bb507665f'] = 'Европейски ДДС номер'; -$_MODULE['<{vatnumber}prestashop>vatnumber_9fa70ad6139f2a83269df74eb6747816'] = 'Позволява Ви да въведете вътрешен за общността ДДС номер, когато създавате адреса. Трябва да попълните полето с фирмата, за да разрешите въвеждането на ДДС номер.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_162b29cf61678af2aaac37f440265c28'] = 'Вашата държава беше обновена.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_0ca51bcd22e4d7b56b6f1d8a01cefc1f'] = 'Проверката на ДДС номер с уеб услугата е активирана.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_467c214bb76759108ece49873eda44e4'] = 'Проверката на ДДС номер с уеб услугата е деактивирана.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_038b34b36ec9eaf5f96d11e17f208f1b'] = '-- Изберете държава --'; -$_MODULE['<{vatnumber}prestashop>vatnumber_f4f70727dc34561dfde1a3c529b6205c'] = 'Настройки'; -$_MODULE['<{vatnumber}prestashop>vatnumber_fa01fd956e87307bce4c90a0de9b0437'] = 'Държава на клиентите'; -$_MODULE['<{vatnumber}prestashop>vatnumber_7599b57d77ef1608b2f6da579794cc5b'] = 'Филтриране на страната на клиентите.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_da0e4b4c2ffe78456b5a1d67fd854389'] = 'Активирайте проверката на ДДС номера с уеб-обслужването'; -$_MODULE['<{vatnumber}prestashop>vatnumber_59e1a8522a3bfca342cd7110b1d67b24'] = 'Проверката през уеб-обслужването е бавна. Активирането на тази опция може да забави магазина Ви.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Активен'; -$_MODULE['<{vatnumber}prestashop>vatnumber_b9f5c797ebbf55adccdd8539a65a0241'] = 'Забранено'; -$_MODULE['<{vatnumber}prestashop>vatnumber_c9cc8cce247e49bae79f15173ce97354'] = 'Запазване'; - - -return $_MODULE; diff --git a/modules/vatnumber/translations/br.php b/modules/vatnumber/translations/br.php deleted file mode 100644 index f5c8493bb..000000000 --- a/modules/vatnumber/translations/br.php +++ /dev/null @@ -1,22 +0,0 @@ -vatnumber_b0b9a606a1c251323825ca45d40964dc'] = 'País padrão não definido.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_cee549912e318726d2c4989bb507665f'] = 'Número VAT'; -$_MODULE['<{vatnumber}prestashop>vatnumber_9fa70ad6139f2a83269df74eb6747816'] = 'Permite que você insira o número de IVA intracomunitário ao criar o endereço. Você deve preencher o campo empresa para permitir a introdução do número de IVA.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_162b29cf61678af2aaac37f440265c28'] = 'Seu país foi atualizado.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_0ca51bcd22e4d7b56b6f1d8a01cefc1f'] = 'A checagem do número VAT com o WebService está ativada.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_467c214bb76759108ece49873eda44e4'] = 'A checagem do número VAT com o WebService está desativada.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_038b34b36ec9eaf5f96d11e17f208f1b'] = '-- Escolha um País --'; -$_MODULE['<{vatnumber}prestashop>vatnumber_f4f70727dc34561dfde1a3c529b6205c'] = 'Configurações'; -$_MODULE['<{vatnumber}prestashop>vatnumber_fa01fd956e87307bce4c90a0de9b0437'] = 'País do cliente'; -$_MODULE['<{vatnumber}prestashop>vatnumber_da0e4b4c2ffe78456b5a1d67fd854389'] = 'Ativar a verificação do número VAT com o WebService'; -$_MODULE['<{vatnumber}prestashop>vatnumber_59e1a8522a3bfca342cd7110b1d67b24'] = 'A verificação do WebService é lenta. Ativando esta opção pode deixar sua loja um pouco lenta.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Ativado'; -$_MODULE['<{vatnumber}prestashop>vatnumber_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desativado'; -$_MODULE['<{vatnumber}prestashop>vatnumber_c9cc8cce247e49bae79f15173ce97354'] = 'Salvar'; - - -return $_MODULE; diff --git a/modules/vatnumber/translations/ca.php b/modules/vatnumber/translations/ca.php deleted file mode 100644 index a1aeba5ce..000000000 --- a/modules/vatnumber/translations/ca.php +++ /dev/null @@ -1,22 +0,0 @@ -vatnumber_b0b9a606a1c251323825ca45d40964dc'] = 'No s\'ha establert un país predeterminat.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_cee549912e318726d2c4989bb507665f'] = 'Nombre europeu d\'IVA'; -$_MODULE['<{vatnumber}prestashop>vatnumber_9fa70ad6139f2a83269df74eb6747816'] = 'Us permet introduir el codi d\'IVA intracomunitari mentre es crea l\'adreça. Heu d\'emplenar el camp de nom de l\'empresa per poder entrar el codi d\'IVA.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_162b29cf61678af2aaac37f440265c28'] = 'El vostre país ha estat actualitzat.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_0ca51bcd22e4d7b56b6f1d8a01cefc1f'] = 'La verificació de la quantitat d\'IVA amb el servei web està ara habilitat.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_467c214bb76759108ece49873eda44e4'] = 'La verificació de la quantitat d\'IVA amb el WebService està desactivat.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_038b34b36ec9eaf5f96d11e17f208f1b'] = '-- Trieu un país --'; -$_MODULE['<{vatnumber}prestashop>vatnumber_f4f70727dc34561dfde1a3c529b6205c'] = 'Configuració'; -$_MODULE['<{vatnumber}prestashop>vatnumber_fa01fd956e87307bce4c90a0de9b0437'] = 'País dels clients'; -$_MODULE['<{vatnumber}prestashop>vatnumber_da0e4b4c2ffe78456b5a1d67fd854389'] = 'Permetre la comprovació del número d\'IVA amb el WebService'; -$_MODULE['<{vatnumber}prestashop>vatnumber_59e1a8522a3bfca342cd7110b1d67b24'] = 'La verificació per part del servei web és lent. L\'activació d\'aquesta opció pot alentir la vostra botiga.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activat'; -$_MODULE['<{vatnumber}prestashop>vatnumber_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivat'; -$_MODULE['<{vatnumber}prestashop>vatnumber_c9cc8cce247e49bae79f15173ce97354'] = 'Desar'; - - -return $_MODULE; diff --git a/modules/vatnumber/translations/de.php b/modules/vatnumber/translations/de.php deleted file mode 100644 index 757f50bb5..000000000 --- a/modules/vatnumber/translations/de.php +++ /dev/null @@ -1,23 +0,0 @@ -vatnumber_b0b9a606a1c251323825ca45d40964dc'] = 'Kein Land als Standard gesetzt.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_cee549912e318726d2c4989bb507665f'] = 'Europäische USt-Identifikationsnummer'; -$_MODULE['<{vatnumber}prestashop>vatnumber_9fa70ad6139f2a83269df74eb6747816'] = 'Erlaubt Ihren Kunden, bei Anlage der Adresse die USt-IdNr. einzugeben. Voraussetzung dafür ist die Eingabe eines Firmennamens.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_162b29cf61678af2aaac37f440265c28'] = 'Ihr Land wurde aktualisiert.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_0ca51bcd22e4d7b56b6f1d8a01cefc1f'] = 'Die Überprüfung der USt-IdNr. mit dem WebService ist nun aktiviert.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_467c214bb76759108ece49873eda44e4'] = 'Die Überprüfung der USt-IdNr. mit dem WebService ist nun deaktiviert.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_038b34b36ec9eaf5f96d11e17f208f1b'] = '- Wählen Sie ein Land -'; -$_MODULE['<{vatnumber}prestashop>vatnumber_f4f70727dc34561dfde1a3c529b6205c'] = 'Einstellungen'; -$_MODULE['<{vatnumber}prestashop>vatnumber_fa01fd956e87307bce4c90a0de9b0437'] = 'Herkunftsland des Kunden'; -$_MODULE['<{vatnumber}prestashop>vatnumber_7599b57d77ef1608b2f6da579794cc5b'] = 'Filter für Herkunftsland setzen'; -$_MODULE['<{vatnumber}prestashop>vatnumber_da0e4b4c2ffe78456b5a1d67fd854389'] = 'Aktivieren Sie die Überprüfung der USt-IdNr. via WebService'; -$_MODULE['<{vatnumber}prestashop>vatnumber_59e1a8522a3bfca342cd7110b1d67b24'] = 'Die Überprüfung durch den Webservice ist langsam. Das Aktivieren dieser Option kann Ihren Shop verlangsamen.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Aktiviert'; -$_MODULE['<{vatnumber}prestashop>vatnumber_b9f5c797ebbf55adccdd8539a65a0241'] = 'Deaktiviert'; -$_MODULE['<{vatnumber}prestashop>vatnumber_c9cc8cce247e49bae79f15173ce97354'] = 'Speichern'; - - -return $_MODULE; diff --git a/modules/vatnumber/translations/en.php b/modules/vatnumber/translations/en.php deleted file mode 100644 index d8550bad1..000000000 --- a/modules/vatnumber/translations/en.php +++ /dev/null @@ -1,23 +0,0 @@ -vatnumber_b0b9a606a1c251323825ca45d40964dc'] = 'No default country set.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_cee549912e318726d2c4989bb507665f'] = 'European VAT number'; -$_MODULE['<{vatnumber}prestashop>vatnumber_9fa70ad6139f2a83269df74eb6747816'] = 'Enables you to enter the intra-community VAT number when creating the address. You must fill in the company field to allow entering the VAT number.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_162b29cf61678af2aaac37f440265c28'] = 'Your country has been updated.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_0ca51bcd22e4d7b56b6f1d8a01cefc1f'] = 'The check of the VAT number with the WebService is now enabled.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_467c214bb76759108ece49873eda44e4'] = 'The check of the VAT number with the WebService is now disabled.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_038b34b36ec9eaf5f96d11e17f208f1b'] = '-- Choose a country --'; -$_MODULE['<{vatnumber}prestashop>vatnumber_f4f70727dc34561dfde1a3c529b6205c'] = 'Settings'; -$_MODULE['<{vatnumber}prestashop>vatnumber_fa01fd956e87307bce4c90a0de9b0437'] = 'Customers\' country'; -$_MODULE['<{vatnumber}prestashop>vatnumber_7599b57d77ef1608b2f6da579794cc5b'] = 'Filter customers\' country.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_da0e4b4c2ffe78456b5a1d67fd854389'] = 'Enable checking of the VAT number with the web service'; -$_MODULE['<{vatnumber}prestashop>vatnumber_59e1a8522a3bfca342cd7110b1d67b24'] = 'The verification by the web service is slow. Enabling this option can slow down your shop.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled'; -$_MODULE['<{vatnumber}prestashop>vatnumber_b9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled'; -$_MODULE['<{vatnumber}prestashop>vatnumber_c9cc8cce247e49bae79f15173ce97354'] = 'Save'; - - -return $_MODULE; diff --git a/modules/vatnumber/translations/es.php b/modules/vatnumber/translations/es.php deleted file mode 100644 index e016ab679..000000000 --- a/modules/vatnumber/translations/es.php +++ /dev/null @@ -1,23 +0,0 @@ -vatnumber_b0b9a606a1c251323825ca45d40964dc'] = 'No hay pais por defecto'; -$_MODULE['<{vatnumber}prestashop>vatnumber_cee549912e318726d2c4989bb507665f'] = 'Número de IVA europeo'; -$_MODULE['<{vatnumber}prestashop>vatnumber_9fa70ad6139f2a83269df74eb6747816'] = 'Te permite introducir número VAT intercomunitario al crear la dirección. Debes rellenar el campo de empresa para introducir el número VAT.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_162b29cf61678af2aaac37f440265c28'] = 'Actualización de su país.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_0ca51bcd22e4d7b56b6f1d8a01cefc1f'] = 'La comprobación del número de IVA con el WebService se encuentra activada.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_467c214bb76759108ece49873eda44e4'] = 'La comprobación del número de IVA con el WebService se encuentra desactivada.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_038b34b36ec9eaf5f96d11e17f208f1b'] = '--Elija un país--'; -$_MODULE['<{vatnumber}prestashop>vatnumber_f4f70727dc34561dfde1a3c529b6205c'] = 'Ajustes'; -$_MODULE['<{vatnumber}prestashop>vatnumber_fa01fd956e87307bce4c90a0de9b0437'] = 'País del cliente'; -$_MODULE['<{vatnumber}prestashop>vatnumber_7599b57d77ef1608b2f6da579794cc5b'] = 'Filtrar por país del cliente.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_da0e4b4c2ffe78456b5a1d67fd854389'] = 'Activar la comprobación del número de IVA con el WebService'; -$_MODULE['<{vatnumber}prestashop>vatnumber_59e1a8522a3bfca342cd7110b1d67b24'] = 'La verificación a través del webservice es lenta. Habilitar esta opción puede ralentizar tu tienda.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado'; -$_MODULE['<{vatnumber}prestashop>vatnumber_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado'; -$_MODULE['<{vatnumber}prestashop>vatnumber_c9cc8cce247e49bae79f15173ce97354'] = 'Guardar'; - - -return $_MODULE; diff --git a/modules/vatnumber/translations/fr.php b/modules/vatnumber/translations/fr.php deleted file mode 100644 index aaa1fba8c..000000000 --- a/modules/vatnumber/translations/fr.php +++ /dev/null @@ -1,23 +0,0 @@ -vatnumber_b0b9a606a1c251323825ca45d40964dc'] = 'é'; -$_MODULE['<{vatnumber}prestashop>vatnumber_cee549912e318726d2c4989bb507665f'] = 'Numéro de TVA Europeen'; -$_MODULE['<{vatnumber}prestashop>vatnumber_9fa70ad6139f2a83269df74eb6747816'] = 'Activer la saisie du numéro de TVA intra-communautaire lors de la création de l\'adresse. Vous devez remplir le champ de la société pour permettre la saisie du numéro de TVA.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_162b29cf61678af2aaac37f440265c28'] = 'Votre pays a été mis à jour.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_0ca51bcd22e4d7b56b6f1d8a01cefc1f'] = 'La vérification du numéro de TVA avec le service web est maintenant activé.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_467c214bb76759108ece49873eda44e4'] = 'La vérification du numéro de TVA avec le service web est maintenant désactivé.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_038b34b36ec9eaf5f96d11e17f208f1b'] = 'Choisissez un pays'; -$_MODULE['<{vatnumber}prestashop>vatnumber_f4f70727dc34561dfde1a3c529b6205c'] = 'Paramètres'; -$_MODULE['<{vatnumber}prestashop>vatnumber_fa01fd956e87307bce4c90a0de9b0437'] = 'Pays du client'; -$_MODULE['<{vatnumber}prestashop>vatnumber_7599b57d77ef1608b2f6da579794cc5b'] = 'Filtre les clients par pays.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_da0e4b4c2ffe78456b5a1d67fd854389'] = 'Activer la vérification du numéro de TVA via le service web'; -$_MODULE['<{vatnumber}prestashop>vatnumber_59e1a8522a3bfca342cd7110b1d67b24'] = 'La vérification par le service web est lent. Activer cette option peut ralentir votre boutique.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé'; -$_MODULE['<{vatnumber}prestashop>vatnumber_b9f5c797ebbf55adccdd8539a65a0241'] = 'Désactivé'; -$_MODULE['<{vatnumber}prestashop>vatnumber_c9cc8cce247e49bae79f15173ce97354'] = 'Enregistrer'; - - -return $_MODULE; diff --git a/modules/vatnumber/translations/gl.php b/modules/vatnumber/translations/gl.php deleted file mode 100644 index 7e8ebba05..000000000 --- a/modules/vatnumber/translations/gl.php +++ /dev/null @@ -1,12 +0,0 @@ -vatnumber_f4f70727dc34561dfde1a3c529b6205c'] = 'Configuracion'; -$_MODULE['<{vatnumber}prestashop>vatnumber_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activado'; -$_MODULE['<{vatnumber}prestashop>vatnumber_b9f5c797ebbf55adccdd8539a65a0241'] = 'Desactivado'; -$_MODULE['<{vatnumber}prestashop>vatnumber_c9cc8cce247e49bae79f15173ce97354'] = 'Gardar'; - - -return $_MODULE; diff --git a/modules/vatnumber/translations/id.php b/modules/vatnumber/translations/id.php deleted file mode 100644 index 5d9a6dbeb..000000000 --- a/modules/vatnumber/translations/id.php +++ /dev/null @@ -1,23 +0,0 @@ -vatnumber_b0b9a606a1c251323825ca45d40964dc'] = 'Tidak ada negara aktif yang diset'; -$_MODULE['<{vatnumber}prestashop>vatnumber_cee549912e318726d2c4989bb507665f'] = 'Kode PPN negara Eropa'; -$_MODULE['<{vatnumber}prestashop>vatnumber_9fa70ad6139f2a83269df74eb6747816'] = 'Memungkinkan Anda untuk memasukan nomor NPWP pada saat membuat alamat. Anda harus mengisi field perusahaan untuk memunculkan field NPWP.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_162b29cf61678af2aaac37f440265c28'] = 'Negara Anda telah diperbarui.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_0ca51bcd22e4d7b56b6f1d8a01cefc1f'] = 'Pemeriksaan jumlah PPN dengan WebService sekarang diaktifkan.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_467c214bb76759108ece49873eda44e4'] = 'Pemeriksaan jumlah PPN dengan WebService sekarang dinonaktifkan.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_038b34b36ec9eaf5f96d11e17f208f1b'] = '- Pilih negara -'; -$_MODULE['<{vatnumber}prestashop>vatnumber_f4f70727dc34561dfde1a3c529b6205c'] = 'Seting'; -$_MODULE['<{vatnumber}prestashop>vatnumber_fa01fd956e87307bce4c90a0de9b0437'] = 'Negara pelanggan'; -$_MODULE['<{vatnumber}prestashop>vatnumber_7599b57d77ef1608b2f6da579794cc5b'] = 'Saring berdasarkan negara pelanggan.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_da0e4b4c2ffe78456b5a1d67fd854389'] = 'Aktifkan pengecekean PPN melalui web service'; -$_MODULE['<{vatnumber}prestashop>vatnumber_59e1a8522a3bfca342cd7110b1d67b24'] = 'Verifikasi oleh webservice lambat. Mengaktifkan opsi ini akan membuat lambat toko Anda.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Aktifkan'; -$_MODULE['<{vatnumber}prestashop>vatnumber_b9f5c797ebbf55adccdd8539a65a0241'] = 'Nonaktifkan'; -$_MODULE['<{vatnumber}prestashop>vatnumber_c9cc8cce247e49bae79f15173ce97354'] = 'Simpan'; - - -return $_MODULE; diff --git a/modules/vatnumber/translations/index.php b/modules/vatnumber/translations/index.php index 044cb85ee..54e037c8b 100644 --- a/modules/vatnumber/translations/index.php +++ b/modules/vatnumber/translations/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -32,4 +32,4 @@ header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header("Location: ../"); -exit; \ No newline at end of file +exit; diff --git a/modules/vatnumber/translations/nl.php b/modules/vatnumber/translations/nl.php deleted file mode 100644 index 24dd4e5a8..000000000 --- a/modules/vatnumber/translations/nl.php +++ /dev/null @@ -1,23 +0,0 @@ -vatnumber_b0b9a606a1c251323825ca45d40964dc'] = 'Geen standaard land ingesteld.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_cee549912e318726d2c4989bb507665f'] = 'Europees btw nummer'; -$_MODULE['<{vatnumber}prestashop>vatnumber_9fa70ad6139f2a83269df74eb6747816'] = 'Stelt u in staat om het intracommunautaire BTW-nummer in te voeren tijdens het aanmaken van een adres. U moet eerst het bedrijfsnaam veld invullen vooraleer u het BTW-nummer kunt invoeren.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_162b29cf61678af2aaac37f440265c28'] = 'Uw land is bijgewerkt'; -$_MODULE['<{vatnumber}prestashop>vatnumber_0ca51bcd22e4d7b56b6f1d8a01cefc1f'] = 'De controle van het btw nummer met behulp van de WebService is nu ingeschakeld.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_467c214bb76759108ece49873eda44e4'] = 'De controle van het btw nummer met behulp van de WebService is nu uitgeschakeld.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_038b34b36ec9eaf5f96d11e17f208f1b'] = '-- Kies een land --'; -$_MODULE['<{vatnumber}prestashop>vatnumber_f4f70727dc34561dfde1a3c529b6205c'] = 'Instellingen'; -$_MODULE['<{vatnumber}prestashop>vatnumber_fa01fd956e87307bce4c90a0de9b0437'] = 'Land herkomst'; -$_MODULE['<{vatnumber}prestashop>vatnumber_7599b57d77ef1608b2f6da579794cc5b'] = 'Filter op land van klant.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_da0e4b4c2ffe78456b5a1d67fd854389'] = 'Activeer de controle van het btw nummer met behulp van de WebService'; -$_MODULE['<{vatnumber}prestashop>vatnumber_59e1a8522a3bfca342cd7110b1d67b24'] = 'Webservice verificatie duurt lang. Het inschakelen van deze optie kan uw winkel dan ook vertragen.'; -$_MODULE['<{vatnumber}prestashop>vatnumber_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Ingeschakeld'; -$_MODULE['<{vatnumber}prestashop>vatnumber_b9f5c797ebbf55adccdd8539a65a0241'] = 'Uitgeschakeld'; -$_MODULE['<{vatnumber}prestashop>vatnumber_c9cc8cce247e49bae79f15173ce97354'] = 'Opslaan'; - - -return $_MODULE; diff --git a/modules/vatnumber/upgrade/install-2.0.php b/modules/vatnumber/upgrade/install-2.0.php new file mode 100644 index 000000000..656b4d154 --- /dev/null +++ b/modules/vatnumber/upgrade/install-2.0.php @@ -0,0 +1,9 @@ +registerHook('actionValidateCustomerAddressForm')); +} diff --git a/modules/vatnumber/vatnumber.php b/modules/vatnumber/vatnumber.php index 51526d7e0..0f3afc72f 100644 --- a/modules/vatnumber/vatnumber.php +++ b/modules/vatnumber/vatnumber.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -33,7 +33,7 @@ class VatNumber extends TaxManagerModule { $this->name = 'vatnumber'; $this->tab = 'billing_invoicing'; - $this->version = '1.8.0'; + $this->version = '2.0.0'; $this->author = 'PrestaShop'; $this->need_instance = 0; @@ -48,11 +48,15 @@ class VatNumber extends TaxManagerModule $this->displayName = $this->l('European VAT number'); $this->description = $this->l('Enables you to enter the intra-community VAT number when creating the address. You must fill in the company field to allow entering the VAT number.'); + $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); } public function install() { - return (parent::install() && Configuration::updateValue('VATNUMBER_MANAGEMENT', 1)); + return + parent::install() + && Configuration::updateValue('VATNUMBER_MANAGEMENT', 1) + && $this->registerHook('actionValidateCustomerAddressForm'); } public function uninstall() @@ -225,7 +229,7 @@ class VatNumber extends TaxManagerModule array( 'type' => 'select', 'label' => $this->l('Customers\' country'), - 'desc' => $this->l('Operate a filter on customers\' country.'), + 'desc' => $this->l('Filter customers\' country.'), 'name' => 'VATNUMBER_COUNTRY', 'required' => false, 'default_value' => (int)$this->context->country->id, @@ -290,4 +294,20 @@ class VatNumber extends TaxManagerModule 'VATNUMBER_CHECKING' => Tools::getValue('VATNUMBER_CHECKING', Configuration::get('VATNUMBER_CHECKING')), ); } + + public function hookActionValidateCustomerAddressForm(&$params) + { + $form = $params['form']; + $is_valid = true; + + if (($vatNumber = $form->getField('vat_number')) && Configuration::get('VATNUMBER_MANAGEMENT') && Configuration::get('VATNUMBER_CHECKING')) { + $isAVatNumber = VatNumber::WebServiceCheck($vatNumber->getValue()); + if (is_array($isAVatNumber) && count($isAVatNumber) > 0) { + $vatNumber->addError($isAVatNumber[0]); + $is_valid = false; + } + } + + return $is_valid; + } } diff --git a/modules/vatnumber/views/index.php b/modules/vatnumber/views/index.php index 7c15b3d7c..d8f3648ad 100644 --- a/modules/vatnumber/views/index.php +++ b/modules/vatnumber/views/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -32,4 +32,4 @@ header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header("Location: ../../"); -exit; \ No newline at end of file +exit; diff --git a/modules/vatnumber/views/templates/admin/_configure/helpers/form/form.tpl b/modules/vatnumber/views/templates/admin/_configure/helpers/form/form.tpl index 990a47591..ad96b5b42 100644 --- a/modules/vatnumber/views/templates/admin/_configure/helpers/form/form.tpl +++ b/modules/vatnumber/views/templates/admin/_configure/helpers/form/form.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/modules/vatnumber/views/templates/admin/_configure/helpers/form/index.php b/modules/vatnumber/views/templates/admin/_configure/helpers/form/index.php index 044cb85ee..54e037c8b 100644 --- a/modules/vatnumber/views/templates/admin/_configure/helpers/form/index.php +++ b/modules/vatnumber/views/templates/admin/_configure/helpers/form/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -32,4 +32,4 @@ header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header("Location: ../"); -exit; \ No newline at end of file +exit; diff --git a/modules/vatnumber/views/templates/index.php b/modules/vatnumber/views/templates/index.php index 044cb85ee..54e037c8b 100644 --- a/modules/vatnumber/views/templates/index.php +++ b/modules/vatnumber/views/templates/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -32,4 +32,4 @@ header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header("Location: ../"); -exit; \ No newline at end of file +exit; diff --git a/modules/wkabouthotelblock/CHANGELOG.txt b/modules/wkabouthotelblock/CHANGELOG.txt index bc5456eae..a00114126 100644 --- a/modules/wkabouthotelblock/CHANGELOG.txt +++ b/modules/wkabouthotelblock/CHANGELOG.txt @@ -1,3 +1,38 @@ +----------------------------- +# V1.1.1 to V1.1.2 +----------------------------- + +## Improved/changed features + +[*] BO : Images validation improved client side (for post_max_size issue). +[*] BO : Validate::isGenericName validation added for title and description fields. + +## Update Policy + +- Mobule need only file update, can be updated only by UPLOADING new version on module + + +----------------------------- +# V1.1.0 to V1.1.1 +----------------------------- + +## Added features + +[+] BO : Configuration option "Show link at navigation" given to choose whether show "About Hotel Block" link at navigation menu or not. + + +## Improved/changed features + +[+] BO : Images validation improved. +[+] BO : Render option moved above render list at AdminAboutHotelBlockSetting controller. +- [BO] : "Interior" link is removed from footer explore block. + + +## Update Policy + +- Mobule need only file update, can be updated only by UPLOADING new version on module + + ----------------------------- # V1.0.1 to V1.1.0 ----------------------------- diff --git a/modules/wkabouthotelblock/classes/WkHotelInteriorImage.php b/modules/wkabouthotelblock/classes/WkHotelInteriorImage.php index dace5e05f..afb845bd1 100644 --- a/modules/wkabouthotelblock/classes/WkHotelInteriorImage.php +++ b/modules/wkabouthotelblock/classes/WkHotelInteriorImage.php @@ -81,7 +81,7 @@ class WkHotelInteriorImage extends ObjectModel return false; } - public static function getHigherPosition() + public function getHigherPosition() { $position = DB::getInstance()->getValue( 'SELECT MAX(`position`) FROM `'._DB_PREFIX_.'htl_interior_image`' @@ -127,42 +127,48 @@ class WkHotelInteriorImage extends ObjectModel * Call it after deleting a blocks. * @return bool $return */ - public static function cleanPositions() + public function cleanPositions() { Db::getInstance()->execute('SET @i = -1', false); $sql = 'UPDATE `'._DB_PREFIX_.'htl_interior_image` SET `position` = @i:=@i+1 ORDER BY `position` ASC'; return (bool) Db::getInstance()->execute($sql); } - public static function insertModuleDemoData() + public function insertModuleDemoData() { $languages = Language::getLanguages(false); $HOTEL_INTERIOR_HEADING = array(); $HOTEL_INTERIOR_DESCRIPTION = array(); foreach ($languages as $lang) { $HOTEL_INTERIOR_HEADING[$lang['id_lang']] = 'Interior'; - $HOTEL_INTERIOR_DESCRIPTION[$lang['id_lang']] = 'Families travelling with kids will find Amboseli national - park a safari destination matched to no other, with less tourist traffic, breathtaking open space.'; + $HOTEL_INTERIOR_DESCRIPTION[$lang['id_lang']] = 'Families travelling with kids will find Amboseli national park a safari destination matched to no other, with less tourist traffic, breathtaking open space.'; } + Configuration::updateValue('HOTEL_INTERIOR_BLOCK_NAV_LINK', 1); // update global configuration values in multilang Configuration::updateValue('HOTEL_INTERIOR_HEADING', $HOTEL_INTERIOR_HEADING); Configuration::updateValue('HOTEL_INTERIOR_DESCRIPTION', $HOTEL_INTERIOR_DESCRIPTION); // Database Entry for ($i = 1; $i <= 12; $i++) { - do { - $tmp_name = uniqid().'.jpg'; - } while (file_exists(_PS_MODULE_DIR_.'wkabouthotelblock/views/img/hotel_interior/'.$tmp_name)); - ImageManager::resize( - _PS_MODULE_DIR_.'wkabouthotelblock/views/img/dummy_img/'.$i.'.jpg', - _PS_MODULE_DIR_.'wkabouthotelblock/views/img/hotel_interior/'.$tmp_name - ); - $objHtlInteriorImg = new WkHotelInteriorImage(); - $objHtlInteriorImg->name = $tmp_name; - $objHtlInteriorImg->display_name = 'Dummy Image '.$i; - $objHtlInteriorImg->position = self::getHigherPosition(); - $objHtlInteriorImg->active = 1; - $objHtlInteriorImg->add(); + $imgName = $i.'.jpg'; + $srcPath = _PS_MODULE_DIR_.'wkabouthotelblock/views/img/dummy_img/'.$imgName; + if (file_exists($srcPath)) { + if (ImageManager::isRealImage($srcPath) + && ImageManager::isCorrectImageFileExt($srcPath) + ) { + if (ImageManager::resize( + $srcPath, + _PS_MODULE_DIR_.'wkabouthotelblock/views/img/hotel_interior/'.$imgName + )) { + $objHtlInteriorImg = new WkHotelInteriorImage(); + $objHtlInteriorImg->name = $imgName; + $objHtlInteriorImg->display_name = 'Dummy Image '.$i; + $objHtlInteriorImg->position = $this->getHigherPosition(); + $objHtlInteriorImg->active = 1; + $objHtlInteriorImg->save(); + } + } + } } return true; diff --git a/modules/wkabouthotelblock/controllers/admin/AdminAboutHotelBlockSettingController.php b/modules/wkabouthotelblock/controllers/admin/AdminAboutHotelBlockSettingController.php index b263e321a..fc6c58bfd 100644 --- a/modules/wkabouthotelblock/controllers/admin/AdminAboutHotelBlockSettingController.php +++ b/modules/wkabouthotelblock/controllers/admin/AdminAboutHotelBlockSettingController.php @@ -29,12 +29,21 @@ class AdminAboutHotelBlockSettingController extends ModuleAdminController $this->_defaultOrderBy = 'position'; $this->context = Context::getContext(); $this->identifier_name = 'display_name'; + $this->identifier = 'id_interior_image'; $this->fields_options = array( 'global' => array( 'title' => $this->l('Hotel Interior Description'), 'icon' => 'icon-cogs', 'fields' => array( + 'HOTEL_INTERIOR_BLOCK_NAV_LINK' => array( + 'title' => $this->l('Show link at navigation'), + 'hint' => $this->l('Enable, if you want to display a link at navigation menu for the interior block at home page.'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool', + 'required' => true + ), 'HOTEL_INTERIOR_HEADING' => array( 'title' => $this->l('Interior Block Title'), 'type' => 'textLang', @@ -61,6 +70,10 @@ class AdminAboutHotelBlockSettingController extends ModuleAdminController ), ); + $this->informations[] = $this->l('For better view, upload hotel interior image in multiple of 3.'); + $this->addRowAction('edit'); + $this->addRowAction('delete'); + $this->fields_list = array( 'id_interior_image' => array( 'title' => $this->l('ID'), @@ -100,7 +113,6 @@ class AdminAboutHotelBlockSettingController extends ModuleAdminController 'class' => 'fixed-width-xs' ), ); - $this->identifier = 'id_interior_image'; $this->bulk_actions = array( 'delete' => array( @@ -117,10 +129,29 @@ class AdminAboutHotelBlockSettingController extends ModuleAdminController 'icon' => 'icon-power-off text-danger', ), ); - parent::__construct(); } + public function initContent() + { + parent::initContent(); + // to customize the view as per our requirements + if ($this->display != 'add' && $this->display != 'edit') { + $this->content = $this->renderOptions(); + $this->content .= $this->renderList(); + $this->context->smarty->assign('content', $this->content); + } + } + + public function initToolbar() + { + parent::initToolbar(); + $this->page_header_toolbar_btn['new'] = array( + 'href' => self::$currentIndex.'&add'.$this->table.'&token='.$this->token, + 'desc' => $this->l('Add New Hotel Image'), + ); + } + public function getInteriorImage($imgName) { if (file_exists(_PS_MODULE_DIR_.$this->module->name.'/views/img/hotel_interior/'.$imgName)) { @@ -131,21 +162,6 @@ class AdminAboutHotelBlockSettingController extends ModuleAdminController } } - public function renderList() - { - $this->informations[] = $this->l('For better view, upload hotel interior image in multiple of 3.'); - - $this->addRowAction('edit'); - $this->addRowAction('delete'); - - $this->page_header_toolbar_btn['new'] = array( - 'href' => self::$currentIndex.'&add'.$this->table.'&token='.$this->token, - 'desc' => $this->l('Add New Hotel Image'), - ); - - return parent::renderList(); - } - public function renderForm() { $imageUrl = $imageSize = false; @@ -226,18 +242,14 @@ class AdminAboutHotelBlockSettingController extends ModuleAdminController /*==== Validations ====*/ if (Tools::getValue('display_name')) { if (!Validate::isCatalogName(Tools::getValue('display_name'))) { - $this->errors[] = Tools::displayError($this->l('Please enter valid name.')); + $this->errors[] = $this->l('Please enter valid name.'); } } if (!(Tools::getValue("id_interior_image") && !$file['size'])) { if (!$file['size']) { - $this->errors[] = Tools::displayError($this->l('Hotel Interior Image Required.')); - } elseif ($file['error']) { - $this->errors[] = Tools::displayError($this->l('Cannot upload file.')); - } elseif (!(preg_match('/\.(jpe?g|gif|png)$/', $file['name']) - && ImageManager::isRealImage($file['tmp_name'], $file['type'])) - ) { - $this->errors[] = Tools::displayError($this->l('Please upload image file.')); + $this->errors[] = $this->l('Hotel Interior Image Required.'); + } elseif ($error = ImageManager::validateUpload($file, Tools::getMaxUploadSize())) { + $this->errors[] = $error; } } @@ -247,7 +259,7 @@ class AdminAboutHotelBlockSettingController extends ModuleAdminController $objHtlInteriorImg = new WkHotelInteriorImage(Tools::getValue("id_interior_image")); } else { $objHtlInteriorImg = new WkHotelInteriorImage(); - $objHtlInteriorImg->position = WkHotelInteriorImage::getHigherPosition(); + $objHtlInteriorImg->position = $objHtlInteriorImg->getHigherPosition(); } if (Tools::getValue("id_interior_image") && $file['size'] && !$file['error']) { @@ -294,10 +306,26 @@ class AdminAboutHotelBlockSettingController extends ModuleAdminController if (!trim(Tools::getValue('HOTEL_INTERIOR_HEADING_'.$defaultLangId))) { $this->errors[] = $this->l('Interior block title is required at least in '). $objDefaultLanguage['name']; + } else { + foreach ($languages as $lang) { + if (trim(Tools::getValue('HOTEL_INTERIOR_HEADING_'.$lang['id_lang']))) { + if (!Validate::isGenericName(Tools::getValue('HOTEL_INTERIOR_HEADING_'.$lang['id_lang']))) { + $this->errors[] = $this->l('Invalid interior block title in ').$lang['name']; + } + } + } } if (!trim(Tools::getValue('HOTEL_INTERIOR_DESCRIPTION_'.$defaultLangId))) { $this->errors[] = $this->l('Interior block description is required at least in '). $objDefaultLanguage['name']; + } else { + foreach ($languages as $lang) { + if (trim(Tools::getValue('HOTEL_INTERIOR_DESCRIPTION_'.$lang['id_lang']))) { + if (!Validate::isGenericName(Tools::getValue('HOTEL_INTERIOR_DESCRIPTION_'.$lang['id_lang']))) { + $this->errors[] = $this->l('Invalid interior block description in ').$lang['name']; + } + } + } } if (!count($this->errors)) { foreach ($languages as $lang) { @@ -354,6 +382,13 @@ class AdminAboutHotelBlockSettingController extends ModuleAdminController public function setMedia() { parent::setMedia(); + Media::addJsDef( + array( + 'filesizeError' => $this->l('File exceeds maximum size.'), + 'maxSizeAllowed' => Tools::getMaxUploadSize(), + ) + ); + $this->addJS(_MODULE_DIR_.$this->module->name.'/views/js/WkAboutHotelBlockAdmin.js'); $this->addCSS(_MODULE_DIR_.'wkabouthotelblock/views/css/WkAboutHotelBlockAdmin.css'); } } diff --git a/modules/wkabouthotelblock/views/js/WkAboutHotelBlockAdmin.js b/modules/wkabouthotelblock/views/js/WkAboutHotelBlockAdmin.js new file mode 100644 index 000000000..321f4f984 --- /dev/null +++ b/modules/wkabouthotelblock/views/js/WkAboutHotelBlockAdmin.js @@ -0,0 +1,29 @@ +/** +* 2010-2018 Webkul. +* +* NOTICE OF LICENSE +* +* All right is reserved, +* Please go through this link for complete license : https://store.webkul.com/license.html +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade this module to newer +* versions in the future. If you wish to customize this module for your +* needs please refer to https://store.webkul.com/customisation-guidelines/ for more information. +* +* @author Webkul IN +* @copyright 2010-2018 Webkul IN +* @license https://store.webkul.com/license.html +*/ + +$(document).ready(function(){ + $("#interior_img").on("change", function(event) { + if (typeof this.files[0] != 'undefined') { + if (this.files[0].size > maxSizeAllowed) { + showErrorMessage(filesizeError); + $('#interior_img').val(null); + } + } + }); +}); \ No newline at end of file diff --git a/modules/wkabouthotelblock/views/templates/hook/aboutHotelBlockModuleSetting.tpl b/modules/wkabouthotelblock/views/templates/hook/aboutHotelBlockModuleSetting.tpl index 65193d53e..5299cb33b 100644 --- a/modules/wkabouthotelblock/views/templates/hook/aboutHotelBlockModuleSetting.tpl +++ b/modules/wkabouthotelblock/views/templates/hook/aboutHotelBlockModuleSetting.tpl @@ -20,7 +20,7 @@

    -{if isset($cart_rules) && count($cart_rules) && $nb_cart_rules} +{if isset($cart_rules) && $nb_cart_rules} - + @@ -48,21 +48,32 @@ - + - - - - - - - - - - {/foreach} + + + + + + + + + + + {if isset($rm_v['extra_demands']) && $rm_v['extra_demands']} + + + + {/if} + {/foreach} {/foreach} {/if} + diff --git a/translations/custom_mails/hotel-booking-cart-data.txt b/translations/custom_mails/hotel-booking-cart-data.txt index 33320c2db..0625ed1ce 100644 --- a/translations/custom_mails/hotel-booking-cart-data.txt +++ b/translations/custom_mails/hotel-booking-cart-data.txt @@ -1,24 +1,36 @@ {if isset($list)} {foreach from=$list key=data_k item=data_v} {foreach from=$data_v['date_diff'] key=rm_k item=rm_v} - + {$data_v['name']} - + {$data_v['adult']} {l s='Adults'}, {$data_v['children']} {l s='Children'} - + {convertPrice price=$data_v['unit_price']} - + {$rm_v['num_rm']} - + {$rm_v['data_form']|date_format:"%d-%b-%G"} - + {$rm_v['data_to']|date_format:"%d-%b-%G"} - + {$rm_v['amount']} - - {/foreach} + {if isset($rm_v['extra_demands']) && $rm_v['extra_demands']} + {assign var=roomCount value=1} + {foreach $rm_v['extra_demands'] as $roomDemand} + {l s='Room'} - {$roomCount} + {assign var=roomCount value=$roomCount+1} + {/foreach} + {foreach $rm_v['extra_demands'] as $roomDemands} + {foreach $roomDemands['extra_demands'] as $demand} + {$demand['name']} + {convertPrice price=$demand['price']} + {/foreach} + {/foreach} + {/if} + {/foreach} {/foreach} {/if} diff --git a/translations/custom_mails/order_conf.html b/translations/custom_mails/order_conf.html old mode 100644 new mode 100755 index 4490df08e..0c2561275 --- a/translations/custom_mails/order_conf.html +++ b/translations/custom_mails/order_conf.html @@ -153,6 +153,34 @@
    {l s='Code'} {l s='Description'} {l s='Quantity'}{l s='Value'}*{l s='Value'} {l s='Minimum'} {l s='Cumulative'} {l s='Expiration date'}{$discountDetail.name} {$discountDetail.quantity_for_user} - {if $discountDetail.id_discount_type == 1} - {$discountDetail.value|escape:'html':'UTF-8'}% - {elseif $discountDetail.id_discount_type == 2} - {convertPrice price=$discountDetail.value} ({if $discountDetail.reduction_tax == 1}{l s='Tax included'}{else}{l s='Tax excluded'}{/if}) - {elseif $discountDetail.id_discount_type == 3} + {if $discountDetail.reduction_percent > 0} + {$discountDetail.reduction_percent|escape:'html':'UTF-8'}% + {/if} + {if $discountDetail.reduction_amount > 0} + {if $discountDetail.reduction_percent > 0} + {/if} + {convertPrice price=$discountDetail.reduction_amount} ({if $discountDetail.reduction_tax == 1}{l s='Tax included'}{else}{l s='Tax excluded'}{/if}) + {/if} + {if $discountDetail.free_shipping} + {if $discountDetail.reduction_percent > 0 || $discountDetail.reduction_amount > 0} + {/if} {l s='Free shipping'} - {else} - - + {/if} + {if $discountDetail.gift_product > 0} + {if $discountDetail.reduction_percent > 0 || $discountDetail.reduction_amount > 0} + {/if} + + {$discountDetail.gift_product_name|escape:'html':'UTF-8'} + {if isset($discountDetail.gift_product_attributes) && $discountDetail.gift_product_attributes|count_characters} + ({$discountDetail.gift_product_attributes|escape:'html':'UTF-8'}) + {/if} + {/if} {if $discountDetail.minimal == 0} {l s='None'} {else} - {convertPrice price=$discountDetail.minimal} + {convertPrice price=$discountDetail.minimal} ({if $discountDetail.minimum_amount_tax == 1}{l s='Tax included'}{else}{l s='Tax excluded'}{/if}) {/if} @@ -92,7 +103,7 @@
  • - + {l s='Home'} diff --git a/themes/hotel-reservation-theme/errors.tpl b/themes/hotel-reservation-theme/errors.tpl index 339dbe8a3..823330472 100644 --- a/themes/hotel-reservation-theme/errors.tpl +++ b/themes/hotel-reservation-theme/errors.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,10 +18,11 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} + {if isset($errors) && $errors}

    {if $errors|@count > 1}{l s='There are %d errors' sprintf=$errors|@count}{else}{l s='There is %d error' sprintf=$errors|@count}{/if}

    diff --git a/themes/hotel-reservation-theme/fonts/index.php b/themes/hotel-reservation-theme/fonts/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/fonts/index.php +++ b/themes/hotel-reservation-theme/fonts/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/footer.tpl b/themes/hotel-reservation-theme/footer.tpl index 6a38d0210..ac0aab467 100644 --- a/themes/hotel-reservation-theme/footer.tpl +++ b/themes/hotel-reservation-theme/footer.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -43,4 +43,4 @@ {/if} {include file="$tpl_dir./global.tpl"} - \ No newline at end of file + diff --git a/themes/hotel-reservation-theme/global.tpl b/themes/hotel-reservation-theme/global.tpl index ff48e4f2d..9564f0736 100644 --- a/themes/hotel-reservation-theme/global.tpl +++ b/themes/hotel-reservation-theme/global.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -27,7 +27,7 @@ {addJsDef baseDir=$content_dir} {addJsDef baseUri=$base_uri} {addJsDef static_token=$static_token} -{addJsDef token=$token} +{addJsDef token=$token|htmlentities:$smarty.const.ENT_QUOTES} {addJsDef priceDisplayPrecision=$priceDisplayPrecision*$currency->decimals} {addJsDef priceDisplayMethod=$priceDisplay} {addJsDef roundMode=$roundMode} @@ -51,4 +51,5 @@ {addJsDef instantsearch=Configuration::get('PS_INSTANT_SEARCH')|boolval} {addJsDef quickView=$quick_view|boolval} {addJsDef displayList=Configuration::get('PS_GRID_PRODUCT')|boolval} -{/strip} \ No newline at end of file +{addJsDef highDPI=Configuration::get('PS_HIGHT_DPI')|boolval} +{/strip} diff --git a/themes/hotel-reservation-theme/guest-tracking.tpl b/themes/hotel-reservation-theme/guest-tracking.tpl index 11b81ca6c..4ed9b1b57 100644 --- a/themes/hotel-reservation-theme/guest-tracking.tpl +++ b/themes/hotel-reservation-theme/guest-tracking.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -55,7 +55,7 @@
    - {include file="./order-detail.tpl"} + {include file="./order-detail.tpl"}
    {/foreach} @@ -65,16 +65,16 @@ {include file="$tpl_dir./errors.tpl"} {if isset($transformSuccess)} -

    {l s='Your guest account has been successfully transformed into a customer account. You can now log in as a registered shopper. '} {l s='Log in now.'}

    +

    {l s='Your guest account has been successfully transformed into a customer account. You can now log in as a registered user. '} {l s='Log in now.'}

    {else}

    {l s='Transform your guest account into a customer account and enjoy:'}

      -
    • -{l s='Personalized and secure access'}
    • -
    • -{l s='Fast and easy checkout'}
    • -
    • -{l s='Easier merchandise return'}
    • +
    • - {l s='Personalized and secure access'}
    • +
    • - {l s='Fast and easy checkout'}
    • +
    • - {l s='Easier refund process'}
    @@ -106,7 +106,7 @@
    - {l s='For example: QIIXJXNUI or QIIXJXNUI#1'} + {l s='For example: QIIXJXNUI'}
    diff --git a/themes/hotel-reservation-theme/header.tpl b/themes/hotel-reservation-theme/header.tpl index 20a2a92b4..4cd0d7a36 100644 --- a/themes/hotel-reservation-theme/header.tpl +++ b/themes/hotel-reservation-theme/header.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -45,7 +45,15 @@ {if isset($css_files)} {foreach from=$css_files key=css_uri item=media} - + {if $css_uri == 'lteIE9'} + + {else} + + {/if} {/foreach} {/if} {if isset($js_defer) && !$js_defer && isset($js_files) && isset($js_def)} @@ -65,7 +73,7 @@ - + {if !isset($content_only) || !$content_only} diff --git a/themes/hotel-reservation-theme/history.tpl b/themes/hotel-reservation-theme/history.tpl index fb9cb8cb2..284e5f50a 100644 --- a/themes/hotel-reservation-theme/history.tpl +++ b/themes/hotel-reservation-theme/history.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -97,7 +97,7 @@ {if isset($order_refund_info[$order.id_order])} {if isset($order_refund_info[$order.id_order]['waitting']) && $order_refund_info[$order.id_order]['waitting']}

    - {l s="Waitting Requests"} : {$order_refund_info[{$order.id_order}]['waitting']} + {l s="Waiting Requests"} : {$order_refund_info[{$order.id_order}]['waitting']}

    {/if} {if isset($order_refund_info[$order.id_order]['accepted']) && $order_refund_info[$order.id_order]['accepted']} @@ -121,7 +121,7 @@ {/if}
  • {if (isset($order.invoice) && $order.invoice && isset($order.invoice_number) && $order.invoice_number) && isset($invoiceAllowed) && $invoiceAllowed == true} @@ -174,7 +174,7 @@ {strip} {addJsDef historyUrl=$link->getPageLink("orderdetail", true)|escape:'quotes':'UTF-8'} {addJsDefL name=req_sent_msg}{l s='Request Sent..' js=1}{/addJsDefL} - {addJsDefL name=wait_stage_msg}{l s='Waitting' js=1}{/addJsDefL} + {addJsDefL name=wait_stage_msg}{l s='Waiting' js=1}{/addJsDefL} {addJsDefL name=pending_state_msg}{l s='Pending...' js=1}{/addJsDefL} {addJsDefL name=mail_sending_err}{l s='Some error occurred while sending mail to the customer' js=1}{/addJsDefL} {addJsDefL name=refund_request_sending_error}{l s='Some error occurred while processing request for order cancellation.' js=1}{/addJsDefL} diff --git a/themes/hotel-reservation-theme/hook.tpl b/themes/hotel-reservation-theme/hook.tpl index 5400ca583..aa4ed40af 100644 --- a/themes/hotel-reservation-theme/hook.tpl +++ b/themes/hotel-reservation-theme/hook.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/themes/hotel-reservation-theme/identity.tpl b/themes/hotel-reservation-theme/identity.tpl index 3a415eb99..b84a30800 100644 --- a/themes/hotel-reservation-theme/identity.tpl +++ b/themes/hotel-reservation-theme/identity.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -211,7 +211,7 @@
  • - + {l s='Home'} diff --git a/themes/hotel-reservation-theme/img/icon/form-ok-circle.svg b/themes/hotel-reservation-theme/img/icon/form-ok-circle.svg new file mode 100644 index 000000000..67e21b58f --- /dev/null +++ b/themes/hotel-reservation-theme/img/icon/form-ok-circle.svg @@ -0,0 +1,35 @@ + + + + icon-features + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/themes/hotel-reservation-theme/img/icon/icon-calendar.svg b/themes/hotel-reservation-theme/img/icon/icon-calendar.svg new file mode 100644 index 000000000..41cb0d0f5 --- /dev/null +++ b/themes/hotel-reservation-theme/img/icon/icon-calendar.svg @@ -0,0 +1,21 @@ + + + + icon-calendar + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/themes/hotel-reservation-theme/img/icon/icon-close.svg b/themes/hotel-reservation-theme/img/icon/icon-close.svg new file mode 100644 index 000000000..8927ac298 --- /dev/null +++ b/themes/hotel-reservation-theme/img/icon/icon-close.svg @@ -0,0 +1,12 @@ + + + + icon-close + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/themes/hotel-reservation-theme/img/icon/index.php b/themes/hotel-reservation-theme/img/icon/index.php index 044cb85ee..a318ca6dc 100644 --- a/themes/hotel-reservation-theme/img/icon/index.php +++ b/themes/hotel-reservation-theme/img/icon/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); exit; \ No newline at end of file diff --git a/themes/hotel-reservation-theme/img/index.php b/themes/hotel-reservation-theme/img/index.php index 044cb85ee..eac7628fd 100644 --- a/themes/hotel-reservation-theme/img/index.php +++ b/themes/hotel-reservation-theme/img/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); -exit; \ No newline at end of file +exit; diff --git a/themes/hotel-reservation-theme/img/jquery/index.php b/themes/hotel-reservation-theme/img/jquery/index.php index 044cb85ee..eac7628fd 100644 --- a/themes/hotel-reservation-theme/img/jquery/index.php +++ b/themes/hotel-reservation-theme/img/jquery/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); -exit; \ No newline at end of file +exit; diff --git a/themes/hotel-reservation-theme/img/jquery/uniform/index.php b/themes/hotel-reservation-theme/img/jquery/uniform/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/img/jquery/uniform/index.php +++ b/themes/hotel-reservation-theme/img/jquery/uniform/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/index.php b/themes/hotel-reservation-theme/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/index.php +++ b/themes/hotel-reservation-theme/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/index.tpl b/themes/hotel-reservation-theme/index.tpl index 02c799d0a..f53bae00a 100644 --- a/themes/hotel-reservation-theme/index.tpl +++ b/themes/hotel-reservation-theme/index.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/themes/hotel-reservation-theme/js/addresses.js b/themes/hotel-reservation-theme/js/addresses.js index c00b991eb..43cb9cf79 100644 --- a/themes/hotel-reservation-theme/js/addresses.js +++ b/themes/hotel-reservation-theme/js/addresses.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/advanced-payment-api.js b/themes/hotel-reservation-theme/js/advanced-payment-api.js index 55c3426a8..568b9467b 100644 --- a/themes/hotel-reservation-theme/js/advanced-payment-api.js +++ b/themes/hotel-reservation-theme/js/advanced-payment-api.js @@ -1,5 +1,5 @@ /* - * 2007-2015 PrestaShop + * 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -45,20 +45,24 @@ $(document).ready(function(){ if (handler.checkTOS() === false) { - alert(aeuc_tos_err_str); + var to_display = $('
    ').html(aeuc_tos_err_str).text(); + alert(to_display); return; } if (aeuc_has_virtual_products === true && handler.checkVirtualProductRevocation() === false) { - alert(aeuc_virt_prod_err_str); + var to_display = $('
    ').html(aeuc_virt_prod_err_str).text(); + alert(to_display); return; } if (handler.selected_option === null) { - alert(aeuc_no_pay_err_str); + var to_display = $('
    ').html(aeuc_no_pay_err_str).text(); + alert(to_display); return; } if (handler.submitForm() === false) { - alert(aeuc_submit_err_str); + var to_display = $('
    ').html(aeuc_submit_err_str).text(); + alert(to_display); return; } return; @@ -79,18 +83,10 @@ var PaymentOptionHandler = function() { } this.selected_option = elem; this.selected_option.addClass('payment_selected'); - this.selected_option.children('a:first').css({ - 'border': '1px solid #55c65e', - 'border-radius': '4px' - }); this.selected_option.children('a:first').children('.payment_option_selected:first').fadeIn(); }; this.unselectOption = function() { - this.selected_option.children('a:first').css({ - 'border': '1px solid #d6d4d4', - 'border-radius': '4px' - }); this.selected_option.children('a:first').children('.payment_option_selected:first').fadeOut(); this.selected_option.removeClass('payment_selected'); }; diff --git a/themes/hotel-reservation-theme/js/authentication.js b/themes/hotel-reservation-theme/js/authentication.js index b936c6abf..38a461c1a 100644 --- a/themes/hotel-reservation-theme/js/authentication.js +++ b/themes/hotel-reservation-theme/js/authentication.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/autoload/index.php b/themes/hotel-reservation-theme/js/autoload/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/autoload/index.php +++ b/themes/hotel-reservation-theme/js/autoload/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/autoload/jquery.total-storage.LICENSE b/themes/hotel-reservation-theme/js/autoload/jquery.total-storage.LICENSE new file mode 100644 index 000000000..b82fb8468 --- /dev/null +++ b/themes/hotel-reservation-theme/js/autoload/jquery.total-storage.LICENSE @@ -0,0 +1,4 @@ +Copyright (c) 2012 Jared Novack & Upstatement (upstatement.com) +Dual licensed under the MIT and GPL licenses: +http://www.opensource.org/licenses/mit-license.php +http://www.gnu.org/licenses/gpl.html diff --git a/themes/hotel-reservation-theme/js/autoload/jquery.uniform-modified.LICENSE b/themes/hotel-reservation-theme/js/autoload/jquery.uniform-modified.LICENSE new file mode 100644 index 000000000..ef3c5cfaa --- /dev/null +++ b/themes/hotel-reservation-theme/js/autoload/jquery.uniform-modified.LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright © 2009 Josh Pyles / Pixelmatrix Design LLC +http://pixelmatrixdesign.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/themes/hotel-reservation-theme/js/cart-summary.js b/themes/hotel-reservation-theme/js/cart-summary.js index aaa4c063d..bcfca1f43 100644 --- a/themes/hotel-reservation-theme/js/cart-summary.js +++ b/themes/hotel-reservation-theme/js/cart-summary.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -928,7 +928,7 @@ function updateCartSummary(json) } // Block cart - if (typeof(orderProcess) !== 'undefined' && orderProcess == 'order-opc') + if (typeof(orderProcess) !== 'undefined' && orderProcess == 'order-opc' && !json.is_virtual_cart) $('.ajax_cart_shipping_cost').parent().find('.unvisible').show(); if (json.total_shipping > 0) @@ -950,7 +950,7 @@ function updateCartSummary(json) { if (parseFloat(json.total_shipping) > 0) $('.ajax_cart_shipping_cost').text(jsonData.shippingCost); - else if (json.carrier.id == null && typeof(toBeDetermined) !== 'undefined') + else if (json.carrier.id == null && typeof(toBeDetermined) !== 'undefined' && !json.free_ship) $('.ajax_cart_shipping_cost').html(toBeDetermined); else if (typeof(freeShippingTranslation) != 'undefined') $('.ajax_cart_shipping_cost').html(freeShippingTranslation); @@ -979,20 +979,16 @@ function updateCartSummary(json) } else { - if (json.carrier.id != null || json.free_ship == 1) + if (json.carrier.id != null || json.free_ship) + { $('#total_shipping').html(freeShippingTranslation); - else if (!hasDeliveryAddress) + if (json.is_virtual_cart) + $('.cart_total_delivery').hide(); + } + if (!hasDeliveryAddress) $('.cart_total_delivery').hide(); } - if (json.free_ship > 0 && !json.is_virtual_cart) - { - $('.cart_free_shipping').fadeIn(); - $('#free_shipping').html(formatCurrency(json.free_ship, currencyFormat, currencySign, currencyBlank)); - } - else - $('.cart_free_shipping').hide(); - if (json.total_wrapping > 0) { $('#total_wrapping').html(formatCurrency(json.total_wrapping, currencyFormat, currencySign, currencyBlank)); diff --git a/themes/hotel-reservation-theme/js/category.js b/themes/hotel-reservation-theme/js/category.js index 8b8a134ae..c61649031 100644 --- a/themes/hotel-reservation-theme/js/category.js +++ b/themes/hotel-reservation-theme/js/category.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/cms.js b/themes/hotel-reservation-theme/js/cms.js index 816a257fa..c8d37e9cc 100644 --- a/themes/hotel-reservation-theme/js/cms.js +++ b/themes/hotel-reservation-theme/js/cms.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -57,4 +57,4 @@ function submitPublishCMS(url, redirect, token) } ); return true; -} \ No newline at end of file +} diff --git a/themes/hotel-reservation-theme/js/contact-form.js b/themes/hotel-reservation-theme/js/contact-form.js index 745f64200..0023a18a8 100644 --- a/themes/hotel-reservation-theme/js/contact-form.js +++ b/themes/hotel-reservation-theme/js/contact-form.js @@ -1,33 +1,34 @@ /* - * 2007-2015 PrestaShop - * - * NOTICE OF LICENSE - * - * This source file is subject to the Academic Free License (AFL 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/afl-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@prestashop.com so we can send you a copy immediately. - * - * DISCLAIMER - * - * Do not edit or add to this file if you wish to upgrade PrestaShop to newer - * versions in the future. If you wish to customize PrestaShop for your - * needs please refer to http://www.prestashop.com for more information. - * - * @author PrestaShop SA - * @copyright 2007-2015 PrestaShop SA - * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) - * International Registered Trademark & Property of PrestaShop SA - */ +* 2007-2017 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Academic Free License (AFL 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/afl-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@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ //global variables -if (typeof $.uniform.defaults !== 'undefined') { - if (typeof contact_fileDefaultHtml !== 'undefined') - $.uniform.defaults.fileDefaultHtml = contact_fileDefaultHtml; - if (typeof contact_fileButtonHtml !== 'undefined') - $.uniform.defaults.fileButtonHtml = contact_fileButtonHtml; +if (typeof $.uniform.defaults !== 'undefined') +{ + if (typeof contact_fileDefaultHtml !== 'undefined') + $.uniform.defaults.fileDefaultHtml = contact_fileDefaultHtml; + if (typeof contact_fileButtonHtml !== 'undefined') + $.uniform.defaults.fileButtonHtml = contact_fileButtonHtml; } $(document).ready(function() { @@ -36,7 +37,7 @@ $(document).ready(function() { $('#contact_type').html($(this).html()); $('#id_contact').val($(this).attr('value')); }); - + $(document).on('change', 'select[name=id_contact]', function() { $('.desc_contact').hide(); $('#desc_contact' + parseInt($(this).val())).show(); @@ -89,8 +90,8 @@ function initMap() { title: location.hotel_name, animation: google.maps.Animation.DROP, }); - - // Allow each marker to have an info window + + // Allow each marker to have an info window google.maps.event.addListener(marker, 'click', (function(marker, i) { return function() { infoWindow.setContent(location.map_formated_address); diff --git a/themes/hotel-reservation-theme/js/debug/index.php b/themes/hotel-reservation-theme/js/debug/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/debug/index.php +++ b/themes/hotel-reservation-theme/js/debug/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/debug/jquery.lint.LICENSE b/themes/hotel-reservation-theme/js/debug/jquery.lint.LICENSE new file mode 100644 index 000000000..edc39e810 --- /dev/null +++ b/themes/hotel-reservation-theme/js/debug/jquery.lint.LICENSE @@ -0,0 +1,699 @@ +The MIT License (MIT) + +Copyright © James Padolsey + + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + Preamble + +The GNU General Public License is a free, copyleft license for +software and other kinds of works. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + +Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + +Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + +0. Definitions. + +"This License" refers to version 3 of the GNU General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based +on the Program. + +To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +1. Source Code. + +The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + +A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + +The Corresponding Source for a work in source code form is that +same work. + +2. Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + +4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified +it, and giving a relevant date. + +b) The work must carry prominent notices stating that it is +released under this License and any conditions added under section +7. This requirement modifies the requirement in section 4 to +"keep intact all notices". + +c) You must license the entire work, as a whole, under this +License to anyone who comes into possession of a copy. This +License will therefore apply, along with any applicable section 7 +additional terms, to the whole of the work, and all its parts, +regardless of how they are packaged. This License gives no +permission to license the work in any other way, but it does not +invalidate such permission if you have separately received it. + +d) If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your +work need not make them do so. + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + +a) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium +customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a +written offer, valid for at least three years and valid for as +long as you offer spare parts or customer support for that product +model, to give anyone who possesses the object code either (1) a +copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical +medium customarily used for software interchange, for a price no +more than your reasonable cost of physically performing this +conveying of source, or (2) access to copy the +Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the +written offer to provide the Corresponding Source. This +alternative is allowed only occasionally and noncommercially, and +only if you received the object code with such an offer, in accord +with subsection 6b. + +d) Convey the object code by offering access from a designated +place (gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to +copy the object code is a network server, the Corresponding Source +may be on a different server (operated by you or a third party) +that supports equivalent copying facilities, provided you maintain +clear directions next to the object code saying where to find the +Corresponding Source. Regardless of what server hosts the +Corresponding Source, you remain obligated to ensure that it is +available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided +you inform other peers where the object code and Corresponding +Source of the work are being offered to the general public at no +charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the +terms of sections 15 and 16 of this License; or + +b) Requiring preservation of specified reasonable legal notices or +author attributions in that material or in the Appropriate Legal +Notices displayed by works containing it; or + +c) Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or + +d) Limiting the use for publicity purposes of names of licensors or +authors of the material; or + +e) Declining to grant rights under trademark law for use of some +trade names, trademarks, or service marks; or + +f) Requiring indemnification of licensors and authors of that +material by anyone who conveys the material (or modified versions of +it) with contractual assumptions of liability to the recipient, for +any liability that these contractual assumptions directly impose on +those licensors and authors. + +All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + +8. Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +11. Patents. + +A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + +Copyright (C) James Padolsey + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + +Copyright (C) James Padolsey + +This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + +The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/themes/hotel-reservation-theme/js/global.js b/themes/hotel-reservation-theme/js/global.js index f2da015b7..699bdc876 100644 --- a/themes/hotel-reservation-theme/js/global.js +++ b/themes/hotel-reservation-theme/js/global.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -92,12 +92,12 @@ $(document).ready(function(){ sticky: false, mouseOutClose: true, fx: { - open: 'fadeIn', - openSpeed: 'fast' + open: 'fadeIn', + openSpeed: 'fast' } }).css('opacity', 0.8); - if (!!$.prototype.fancybox) + if (typeof(FancyboxI18nClose) !== 'undefined' && typeof(FancyboxI18nNext) !== 'undefined' && typeof(FancyboxI18nPrev) !== 'undefined' && !!$.prototype.fancybox) $.extend($.fancybox.defaults.tpl, { closeBtn : '', next : '', @@ -113,7 +113,9 @@ $(document).ready(function(){ function highdpiInit() { - if($('.replace-2x').css('font-size') == "1px") + if (typeof highDPI === 'undefined') + return; + if(highDPI && $('.replace-2x').css('font-size') == "1px") { var els = $("img.replace-2x").get(); for(var i = 0; i < els.length; i++) @@ -133,29 +135,29 @@ function highdpiInit() // Used to compensante Chrome/Safari bug (they don't care about scroll bar for width) function scrollCompensate() { - var inner = document.createElement('p'); - inner.style.width = "100%"; - inner.style.height = "200px"; + var inner = document.createElement('p'); + inner.style.width = "100%"; + inner.style.height = "200px"; - var outer = document.createElement('div'); - outer.style.position = "absolute"; - outer.style.top = "0px"; - outer.style.left = "0px"; - outer.style.visibility = "hidden"; - outer.style.width = "200px"; - outer.style.height = "150px"; - outer.style.overflow = "hidden"; - outer.appendChild(inner); + var outer = document.createElement('div'); + outer.style.position = "absolute"; + outer.style.top = "0px"; + outer.style.left = "0px"; + outer.style.visibility = "hidden"; + outer.style.width = "200px"; + outer.style.height = "150px"; + outer.style.overflow = "hidden"; + outer.appendChild(inner); - document.body.appendChild(outer); - var w1 = inner.offsetWidth; - outer.style.overflow = 'scroll'; - var w2 = inner.offsetWidth; - if (w1 == w2) w2 = outer.clientWidth; + document.body.appendChild(outer); + var w1 = inner.offsetWidth; + outer.style.overflow = 'scroll'; + var w2 = inner.offsetWidth; + if (w1 == w2) w2 = outer.clientWidth; - document.body.removeChild(outer); + document.body.removeChild(outer); - return (w1 - w2); + return (w1 - w2); } function responsiveResize() @@ -164,14 +166,16 @@ function responsiveResize() if (($(window).width()+scrollCompensate()) <= 767 && responsiveflag == false) { accordion('enable'); - accordionFooter('enable'); + accordionFooter('enable'); responsiveflag = true; } else if (($(window).width()+scrollCompensate()) >= 768) { accordion('disable'); accordionFooter('disable'); - responsiveflag = false; + responsiveflag = false; + // if (typeof bindUniform !=='undefined') + // bindUniform(); } blockHover(); } @@ -236,6 +240,14 @@ function quick_view() function bindGrid() { + var storage = false; + if (typeof(getStorageAvailable) !== 'undefined') { + storage = getStorageAvailable(); + } + if (!storage) { + return; + } + var view = $.totalStorage('display'); if (!view && (typeof displayList != 'undefined') && displayList) @@ -264,7 +276,7 @@ function display(view) $('ul.product_list').removeClass('grid').addClass('list row'); $('.product_list > li').removeClass('col-xs-12 col-sm-6 col-md-4').addClass('col-xs-12'); $('.product_list > li').each(function(index, element) { - html = ''; + var html = ''; html = '
    '; html += '
    ' + $(element).find('.left-block').html() + '
    '; html += '
    '; @@ -293,7 +305,7 @@ function display(view) html += '
    ' + $(element).find('.functional-buttons').html() + '
    '; html += '
    '; html += '
    '; - $(element).html(html); + $(element).html(html); }); $('.display').find('li#list').addClass('selected'); $('.display').find('li#grid').removeAttr('class'); @@ -304,8 +316,8 @@ function display(view) $('ul.product_list').removeClass('list').addClass('grid row'); $('.product_list > li').removeClass('col-xs-12').addClass('col-xs-12 col-sm-6 col-md-4'); $('.product_list > li').each(function(index, element) { - html = ''; - html += '
    '; + var html = ''; + html += '
    '; html += '
    ' + $(element).find('.left-block').html() + '
    '; html += '
    '; html += '
    '+ $(element).find('.product-flags').html() + '
    '; @@ -330,8 +342,8 @@ function display(view) } html += '
    '; html += '
    ' + $(element).find('.functional-buttons').html() + '
    '; - html += '
    '; - $(element).html(html); + html += '
    '; + $(element).html(html); }); $('.display').find('li#grid').addClass('selected'); $('.display').find('li#list').removeAttr('class'); @@ -344,7 +356,6 @@ function dropDown() elementClick = '#header .current, #footer .current'; elementSlide = 'ul.toogle_content'; activeClass = 'active'; - $(elementClick).on('click', function(e){ e.stopPropagation(); var subUl = $(this).next(elementSlide); @@ -379,8 +390,9 @@ function accordionFooter(status) { if(status == 'enable') { - $('#footer .footer-block h4').on('click', function(){ + $('#footer .footer-block h4').on('click', function(e){ $(this).toggleClass('active').parent().find('.toggle-footer').stop().slideToggle('medium'); + e.preventDefault(); }) $('#footer').addClass('accordion').find('.toggle-footer').slideUp('fast'); } @@ -393,7 +405,6 @@ function accordionFooter(status) function accordion(status) { - leftColumnBlocks = $('#left_column'); if(status == 'enable') { var accordion_selector = '#right_column .block .title_block, #left_column .block .title_block, #left_column #newsletter_block_left h4,' + @@ -413,6 +424,13 @@ function accordion(status) } } +function bindUniform() +{ + if (!!$.prototype.uniform) { + $("select.form-control,input[type='radio'],input[type='checkbox']").not(".not_uniform").uniform(); + } +} + /*Growl plulin implementation to show notifications on front office*/ function showSuccessMessage(msg) { $.growl.notice({ title: "", message:msg}); diff --git a/themes/hotel-reservation-theme/js/history.js b/themes/hotel-reservation-theme/js/history.js index d8f16769a..620139cf3 100644 --- a/themes/hotel-reservation-theme/js/history.js +++ b/themes/hotel-reservation-theme/js/history.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -188,9 +188,9 @@ $(document).ready(function(){ }, beforeClose: function () { - $('#cancel_req_id_order, #cancel_req_id_product, #cancel_req_id_currency, #cancel_req_id_customer, #cancel_req_num_rooms, #cancel_req_date_from, #cancel_req_date_to, #amount #reasonForRefund, .reasonForRefund').val(''); + $('#cancel_req_id_order, #cancel_req_id_product, #cancel_req_id_currency, #cancel_req_id_customer, #cancel_req_num_rooms, #cancel_req_date_from, #cancel_req_date_to, #amount .reasonForRefund, .reasonForRefund').val(''); $('.cancel_req_amount').hide(); - $('#reasonForRefund').css('border','1px solid #d6d4d4'); + $('.reasonForRefund').css('border','1px solid #d6d4d4'); $('.required_err').hide(); } }); @@ -202,7 +202,7 @@ $(document).ready(function(){ var id_currency = $(this).data('id_currency'); var id_customer = $(this).data('id_customer'); var id_order = $(this).data('id_order'); - + $.fancybox({ href: "#reason_fancybox_content", width: 600, @@ -219,31 +219,26 @@ $(document).ready(function(){ }, beforeClose: function () { - $('#cancel_req_id_currency, #cancel_req_id_order, #cancel_req_id_customer, #cancel_req_total_order_data, #reasonForRefund').val(''); + $('#cancel_req_id_currency, #cancel_req_id_order, #cancel_req_id_customer, #cancel_req_total_order_data, .reasonForRefund').val(''); $('.cancel_req_amount').hide(); - $('#reasonForRefund').css('border','1px solid #d6d4d4'); + $('.reasonForRefund').css('border','1px solid #d6d4d4'); $('.required_err').hide(); } }); }); - $('body').on('click', '#submit_refund_reason', function() - { + $('body').on('click', '#submit_refund_reason', function() { var order_data = $('#cancel_req_total_order_data').val(); - if (order_data) - { - var cancellation_reason = $('#reasonForRefund').val(); + if (order_data) { + var cancellation_reason = $('.reasonForRefund').val(); var id_order = $('#cancel_req_id_order').val(); var id_currency = $('#cancel_req_id_currency').val(); var id_customer = $('#cancel_req_id_customer').val(); - if ($('#reasonForRefund').val() == '') - { + if ($('.reasonForRefund').val() == '') { $('.required_err').show(); - $('#reasonForRefund').css('border','1px solid #AA1F00'); - } - else - { + $('.reasonForRefund').css('border','1px solid #AA1F00'); + } else { $('#submit_refund_reason').attr('disabled', 'disabled'); $.ajax({ data:{ @@ -258,34 +253,26 @@ $(document).ready(function(){ method:'POST', dataType:'json', url:historyUrl, - success:function(data) - { - if (data.mail_err) - { + success:function(data) { + if (data.mail_err) { alert(mail_sending_err); } - if (data.status == 'success') - { + if (data.status == 'success') { $('.totalOrdercancellation_div').hide(); $(".roomRequestForRefund").parent().siblings('.stage_name').html('

    '+wait_stage_msg+'

    '); $(".roomRequestForRefund").parent().siblings('.status_name').html('

    '+pending_state_msg+'

    '); $(".roomRequestForRefund").parent().html('

    '+req_sent_msg+'

    '); $.fancybox.close(); - } - else - { + } else { alert(refund_request_sending_error); } }, - error: function(XMLHttpRequest, textStatus, errorThrown) - { + error: function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); } }); } - } - else - { + } else { var id_order = $('#cancel_req_id_order').val(); var id_room = $('#cancel_req_id_room').val(); var id_product = $('#cancel_req_id_product').val(); @@ -295,15 +282,12 @@ $(document).ready(function(){ var date_from = $('#cancel_req_date_from').val(); var date_to = $('#cancel_req_date_to').val(); var amount = $('#cancel_req_amount').val(); - var cancellation_reason = $('#reasonForRefund').val(); + var cancellation_reason = $('.reasonForRefund').val(); - if ($('#reasonForRefund').val() == '') - { + if ($('.reasonForRefund').val() == '') { $('.required_err').show(); - $('#reasonForRefund').css('border','1px solid #AA1F00'); - } - else - { + $('.reasonForRefund').css('border','1px solid #AA1F00'); + } else { $('#submit_refund_reason').attr('disabled', 'disabled'); $.ajax({ data:{ @@ -353,5 +337,43 @@ $(document).ready(function(){ } } }); + + // fancybox for extra bed requirement edit on checkout page + $('body').on('click', '.open_rooms_extra_demands', function() { + var idProduct = $(this).attr('id_product'); + var idOrder = $(this).attr('id_order'); + var dateFrom = $(this).attr('date_from'); + var dateTo = $(this).attr('date_to'); + $.fancybox({ + href: "#rooms_extra_demands", + autoSize : true, + autoScale : true, + maxWidth : '100%', + 'hideOnContentClick': false, + beforeLoad: function () { + $.ajax({ + type: 'POST', + headers: { + "cache-control": "no-cache" + }, + url: historyUrl, + dataType: 'html', + cache: false, + data: { + date_from: dateFrom, + date_to: dateTo, + id_product: idProduct, + id_order: idOrder, + method: 'getRoomTypeBookingDemands', + ajax: true + }, + success: function(result) { + $('#rooms_type_extra_demands').find('#room_type_demands_desc').html(''); + $('#rooms_type_extra_demands').find('#room_type_demands_desc').append(result); + }, + }); + }, + }); + }); }); diff --git a/themes/hotel-reservation-theme/js/index.js b/themes/hotel-reservation-theme/js/index.js index ac9099344..d87420f1d 100644 --- a/themes/hotel-reservation-theme/js/index.js +++ b/themes/hotel-reservation-theme/js/index.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/index.php b/themes/hotel-reservation-theme/js/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/index.php +++ b/themes/hotel-reservation-theme/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/blockcart/ajax-cart.js b/themes/hotel-reservation-theme/js/modules/blockcart/ajax-cart.js index 06be5a65b..2715f6669 100644 --- a/themes/hotel-reservation-theme/js/modules/blockcart/ajax-cart.js +++ b/themes/hotel-reservation-theme/js/modules/blockcart/ajax-cart.js @@ -1,5 +1,5 @@ /* - * 2007-2015 PrestaShop + * 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA - * @copyright 2007-2015 PrestaShop SA + * @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -149,7 +149,6 @@ var ajaxCart = { if ($('.cart_block').length) { $(document).off('click', '#add_to_cart button').on('click', '#add_to_cart button', function(e) { e.preventDefault(); - var date_from = $('#room_check_in').val(); var date_to = $('#room_check_out').val(); ajaxCart.add($('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null, date_from, date_to); @@ -215,6 +214,7 @@ var ajaxCart = { $("#max_avail_type_qty").val(data.avail_rooms); $(".num_searched_avail_rooms").text(data.avail_rooms); $('.sold_out_alert').hide(); + disableRoomTypeDemands(0); $('.unvail_rooms_cond_display').show(); } } else { @@ -283,7 +283,7 @@ var ajaxCart = { dateFrom = $('#check_in_time').val(); dateTo = $('#check_out_time').val(); } else { - + dateFrom = $.datepicker.formatDate('yy-mm-dd', new Date());; dateTo = $.datepicker.formatDate('yy-mm-dd', new Date());; } @@ -414,6 +414,15 @@ var ajaxCart = { if ($('.cart_block_list').hasClass('collapsed')) this.expand(); + + // get the selected extra demands by customer + var roomDemands = []; + $('input:checkbox.id_room_type_demand:checked').each(function () { + roomDemands.push({ + 'id_global_demand':$(this).val(), + 'id_option': $(this).closest('.room_demand_block').find('.id_option').val() + }); + }); //send the ajax request to the server $.ajax({ type: 'POST', @@ -424,7 +433,7 @@ var ajaxCart = { async: true, cache: false, dataType: "json", - data: 'controller=cart&add=1&dateFrom=' + dateFrom + '&dateTo=' + dateTo + '&ajax=true&qty=' + ((quantity && quantity != null) ? quantity : '1') + '&id_product=' + idProduct + '&token=' + static_token + ((parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination) : '' + '&id_customization=' + ((typeof customizationId !== 'undefined') ? customizationId : 0)), + data: 'controller=cart&add=1&dateFrom=' + dateFrom + '&dateTo=' + dateTo + '&ajax=true&qty=' + ((quantity && quantity != null) ? quantity : '1') + '&id_product=' + idProduct + '&roomDemands=' + JSON.stringify(roomDemands) + '&token=' + static_token + ((parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination) : '' + '&id_customization=' + ((typeof customizationId !== 'undefined') ? customizationId : 0)), success: function(jsonData, textStatus, jqXHR) { /*by webkul checking and setting availability of rooms*/ /*for product page add to cart quantity management*/ @@ -440,9 +449,9 @@ var ajaxCart = { if (jsonData.avail_rooms == 0) { $('.num_quantity_alert').hide(); $('.sold_out_alert').show(); + disableRoomTypeDemands(1); $('.unvail_rooms_cond_display').hide(); } - //$('#quantity_wanted').val(1); } if (pagename == 'category') { @@ -553,6 +562,7 @@ var ajaxCart = { $("#max_avail_type_qty").val(jsonData.avail_rooms); $(".num_searched_avail_rooms").text(jsonData.avail_rooms); $('.sold_out_alert').hide(); + disableRoomTypeDemands(0); $('.unvail_rooms_cond_display').show(); } if (pagename == 'category') { @@ -1031,6 +1041,7 @@ var ajaxCart = { $('.ajax_block_cart_total').attr('total_cart_price', jsonData.totalToPay); $('.ajax_block_products_total').text(jsonData.productTotal); + $('.ajax_cart_extra_demands_cost').text(jsonData.totalDemandsPriceFormat); $('.ajax_total_price_wt').text(jsonData.total_price_wt); if (parseFloat(jsonData.freeShippingFloat) > 0) { @@ -1100,4 +1111,16 @@ function crossselling_serialScroll() { hideControlOnEnd: true, pager: false }); -} \ No newline at end of file +} + +function disableRoomTypeDemands(show) { + if (show) { + $('.room_demands_container_overlay').show(); + $('.room_demands_container').find('input:checkbox.id_room_type_demand').prop('checked', false); + $('.room_demands_container').find('input:checkbox.id_room_type_demand').attr('disabled', 'disabled'); + } else { + $('.room_demands_container_overlay').hide(); + $('.room_demands_container').find('input:checkbox.id_room_type_demand').removeAttr('disabled'); + $('.room_demands_container').find('.checker').removeClass('disabled'); + } +} diff --git a/themes/hotel-reservation-theme/js/modules/blockcart/index.php b/themes/hotel-reservation-theme/js/modules/blockcart/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/blockcart/index.php +++ b/themes/hotel-reservation-theme/js/modules/blockcart/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/blocklayered/blocklayered.js b/themes/hotel-reservation-theme/js/modules/blocklayered/blocklayered.js index ec694082e..9d30690f3 100644 --- a/themes/hotel-reservation-theme/js/modules/blocklayered/blocklayered.js +++ b/themes/hotel-reservation-theme/js/modules/blocklayered/blocklayered.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registred Trademark & Property of PrestaShop SA */ @@ -27,6 +27,7 @@ var ajaxQueries = new Array(); var ajaxLoaderOn = 0; var sliderList = new Array(); var slidersInit = false; +var lockLocationChecking = false; $(document).ready(function() { @@ -93,17 +94,12 @@ $(document).ready(function() }); // Click on label - $('#layered_block_left label:not(.layered_color) a').on({ - click: function(e) { - e.preventDefault(); - var disable = $(this).parent().parent().find('input').attr('disabled'); - if (disable == '' - || typeof(disable) == 'undefined' - || disable == false) - { - $(this).parent().parent().find('input').click(); - reloadContent(); - } + $(document).on('click', '#layered_block_left label:not(.layered_color) a', function(e) { + e.preventDefault(); + var disable = $(this).parent().parent().find('input').attr('disabled'); + if (disable == '' || typeof(disable) == 'undefined' || disable == false) + { + $(this).parent().parent().find('input').click(); } }); @@ -119,17 +115,17 @@ $(document).ready(function() hideFilterValueAction(this); }); - $('.selectProductSort').unbind('change').bind('change', function(event) { + $(document).off('change', '.selectProductSort').on('change', '.selectProductSort', function(e) { $('.selectProductSort').val($(this).val()); if($('#layered_form').length > 0) - reloadContent(true); + reloadContent('forceSlide'); }); - $(document).off('change', '#layered_form select[name=n]').on('change', '#layered_form select[name=n]', function(e) + $(document).off('change', 'select[name="n"]').on('change', 'select[name="n"]', function(e) { $('select[name=n]').val($(this).val()); - reloadContent(true); + reloadContent('forceSlide'); }); paginationButton(false); @@ -312,10 +308,10 @@ function paginationButton(nbProductsIn, nbProductOut) var nbPage = parseInt($('div.pagination li.current').children().children().html()); var nb_products = nbProductsIn; - if ($('#nb_item option:selected').length == 0) + if ($('#nb_page_items option:selected').length == 0) var nbPerPage = nb_products; else - var nbPerPage = parseInt($('#nb_item option:selected').val()); + var nbPerPage = parseInt($('#nb_page_items option:selected').val()); isNaN(nbPage) ? nbPage = 1 : nbPage = nbPage; nbPerPage*nbPage < nb_products ? productShowing = nbPerPage*nbPage :productShowing = (nbPerPage*nbPage-nb_products-nbPerPage*nbPage)*-1; @@ -468,7 +464,7 @@ function reloadContent(params_plus) } var slideUp = true; - if (typeof params_plus === undefined || !(typeof params_plus === 'string')) + if (typeof params_plus === 'undefined' || !(typeof params_plus === 'string')) { params_plus = ''; slideUp = false; @@ -487,11 +483,14 @@ function reloadContent(params_plus) { type: 'GET', url: baseDir + 'modules/blocklayered/blocklayered-ajax.php', - data: data+params_plus+n, + data: data + '&' + params_plus + n, dataType: 'json', cache: false, // @todo see a way to use cache and to add a timestamps parameter to refresh cache each 10 minutes for example success: function(result) { + if (typeof(result) === 'undefined') + return; + if (result.meta_description != '') $('meta[name="description"]').attr('content', result.meta_description); diff --git a/themes/hotel-reservation-theme/js/modules/blocklayered/index.php b/themes/hotel-reservation-theme/js/modules/blocklayered/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/blocklayered/index.php +++ b/themes/hotel-reservation-theme/js/modules/blocklayered/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/blocknewsletter/blocknewsletter.js b/themes/hotel-reservation-theme/js/modules/blocknewsletter/blocknewsletter.js index 98cb260b3..4aefdf0cc 100644 --- a/themes/hotel-reservation-theme/js/modules/blocknewsletter/blocknewsletter.js +++ b/themes/hotel-reservation-theme/js/modules/blocknewsletter/blocknewsletter.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/blocknewsletter/index.php b/themes/hotel-reservation-theme/js/modules/blocknewsletter/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/blocknewsletter/index.php +++ b/themes/hotel-reservation-theme/js/modules/blocknewsletter/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/blocksearch/blocksearch.js b/themes/hotel-reservation-theme/js/modules/blocksearch/blocksearch.js index c8ff63c2f..331d4ea3b 100644 --- a/themes/hotel-reservation-theme/js/modules/blocksearch/blocksearch.js +++ b/themes/hotel-reservation-theme/js/modules/blocksearch/blocksearch.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/blocksearch/index.php b/themes/hotel-reservation-theme/js/modules/blocksearch/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/blocksearch/index.php +++ b/themes/hotel-reservation-theme/js/modules/blocksearch/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/blocktopmenu/index.php b/themes/hotel-reservation-theme/js/modules/blocktopmenu/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/blocktopmenu/index.php +++ b/themes/hotel-reservation-theme/js/modules/blocktopmenu/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/blocktopmenu/js/blocktopmenu.js b/themes/hotel-reservation-theme/js/modules/blocktopmenu/js/blocktopmenu.js index 8db7e8f84..54937da51 100644 --- a/themes/hotel-reservation-theme/js/modules/blocktopmenu/js/blocktopmenu.js +++ b/themes/hotel-reservation-theme/js/modules/blocktopmenu/js/blocktopmenu.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -37,16 +37,13 @@ $(document).ready(function(){ // check resolution function responsiveMenu() { - if ($(document).width() <= 767 && responsiveflagMenu == false) - { - menuChange('enable'); - responsiveflagMenu = true; - } - else if ($(document).width() >= 768) - { - menuChange('disable'); - responsiveflagMenu = false; - } + if ($(window).width() <= 767 && responsiveflagMenu == false) { + menuChange('enable'); + responsiveflagMenu = true; + } else if ($(window).width() >= 768) { + menuChange('disable'); + responsiveflagMenu = false; + } } // init Super Fish Menu for 767px+ resolution diff --git a/themes/hotel-reservation-theme/js/modules/blocktopmenu/js/index.php b/themes/hotel-reservation-theme/js/modules/blocktopmenu/js/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/blocktopmenu/js/index.php +++ b/themes/hotel-reservation-theme/js/modules/blocktopmenu/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/blockwishlist/index.php b/themes/hotel-reservation-theme/js/modules/blockwishlist/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/blockwishlist/index.php +++ b/themes/hotel-reservation-theme/js/modules/blockwishlist/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/blockwishlist/js/ajax-wishlist.js b/themes/hotel-reservation-theme/js/modules/blockwishlist/js/ajax-wishlist.js index f53aa014e..707a8ef55 100644 --- a/themes/hotel-reservation-theme/js/modules/blockwishlist/js/ajax-wishlist.js +++ b/themes/hotel-reservation-theme/js/modules/blockwishlist/js/ajax-wishlist.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -45,7 +45,7 @@ $(document).ready(function(){ }); $('.wishlist').each(function() { - current = $(this); + var current = $(this); $(this).children('.wishlist_button_list').popover({ html: true, content: function () { diff --git a/themes/hotel-reservation-theme/js/modules/blockwishlist/js/index.php b/themes/hotel-reservation-theme/js/modules/blockwishlist/js/index.php index 044cb85ee..a318ca6dc 100644 --- a/themes/hotel-reservation-theme/js/modules/blockwishlist/js/index.php +++ b/themes/hotel-reservation-theme/js/modules/blockwishlist/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); exit; \ No newline at end of file diff --git a/themes/hotel-reservation-theme/js/modules/crossselling/index.php b/themes/hotel-reservation-theme/js/modules/crossselling/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/crossselling/index.php +++ b/themes/hotel-reservation-theme/js/modules/crossselling/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/crossselling/js/crossselling.js b/themes/hotel-reservation-theme/js/modules/crossselling/js/crossselling.js index 26a0c9fcd..260e0beb7 100644 --- a/themes/hotel-reservation-theme/js/modules/crossselling/js/crossselling.js +++ b/themes/hotel-reservation-theme/js/modules/crossselling/js/crossselling.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/crossselling/js/index.php b/themes/hotel-reservation-theme/js/modules/crossselling/js/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/crossselling/js/index.php +++ b/themes/hotel-reservation-theme/js/modules/crossselling/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/homeslider/index.php b/themes/hotel-reservation-theme/js/modules/homeslider/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/homeslider/index.php +++ b/themes/hotel-reservation-theme/js/modules/homeslider/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/homeslider/js/homeslider.js b/themes/hotel-reservation-theme/js/modules/homeslider/js/homeslider.js index ad1ebb24b..29fc4e952 100644 --- a/themes/hotel-reservation-theme/js/modules/homeslider/js/homeslider.js +++ b/themes/hotel-reservation-theme/js/modules/homeslider/js/homeslider.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/themes/hotel-reservation-theme/js/modules/homeslider/js/index.php b/themes/hotel-reservation-theme/js/modules/homeslider/js/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/homeslider/js/index.php +++ b/themes/hotel-reservation-theme/js/modules/homeslider/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/index.php b/themes/hotel-reservation-theme/js/modules/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/index.php +++ b/themes/hotel-reservation-theme/js/modules/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/loyalty/index.php b/themes/hotel-reservation-theme/js/modules/loyalty/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/loyalty/index.php +++ b/themes/hotel-reservation-theme/js/modules/loyalty/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/loyalty/js/index.php b/themes/hotel-reservation-theme/js/modules/loyalty/js/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/loyalty/js/index.php +++ b/themes/hotel-reservation-theme/js/modules/loyalty/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/loyalty/js/loyalty.js b/themes/hotel-reservation-theme/js/modules/loyalty/js/loyalty.js index 451aedbdb..eab351f0a 100644 --- a/themes/hotel-reservation-theme/js/modules/loyalty/js/loyalty.js +++ b/themes/hotel-reservation-theme/js/modules/loyalty/js/loyalty.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -27,13 +27,14 @@ $(document).ready(function() { $(document).on('change', '#our_price_display', function(e){ updateLoyaltyView(parseInt($('#our_price_display').text())); }) + updateLoyaltyView(parseInt($('#our_price_display').text())); }); function updateLoyaltyView(new_price) { if (typeof(new_price) == 'undefined' || typeof(productPriceWithoutReduction) == 'undefined') - return; + return; - var points = Math.round(new_price / point_rate); + var points = Math.floor(new_price / point_rate); var total_points = points_in_cart + points; var voucher = total_points * point_value; diff --git a/themes/hotel-reservation-theme/js/modules/mailalerts/index.php b/themes/hotel-reservation-theme/js/modules/mailalerts/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/mailalerts/index.php +++ b/themes/hotel-reservation-theme/js/modules/mailalerts/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/mailalerts/mailalerts.js b/themes/hotel-reservation-theme/js/modules/mailalerts/mailalerts.js index c497fad64..d6513a023 100644 --- a/themes/hotel-reservation-theme/js/modules/mailalerts/mailalerts.js +++ b/themes/hotel-reservation-theme/js/modules/mailalerts/mailalerts.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -117,7 +117,7 @@ function addNotification() url: mailalerts_url_add, data: 'id_product=' + id_product + '&id_product_attribute='+$('#idCombination').val()+'&customer_email='+$('#oos_customer_email').val()+'', success: function (msg) { - if (msg == '1') + if (msg == '1') { $('#mailalert_link').hide(); $('#oos_customer_email').hide(); @@ -128,7 +128,7 @@ function addNotification() { $('#oos_customer_email_result').html(mailalerts_already); $('#oos_customer_email_result').css('color', 'red').show(); - } + } else { $('#oos_customer_email_result').html(mailalerts_invalid); diff --git a/themes/hotel-reservation-theme/js/modules/productcomments/index.php b/themes/hotel-reservation-theme/js/modules/productcomments/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/productcomments/index.php +++ b/themes/hotel-reservation-theme/js/modules/productcomments/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/productcomments/js/index.php b/themes/hotel-reservation-theme/js/modules/productcomments/js/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/productcomments/js/index.php +++ b/themes/hotel-reservation-theme/js/modules/productcomments/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/productcomments/js/products-comparison.js b/themes/hotel-reservation-theme/js/modules/productcomments/js/products-comparison.js index 80afdf0ac..3af911d0b 100644 --- a/themes/hotel-reservation-theme/js/modules/productcomments/js/products-comparison.js +++ b/themes/hotel-reservation-theme/js/modules/productcomments/js/products-comparison.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -65,4 +65,4 @@ function closeCommentForm() { $('#sendComment').slideUp('fast'); $('input#addCommentButton').fadeIn('slow'); -} \ No newline at end of file +} diff --git a/themes/hotel-reservation-theme/js/modules/productscategory/index.php b/themes/hotel-reservation-theme/js/modules/productscategory/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/productscategory/index.php +++ b/themes/hotel-reservation-theme/js/modules/productscategory/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/productscategory/js/index.php b/themes/hotel-reservation-theme/js/modules/productscategory/js/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/productscategory/js/index.php +++ b/themes/hotel-reservation-theme/js/modules/productscategory/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/productscategory/js/productscategory.js b/themes/hotel-reservation-theme/js/modules/productscategory/js/productscategory.js index fe9e84b07..b5a0188dc 100644 --- a/themes/hotel-reservation-theme/js/modules/productscategory/js/productscategory.js +++ b/themes/hotel-reservation-theme/js/modules/productscategory/js/productscategory.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/referralprogram/index.php b/themes/hotel-reservation-theme/js/modules/referralprogram/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/referralprogram/index.php +++ b/themes/hotel-reservation-theme/js/modules/referralprogram/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/referralprogram/js/index.php b/themes/hotel-reservation-theme/js/modules/referralprogram/js/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/referralprogram/js/index.php +++ b/themes/hotel-reservation-theme/js/modules/referralprogram/js/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/referralprogram/js/referralprogram.js b/themes/hotel-reservation-theme/js/modules/referralprogram/js/referralprogram.js index 159164515..1d18f4156 100644 --- a/themes/hotel-reservation-theme/js/modules/referralprogram/js/referralprogram.js +++ b/themes/hotel-reservation-theme/js/modules/referralprogram/js/referralprogram.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/sendtoafriend/index.php b/themes/hotel-reservation-theme/js/modules/sendtoafriend/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/modules/sendtoafriend/index.php +++ b/themes/hotel-reservation-theme/js/modules/sendtoafriend/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/modules/sendtoafriend/sendtoafriend.js b/themes/hotel-reservation-theme/js/modules/sendtoafriend/sendtoafriend.js index 333196050..d8ddac61e 100644 --- a/themes/hotel-reservation-theme/js/modules/sendtoafriend/sendtoafriend.js +++ b/themes/hotel-reservation-theme/js/modules/sendtoafriend/sendtoafriend.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -60,4 +60,4 @@ $(document).ready(function(){ else $('#send_friend_form_error').text(stf_msg_required); }); -}); \ No newline at end of file +}); diff --git a/themes/hotel-reservation-theme/js/order-address.js b/themes/hotel-reservation-theme/js/order-address.js index 513065a10..e46af2c0a 100644 --- a/themes/hotel-reservation-theme/js/order-address.js +++ b/themes/hotel-reservation-theme/js/order-address.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/order-carrier.js b/themes/hotel-reservation-theme/js/order-carrier.js index 470a13af6..93a764b21 100644 --- a/themes/hotel-reservation-theme/js/order-carrier.js +++ b/themes/hotel-reservation-theme/js/order-carrier.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/order-opc.js b/themes/hotel-reservation-theme/js/order-opc.js index 072d0340c..d1deaf781 100644 --- a/themes/hotel-reservation-theme/js/order-opc.js +++ b/themes/hotel-reservation-theme/js/order-opc.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,26 +18,35 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ $(document).ready(function() { + $('.opc-collapse').on('show.bs.collapse', function () { + $(this).closest('.card').find('.accordion-left-arrow').addClass('hidden'); + $(this).closest('.card').find('.step-edit').removeClass('hidden'); + }); + $('.opc-collapse').on('hide.bs.collapse', function () { + $(this).closest('.card').find('.accordion-left-arrow').removeClass('hidden'); + $(this).closest('.card').find('.step-edit').addClass('hidden'); + }); + // BY WEBKUL // FOR ADVANCED PAYMENT var payment_type = $(".payment_type:checked").val(); - if (payment_type == 1) + if (payment_type == 1) $("#partial_data").hide(); - else if (payment_type == 2) + else if (payment_type == 2) $("#partial_data").show(); $(".payment_type").on('change',function() { var payment_type = $(".payment_type:checked").val(); - if (payment_type == 1) + if (payment_type == 1) $("#partial_data").slideUp(); - else if (payment_type == 2) + else if (payment_type == 2) $("#partial_data").slideDown(); }); @@ -90,7 +99,7 @@ $(document).ready(function() $(document).on('click', '#openLoginFormBlock', function(e){ e.preventDefault(); $('#openNewAccountBlock').show(); - $(this).hide(); + $('.already_registered_block').hide(); $('#login_form_content').slideDown('slow'); $('#new_account_form').slideUp('slow'); }); @@ -124,6 +133,7 @@ $(document).ready(function() // update token static_token = jsonData.token; updateNewAccountToAddressBlock(that.attr('data-adv-api')); + location.reload(); } }, error: function(XMLHttpRequest, textStatus, errorThrown) { @@ -274,7 +284,10 @@ $(document).ready(function() else updateNewAccountToAddressBlock(advApiParam); } - $('#opc_new_account-overlay, #opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeIn('slow'); + if (!jsonData.hasError) { + location.reload(); + } + //$('#guest-info-block, #opc_new_account-overlay, #opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeIn('slow'); }, error: function(XMLHttpRequest, textStatus, errorThrown) { if (textStatus !== 'abort') @@ -320,6 +333,144 @@ $(document).ready(function() } if (typeof(open_multishipping_fancybox) !== 'undefined' && open_multishipping_fancybox) $('#link_multishipping_form').click(); + + // fancybox for extra bed requirement edit on checkout page + $('body').on('click', '.open_rooms_extra_demands', function() { + var idProduct = $(this).attr('id_product'); + var dateFrom = $(this).attr('date_from'); + var dateTo = $(this).attr('date_to'); + $.fancybox({ + href: "#rooms_extra_demands", + autoSize : true, + autoScale : true, + maxWidth : '100%', + 'hideOnContentClick': false, + beforeLoad: function () { + $.ajax({ + type: 'POST', + headers: { + "cache-control": "no-cache" + }, + url: orderOpcUrl, + dataType: 'html', + cache: false, + data: { + date_from: dateFrom, + date_to: dateTo, + id_product: idProduct, + method: 'getRoomTypeBookingDemands', + ajax: true + }, + success: function(result) { + $('#rooms_type_extra_demands').find('#room_type_demands_desc').html(''); + $('#rooms_type_extra_demands').find('#room_type_demands_desc').append(result); + }, + }); + }, + afterClose: function() { + // reload so that changes prices will reflect everywhere + location.reload(); + }, + }); + }); + + function close_accordion_section() { + $('.accordion .accordion-section-title').removeClass('active'); + $('.accordion .accordion-section-content').slideUp(300).removeClass('open'); + } + + $(document).on('click', '.accordion-section-title', function(e) { + // Grab current anchor value + var currentAttrValue = $(this).attr('href'); + + if ($(e.target).is('.active')) { + close_accordion_section(); + $(this).find('i').removeClass('icon-angle-down'); + $(this).find('i').addClass('icon-angle-left'); + } else { + close_accordion_section(); + // Add active class to section title + $(this).addClass('active'); + $(this).find('i').removeClass('icon-angle-left'); + $(this).find('i').addClass('icon-angle-down'); + // Open up the hidden content panel + $('.accordion ' + currentAttrValue).slideDown(300).addClass('open'); + } + e.preventDefault(); + }); + + $(document).on('click', '.id_room_type_demand', function() { + var roomDemands = []; + // get the selected extra demands by customer + $(this).closest('.room_demand_detail').find('input:checkbox.id_room_type_demand:checked').each(function () { + roomDemands.push({ + 'id_global_demand':$(this).val(), + 'id_option': $(this).closest('.room_demand_block').find('.id_option').val() + }); + }); + var idBookingCart = $(this).attr('id_cart_booking'); + $.ajax({ + type: 'POST', + headers: { + "cache-control": "no-cache" + }, + url: orderOpcUrl, + dataType: 'JSON', + cache: false, + data: { + id_cart_booking: idBookingCart, + room_demands: JSON.stringify(roomDemands), + method: 'changeRoomDemands', + ajax: true + }, + success: function(result) { + if (result == 1) { + showSuccessMessage(txtExtraDemandSucc); + } else { + showErrorMessage(txtExtraDemandErr); + } + } + }); + }); + + $(document).on('change', '.demand_adv_option_block .id_option', function(e) { + var option_selected = $(this).find('option:selected'); + var extra_demand_price = option_selected.attr("optionPrice") + extra_demand_price = parseFloat(extra_demand_price); + extra_demand_price = formatCurrency(extra_demand_price, currency_format, currency_sign, currency_blank); + $(this).closest('.room_demand_block').find('.extra_demand_option_price').text(extra_demand_price); + var roomDemands = []; + // get the selected extra demands by customer + $(this).closest('.room_demand_detail').find('input:checkbox.id_room_type_demand:checked').each(function () { + roomDemands.push({ + 'id_global_demand':$(this).val(), + 'id_option': $(this).closest('.room_demand_block').find('.id_option').val() + }); + }); + var idBookingCart = $(this).closest('.room_demand_block').find('.id_room_type_demand').attr('id_cart_booking'); + $.ajax({ + type: 'POST', + headers: { + "cache-control": "no-cache" + }, + url: orderOpcUrl, + dataType: 'JSON', + cache: false, + data: { + id_cart_booking: idBookingCart, + room_demands: JSON.stringify(roomDemands), + method: 'changeRoomDemands', + ajax: true + }, + success: function(result) { + if (result == 1) { + showSuccessMessage(txtExtraDemandSucc); + } else { + showErrorMessage(txtExtraDemandErr); + } + } + }); + }); }); function updateCarrierList(json) @@ -472,7 +623,9 @@ function updateAddressSelection(is_adv_api) updateHookShoppingCartExtra(jsonData.HOOK_SHOPPING_CART_EXTRA); if ($('#gift-price').length == 1) $('#gift-price').html(jsonData.gift_price); - $('#opc_account-overlay, #opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow'); + $('#guest-info-block, #opc_account-overlay, #opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow'); + + location.reload(); } }, error: function(XMLHttpRequest, textStatus, errorThrown) { @@ -493,7 +646,7 @@ function updateAddressSelection(is_adv_api) else alert(error); } - $('#opc_account-overlay, #opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow'); + $('#guest-info-block, #opc_account-overlay, #opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow'); } }); } @@ -751,7 +904,7 @@ function saveAddress(type) $.scrollTo('#opc_account_errors', 800); }); }); - $('#opc_account-overlay, #opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow'); + $('#guest-info-block, #opc_account-overlay, #opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow'); result = false; } else @@ -780,7 +933,7 @@ function saveAddress(type) else alert(error); } - $('#opc_account-overlay, #opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow'); + $('#guest-info-block, #opc_account-overlay, #opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow'); } }); @@ -789,7 +942,7 @@ function saveAddress(type) function updateNewAccountToAddressBlock(is_adv_api) { - $('#opc_account-overlay, #opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow'); + //$('#guest-info-block, #opc_account-overlay, #opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow'); $.ajax({ type: 'POST', @@ -817,7 +970,7 @@ function updateNewAccountToAddressBlock(is_adv_api) if (json.no_address == 1) document.location.href = addressUrl; - $('#opc_new_account').fadeOut('fast', function() + $('.guest-info-block').fadeOut('fast', function() { if (typeof json.formatedAddressFieldsValuesList !== 'undefined' && json.formatedAddressFieldsValuesList ) { @@ -846,18 +999,18 @@ function updateNewAccountToAddressBlock(is_adv_api) }); } - $(this).fadeIn('fast', function() + $(this).fadeIn('fast', function() { if ($('#gift-price').length == 1) $('#gift-price').html(json.gift_price); //After login, the products are automatically associated to an address - // $.each(json.summary.products, function() + // $.each(json.summary.products, function() // { // updateAddressId(this.id_product, this.id_product_attribute, '0', this.id_address_delivery); // }); // updateAddressesDisplay(true); - if (typeof is_adv_api === 'undefined' || !is_adv_api) + if (typeof is_adv_api === 'undefined' || !is_adv_api) { updateCarrierList(json.carrier_data); updateCarrierSelectionAndGift(); @@ -1048,6 +1201,7 @@ function multishippingMode(it) } }); } - if (typeof bindUniform !=='undefined') + if (typeof bindUniform !=='undefined') { bindUniform(); + } } diff --git a/themes/hotel-reservation-theme/js/product.js b/themes/hotel-reservation-theme/js/product.js index 6cf7938d6..2cc7af87e 100644 --- a/themes/hotel-reservation-theme/js/product.js +++ b/themes/hotel-reservation-theme/js/product.js @@ -1,28 +1,27 @@ /* - * 2007-2015 PrestaShop - * - * NOTICE OF LICENSE - * - * This source file is subject to the Academic Free License (AFL 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/afl-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@prestashop.com so we can send you a copy immediately. - * - * DISCLAIMER - * - * Do not edit or add to this file if you wish to upgrade PrestaShop to newer - * versions in the future. If you wish to customize PrestaShop for your - * needs please refer to http://www.prestashop.com for more information. - * - * @author PrestaShop SA - * @copyright 2007-2015 PrestaShop SA - * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) - * International Registered Trademark & Property of PrestaShop SA - */ - +* 2007-2017 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Academic Free License (AFL 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/afl-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@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ //global variables var serialScrollNbImagesDisplayed; var selectedCombination = []; @@ -32,73 +31,87 @@ var original_url = window.location + ''; var first_url_check = true; var firstTime = true; /* Retro compat from product.tpl */ -if (typeof customizationFields !== 'undefined' && customizationFields) { - var customizationFieldsBk = customizationFields; - customizationFields = []; - var j = 0; - for (var i = 0; i < customizationFieldsBk.length; ++i) { - var key = 'pictures_' + parseInt(id_product) + '_' + parseInt(customizationFieldsBk[i]['id_customization_field']); - customizationFields[i] = []; - customizationFields[i][0] = (parseInt(customizationFieldsBk[i]['type']) == 0) ? 'img' + i : 'textField' + j++; - customizationFields[i][1] = (parseInt(customizationFieldsBk[i]['type']) == 0 && customizationFieldsBk[i][key]) ? 2 : parseInt(customizationFieldsBk[i]['required']); - } +if (typeof customizationFields !== 'undefined' && customizationFields) +{ + var customizationFieldsBk = customizationFields; + customizationFields = []; + var j = 0; + for (var i = 0; i < customizationFieldsBk.length; ++i) + { + var key = 'pictures_' + parseInt(id_product) + '_' + parseInt(customizationFieldsBk[i]['id_customization_field']); + customizationFields[i] = []; + customizationFields[i][0] = (parseInt(customizationFieldsBk[i]['type']) == 0) ? 'img' + i : 'textField' + j++; + customizationFields[i][1] = (parseInt(customizationFieldsBk[i]['type']) == 0 && customizationFieldsBk[i][key]) ? 2 : parseInt(customizationFieldsBk[i]['required']); + } } -if (typeof combinationImages !== 'undefined' && combinationImages) { - combinationImagesJS = []; - combinationImagesJS[0] = []; - var k = 0; - for (var i in combinationImages) { - combinationImagesJS[i] = []; - for (var j in combinationImages[i]) { - var id_image = parseInt(combinationImages[i][j]['id_image']); - if (id_image) { - combinationImagesJS[0][k++] = id_image; - combinationImagesJS[i][j] = []; - combinationImagesJS[i][j] = id_image; - } - } - } +if (typeof combinationImages !== 'undefined' && combinationImages) +{ + combinationImagesJS = []; + combinationImagesJS[0] = []; + var k = 0; + for (var i in combinationImages) + { + combinationImagesJS[i] = []; + for (var j in combinationImages[i]) + { + var id_image = parseInt(combinationImages[i][j]['id_image']); + if (id_image) + { + combinationImagesJS[0][k++] = id_image; + combinationImagesJS[i][j] = []; + combinationImagesJS[i][j] = id_image; + } + } + } - if (typeof combinationImagesJS[0] !== 'undefined' && combinationImagesJS[0]) { - var array_values = []; - for (var key in arrayUnique(combinationImagesJS[0])) - array_values.push(combinationImagesJS[0][key]); - combinationImagesJS[0] = array_values; - } - combinationImages = combinationImagesJS; + if (typeof combinationImagesJS[0] !== 'undefined' && combinationImagesJS[0]) + { + var array_values = []; + for (var key in arrayUnique(combinationImagesJS[0])) + array_values.push(combinationImagesJS[0][key]); + combinationImagesJS[0] = array_values; + } + combinationImages = combinationImagesJS; } -if (typeof combinations !== 'undefined' && combinations) { - combinationsJS = []; - var k = 0; - for (var i in combinations) { - globalQuantity += combinations[i]['quantity']; - combinationsJS[k] = []; - combinationsJS[k]['idCombination'] = parseInt(i); - combinationsJS[k]['idsAttributes'] = combinations[i]['attributes']; - combinationsJS[k]['quantity'] = combinations[i]['quantity']; - combinationsJS[k]['price'] = combinations[i]['price']; - combinationsJS[k]['ecotax'] = combinations[i]['ecotax']; - combinationsJS[k]['image'] = parseInt(combinations[i]['id_image']); - combinationsJS[k]['reference'] = combinations[i]['reference']; - combinationsJS[k]['unit_price'] = combinations[i]['unit_impact']; - combinationsJS[k]['minimal_quantity'] = parseInt(combinations[i]['minimal_quantity']); +if (typeof combinations !== 'undefined' && combinations) +{ + combinationsJS = []; + combinationsHashSet = {}; + var k = 0; + for (var i in combinations) + { + globalQuantity += combinations[i]['quantity']; + combinationsJS[k] = []; + combinationsJS[k]['idCombination'] = parseInt(i); + combinationsJS[k]['idsAttributes'] = combinations[i]['attributes']; + combinationsJS[k]['quantity'] = combinations[i]['quantity']; + combinationsJS[k]['price'] = combinations[i]['price']; + combinationsJS[k]['ecotax'] = combinations[i]['ecotax']; + combinationsJS[k]['image'] = parseInt(combinations[i]['id_image']); + combinationsJS[k]['reference'] = combinations[i]['reference']; + combinationsJS[k]['unit_price'] = combinations[i]['unit_impact']; + combinationsJS[k]['minimal_quantity'] = parseInt(combinations[i]['minimal_quantity']); - combinationsJS[k]['available_date'] = []; - combinationsJS[k]['available_date']['date'] = combinations[i]['available_date']; - combinationsJS[k]['available_date']['date_formatted'] = combinations[i]['date_formatted']; + combinationsJS[k]['available_date'] = []; + combinationsJS[k]['available_date']['date'] = combinations[i]['available_date']; + combinationsJS[k]['available_date']['date_formatted'] = combinations[i]['date_formatted']; - combinationsJS[k]['specific_price'] = []; - combinationsJS[k]['specific_price']['reduction_percent'] = (combinations[i]['specific_price'] && combinations[i]['specific_price']['reduction'] && combinations[i]['specific_price']['reduction_type'] == 'percentage') ? combinations[i]['specific_price']['reduction'] * 100 : 0; - combinationsJS[k]['specific_price']['reduction_price'] = (combinations[i]['specific_price'] && combinations[i]['specific_price']['reduction'] && combinations[i]['specific_price']['reduction_type'] == 'amount') ? combinations[i]['specific_price']['reduction'] : 0; - combinationsJS[k]['price'] = (combinations[i]['specific_price'] && combinations[i]['specific_price']['price'] && parseInt(combinations[i]['specific_price']['price']) != -1) ? combinations[i]['specific_price']['price'] : combinations[i]['price']; + combinationsJS[k]['specific_price'] = []; + combinationsJS[k]['specific_price']['reduction_percent'] = (combinations[i]['specific_price'] && combinations[i]['specific_price']['reduction'] && combinations[i]['specific_price']['reduction_type'] == 'percentage') ? combinations[i]['specific_price']['reduction'] * 100 : 0; + combinationsJS[k]['specific_price']['reduction_price'] = (combinations[i]['specific_price'] && combinations[i]['specific_price']['reduction'] && combinations[i]['specific_price']['reduction_type'] == 'amount') ? combinations[i]['specific_price']['reduction'] : 0; + combinationsJS[k]['price'] = (combinations[i]['specific_price'] && combinations[i]['specific_price']['price'] && parseInt(combinations[i]['specific_price']['price']) != -1) ? combinations[i]['specific_price']['price'] : combinations[i]['price']; - combinationsJS[k]['reduction_type'] = (combinations[i]['specific_price'] && combinations[i]['specific_price']['reduction_type']) ? combinations[i]['specific_price']['reduction_type'] : ''; - combinationsJS[k]['id_product_attribute'] = (combinations[i]['specific_price'] && combinations[i]['specific_price']['id_product_attribute']) ? combinations[i]['specific_price']['id_product_attribute'] : 0; - k++; - } - combinations = combinationsJS; + combinationsJS[k]['reduction_type'] = (combinations[i]['specific_price'] && combinations[i]['specific_price']['reduction_type']) ? combinations[i]['specific_price']['reduction_type'] : ''; + combinationsJS[k]['id_product_attribute'] = (combinations[i]['specific_price'] && combinations[i]['specific_price']['id_product_attribute']) ? combinations[i]['specific_price']['id_product_attribute'] : 0; + + var key = combinationsJS[k]['idsAttributes'].sort().join('-'); + combinationsHashSet[key] = combinationsJS[k]; + + k++; + } + combinations = combinationsJS; } /* */ @@ -453,7 +466,7 @@ function updateDisplay() { $('#quantity_wanted_p:hidden').show('slow'); //show the "add to cart" button ONLY if it was hidden - $('#add_to_cart:hidden').fadeIn(600); + $('#add_to_cart:id_demands').fadeIn(600); //hide the hook out of stock $('#oosHook').hide(); @@ -764,8 +777,8 @@ function displayImage(domAAroundImgThumb, no_animation) { function displayDiscounts(combination) { // Tables & rows selection var quantityDiscountTable = $('#quantityDiscount'); - var combinationsSpecificQuantityDiscount = $('#quantityDiscount_' + combination, quantityDiscountTable); - var allQuantityDiscount = $('#quantityDiscount_0', quantityDiscountTable); + var combinationsSpecificQuantityDiscount = $('.quantityDiscount_'+combination, quantityDiscountTable); + var allQuantityDiscount = $('.quantityDiscount_0', quantityDiscountTable); // If there is some combinations specific quantity discount, show them, else, if there are some // products quantity discount: show them. In case of result, show the category. @@ -775,7 +788,7 @@ function displayDiscounts(combination) { quantityDiscountTable.show(); } else if (allQuantityDiscount.length != 0) { allQuantityDiscount.show(); - $('tbody tr', quantityDiscountTable).not('#quantityDiscount_0').hide(); + $('tbody tr', quantityDiscountTable).not('.quantityDiscount_0').hide(); quantityDiscountTable.show(); } else { quantityDiscountTable.hide(); @@ -1036,9 +1049,11 @@ $(document).ready(function() { $('.num_quantity_alert').hide(); $('.unvail_rooms_cond_display').hide(); $('.sold_out_alert').show(); + disableRoomTypeDemands(1); } else { $('.unvail_rooms_cond_display').show(); $('.sold_out_alert').hide(); + disableRoomTypeDemands(0); } function highlightDateBorder(elementVal, date) @@ -1089,6 +1104,15 @@ $(document).ready(function() { var date_out = $.datepicker.formatDate('yy-mm-dd', selectedDate); } + // get the selected extra demands by customer + var roomDemands = []; + $('input:checkbox.id_room_type_demand:checked').each(function () { + roomDemands.push({ + 'id_global_demand':$(this).val(), + 'id_option': $(this).closest('.room_demand_block').find('.id_option').val() + }); + }); + /*by webkul to manage quantity of rooms*/ $.ajax({ type: 'POST', @@ -1103,7 +1127,10 @@ $(document).ready(function() { date_to: date_out, change_date: 1, qty: $('#quantity_wanted').val(), - id_product: $('#product_page_product_id').val() + id_product: $('#product_page_product_id').val(), + room_demands: JSON.stringify(roomDemands), + action: 'checkRoomAvailabilityAndRate', + ajax: true }, success: function(result) { if (result.msg == 'success') { @@ -1118,11 +1145,16 @@ $(document).ready(function() { $('.room_unavailability_date_error_div').hide(); $('.unvail_rooms_cond_display').show(); $('.sold_out_alert').hide(); + disableRoomTypeDemands(0); total_price = result.total_price; total_price = parseFloat(total_price); - - price = formatCurrency(total_price, currency_format, currency_sign, currency_blank); + total_price = formatCurrency(total_price, currency_format, currency_sign, currency_blank); + total_room_price = result.total_room_price; + total_room_price = parseFloat(total_room_price); + total_room_price = formatCurrency(total_room_price, currency_format, currency_sign, currency_blank); + $('.total_price_block p').text(total_price); + $('.total_rooms_price_block').text(total_room_price); feature_price = parseFloat(result.feature_price); original_product_price = parseFloat(result.original_product_price); @@ -1141,7 +1173,6 @@ $(document).ready(function() { $('.product_original_price').show(); } - $('.total_price_block p').text(price); $('#num_days').val(result.num_days); } else if (result.msg == 'unavailable_quantity') { if (result.avail_rooms > 0) { @@ -1152,6 +1183,7 @@ $(document).ready(function() { $('#quantity_wanted').val(result.avail_rooms); $('.unvail_rooms_cond_display').show(); $('.sold_out_alert').hide(); + disableRoomTypeDemands(0); setTimeout(function() { $('.room_unavailability_date_error_div').css('display', 'none'); @@ -1161,6 +1193,7 @@ $(document).ready(function() { $('.num_quantity_alert').hide(); $('.unvail_rooms_cond_display').hide(); $('.sold_out_alert').show(); + disableRoomTypeDemands(1); } } else { alert(some_error_cond); @@ -1208,6 +1241,14 @@ $(document).ready(function() { }, 3000); } else { + // get the selected extra demands by customer + var roomDemands = []; + $('input:checkbox.id_room_type_demand:checked').each(function () { + roomDemands.push({ + 'id_global_demand':$(this).val(), + 'id_option': $(this).closest('.room_demand_block').find('.id_option').val() + }); + }); //by webkul to manage quantity of rooms $.ajax({ type: 'POST', @@ -1222,7 +1263,10 @@ $(document).ready(function() { date_to: date_out, change_date: 1, qty: $('#quantity_wanted').val(), - id_product: $('#product_page_product_id').val() + id_product: $('#product_page_product_id').val(), + room_demands: JSON.stringify(roomDemands), + action: 'checkRoomAvailabilityAndRate', + ajax: true }, success: function(result) { if (result.msg == 'success') { @@ -1236,11 +1280,16 @@ $(document).ready(function() { $('.room_unavailability_date_error_div').hide(); $('.unvail_rooms_cond_display').show(); $('.sold_out_alert').hide(); - + disableRoomTypeDemands(0); total_price = result.total_price; total_price = parseFloat(total_price); + total_price = formatCurrency(total_price, currency_format, currency_sign, currency_blank); + total_room_price = result.total_room_price; + total_room_price = parseFloat(total_room_price); + total_room_price = formatCurrency(total_room_price, currency_format, currency_sign, currency_blank); + $('.total_price_block p').text(total_price); + $('.total_rooms_price_block').text(total_room_price); - price = formatCurrency(total_price, currency_format, currency_sign, currency_blank); feature_price = parseFloat(result.feature_price); original_product_price = parseFloat(result.original_product_price); feature_price_diff = parseFloat(result.feature_price_diff); @@ -1258,7 +1307,6 @@ $(document).ready(function() { $('.product_original_price').show(); } - $('.total_price_block p').text(price); $('#num_days').val(result.num_days); } else if (result.msg == 'unavailable_quantity') { if (result.avail_rooms > 0) { @@ -1269,7 +1317,7 @@ $(document).ready(function() { $('#quantity_wanted').val(result.avail_rooms); $('.unvail_rooms_cond_display').show(); $('.sold_out_alert').hide(); - + disableRoomTypeDemands(0); setTimeout(function() { $('.room_unavailability_date_error_div').css('display', 'none'); }, @@ -1277,6 +1325,7 @@ $(document).ready(function() { } else { $('.unvail_rooms_cond_display').hide(); $('.sold_out_alert').show(); + disableRoomTypeDemands(1); } } else { alert(some_error_cond); @@ -1288,60 +1337,20 @@ $(document).ready(function() { }); $('#quantity_wanted').on('keyup', function() { - var qty_wntd = $('#quantity_wanted').val(); - if (qty_wntd == '' || !$.isNumeric(qty_wntd)) { - $('#quantity_wanted').val(1); - qty_wntd = $('#quantity_wanted').val(); - } - $('#quantity_wanted').val(parseInt(qty_wntd)); - if (parseInt(qty_wntd) < 1 || parseInt(qty_wntd) > $('#max_avail_type_qty').val()) { - $('#quantity_wanted').val($('#max_avail_type_qty').val()); + changeRoomTypeDemands(); + }); - setTimeout(function() { - $('.room_unavailability_qty_error_div').hide(); - }, - 2000); - } else if (qty_wntd <= $('#max_avail_type_qty').val() && qty_wntd >= 1) { - $.ajax({ - type: 'POST', - headers: { - "cache-control": "no-cache" - }, - url: product_controller_url, - dataType: 'JSON', - cache: false, - data: { - date_from: $('#room_check_in').val(), - date_to: $('#room_check_out').val(), - product_quantity_down: 1, - qty: qty_wntd, - id_product: $('#product_page_product_id').val() - }, - success: function(result) { - if (result.msg == 'success') { - total_price = result.total_price; - total_price = parseFloat(total_price); + $('.id_room_type_demand').on('click', function() { + changeRoomTypeDemands(); + }); - price = formatCurrency(total_price, currency_format, currency_sign, currency_blank); - - $('.total_price_block p').text(price); - $('#num_days').val(result.num_days); - $("#max_avail_type_qty").val(result.avail_rooms); - } else if (result.msg == 'unavailable_quantity') { - $('#quantity_wanted').val(result.avail_rooms); - $('.room_unavailability_qty_error_div').text(unavail_qty_text); - $('.room_unavailability_qty_error_div').show(); - - setTimeout(function() { - $('.room_unavailability_qty_error_div').hide(); - }, - 3000); - } else { - alert(some_error_cond); - } - } - }); - } + $(document).on('change', '.demand_adv_option_block .id_option', function(e) { + var option_selected = $(this).find('option:selected'); + var extra_demand_price = option_selected.attr("optionPrice") + extra_demand_price = parseFloat(extra_demand_price); + extra_demand_price = formatCurrency(extra_demand_price, currency_format, currency_sign, currency_blank); + $(this).closest('.demand_adv_option_block').find('.extra_demand_option_price').text(extra_demand_price); + changeRoomTypeDemands(); }); /*Set maxDate for Order resrict date*/ @@ -1349,4 +1358,80 @@ $(document).ready(function() { $("#room_check_in").datepicker("option", "maxDate", new Date(max_order_date)); $("#room_check_out").datepicker("option", "maxDate", new Date(max_order_date)); } -}); \ No newline at end of file +}); + +function changeRoomTypeDemands() { + var qty_wntd = $('#quantity_wanted').val(); + if (qty_wntd == '' || !$.isNumeric(qty_wntd)) { + $('#quantity_wanted').val(1); + qty_wntd = $('#quantity_wanted').val(); + } + $('#quantity_wanted').val(parseInt(qty_wntd)); + if ((parseInt(qty_wntd) < 1 || parseInt(qty_wntd) > $('#max_avail_type_qty').val()) + && $('#max_avail_type_qty').val() > 0 + ) { + $('#quantity_wanted').val($('#max_avail_type_qty').val()); + setTimeout(function() { + $('.room_unavailability_qty_error_div').hide(); + }, + 2000); + } else if (qty_wntd <= $('#max_avail_type_qty').val() && qty_wntd >= 1) { + // get the selected extra demands by customer + var roomDemands = []; + $('input:checkbox.id_room_type_demand:checked').each(function () { + roomDemands.push({ + 'id_global_demand':$(this).val(), + 'id_option': $(this).closest('.room_demand_block').find('.id_option').val() + }); + }); + $.ajax({ + type: 'POST', + headers: { + "cache-control": "no-cache" + }, + url: product_controller_url, + dataType: 'JSON', + cache: false, + data: { + date_from: $('#room_check_in').val(), + date_to: $('#room_check_out').val(), + product_quantity_down: 1, + qty: qty_wntd, + id_product: $('#product_page_product_id').val(), + room_demands: JSON.stringify(roomDemands), + action: 'checkRoomAvailabilityAndRate', + ajax: true + }, + success: function(result) { + if (result.msg == 'success') { + total_price = result.total_price; + total_price = parseFloat(total_price); + total_price = formatCurrency(total_price, currency_format, currency_sign, currency_blank); + $('.total_price_block p').text(total_price); + total_room_price = result.total_room_price; + total_room_price = parseFloat(total_room_price); + total_room_price = formatCurrency(total_room_price, currency_format, currency_sign, currency_blank); + $('.total_rooms_price_block').text(total_room_price); + extra_demand_price = result.extra_demand_price; + extra_demand_price = parseFloat(extra_demand_price); + extra_demand_price = formatCurrency(extra_demand_price, currency_format, currency_sign, currency_blank); + $('.extra_demands_price_block').text(extra_demand_price); + + $('#num_days').val(result.num_days); + $("#max_avail_type_qty").val(result.avail_rooms); + } else if (result.msg == 'unavailable_quantity') { + $('#quantity_wanted').val(result.avail_rooms); + $('.room_unavailability_qty_error_div').text(unavail_qty_text); + $('.room_unavailability_qty_error_div').show(); + + setTimeout(function() { + $('.room_unavailability_qty_error_div').hide(); + }, + 2000); + } else { + alert(some_error_cond); + } + } + }); + } +} \ No newline at end of file diff --git a/themes/hotel-reservation-theme/js/products-comparison.js b/themes/hotel-reservation-theme/js/products-comparison.js index 2c40b7dff..8016cde09 100644 --- a/themes/hotel-reservation-theme/js/products-comparison.js +++ b/themes/hotel-reservation-theme/js/products-comparison.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/scenes.js b/themes/hotel-reservation-theme/js/scenes.js index bb950c9de..ba310d21e 100644 --- a/themes/hotel-reservation-theme/js/scenes.js +++ b/themes/hotel-reservation-theme/js/scenes.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/stores.js b/themes/hotel-reservation-theme/js/stores.js index b634c21cb..b7502eaa8 100644 --- a/themes/hotel-reservation-theme/js/stores.js +++ b/themes/hotel-reservation-theme/js/stores.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -40,7 +40,7 @@ $(document).ready(function(){ $('#addressInput').keypress(function(e) { code = e.keyCode ? e.keyCode : e.which; - if(code.toString() === 13) + if(code.toString() == 13) searchLocations(); }); @@ -61,7 +61,7 @@ function initMarkers() { searchUrl += '?ajax=1&all=1'; downloadUrl(searchUrl, function(data) { - var xml = parseXml(data); + var xml = parseXml(data.trim()); var markerNodes = xml.documentElement.getElementsByTagName('marker'); var bounds = new google.maps.LatLngBounds(); for (var i = 0; i < markerNodes.length; i++) @@ -147,7 +147,7 @@ function searchLocationsNear(center) var radius = document.getElementById('radiusSelect').value; var searchUrl = baseUri+'?controller=stores&ajax=1&latitude=' + center.lat() + '&longitude=' + center.lng() + '&radius=' + radius; downloadUrl(searchUrl, function(data) { - var xml = parseXml(data); + var xml = parseXml(data.trim()); var markerNodes = xml.documentElement.getElementsByTagName('marker'); var bounds = new google.maps.LatLngBounds(); diff --git a/themes/hotel-reservation-theme/js/tools/index.php b/themes/hotel-reservation-theme/js/tools/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/js/tools/index.php +++ b/themes/hotel-reservation-theme/js/tools/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/js/tools/statesManagement.js b/themes/hotel-reservation-theme/js/tools/statesManagement.js index 388c92a60..a97bfd4d9 100644 --- a/themes/hotel-reservation-theme/js/tools/statesManagement.js +++ b/themes/hotel-reservation-theme/js/tools/statesManagement.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -30,7 +30,8 @@ var states = []; $(document).ready(function(){ setCountries(); bindStateInputAndUpdate(); - bindUniform(); + if (typeof bindUniform !=='undefined') + bindUniform(); bindZipcode(); bindCheckbox(); $(document).on('click', '#invoice_address', function(e){ @@ -69,7 +70,8 @@ function bindCheckbox() $('#opc_invoice_address').slideDown('slow'); if ($('#company_invoice').val() == '') $('#vat_number_block_invoice').hide(); - bindUniform(); + if (typeof bindUniform !=='undefined') + bindUniform(); } else $('#opc_invoice_address').slideUp('slow'); @@ -140,7 +142,7 @@ function updateState(suffix) }); $('.id_state' + (typeof suffix !== 'undefined' ? '_' + suffix : '') + ':hidden').fadeIn('slow'); - $('#id_state, #id_state_invoice').uniform(); + $('#id_state_invoice').uniform(); } else $('.id_state' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).fadeOut('fast'); diff --git a/themes/hotel-reservation-theme/js/tools/treeManagement.js b/themes/hotel-reservation-theme/js/tools/treeManagement.js index 57b9f32ba..229f9dd4a 100644 --- a/themes/hotel-reservation-theme/js/tools/treeManagement.js +++ b/themes/hotel-reservation-theme/js/tools/treeManagement.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ @@ -53,6 +53,7 @@ $(document).ready(function(){ $('ul.tree.dhtml').addClass('dynamized'); $('ul.tree.dhtml').removeClass('dhtml'); + $('ul.tree.dynamized').removeClass('tree'); } }); @@ -82,4 +83,4 @@ function toggleBranch(jQueryElement, noAnimation) closeBranch(jQueryElement, noAnimation); else openBranch(jQueryElement, noAnimation); -} \ No newline at end of file +} diff --git a/themes/hotel-reservation-theme/js/tools/vatManagement.js b/themes/hotel-reservation-theme/js/tools/vatManagement.js index 5696b1a59..6eb0bd090 100644 --- a/themes/hotel-reservation-theme/js/tools/vatManagement.js +++ b/themes/hotel-reservation-theme/js/tools/vatManagement.js @@ -1,5 +1,5 @@ /* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/lang/en.php b/themes/hotel-reservation-theme/lang/en.php index 555c1217f..c79faed8e 100644 --- a/themes/hotel-reservation-theme/lang/en.php +++ b/themes/hotel-reservation-theme/lang/en.php @@ -3,6 +3,7 @@ global $_LANG; $_LANG = array(); +$_LANG['404_d0fbda9855d118740f1105334305c126'] = 'Page not found'; $_LANG['404_44b1d05764b093cb00c25b8228cb87d3'] = 'This page is not available'; $_LANG['404_6554aae881e40036cac1f5710a4c52c1'] = 'We\'re sorry, but the Web address you\'ve entered is no longer available.'; $_LANG['404_9bec38acab82302a8cf6fbb9182da21f'] = 'To find a product, please type its name in the field below.'; @@ -16,6 +17,7 @@ $_LANG['addresses_a6d373cdb986fc009a5a040a4c3d8c1d'] = 'Please configure your de $_LANG['addresses_aa5e970d64eb228f31669d3411171f92'] = 'Your addresses are listed below.'; $_LANG['addresses_e380ae58f85252c076e131862857de35'] = 'Be sure to update your personal information if it has changed.'; $_LANG['addresses_06933067aafd48425d67bcb01bba5cb6'] = 'Update'; +$_LANG['addresses_729a51874fe901b092899e9e8b31c97a'] = 'Are you sure?'; $_LANG['addresses_f2a6c498fb90ee345d997f888fce3b18'] = 'Delete'; $_LANG['addresses_56d3db43fb7f323139022a29d57276d8'] = 'No addresses are available.'; $_LANG['addresses_b15e1100a6196acba01ef7aaa5b2a9e5'] = 'Add a new address'; diff --git a/themes/hotel-reservation-theme/lang/index.php b/themes/hotel-reservation-theme/lang/index.php index 044cb85ee..eac7628fd 100644 --- a/themes/hotel-reservation-theme/lang/index.php +++ b/themes/hotel-reservation-theme/lang/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); -exit; \ No newline at end of file +exit; diff --git a/themes/hotel-reservation-theme/layout.tpl b/themes/hotel-reservation-theme/layout.tpl index c7fb7b852..af13698a7 100644 --- a/themes/hotel-reservation-theme/layout.tpl +++ b/themes/hotel-reservation-theme/layout.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA diff --git a/themes/hotel-reservation-theme/maintenance.tpl b/themes/hotel-reservation-theme/maintenance.tpl index affbb1454..a526943a2 100644 --- a/themes/hotel-reservation-theme/maintenance.tpl +++ b/themes/hotel-reservation-theme/maintenance.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/themes/hotel-reservation-theme/manufacturer-list.tpl b/themes/hotel-reservation-theme/manufacturer-list.tpl index b1933f358..deb0f4ed2 100644 --- a/themes/hotel-reservation-theme/manufacturer-list.tpl +++ b/themes/hotel-reservation-theme/manufacturer-list.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -46,7 +46,7 @@ {if $nbManufacturers > 0}
    - {if isset($manufacturer) && $manufacturer.nb_products > 0} + {if isset($manufacturer) && isset($manufacturer.nb_products) && $manufacturer.nb_products > 0} diff --git a/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/index.php b/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/index.php +++ b/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/my-account.tpl b/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/my-account.tpl index 98babe2d5..c18bc3a62 100644 --- a/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/my-account.tpl +++ b/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/my-account.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/product.tpl b/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/product.tpl index 25a7ac2ce..4373b83ec 100644 --- a/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/product.tpl +++ b/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/product.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} @@ -27,7 +27,7 @@ {l s='By buying this product you can collect up to' mod='loyalty'} {$points} {if $points > 1}{l s='loyalty points' mod='loyalty'}{else}{l s='loyalty point' mod='loyalty'}{/if}. {l s='Your cart will total' mod='loyalty'} {$total_points} - {if $total_points > 1}{l s='points' mod='loyalty'}{else}{l s='point' mod='loyalty'}{/if} {l s='that can be converted into a voucher of' mod='loyalty'} + {if $total_points > 1}{l s='loyalty points' mod='loyalty'}{else}{l s='loyalty point' mod='loyalty'}{/if} {l s='that can be converted into a voucher of' mod='loyalty'} {convertPrice price=$voucher}. {else} {if isset($no_pts_discounted) && $no_pts_discounted == 1} diff --git a/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/shopping-cart.tpl b/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/shopping-cart.tpl index 9402b3de2..dea995c2f 100644 --- a/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/shopping-cart.tpl +++ b/themes/hotel-reservation-theme/modules/loyalty/views/templates/hook/shopping-cart.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/themes/hotel-reservation-theme/modules/loyalty/views/templates/index.php b/themes/hotel-reservation-theme/modules/loyalty/views/templates/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/modules/loyalty/views/templates/index.php +++ b/themes/hotel-reservation-theme/modules/loyalty/views/templates/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/modules/mailalerts/index.php b/themes/hotel-reservation-theme/modules/mailalerts/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/modules/mailalerts/index.php +++ b/themes/hotel-reservation-theme/modules/mailalerts/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/modules/mailalerts/views/index.php b/themes/hotel-reservation-theme/modules/mailalerts/views/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/modules/mailalerts/views/index.php +++ b/themes/hotel-reservation-theme/modules/mailalerts/views/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/modules/mailalerts/views/templates/front/index.php b/themes/hotel-reservation-theme/modules/mailalerts/views/templates/front/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/modules/mailalerts/views/templates/front/index.php +++ b/themes/hotel-reservation-theme/modules/mailalerts/views/templates/front/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/modules/mailalerts/views/templates/front/mailalerts-account.tpl b/themes/hotel-reservation-theme/modules/mailalerts/views/templates/front/mailalerts-account.tpl index 04b1ce2ee..47fe5199d 100644 --- a/themes/hotel-reservation-theme/modules/mailalerts/views/templates/front/mailalerts-account.tpl +++ b/themes/hotel-reservation-theme/modules/mailalerts/views/templates/front/mailalerts-account.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/themes/hotel-reservation-theme/modules/mailalerts/views/templates/hook/index.php b/themes/hotel-reservation-theme/modules/mailalerts/views/templates/hook/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/modules/mailalerts/views/templates/hook/index.php +++ b/themes/hotel-reservation-theme/modules/mailalerts/views/templates/hook/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/modules/mailalerts/views/templates/hook/my-account.tpl b/themes/hotel-reservation-theme/modules/mailalerts/views/templates/hook/my-account.tpl index baef4a1dc..3e4ad1c24 100644 --- a/themes/hotel-reservation-theme/modules/mailalerts/views/templates/hook/my-account.tpl +++ b/themes/hotel-reservation-theme/modules/mailalerts/views/templates/hook/my-account.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} diff --git a/themes/hotel-reservation-theme/modules/mailalerts/views/templates/hook/product.tpl b/themes/hotel-reservation-theme/modules/mailalerts/views/templates/hook/product.tpl index c4a9c492e..df64e2422 100644 --- a/themes/hotel-reservation-theme/modules/mailalerts/views/templates/hook/product.tpl +++ b/themes/hotel-reservation-theme/modules/mailalerts/views/templates/hook/product.tpl @@ -1,5 +1,5 @@ {* -* 2007-2015 PrestaShop +* 2007-2017 PrestaShop * * NOTICE OF LICENSE * @@ -18,7 +18,7 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @version Release: $Revision$ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA @@ -41,4 +41,4 @@ {addJsDefL name='mailalerts_already'}{l s='You already have an alert for this product' mod='mailalerts' js=1}{/addJsDefL} {addJsDefL name='mailalerts_invalid'}{l s='Your e-mail address is invalid' mod='mailalerts' js=1}{/addJsDefL} {/strip} - \ No newline at end of file + diff --git a/themes/hotel-reservation-theme/modules/mailalerts/views/templates/index.php b/themes/hotel-reservation-theme/modules/mailalerts/views/templates/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/modules/mailalerts/views/templates/index.php +++ b/themes/hotel-reservation-theme/modules/mailalerts/views/templates/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/modules/productcomments/index.php b/themes/hotel-reservation-theme/modules/productcomments/index.php index 2d4b752c4..9a99a8662 100644 --- a/themes/hotel-reservation-theme/modules/productcomments/index.php +++ b/themes/hotel-reservation-theme/modules/productcomments/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/themes/hotel-reservation-theme/modules/productcomments/productcomments.tpl b/themes/hotel-reservation-theme/modules/productcomments/productcomments.tpl index e5e0ed0ee..e91211fa1 100644 --- a/themes/hotel-reservation-theme/modules/productcomments/productcomments.tpl +++ b/themes/hotel-reservation-theme/modules/productcomments/productcomments.tpl @@ -22,7 +22,7 @@ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} -
    +
    {if $comments} {if (!$too_early AND ($is_logged OR $allow_guests))} @@ -170,7 +170,7 @@ {if (!$too_early AND ($is_logged OR $allow_guests))}

    - {l s='Be the first to write your review!' mod='productcomments'} + {l s='Be the first to write your review' mod='productcomments'}

    ".PHP_EOL; + flush(); + } else { + echo "
    ".PHP_EOL; + echo "FAIL ".$address.PHP_EOL; + echo "
    ".PHP_EOL; + flush(); + } + } +} diff --git a/tools/swift/classes/Swift/Plugins/Reporters/index.php b/tools/swift/classes/Swift/Plugins/Reporters/index.php new file mode 100644 index 000000000..9a99a8662 --- /dev/null +++ b/tools/swift/classes/Swift/Plugins/Reporters/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/tools/swift/classes/Swift/Plugins/Sleeper.php b/tools/swift/classes/Swift/Plugins/Sleeper.php new file mode 100644 index 000000000..38727052b --- /dev/null +++ b/tools/swift/classes/Swift/Plugins/Sleeper.php @@ -0,0 +1,24 @@ +_rate = $rate; + $this->_mode = $mode; + $this->_sleeper = $sleeper; + $this->_timer = $timer; + } + + /** + * Invoked immediately before the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $time = $this->getTimestamp(); + if (!isset($this->_start)) { + $this->_start = $time; + } + $duration = $time - $this->_start; + + switch ($this->_mode) { + case self::BYTES_PER_MINUTE : + $sleep = $this->_throttleBytesPerMinute($duration); + break; + case self::MESSAGES_PER_SECOND : + $sleep = $this->_throttleMessagesPerSecond($duration); + break; + case self::MESSAGES_PER_MINUTE : + $sleep = $this->_throttleMessagesPerMinute($duration); + break; + default : + $sleep = 0; + break; + } + + if ($sleep > 0) { + $this->sleep($sleep); + } + } + + /** + * Invoked when a Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + parent::sendPerformed($evt); + ++$this->_messages; + } + + /** + * Sleep for $seconds. + * + * @param int $seconds + */ + public function sleep($seconds) + { + if (isset($this->_sleeper)) { + $this->_sleeper->sleep($seconds); + } else { + sleep($seconds); + } + } + + /** + * Get the current UNIX timestamp. + * + * @return int + */ + public function getTimestamp() + { + if (isset($this->_timer)) { + return $this->_timer->getTimestamp(); + } else { + return time(); + } + } + + /** + * Get a number of seconds to sleep for. + * + * @param int $timePassed + * + * @return int + */ + private function _throttleBytesPerMinute($timePassed) + { + $expectedDuration = $this->getBytesOut() / ($this->_rate / 60); + + return (int) ceil($expectedDuration - $timePassed); + } + + /** + * Get a number of seconds to sleep for. + * + * @param int $timePassed + * + * @return int + */ + private function _throttleMessagesPerSecond($timePassed) + { + $expectedDuration = $this->_messages / ($this->_rate); + + return (int) ceil($expectedDuration - $timePassed); + } + + /** + * Get a number of seconds to sleep for. + * + * @param int $timePassed + * + * @return int + */ + private function _throttleMessagesPerMinute($timePassed) + { + $expectedDuration = $this->_messages / ($this->_rate / 60); + + return (int) ceil($expectedDuration - $timePassed); + } +} diff --git a/tools/swift/classes/Swift/Plugins/Timer.php b/tools/swift/classes/Swift/Plugins/Timer.php new file mode 100644 index 000000000..a05e3181e --- /dev/null +++ b/tools/swift/classes/Swift/Plugins/Timer.php @@ -0,0 +1,24 @@ + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/tools/swift/classes/Swift/Preferences.php b/tools/swift/classes/Swift/Preferences.php new file mode 100644 index 000000000..7cd61312d --- /dev/null +++ b/tools/swift/classes/Swift/Preferences.php @@ -0,0 +1,103 @@ +register('properties.charset')->asValue($charset); + + return $this; + } + + /** + * Set the directory where temporary files can be saved. + * + * @param string $dir + * + * @return Swift_Preferences + */ + public function setTempDir($dir) + { + Swift_DependencyContainer::getInstance() + ->register('tempdir')->asValue($dir); + + return $this; + } + + /** + * Set the type of cache to use (i.e. "disk" or "array"). + * + * @param string $type + * + * @return Swift_Preferences + */ + public function setCacheType($type) + { + Swift_DependencyContainer::getInstance() + ->register('cache')->asAliasOf(sprintf('cache.%s', $type)); + + return $this; + } + + /** + * Set the QuotedPrintable dot escaper preference. + * + * @param bool $dotEscape + * + * @return Swift_Preferences + */ + public function setQPDotEscape($dotEscape) + { + $dotEscape = !empty($dotEscape); + Swift_DependencyContainer::getInstance() + ->register('mime.qpcontentencoder') + ->asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoder') + ->withDependencies(array('mime.charstream', 'mime.bytecanonicalizer')) + ->addConstructorValue($dotEscape); + + return $this; + } +} diff --git a/tools/swift/classes/Swift/ReplacementFilterFactory.php b/tools/swift/classes/Swift/ReplacementFilterFactory.php new file mode 100644 index 000000000..ca9e4f60d --- /dev/null +++ b/tools/swift/classes/Swift/ReplacementFilterFactory.php @@ -0,0 +1,27 @@ +createDependenciesFor('transport.sendmail') + ); + + $this->setCommand($command); + } + + /** + * Create a new SendmailTransport instance. + * + * @param string $command + * + * @return Swift_SendmailTransport + */ + public static function newInstance($command = '/usr/sbin/sendmail -bs') + { + return new self($command); + } +} diff --git a/tools/swift/classes/Swift/SignedMessage.php b/tools/swift/classes/Swift/SignedMessage.php new file mode 100644 index 000000000..66e1c68cd --- /dev/null +++ b/tools/swift/classes/Swift/SignedMessage.php @@ -0,0 +1,22 @@ + + * @deprecated + */ +class Swift_SignedMessage extends Swift_Message +{ +} diff --git a/tools/swift/classes/Swift/Signer.php b/tools/swift/classes/Swift/Signer.php new file mode 100644 index 000000000..7448179fb --- /dev/null +++ b/tools/swift/classes/Swift/Signer.php @@ -0,0 +1,20 @@ + + */ +interface Swift_Signer +{ + public function reset(); +} diff --git a/tools/swift/classes/Swift/Signers/BodySigner.php b/tools/swift/classes/Swift/Signers/BodySigner.php new file mode 100644 index 000000000..93dc8ac7a --- /dev/null +++ b/tools/swift/classes/Swift/Signers/BodySigner.php @@ -0,0 +1,33 @@ + + */ +interface Swift_Signers_BodySigner extends Swift_Signer +{ + /** + * Change the Swift_Signed_Message to apply the singing. + * + * @param Swift_Message $message + * + * @return Swift_Signers_BodySigner + */ + public function signMessage(Swift_Message $message); + + /** + * Return the list of header a signer might tamper + * + * @return array + */ + public function getAlteredHeaders(); +} diff --git a/tools/swift/classes/Swift/Signers/DKIMSigner.php b/tools/swift/classes/Swift/Signers/DKIMSigner.php new file mode 100644 index 000000000..220c3ac98 --- /dev/null +++ b/tools/swift/classes/Swift/Signers/DKIMSigner.php @@ -0,0 +1,688 @@ + + */ +class Swift_Signers_DKIMSigner implements Swift_Signers_HeaderSigner +{ + /** + * PrivateKey + * + * @var string + */ + protected $_privateKey; + + /** + * DomainName + * + * @var string + */ + protected $_domainName; + + /** + * Selector + * + * @var string + */ + protected $_selector; + + /** + * Hash algorithm used + * + * @var string + */ + protected $_hashAlgorithm = 'rsa-sha1'; + + /** + * Body canon method + * + * @var string + */ + protected $_bodyCanon = 'simple'; + + /** + * Header canon method + * + * @var string + */ + protected $_headerCanon = 'simple'; + + /** + * Headers not being signed + * + * @var array + */ + protected $_ignoredHeaders = array(); + + /** + * Signer identity + * + * @var unknown_type + */ + protected $_signerIdentity; + + /** + * BodyLength + * + * @var int + */ + protected $_bodyLen = 0; + + /** + * Maximum signedLen + * + * @var int + */ + protected $_maxLen = PHP_INT_MAX; + + /** + * Embbed bodyLen in signature + * + * @var bool + */ + protected $_showLen = false; + + /** + * When the signature has been applied (true means time()), false means not embedded + * + * @var mixed + */ + protected $_signatureTimestamp = true; + + /** + * When will the signature expires false means not embedded, if sigTimestamp is auto + * Expiration is relative, otherwhise it's absolute + * + * @var int + */ + protected $_signatureExpiration = false; + + /** + * Must we embed signed headers? + * + * @var bool + */ + protected $_debugHeaders = false; + + // work variables + /** + * Headers used to generate hash + * + * @var array + */ + protected $_signedHeaders = array(); + + /** + * If debugHeaders is set store debugDatas here + * + * @var string + */ + private $_debugHeadersData = ''; + + /** + * Stores the bodyHash + * + * @var string + */ + private $_bodyHash = ''; + + /** + * Stores the signature header + * + * @var Swift_Mime_Headers_ParameterizedHeader + */ + protected $_dkimHeader; + + /** + * Hash Handler + * + * @var hash_ressource + */ + private $_headerHashHandler; + + private $_bodyHashHandler; + + private $_headerHash; + + private $_headerCanonData = ''; + + private $_bodyCanonEmptyCounter = 0; + + private $_bodyCanonIgnoreStart = 2; + + private $_bodyCanonSpace = false; + + private $_bodyCanonLastChar = null; + + private $_bodyCanonLine = ''; + + private $_bound = array(); + + /** + * Constructor + * + * @param string $privateKey + * @param string $domainName + * @param string $selector + */ + public function __construct($privateKey, $domainName, $selector) + { + $this->_privateKey = $privateKey; + $this->_domainName = $domainName; + $this->_signerIdentity = '@'.$domainName; + $this->_selector = $selector; + } + + /** + * Instanciate DKIMSigner + * + * @param string $privateKey + * @param string $domainName + * @param string $selector + * @return Swift_Signers_DKIMSigner + */ + public static function newInstance($privateKey, $domainName, $selector) + { + return new static($privateKey, $domainName, $selector); + } + + /** + * Reset the Signer + * @see Swift_Signer::reset() + */ + public function reset() + { + $this->_headerHash = null; + $this->_signedHeaders = array(); + $this->_headerHashHandler = null; + $this->_bodyHash = null; + $this->_bodyHashHandler = null; + $this->_bodyCanonIgnoreStart = 2; + $this->_bodyCanonEmptyCounter = 0; + $this->_bodyCanonLastChar = null; + $this->_bodyCanonSpace = false; + } + + /** + * Writes $bytes to the end of the stream. + * + * Writing may not happen immediately if the stream chooses to buffer. If + * you want to write these bytes with immediate effect, call {@link commit()} + * after calling write(). + * + * This method returns the sequence ID of the write (i.e. 1 for first, 2 for + * second, etc etc). + * + * @param string $bytes + * @return int + * @throws Swift_IoException + */ + public function write($bytes) + { + $this->_canonicalizeBody($bytes); + foreach ($this->_bound as $is) { + $is->write($bytes); + } + } + + /** + * For any bytes that are currently buffered inside the stream, force them + * off the buffer. + * + * @throws Swift_IoException + */ + public function commit() + { + // Nothing to do + return; + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + // Don't have to mirror anything + $this->_bound[] = $is; + + return; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + // Don't have to mirror anything + foreach ($this->_bound as $k => $stream) { + if ($stream === $is) { + unset($this->_bound[$k]); + + return; + } + } + + return; + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + * + * @throws Swift_IoException + */ + public function flushBuffers() + { + $this->reset(); + } + + /** + * Set hash_algorithm, must be one of rsa-sha256 | rsa-sha1 defaults to rsa-sha256 + * + * @param string $hash + * @return Swift_Signers_DKIMSigner + */ + public function setHashAlgorithm($hash) + { + // Unable to sign with rsa-sha256 + if ($hash == 'rsa-sha1') { + $this->_hashAlgorithm = 'rsa-sha1'; + } else { + $this->_hashAlgorithm = 'rsa-sha256'; + } + + return $this; + } + + /** + * Set the body canonicalization algorithm + * + * @param string $canon + * @return Swift_Signers_DKIMSigner + */ + public function setBodyCanon($canon) + { + if ($canon == 'relaxed') { + $this->_bodyCanon = 'relaxed'; + } else { + $this->_bodyCanon = 'simple'; + } + + return $this; + } + + /** + * Set the header canonicalization algorithm + * + * @param string $canon + * @return Swift_Signers_DKIMSigner + */ + public function setHeaderCanon($canon) + { + if ($canon == 'relaxed') { + $this->_headerCanon = 'relaxed'; + } else { + $this->_headerCanon = 'simple'; + } + + return $this; + } + + /** + * Set the signer identity + * + * @param string $identity + * @return Swift_Signers_DKIMSigner + */ + public function setSignerIdentity($identity) + { + $this->_signerIdentity = $identity; + + return $this; + } + + /** + * Set the length of the body to sign + * + * @param mixed $len (bool or int) + * @return Swift_Signers_DKIMSigner + */ + public function setBodySignedLen($len) + { + if ($len === true) { + $this->_showLen = true; + $this->_maxLen = PHP_INT_MAX; + } elseif ($len === false) { + $this->showLen = false; + $this->_maxLen = PHP_INT_MAX; + } else { + $this->_showLen = true; + $this->_maxLen = (int) $len; + } + + return $this; + } + + /** + * Set the signature timestamp + * + * @param timestamp $time + * @return Swift_Signers_DKIMSigner + */ + public function setSignatureTimestamp($time) + { + $this->_signatureTimestamp = $time; + + return $this; + } + + /** + * Set the signature expiration timestamp + * + * @param timestamp $time + * @return Swift_Signers_DKIMSigner + */ + public function setSignatureExpiration($time) + { + $this->_signatureExpiration = $time; + + return $this; + } + + /** + * Enable / disable the DebugHeaders + * + * @param bool $debug + * @return Swift_Signers_DKIMSigner + */ + public function setDebugHeaders($debug) + { + $this->_debugHeaders = (bool) $debug; + + return $this; + } + + /** + * Start Body + * + */ + public function startBody() + { + // Init + switch ($this->_hashAlgorithm) { + case 'rsa-sha256' : + $this->_bodyHashHandler = hash_init('sha256'); + break; + case 'rsa-sha1' : + $this->_bodyHashHandler = hash_init('sha1'); + break; + } + $this->_bodyCanonLine = ''; + } + + /** + * End Body + * + */ + public function endBody() + { + $this->_endOfBody(); + } + + /** + * Returns the list of Headers Tampered by this plugin + * + * @return array + */ + public function getAlteredHeaders() + { + if ($this->_debugHeaders) { + return array('DKIM-Signature', 'X-DebugHash'); + } else { + return array('DKIM-Signature'); + } + } + + /** + * Adds an ignored Header + * + * @param string $header_name + * @return Swift_Signers_DKIMSigner + */ + public function ignoreHeader($header_name) + { + $this->_ignoredHeaders[strtolower($header_name)] = true; + + return $this; + } + + /** + * Set the headers to sign + * + * @param Swift_Mime_HeaderSet $headers + * @return Swift_Signers_DKIMSigner + */ + public function setHeaders(Swift_Mime_HeaderSet $headers) + { + $this->_headerCanonData = ''; + // Loop through Headers + $listHeaders = $headers->listAll(); + foreach ($listHeaders as $hName) { + // Check if we need to ignore Header + if (! isset($this->_ignoredHeaders[strtolower($hName)])) { + if ($headers->has($hName)) { + $tmp = $headers->getAll($hName); + foreach ($tmp as $header) { + if ($header->getFieldBody() != '') { + $this->_addHeader($header->toString()); + $this->_signedHeaders[] = $header->getFieldName(); + } + } + } + } + } + + return $this; + } + + /** + * Add the signature to the given Headers + * + * @param Swift_Mime_HeaderSet $headers + * @return Swift_Signers_DKIMSigner + */ + public function addSignature(Swift_Mime_HeaderSet $headers) + { + // Prepare the DKIM-Signature + $params = array('v' => '1', 'a' => $this->_hashAlgorithm, 'bh' => base64_encode($this->_bodyHash), 'd' => $this->_domainName, 'h' => implode(': ', $this->_signedHeaders), 'i' => $this->_signerIdentity, 's' => $this->_selector); + if ($this->_bodyCanon != 'simple') { + $params['c'] = $this->_headerCanon.'/'.$this->_bodyCanon; + } elseif ($this->_headerCanon != 'simple') { + $params['c'] = $this->_headerCanon; + } + if ($this->_showLen) { + $params['l'] = $this->_bodyLen; + } + if ($this->_signatureTimestamp === true) { + $params['t'] = time(); + if ($this->_signatureExpiration !== false) { + $params['x'] = $params['t'] + $this->_signatureExpiration; + } + } else { + if ($this->_signatureTimestamp !== false) { + $params['t'] = $this->_signatureTimestamp; + } + if ($this->_signatureExpiration !== false) { + $params['x'] = $this->_signatureExpiration; + } + } + if ($this->_debugHeaders) { + $params['z'] = implode('|', $this->_debugHeadersData); + } + $string = ''; + foreach ($params as $k => $v) { + $string .= $k.'='.$v.'; '; + } + $string = trim($string); + $headers->addTextHeader('DKIM-Signature', $string); + // Add the last DKIM-Signature + $tmp = $headers->getAll('DKIM-Signature'); + $this->_dkimHeader = end($tmp); + $this->_addHeader(trim($this->_dkimHeader->toString())."\r\n b=", true); + $this->_endOfHeaders(); + if ($this->_debugHeaders) { + $headers->addTextHeader('X-DebugHash', base64_encode($this->_headerHash)); + } + $this->_dkimHeader->setValue($string." b=".trim(chunk_split(base64_encode($this->_getEncryptedHash()), 73, " "))); + + return $this; + } + + /* Private helpers */ + + protected function _addHeader($header, $is_sig = false) + { + switch ($this->_headerCanon) { + case 'relaxed' : + // Prepare Header and cascade + $exploded = explode(':', $header, 2); + $name = strtolower(trim($exploded[0])); + $value = str_replace("\r\n", "", $exploded[1]); + $value = preg_replace("/[ \t][ \t]+/", " ", $value); + $header = $name.":".trim($value).($is_sig ? '' : "\r\n"); + case 'simple' : + // Nothing to do + } + $this->_addToHeaderHash($header); + } + + protected function _endOfHeaders() + { + //$this->_headerHash=hash_final($this->_headerHashHandler, true); + } + + protected function _canonicalizeBody($string) + { + $len = strlen($string); + $canon = ''; + $method = ($this->_bodyCanon == "relaxed"); + for ($i = 0; $i < $len; ++$i) { + if ($this->_bodyCanonIgnoreStart > 0) { + --$this->_bodyCanonIgnoreStart; + continue; + } + switch ($string[$i]) { + case "\r" : + $this->_bodyCanonLastChar = "\r"; + break; + case "\n" : + if ($this->_bodyCanonLastChar == "\r") { + if ($method) { + $this->_bodyCanonSpace = false; + } + if ($this->_bodyCanonLine == '') { + ++$this->_bodyCanonEmptyCounter; + } else { + $this->_bodyCanonLine = ''; + $canon .= "\r\n"; + } + } else { + // Wooops Error + // todo handle it but should never happen + } + break; + case " " : + case "\t" : + if ($method) { + $this->_bodyCanonSpace = true; + break; + } + default : + if ($this->_bodyCanonEmptyCounter > 0) { + $canon .= str_repeat("\r\n", $this->_bodyCanonEmptyCounter); + $this->_bodyCanonEmptyCounter = 0; + } + if ($this->_bodyCanonSpace) { + $this->_bodyCanonLine .= ' '; + $canon .= ' '; + $this->_bodyCanonSpace = false; + } + $this->_bodyCanonLine .= $string[$i]; + $canon .= $string[$i]; + } + } + $this->_addToBodyHash($canon); + } + + protected function _endOfBody() + { + // Add trailing Line return if last line is non empty + if (strlen($this->_bodyCanonLine) > 0) { + $this->_addToBodyHash("\r\n"); + } + $this->_bodyHash = hash_final($this->_bodyHashHandler, true); + } + + private function _addToBodyHash($string) + { + $len = strlen($string); + if ($len > ($new_len = ($this->_maxLen - $this->_bodyLen))) { + $string = substr($string, 0, $new_len); + $len = $new_len; + } + hash_update($this->_bodyHashHandler, $string); + $this->_bodyLen += $len; + } + + private function _addToHeaderHash($header) + { + if ($this->_debugHeaders) { + $this->_debugHeadersData[] = trim($header); + } + $this->_headerCanonData .= $header; + } + + /** + * @throws Swift_SwiftException + * @return string + */ + private function _getEncryptedHash() + { + $signature = ''; + switch ($this->_hashAlgorithm) { + case 'rsa-sha1': + $algorithm = OPENSSL_ALGO_SHA1; + break; + case 'rsa-sha256': + $algorithm = OPENSSL_ALGO_SHA256; + break; + } + $pkeyId = openssl_get_privatekey($this->_privateKey); + if (!$pkeyId) { + throw new Swift_SwiftException('Unable to load DKIM Private Key ['.openssl_error_string().']'); + } + if (openssl_sign($this->_headerCanonData, $signature, $pkeyId, $algorithm)) { + return $signature; + } + throw new Swift_SwiftException('Unable to sign DKIM Hash ['.openssl_error_string().']'); + } +} diff --git a/tools/swift/classes/Swift/Signers/DomainKeySigner.php b/tools/swift/classes/Swift/Signers/DomainKeySigner.php new file mode 100644 index 000000000..b52ffdf4e --- /dev/null +++ b/tools/swift/classes/Swift/Signers/DomainKeySigner.php @@ -0,0 +1,512 @@ + + */ +class Swift_Signers_DomainKeySigner implements Swift_Signers_HeaderSigner +{ + /** + * PrivateKey + * + * @var string + */ + protected $_privateKey; + + /** + * DomainName + * + * @var string + */ + protected $_domainName; + + /** + * Selector + * + * @var string + */ + protected $_selector; + + /** + * Hash algorithm used + * + * @var string + */ + protected $_hashAlgorithm = 'rsa-sha1'; + + /** + * Canonisation method + * + * @var string + */ + protected $_canon = 'simple'; + + /** + * Headers not being signed + * + * @var array + */ + protected $_ignoredHeaders = array(); + + /** + * Signer identity + * + * @var string + */ + protected $_signerIdentity; + + /** + * Must we embed signed headers? + * + * @var bool + */ + protected $_debugHeaders = false; + + // work variables + /** + * Headers used to generate hash + * + * @var array + */ + private $_signedHeaders = array(); + + /** + * Stores the signature header + * + * @var Swift_Mime_Headers_ParameterizedHeader + */ + protected $_domainKeyHeader; + + /** + * Hash Handler + * + * @var resource|null + */ + private $_hashHandler; + + private $_hash; + + private $_canonData = ''; + + private $_bodyCanonEmptyCounter = 0; + + private $_bodyCanonIgnoreStart = 2; + + private $_bodyCanonSpace = false; + + private $_bodyCanonLastChar = null; + + private $_bodyCanonLine = ''; + + private $_bound = array(); + + /** + * Constructor + * + * @param string $privateKey + * @param string $domainName + * @param string $selector + */ + public function __construct($privateKey, $domainName, $selector) + { + $this->_privateKey = $privateKey; + $this->_domainName = $domainName; + $this->_signerIdentity = '@'.$domainName; + $this->_selector = $selector; + } + + /** + * Instanciate DomainKeySigner + * + * @param string $privateKey + * @param string $domainName + * @param string $selector + * @return Swift_Signers_DomainKeySigner + */ + public static function newInstance($privateKey, $domainName, $selector) + { + return new static($privateKey, $domainName, $selector); + } + + /** + * Resets internal states + * + * @return Swift_Signers_DomainKeysSigner + */ + public function reset() + { + $this->_hash = null; + $this->_hashHandler = null; + $this->_bodyCanonIgnoreStart = 2; + $this->_bodyCanonEmptyCounter = 0; + $this->_bodyCanonLastChar = null; + $this->_bodyCanonSpace = false; + + return $this; + } + + /** + * Writes $bytes to the end of the stream. + * + * Writing may not happen immediately if the stream chooses to buffer. If + * you want to write these bytes with immediate effect, call {@link commit()} + * after calling write(). + * + * This method returns the sequence ID of the write (i.e. 1 for first, 2 for + * second, etc etc). + * + * @param string $bytes + * @return int + * @throws Swift_IoException + * @return Swift_Signers_DomainKeysSigner + */ + public function write($bytes) + { + $this->_canonicalizeBody($bytes); + foreach ($this->_bound as $is) { + $is->write($bytes); + } + + return $this; + } + + /** + * For any bytes that are currently buffered inside the stream, force them + * off the buffer. + * + * @throws Swift_IoException + * @return Swift_Signers_DomainKeysSigner + */ + public function commit() + { + // Nothing to do + return $this; + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + * @return Swift_Signers_DomainKeysSigner + */ + public function bind(Swift_InputByteStream $is) + { + // Don't have to mirror anything + $this->_bound[] = $is; + + return $this; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + * @return Swift_Signers_DomainKeysSigner + */ + public function unbind(Swift_InputByteStream $is) + { + // Don't have to mirror anything + foreach ($this->_bound as $k => $stream) { + if ($stream === $is) { + unset($this->_bound[$k]); + + return; + } + } + + return $this; + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + * + * @throws Swift_IoException + * @return Swift_Signers_DomainKeysSigner + */ + public function flushBuffers() + { + $this->reset(); + + return $this; + } + + /** + * Set hash_algorithm, must be one of rsa-sha256 | rsa-sha1 defaults to rsa-sha256 + * + * @param string $hash + * @return Swift_Signers_DomainKeysSigner + */ + public function setHashAlgorithm($hash) + { + $this->_hashAlgorithm = 'rsa-sha1'; + + return $this; + } + + /** + * Set the canonicalization algorithm + * + * @param string $canon simple | nofws defaults to simple + * @return Swift_Signers_DomainKeysSigner + */ + public function setCanon($canon) + { + if ($canon == 'nofws') { + $this->_canon = 'nofws'; + } else { + $this->_canon = 'simple'; + } + + return $this; + } + + /** + * Set the signer identity + * + * @param string $identity + * @return Swift_Signers_DomainKeySigner + */ + public function setSignerIdentity($identity) + { + $this->_signerIdentity = $identity; + + return $this; + } + + /** + * Enable / disable the DebugHeaders + * + * @param bool $debug + * @return Swift_Signers_DomainKeySigner + */ + public function setDebugHeaders($debug) + { + $this->_debugHeaders = (bool) $debug; + + return $this; + } + + /** + * Start Body + * + */ + public function startBody() + { + } + + /** + * End Body + * + */ + public function endBody() + { + $this->_endOfBody(); + } + + /** + * Returns the list of Headers Tampered by this plugin + * + * @return array + */ + public function getAlteredHeaders() + { + if ($this->_debugHeaders) { + return array('DomainKey-Signature', 'X-DebugHash'); + } else { + return array('DomainKey-Signature'); + } + } + + /** + * Adds an ignored Header + * + * @param string $header_name + * @return Swift_Signers_DomainKeySigner + */ + public function ignoreHeader($header_name) + { + $this->_ignoredHeaders[strtolower($header_name)] = true; + + return $this; + } + + /** + * Set the headers to sign + * + * @param Swift_Mime_HeaderSet $headers + * @return Swift_Signers_DomainKeySigner + */ + public function setHeaders(Swift_Mime_HeaderSet $headers) + { + $this->_startHash(); + $this->_canonData = ''; + // Loop through Headers + $listHeaders = $headers->listAll(); + foreach ($listHeaders as $hName) { + // Check if we need to ignore Header + if (! isset($this->_ignoredHeaders[strtolower($hName)])) { + if ($headers->has($hName)) { + $tmp = $headers->getAll($hName); + foreach ($tmp as $header) { + if ($header->getFieldBody() != '') { + $this->_addHeader($header->toString()); + $this->_signedHeaders[] = $header->getFieldName(); + } + } + } + } + } + $this->_endOfHeaders(); + + return $this; + } + + /** + * Add the signature to the given Headers + * + * @param Swift_Mime_HeaderSet $headers + * @return Swift_Signers_DomainKeySigner + */ + public function addSignature(Swift_Mime_HeaderSet $headers) + { + // Prepare the DomainKey-Signature Header + $params = array('a' => $this->_hashAlgorithm, 'b' => chunk_split(base64_encode($this->_getEncryptedHash()), 73, " "), 'c' => $this->_canon, 'd' => $this->_domainName, 'h' => implode(': ', $this->_signedHeaders), 'q' => 'dns', 's' => $this->_selector); + $string = ''; + foreach ($params as $k => $v) { + $string .= $k.'='.$v.'; '; + } + $string = trim($string); + $headers->addTextHeader('DomainKey-Signature', $string); + + return $this; + } + + /* Private helpers */ + + protected function _addHeader($header) + { + switch ($this->_canon) { + case 'nofws' : + // Prepare Header and cascade + $exploded = explode(':', $header, 2); + $name = strtolower(trim($exploded[0])); + $value = str_replace("\r\n", "", $exploded[1]); + $value = preg_replace("/[ \t][ \t]+/", " ", $value); + $header = $name.":".trim($value)."\r\n"; + case 'simple' : + // Nothing to do + } + $this->_addToHash($header); + } + + protected function _endOfHeaders() + { + $this->_bodyCanonEmptyCounter = 1; + } + + protected function _canonicalizeBody($string) + { + $len = strlen($string); + $canon = ''; + $nofws = ($this->_canon == "nofws"); + for ($i = 0; $i < $len; ++$i) { + if ($this->_bodyCanonIgnoreStart > 0) { + --$this->_bodyCanonIgnoreStart; + continue; + } + switch ($string[$i]) { + case "\r" : + $this->_bodyCanonLastChar = "\r"; + break; + case "\n" : + if ($this->_bodyCanonLastChar == "\r") { + if ($nofws) { + $this->_bodyCanonSpace = false; + } + if ($this->_bodyCanonLine == '') { + ++$this->_bodyCanonEmptyCounter; + } else { + $this->_bodyCanonLine = ''; + $canon .= "\r\n"; + } + } else { + // Wooops Error + throw new Swift_SwiftException('Invalid new line sequence in mail found \n without preceding \r'); + } + break; + case " " : + case "\t" : + case "\x09": //HTAB + if ($nofws) { + $this->_bodyCanonSpace = true; + break; + } + default : + if ($this->_bodyCanonEmptyCounter > 0) { + $canon .= str_repeat("\r\n", $this->_bodyCanonEmptyCounter); + $this->_bodyCanonEmptyCounter = 0; + } + $this->_bodyCanonLine .= $string[$i]; + $canon .= $string[$i]; + } + } + $this->_addToHash($canon); + } + + protected function _endOfBody() + { + if (strlen($this->_bodyCanonLine) > 0) { + $this->_addToHash("\r\n"); + } + $this->_hash = hash_final($this->_hashHandler, true); + } + + private function _addToHash($string) + { + $this->_canonData .= $string; + hash_update($this->_hashHandler, $string); + } + + private function _startHash() + { + // Init + switch ($this->_hashAlgorithm) { + case 'rsa-sha1' : + $this->_hashHandler = hash_init('sha1'); + break; + } + $this->_canonLine = ''; + } + + /** + * @throws Swift_SwiftException + * @return string + */ + private function _getEncryptedHash() + { + $signature = ''; + $pkeyId = openssl_get_privatekey($this->_privateKey); + if (!$pkeyId) { + throw new Swift_SwiftException('Unable to load DomainKey Private Key ['.openssl_error_string().']'); + } + if (openssl_sign($this->_canonData, $signature, $pkeyId, OPENSSL_ALGO_SHA1)) { + return $signature; + } + throw new Swift_SwiftException('Unable to sign DomainKey Hash ['.openssl_error_string().']'); + } +} diff --git a/tools/swift/classes/Swift/Signers/HeaderSigner.php b/tools/swift/classes/Swift/Signers/HeaderSigner.php new file mode 100644 index 000000000..67c794130 --- /dev/null +++ b/tools/swift/classes/Swift/Signers/HeaderSigner.php @@ -0,0 +1,65 @@ + + */ +interface Swift_Signers_HeaderSigner extends Swift_Signer, Swift_InputByteStream +{ + /** + * Exclude an header from the signed headers + * + * @param string $header_name + * + * @return Swift_Signers_HeaderSigner + */ + public function ignoreHeader($header_name); + + /** + * Prepare the Signer to get a new Body + * + * @return Swift_Signers_HeaderSigner + */ + public function startBody(); + + /** + * Give the signal that the body has finished streaming + * + * @return Swift_Signers_HeaderSigner + */ + public function endBody(); + + /** + * Give the headers already given + * + * @param Swift_Mime_SimpleHeaderSet $headers + * + * @return Swift_Signers_HeaderSigner + */ + public function setHeaders(Swift_Mime_HeaderSet $headers); + + /** + * Add the header(s) to the headerSet + * + * @param Swift_Mime_HeaderSet $headers + * + * @return Swift_Signers_HeaderSigner + */ + public function addSignature(Swift_Mime_HeaderSet $headers); + + /** + * Return the list of header a signer might tamper + * + * @return array + */ + public function getAlteredHeaders(); +} diff --git a/tools/swift/classes/Swift/Signers/OpenDKIMSigner.php b/tools/swift/classes/Swift/Signers/OpenDKIMSigner.php new file mode 100644 index 000000000..b9738f423 --- /dev/null +++ b/tools/swift/classes/Swift/Signers/OpenDKIMSigner.php @@ -0,0 +1,186 @@ + + */ +class Swift_Signers_OpenDKIMSigner extends Swift_Signers_DKIMSigner +{ + private $_peclLoaded = false; + + private $_dkimHandler = null; + + private $dropFirstLF = true; + + const CANON_RELAXED = 1; + const CANON_SIMPLE = 2; + const SIG_RSA_SHA1 = 3; + const SIG_RSA_SHA256 = 4; + + public function __construct($privateKey, $domainName, $selector) + { + if (extension_loaded('opendkim')) { + $this->_peclLoaded = true; + } else { + throw new Swift_SwiftException('php-opendkim extension not found'); + } + parent::__construct($privateKey, $domainName, $selector); + } + + public static function newInstance($privateKey, $domainName, $selector) + { + return new static($privateKey, $domainName, $selector); + } + + public function addSignature(Swift_Mime_HeaderSet $headers) + { + $header = new Swift_Mime_Headers_OpenDKIMHeader('DKIM-Signature'); + $headerVal = $this->_dkimHandler->getSignatureHeader(); + if (!$headerVal) { + throw new Swift_SwiftException('OpenDKIM Error: '.$this->_dkimHandler->getError()); + } + $header->setValue($headerVal); + $headers->set($header); + + return $this; + } + + public function setHeaders(Swift_Mime_HeaderSet $headers) + { + $bodyLen = $this->_bodyLen; + if (is_bool($bodyLen)) { + $bodyLen = - 1; + } + $hash = ($this->_hashAlgorithm == 'rsa-sha1') ? OpenDKIMSign::ALG_RSASHA1 : OpenDKIMSign::ALG_RSASHA256; + $bodyCanon = ($this->_bodyCanon == 'simple') ? OpenDKIMSign::CANON_SIMPLE : OpenDKIMSign::CANON_RELAXED; + $headerCanon = ($this->_headerCanon == 'simple') ? OpenDKIMSign::CANON_SIMPLE : OpenDKIMSign::CANON_RELAXED; + $this->_dkimHandler = new OpenDKIMSign($this->_privateKey, $this->_selector, $this->_domainName, $headerCanon, $bodyCanon, $hash, $bodyLen); + // Hardcode signature Margin for now + $this->_dkimHandler->setMargin(78); + + if (!is_numeric($this->_signatureTimestamp)) { + OpenDKIM::setOption(OpenDKIM::OPTS_FIXEDTIME, time()); + } else { + if (!OpenDKIM::setOption(OpenDKIM::OPTS_FIXEDTIME, $this->_signatureTimestamp)) { + throw new Swift_SwiftException('Unable to force signature timestamp ['.openssl_error_string().']'); + } + } + if (isset($this->_signerIdentity)) { + $this->_dkimHandler->setSigner($this->_signerIdentity); + } + $listHeaders = $headers->listAll(); + foreach ($listHeaders as $hName) { + // Check if we need to ignore Header + if (! isset($this->_ignoredHeaders[strtolower($hName)])) { + $tmp = $headers->getAll($hName); + if ($headers->has($hName)) { + foreach ($tmp as $header) { + if ($header->getFieldBody() != '') { + $htosign = $header->toString(); + $this->_dkimHandler->header($htosign); + $this->_signedHeaders[] = $header->getFieldName(); + } + } + } + } + } + + return $this; + } + + public function startBody() + { + if (! $this->_peclLoaded) { + return parent::startBody(); + } + $this->dropFirstLF = true; + $this->_dkimHandler->eoh(); + + return $this; + } + + public function endBody() + { + if (! $this->_peclLoaded) { + return parent::endBody(); + } + $this->_dkimHandler->eom(); + + return $this; + } + + public function reset() + { + $this->_dkimHandler = null; + parent::reset(); + + return $this; + } + + /** + * Set the signature timestamp + * + * @param timestamp $time + * @return Swift_Signers_DKIMSigner + */ + public function setSignatureTimestamp($time) + { + $this->_signatureTimestamp = $time; + + return $this; + } + + /** + * Set the signature expiration timestamp + * + * @param timestamp $time + * @return Swift_Signers_DKIMSigner + */ + public function setSignatureExpiration($time) + { + $this->_signatureExpiration = $time; + + return $this; + } + + /** + * Enable / disable the DebugHeaders + * + * @param bool $debug + * @return Swift_Signers_DKIMSigner + */ + public function setDebugHeaders($debug) + { + $this->_debugHeaders = (bool) $debug; + + return $this; + } + + // Protected + + protected function _canonicalizeBody($string) + { + if (! $this->_peclLoaded) { + return parent::_canonicalizeBody($string); + } + if (false && $this->dropFirstLF === true) { + if ($string[0] == "\r" && $string[1] == "\n") { + $string = substr($string, 2); + } + } + $this->dropFirstLF = false; + if (strlen($string)) { + $this->_dkimHandler->body($string); + } + } +} diff --git a/tools/swift/classes/Swift/Signers/SMimeSigner.php b/tools/swift/classes/Swift/Signers/SMimeSigner.php new file mode 100644 index 000000000..42e294c6d --- /dev/null +++ b/tools/swift/classes/Swift/Signers/SMimeSigner.php @@ -0,0 +1,427 @@ + + */ +class Swift_Signers_SMimeSigner implements Swift_Signers_BodySigner +{ + protected $signCertificate; + protected $signPrivateKey; + protected $encryptCert; + protected $signThenEncrypt = true; + protected $signLevel; + protected $encryptLevel; + protected $signOptions; + protected $encryptOptions; + protected $encryptCipher; + + /** + * @var Swift_StreamFilters_StringReplacementFilterFactory + */ + protected $replacementFactory; + + /** + * @var Swift_Mime_HeaderFactory + */ + protected $headerFactory; + + /** + * Constructor. + * + * @param string $certificate + * @param string $privateKey + * @param string $encryptCertificate + */ + public function __construct($signCertificate = null, $signPrivateKey = null, $encryptCertificate = null) + { + if (null !== $signPrivateKey) { + $this->setSignCertificate($signCertificate, $signPrivateKey); + } + + if (null !== $encryptCertificate) { + $this->setEncryptCertificate($encryptCertificate); + } + + $this->replacementFactory = Swift_DependencyContainer::getInstance() + ->lookup('transport.replacementfactory'); + + $this->signOptions = PKCS7_DETACHED; + + // Supported since php5.4 + if (defined('OPENSSL_CIPHER_AES_128_CBC')) { + $this->encryptCipher = OPENSSL_CIPHER_AES_128_CBC; + } else { + $this->encryptCipher = OPENSSL_CIPHER_RC2_128; + } + } + + /** + * Returns an new Swift_Signers_SMimeSigner instance. + * + * @param string $certificate + * @param string $privateKey + * + * @return Swift_Signers_SMimeSigner + */ + public static function newInstance($certificate = null, $privateKey = null) + { + return new self($certificate, $privateKey); + } + + /** + * Set the certificate location to use for signing. + * + * @link http://www.php.net/manual/en/openssl.pkcs7.flags.php + * + * @param string $certificate + * @param string|array $privateKey If the key needs an passphrase use array('file-location', 'passphrase') instead + * @param int $signOptions Bitwise operator options for openssl_pkcs7_sign() + * + * @return Swift_Signers_SMimeSigner + */ + public function setSignCertificate($certificate, $privateKey = null, $signOptions = PKCS7_DETACHED) + { + $this->signCertificate = 'file://'.str_replace('\\', '/', realpath($certificate)); + + if (null !== $privateKey) { + if (is_array($privateKey)) { + $this->signPrivateKey = $privateKey; + $this->signPrivateKey[0] = 'file://'.str_replace('\\', '/', realpath($privateKey[0])); + } else { + $this->signPrivateKey = 'file://'.str_replace('\\', '/', realpath($privateKey)); + } + } + + $this->signOptions = $signOptions; + + return $this; + } + + /** + * Set the certificate location to use for encryption. + * + * @link http://www.php.net/manual/en/openssl.pkcs7.flags.php + * @link http://nl3.php.net/manual/en/openssl.ciphers.php + * + * @param string|array $recipientCerts Either an single X.509 certificate, or an assoc array of X.509 certificates. + * @param int $cipher + * + * @return Swift_Signers_SMimeSigner + */ + public function setEncryptCertificate($recipientCerts, $cipher = null) + { + if (is_array($recipientCerts)) { + $this->encryptCert = array(); + + foreach ($recipientCerts as $cert) { + $this->encryptCert[] = 'file://'.str_replace('\\', '/', realpath($cert)); + } + } else { + $this->encryptCert = 'file://'.str_replace('\\', '/', realpath($recipientCerts)); + } + + if (null !== $cipher) { + $this->encryptCipher = $cipher; + } + + return $this; + } + + /** + * @return string + */ + public function getSignCertificate() + { + return $this->signCertificate; + } + + /** + * @return string + */ + public function getSignPrivateKey() + { + return $this->signPrivateKey; + } + + /** + * Set perform signing before encryption. + * + * The default is to first sign the message and then encrypt. + * But some older mail clients, namely Microsoft Outlook 2000 will work when the message first encrypted. + * As this goes against the official specs, its recommended to only use 'encryption -> signing' when specifically targeting these 'broken' clients. + * + * @param string $signThenEncrypt + * + * @return Swift_Signers_SMimeSigner + */ + public function setSignThenEncrypt($signThenEncrypt = true) + { + $this->signThenEncrypt = $signThenEncrypt; + + return $this; + } + + /** + * @return bool + */ + public function isSignThenEncrypt() + { + return $this->signThenEncrypt; + } + + /** + * Resets internal states. + * + * @return Swift_Signers_SMimeSigner + */ + public function reset() + { + return $this; + } + + /** + * Change the Swift_Message to apply the signing. + * + * @param Swift_Message $message + * + * @return Swift_Signers_SMimeSigner + */ + public function signMessage(Swift_Message $message) + { + if (null === $this->signCertificate && null === $this->encryptCert) { + return $this; + } + + // Store the message using ByteStream to a file{1} + // Remove all Children + // Sign file{1}, parse the new MIME headers and set them on the primary MimeEntity + // Set the singed-body as the new body (without boundary) + + $messageStream = new Swift_ByteStream_TemporaryFileByteStream(); + $this->toSMimeByteStream($messageStream, $message); + $message->setEncoder(Swift_DependencyContainer::getInstance()->lookup('mime.rawcontentencoder')); + + $message->setChildren(array()); + $this->streamToMime($messageStream, $message); + } + + /** + * Return the list of header a signer might tamper. + * + * @return array + */ + public function getAlteredHeaders() + { + return array('Content-Type', 'Content-Transfer-Encoding', 'Content-Disposition'); + } + + /** + * @param Swift_InputByteStream $inputStream + * @param Swift_Message $mimeEntity + */ + protected function toSMimeByteStream(Swift_InputByteStream $inputStream, Swift_Message $message) + { + $mimeEntity = $this->createMessage($message); + $messageStream = new Swift_ByteStream_TemporaryFileByteStream(); + + $mimeEntity->toByteStream($messageStream); + $messageStream->commit(); + + if (null !== $this->signCertificate && null !== $this->encryptCert) { + $temporaryStream = new Swift_ByteStream_TemporaryFileByteStream(); + + if ($this->signThenEncrypt) { + $this->messageStreamToSignedByteStream($messageStream, $temporaryStream); + $this->messageStreamToEncryptedByteStream($temporaryStream, $inputStream); + } else { + $this->messageStreamToEncryptedByteStream($messageStream, $temporaryStream); + $this->messageStreamToSignedByteStream($temporaryStream, $inputStream); + } + } elseif ($this->signCertificate !== null) { + $this->messageStreamToSignedByteStream($messageStream, $inputStream); + } else { + $this->messageStreamToEncryptedByteStream($messageStream, $inputStream); + } + } + + /** + * @param Swift_Message $message + * + * @return Swift_Message + */ + protected function createMessage(Swift_Message $message) + { + $mimeEntity = new Swift_Message('', $message->getBody(), $message->getContentType(), $message->getCharset()); + $mimeEntity->setChildren($message->getChildren()); + + $messageHeaders = $mimeEntity->getHeaders(); + $messageHeaders->remove('Message-ID'); + $messageHeaders->remove('Date'); + $messageHeaders->remove('Subject'); + $messageHeaders->remove('MIME-Version'); + $messageHeaders->remove('To'); + $messageHeaders->remove('From'); + + return $mimeEntity; + } + + /** + * @param Swift_FileStream $outputStream + * @param Swift_InputByteStream $inputStream + * + * @throws Swift_IoException + */ + protected function messageStreamToSignedByteStream(Swift_FileStream $outputStream, Swift_InputByteStream $inputStream) + { + $signedMessageStream = new Swift_ByteStream_TemporaryFileByteStream(); + + if (!openssl_pkcs7_sign($outputStream->getPath(), $signedMessageStream->getPath(), $this->signCertificate, $this->signPrivateKey, array(), $this->signOptions)) { + throw new Swift_IoException(sprintf('Failed to sign S/Mime message. Error: "%s".', openssl_error_string())); + } + + $this->copyFromOpenSSLOutput($signedMessageStream, $inputStream); + } + + /** + * @param Swift_FileStream $outputStream + * @param Swift_InputByteStream $is + * + * @throws Swift_IoException + */ + protected function messageStreamToEncryptedByteStream(Swift_FileStream $outputStream, Swift_InputByteStream $is) + { + $encryptedMessageStream = new Swift_ByteStream_TemporaryFileByteStream(); + + if (!openssl_pkcs7_encrypt($outputStream->getPath(), $encryptedMessageStream->getPath(), $this->encryptCert, array(), 0, $this->encryptCipher)) { + throw new Swift_IoException(sprintf('Failed to encrypt S/Mime message. Error: "%s".', openssl_error_string())); + } + + $this->copyFromOpenSSLOutput($encryptedMessageStream, $is); + } + + /** + * @param Swift_OutputByteStream $fromStream + * @param Swift_InputByteStream $toStream + */ + protected function copyFromOpenSSLOutput(Swift_OutputByteStream $fromStream, Swift_InputByteStream $toStream) + { + $bufferLength = 4096; + $filteredStream = new Swift_ByteStream_TemporaryFileByteStream(); + $filteredStream->addFilter($this->replacementFactory->createFilter("\r\n", "\n"), 'CRLF to LF'); + $filteredStream->addFilter($this->replacementFactory->createFilter("\n", "\r\n"), 'LF to CRLF'); + + while (false !== ($buffer = $fromStream->read($bufferLength))) { + $filteredStream->write($buffer); + } + + $filteredStream->flushBuffers(); + + while (false !== ($buffer = $filteredStream->read($bufferLength))) { + $toStream->write($buffer); + } + + $toStream->commit(); + } + + /** + * Merges an OutputByteStream to Swift_Message. + * + * @param Swift_OutputByteStream $fromStream + * @param Swift_Message $message + */ + protected function streamToMime(Swift_OutputByteStream $fromStream, Swift_Message $message) + { + $bufferLength = 78; + $headerData = ''; + + $fromStream->setReadPointer(0); + + while (($buffer = $fromStream->read($bufferLength)) !== false) { + $headerData .= $buffer; + + if (false !== strpos($buffer, "\r\n\r\n")) { + break; + } + } + + $headersPosEnd = strpos($headerData, "\r\n\r\n"); + $headerData = trim($headerData); + $headerData = substr($headerData, 0, $headersPosEnd); + $headerLines = explode("\r\n", $headerData); + unset($headerData); + + $headers = array(); + $currentHeaderName = ''; + + foreach ($headerLines as $headerLine) { + // Line separated + if (ctype_space($headerLines[0]) || false === strpos($headerLine, ':')) { + $headers[$currentHeaderName] .= ' '.trim($headerLine); + continue; + } + + $header = explode(':', $headerLine, 2); + $currentHeaderName = strtolower($header[0]); + $headers[$currentHeaderName] = trim($header[1]); + } + + $messageStream = new Swift_ByteStream_TemporaryFileByteStream(); + $messageStream->addFilter($this->replacementFactory->createFilter("\r\n", "\n"), 'CRLF to LF'); + $messageStream->addFilter($this->replacementFactory->createFilter("\n", "\r\n"), 'LF to CRLF'); + + $messageHeaders = $message->getHeaders(); + + // No need to check for 'application/pkcs7-mime', as this is always base64 + if ('multipart/signed;' === substr($headers['content-type'], 0, 17)) { + if (!preg_match('/boundary=("[^"]+"|(?:[^\s]+|$))/is', $headers['content-type'], $contentTypeData)) { + throw new Swift_SwiftException('Failed to find Boundary parameter'); + } + + $boundary = trim($contentTypeData['1'], '"'); + $boundaryLen = strlen($boundary); + + // Skip the header and CRLF CRLF + $fromStream->setReadPointer($headersPosEnd + 4); + + while (false !== ($buffer = $fromStream->read($bufferLength))) { + $messageStream->write($buffer); + } + + $messageStream->commit(); + + $messageHeaders->remove('Content-Transfer-Encoding'); + $message->setContentType($headers['content-type']); + $message->setBoundary($boundary); + $message->setBody($messageStream); + } else { + $fromStream->setReadPointer($headersPosEnd + 4); + + if (null === $this->headerFactory) { + $this->headerFactory = Swift_DependencyContainer::getInstance()->lookup('mime.headerfactory'); + } + + $message->setContentType($headers['content-type']); + $messageHeaders->set($this->headerFactory->createTextHeader('Content-Transfer-Encoding', $headers['content-transfer-encoding'])); + $messageHeaders->set($this->headerFactory->createTextHeader('Content-Disposition', $headers['content-disposition'])); + + while (false !== ($buffer = $fromStream->read($bufferLength))) { + $messageStream->write($buffer); + } + + $messageStream->commit(); + $message->setBody($messageStream); + } + } +} diff --git a/tools/swift/classes/Swift/Signers/index.php b/tools/swift/classes/Swift/Signers/index.php new file mode 100644 index 000000000..9a99a8662 --- /dev/null +++ b/tools/swift/classes/Swift/Signers/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/tools/swift/classes/Swift/SmtpTransport.php b/tools/swift/classes/Swift/SmtpTransport.php new file mode 100644 index 000000000..5d4945e17 --- /dev/null +++ b/tools/swift/classes/Swift/SmtpTransport.php @@ -0,0 +1,57 @@ +createDependenciesFor('transport.smtp') + ); + + $this->setHost($host); + $this->setPort($port); + $this->setEncryption($security); + } + + /** + * Create a new SmtpTransport instance. + * + * @param string $host + * @param int $port + * @param string $security + * + * @return Swift_SmtpTransport + */ + public static function newInstance($host = 'localhost', $port = 25, $security = null) + { + return new self($host, $port, $security); + } +} diff --git a/tools/swift/classes/Swift/Spool.php b/tools/swift/classes/Swift/Spool.php new file mode 100644 index 000000000..afae5fac3 --- /dev/null +++ b/tools/swift/classes/Swift/Spool.php @@ -0,0 +1,53 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Interface for spools. + * + * @author Fabien Potencier + */ +interface Swift_Spool +{ + /** + * Starts this Spool mechanism. + */ + public function start(); + + /** + * Stops this Spool mechanism. + */ + public function stop(); + + /** + * Tests if this Spool mechanism has started. + * + * @return bool + */ + public function isStarted(); + + /** + * Queues a message. + * + * @param Swift_Mime_Message $message The message to store + * + * @return bool Whether the operation has succeeded + */ + public function queueMessage(Swift_Mime_Message $message); + + /** + * Sends messages using the given transport instance. + * + * @param Swift_Transport $transport A transport instance + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int The number of sent emails + */ + public function flushQueue(Swift_Transport $transport, &$failedRecipients = null); +} diff --git a/tools/swift/classes/Swift/SpoolTransport.php b/tools/swift/classes/Swift/SpoolTransport.php new file mode 100644 index 000000000..9351c40d3 --- /dev/null +++ b/tools/swift/classes/Swift/SpoolTransport.php @@ -0,0 +1,47 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Stores Messages in a queue. + * + * @author Fabien Potencier + */ +class Swift_SpoolTransport extends Swift_Transport_SpoolTransport +{ + /** + * Create a new SpoolTransport. + * + * @param Swift_Spool $spool + */ + public function __construct(Swift_Spool $spool) + { + $arguments = Swift_DependencyContainer::getInstance() + ->createDependenciesFor('transport.spool'); + + $arguments[] = $spool; + + call_user_func_array( + array($this, 'Swift_Transport_SpoolTransport::__construct'), + $arguments + ); + } + + /** + * Create a new SpoolTransport instance. + * + * @param Swift_Spool $spool + * + * @return Swift_SpoolTransport + */ + public static function newInstance(Swift_Spool $spool) + { + return new self($spool); + } +} diff --git a/tools/swift/classes/Swift/StreamFilter.php b/tools/swift/classes/Swift/StreamFilter.php new file mode 100644 index 000000000..1c3fd3a57 --- /dev/null +++ b/tools/swift/classes/Swift/StreamFilter.php @@ -0,0 +1,35 @@ +_search = $search; + $this->_index = array(); + $this->_tree = array(); + $this->_replace = array(); + $this->_repSize = array(); + + $tree = null; + $i = null; + $last_size = $size = 0; + foreach ($search as $i => $search_element) { + if ($tree !== null) { + $tree[-1] = min (count($replace) - 1, $i - 1); + $tree[-2] = $last_size; + } + $tree = &$this->_tree; + if (is_array ($search_element)) { + foreach ($search_element as $k => $char) { + $this->_index[$char] = true; + if (!isset($tree[$char])) { + $tree[$char] = array(); + } + $tree = &$tree[$char]; + } + $last_size = $k+1; + $size = max($size, $last_size); + } else { + $last_size = 1; + if (!isset($tree[$search_element])) { + $tree[$search_element] = array(); + } + $tree = &$tree[$search_element]; + $size = max($last_size, $size); + $this->_index[$search_element] = true; + } + } + if ($i !== null) { + $tree[-1] = min (count ($replace) - 1, $i); + $tree[-2] = $last_size; + $this->_treeMaxLen = $size; + } + foreach ($replace as $rep) { + if (!is_array($rep)) { + $rep = array ($rep); + } + $this->_replace[] = $rep; + } + for ($i = count($this->_replace) - 1; $i >= 0; --$i) { + $this->_replace[$i] = $rep = $this->filter($this->_replace[$i], $i); + $this->_repSize[$i] = count($rep); + } + } + + /** + * Returns true if based on the buffer passed more bytes should be buffered. + * + * @param array $buffer + * + * @return bool + */ + public function shouldBuffer($buffer) + { + $endOfBuffer = end($buffer); + + return isset ($this->_index[$endOfBuffer]); + } + + /** + * Perform the actual replacements on $buffer and return the result. + * + * @param array $buffer + * @param int $_minReplaces + * + * @return array + */ + public function filter($buffer, $_minReplaces = -1) + { + if ($this->_treeMaxLen == 0) { + return $buffer; + } + + $newBuffer = array(); + $buf_size = count($buffer); + for ($i = 0; $i < $buf_size; ++$i) { + $search_pos = $this->_tree; + $last_found = PHP_INT_MAX; + // We try to find if the next byte is part of a search pattern + for ($j = 0; $j <= $this->_treeMaxLen; ++$j) { + // We have a new byte for a search pattern + if (isset ($buffer [$p = $i + $j]) && isset($search_pos[$buffer[$p]])) { + $search_pos = $search_pos[$buffer[$p]]; + // We have a complete pattern, save, in case we don't find a better match later + if (isset($search_pos[- 1]) && $search_pos[-1] < $last_found + && $search_pos[-1] > $_minReplaces) { + $last_found = $search_pos[-1]; + $last_size = $search_pos[-2]; + } + } + // We got a complete pattern + elseif ($last_found !== PHP_INT_MAX) { + // Adding replacement datas to output buffer + $rep_size = $this->_repSize[$last_found]; + for ($j = 0; $j < $rep_size; ++$j) { + $newBuffer[] = $this->_replace[$last_found][$j]; + } + // We Move cursor forward + $i += $last_size - 1; + // Edge Case, last position in buffer + if ($i >= $buf_size) { + $newBuffer[] = $buffer[$i]; + } + + // We start the next loop + continue 2; + } else { + // this byte is not in a pattern and we haven't found another pattern + break; + } + } + // Normal byte, move it to output buffer + $newBuffer[] = $buffer[$i]; + } + + return $newBuffer; + } +} diff --git a/tools/swift/classes/Swift/StreamFilters/StringReplacementFilter.php b/tools/swift/classes/Swift/StreamFilters/StringReplacementFilter.php new file mode 100644 index 000000000..e6b9e7b8a --- /dev/null +++ b/tools/swift/classes/Swift/StreamFilters/StringReplacementFilter.php @@ -0,0 +1,66 @@ +_search = $search; + $this->_replace = $replace; + } + + /** + * Returns true if based on the buffer passed more bytes should be buffered. + * + * @param string $buffer + * + * @return bool + */ + public function shouldBuffer($buffer) + { + $endOfBuffer = substr($buffer, -1); + foreach ((array) $this->_search as $needle) { + if (false !== strpos($needle, $endOfBuffer)) { + return true; + } + } + + return false; + } + + /** + * Perform the actual replacements on $buffer and return the result. + * + * @param string $buffer + * + * @return string + */ + public function filter($buffer) + { + return str_replace($this->_search, $this->_replace, $buffer); + } +} diff --git a/tools/swift/classes/Swift/StreamFilters/StringReplacementFilterFactory.php b/tools/swift/classes/Swift/StreamFilters/StringReplacementFilterFactory.php new file mode 100644 index 000000000..4b12cfffd --- /dev/null +++ b/tools/swift/classes/Swift/StreamFilters/StringReplacementFilterFactory.php @@ -0,0 +1,45 @@ +_filters[$search][$replace])) { + if (!isset($this->_filters[$search])) { + $this->_filters[$search] = array(); + } + + if (!isset($this->_filters[$search][$replace])) { + $this->_filters[$search][$replace] = array(); + } + + $this->_filters[$search][$replace] = new Swift_StreamFilters_StringReplacementFilter($search, $replace); + } + + return $this->_filters[$search][$replace]; + } +} diff --git a/tools/swift/classes/Swift/StreamFilters/index.php b/tools/swift/classes/Swift/StreamFilters/index.php new file mode 100644 index 000000000..9a99a8662 --- /dev/null +++ b/tools/swift/classes/Swift/StreamFilters/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/tools/swift/classes/Swift/SwiftException.php b/tools/swift/classes/Swift/SwiftException.php new file mode 100644 index 000000000..22ee3eb40 --- /dev/null +++ b/tools/swift/classes/Swift/SwiftException.php @@ -0,0 +1,27 @@ +_eventDispatcher = $dispatcher; + $this->_buffer = $buf; + $this->_lookupHostname(); + } + + /** + * Set the name of the local domain which Swift will identify itself as. + * + * This should be a fully-qualified domain name and should be truly the domain + * you're using. + * + * If your server doesn't have a domain name, use the IP in square + * brackets (i.e. [127.0.0.1]). + * + * @param string $domain + * + * @return Swift_Transport_AbstractSmtpTransport + */ + public function setLocalDomain($domain) + { + $this->_domain = $domain; + + return $this; + } + + /** + * Get the name of the domain Swift will identify as. + * + * @return string + */ + public function getLocalDomain() + { + return $this->_domain; + } + + /** + * Sets the source IP. + * + * @param string $source + */ + public function setSourceIp($source) + { + $this->_sourceIp = $source; + } + + /** + * Returns the IP used to connect to the destination + * + * @return string + */ + public function getSourceIp() + { + return $this->_sourceIp; + } + + /** + * Start the SMTP connection. + */ + public function start() + { + if (!$this->_started) { + if ($evt = $this->_eventDispatcher->createTransportChangeEvent($this)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeTransportStarted'); + if ($evt->bubbleCancelled()) { + return; + } + } + + try { + $this->_buffer->initialize($this->_getBufferParams()); + } catch (Swift_TransportException $e) { + $this->_throwException($e); + } + $this->_readGreeting(); + $this->_doHeloCommand(); + + if ($evt) { + $this->_eventDispatcher->dispatchEvent($evt, 'transportStarted'); + } + + $this->_started = true; + } + } + + /** + * Test if an SMTP connection has been established. + * + * @return bool + */ + public function isStarted() + { + return $this->_started; + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retrieved from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $sent = 0; + $failedRecipients = (array) $failedRecipients; + + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) { + return 0; + } + } + + if (!$reversePath = $this->_getReversePath($message)) { + throw new Swift_TransportException( + 'Cannot send message without a sender address' + ); + } + + $to = (array) $message->getTo(); + $cc = (array) $message->getCc(); + $tos = array_merge($to, $cc); + $bcc = (array) $message->getBcc(); + + $message->setBcc(array()); + + try { + $sent += $this->_sendTo($message, $reversePath, $tos, $failedRecipients); + $sent += $this->_sendBcc($message, $reversePath, $bcc, $failedRecipients); + } catch (Exception $e) { + $message->setBcc($bcc); + throw $e; + } + + $message->setBcc($bcc); + + if ($evt) { + if ($sent == count($to) + count($cc) + count($bcc)) { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + } elseif ($sent > 0) { + $evt->setResult(Swift_Events_SendEvent::RESULT_TENTATIVE); + } else { + $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); + } + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); //Make sure a new Message ID is used + + return $sent; + } + + /** + * Stop the SMTP connection. + */ + public function stop() + { + if ($this->_started) { + if ($evt = $this->_eventDispatcher->createTransportChangeEvent($this)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeTransportStopped'); + if ($evt->bubbleCancelled()) { + return; + } + } + + try { + $this->executeCommand("QUIT\r\n", array(221)); + } catch (Swift_TransportException $e) { + } + + try { + $this->_buffer->terminate(); + + if ($evt) { + $this->_eventDispatcher->dispatchEvent($evt, 'transportStopped'); + } + } catch (Swift_TransportException $e) { + $this->_throwException($e); + } + } + $this->_started = false; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } + + /** + * Reset the current mail transaction. + */ + public function reset() + { + $this->executeCommand("RSET\r\n", array(250)); + } + + /** + * Get the IoBuffer where read/writes are occurring. + * + * @return Swift_Transport_IoBuffer + */ + public function getBuffer() + { + return $this->_buffer; + } + + /** + * Run a command against the buffer, expecting the given response codes. + * + * If no response codes are given, the response will not be validated. + * If codes are given, an exception will be thrown on an invalid response. + * + * @param string $command + * @param int[] $codes + * @param string[] $failures An array of failures by-reference + * + * @return string + */ + public function executeCommand($command, $codes = array(), &$failures = null) + { + $failures = (array) $failures; + $seq = $this->_buffer->write($command); + $response = $this->_getFullResponse($seq); + if ($evt = $this->_eventDispatcher->createCommandEvent($this, $command, $codes)) { + $this->_eventDispatcher->dispatchEvent($evt, 'commandSent'); + } + $this->_assertResponseCode($response, $codes); + + return $response; + } + + /** Read the opening SMTP greeting */ + protected function _readGreeting() + { + $this->_assertResponseCode($this->_getFullResponse(0), array(220)); + } + + /** Send the HELO welcome */ + protected function _doHeloCommand() + { + $this->executeCommand( + sprintf("HELO %s\r\n", $this->_domain), array(250) + ); + } + + /** Send the MAIL FROM command */ + protected function _doMailFromCommand($address) + { + $this->executeCommand( + sprintf("MAIL FROM: <%s>\r\n", $address), array(250) + ); + } + + /** Send the RCPT TO command */ + protected function _doRcptToCommand($address) + { + $this->executeCommand( + sprintf("RCPT TO: <%s>\r\n", $address), array(250, 251, 252) + ); + } + + /** Send the DATA command */ + protected function _doDataCommand() + { + $this->executeCommand("DATA\r\n", array(354)); + } + + /** Stream the contents of the message over the buffer */ + protected function _streamMessage(Swift_Mime_Message $message) + { + $this->_buffer->setWriteTranslations(array("\r\n." => "\r\n..")); + try { + $message->toByteStream($this->_buffer); + $this->_buffer->flushBuffers(); + } catch (Swift_TransportException $e) { + $this->_throwException($e); + } + $this->_buffer->setWriteTranslations(array()); + $this->executeCommand("\r\n.\r\n", array(250)); + } + + /** Determine the best-use reverse path for this message */ + protected function _getReversePath(Swift_Mime_Message $message) + { + $return = $message->getReturnPath(); + $sender = $message->getSender(); + $from = $message->getFrom(); + $path = null; + if (!empty($return)) { + $path = $return; + } elseif (!empty($sender)) { + // Don't use array_keys + reset($sender); // Reset Pointer to first pos + $path = key($sender); // Get key + } elseif (!empty($from)) { + reset($from); // Reset Pointer to first pos + $path = key($from); // Get key + } + + return $path; + } + + /** Throw a TransportException, first sending it to any listeners */ + protected function _throwException(Swift_TransportException $e) + { + if ($evt = $this->_eventDispatcher->createTransportExceptionEvent($this, $e)) { + $this->_eventDispatcher->dispatchEvent($evt, 'exceptionThrown'); + if (!$evt->bubbleCancelled()) { + throw $e; + } + } else { + throw $e; + } + } + + /** Throws an Exception if a response code is incorrect */ + protected function _assertResponseCode($response, $wanted) + { + list($code) = sscanf($response, '%3d'); + $valid = (empty($wanted) || in_array($code, $wanted)); + + if ($evt = $this->_eventDispatcher->createResponseEvent($this, $response, + $valid)) { + $this->_eventDispatcher->dispatchEvent($evt, 'responseReceived'); + } + + if (!$valid) { + $this->_throwException( + new Swift_TransportException( + 'Expected response code '.implode('/', $wanted).' but got code '. + '"'.$code.'", with message "'.$response.'"', + $code) + ); + } + } + + /** Get an entire multi-line response using its sequence number */ + protected function _getFullResponse($seq) + { + $response = ''; + try { + do { + $line = $this->_buffer->readLine($seq); + $response .= $line; + } while (null !== $line && false !== $line && ' ' != $line{3}); + } catch (Swift_TransportException $e) { + $this->_throwException($e); + } catch (Swift_IoException $e) { + $this->_throwException( + new Swift_TransportException( + $e->getMessage()) + ); + } + + return $response; + } + + /** Send an email to the given recipients from the given reverse path */ + private function _doMailTransaction($message, $reversePath, array $recipients, array &$failedRecipients) + { + $sent = 0; + $this->_doMailFromCommand($reversePath); + foreach ($recipients as $forwardPath) { + try { + $this->_doRcptToCommand($forwardPath); + $sent++; + } catch (Swift_TransportException $e) { + $failedRecipients[] = $forwardPath; + } + } + + if ($sent != 0) { + $this->_doDataCommand(); + $this->_streamMessage($message); + } else { + $this->reset(); + } + + return $sent; + } + + /** Send a message to the given To: recipients */ + private function _sendTo(Swift_Mime_Message $message, $reversePath, array $to, array &$failedRecipients) + { + if (empty($to)) { + return 0; + } + + return $this->_doMailTransaction($message, $reversePath, array_keys($to), + $failedRecipients); + } + + /** Send a message to all Bcc: recipients */ + private function _sendBcc(Swift_Mime_Message $message, $reversePath, array $bcc, array &$failedRecipients) + { + $sent = 0; + foreach ($bcc as $forwardPath => $name) { + $message->setBcc(array($forwardPath => $name)); + $sent += $this->_doMailTransaction( + $message, $reversePath, array($forwardPath), $failedRecipients + ); + } + + return $sent; + } + + /** Try to determine the hostname of the server this is run on */ + private function _lookupHostname() + { + if (!empty($_SERVER['SERVER_NAME']) + && $this->_isFqdn($_SERVER['SERVER_NAME'])) { + $this->_domain = $_SERVER['SERVER_NAME']; + } elseif (!empty($_SERVER['SERVER_ADDR'])) { + $this->_domain = sprintf('[%s]', $_SERVER['SERVER_ADDR']); + } + } + + /** Determine is the $hostname is a fully-qualified name */ + private function _isFqdn($hostname) + { + // We could do a really thorough check, but there's really no point + if (false !== $dotPos = strpos($hostname, '.')) { + return ($dotPos > 0) && ($dotPos != strlen($hostname) - 1); + } else { + return false; + } + } + + /** + * Destructor. + */ + public function __destruct() + { + $this->stop(); + } +} diff --git a/tools/swift/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php b/tools/swift/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php new file mode 100644 index 000000000..4774e0324 --- /dev/null +++ b/tools/swift/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php @@ -0,0 +1,81 @@ +executeCommand("AUTH CRAM-MD5\r\n", array(334)); + $challenge = base64_decode(substr($challenge, 4)); + $message = base64_encode( + $username.' '.$this->_getResponse($password, $challenge) + ); + $agent->executeCommand(sprintf("%s\r\n", $message), array(235)); + + return true; + } catch (Swift_TransportException $e) { + $agent->executeCommand("RSET\r\n", array(250)); + + return false; + } + } + + /** + * Generate a CRAM-MD5 response from a server challenge. + * + * @param string $secret + * @param string $challenge + * + * @return string + */ + private function _getResponse($secret, $challenge) + { + if (strlen($secret) > 64) { + $secret = pack('H32', md5($secret)); + } + + if (strlen($secret) < 64) { + $secret = str_pad($secret, 64, chr(0)); + } + + $k_ipad = substr($secret, 0, 64) ^ str_repeat(chr(0x36), 64); + $k_opad = substr($secret, 0, 64) ^ str_repeat(chr(0x5C), 64); + + $inner = pack('H32', md5($k_ipad.$challenge)); + $digest = md5($k_opad.$inner); + + return $digest; + } +} diff --git a/tools/swift/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php b/tools/swift/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php new file mode 100644 index 000000000..ebb35520b --- /dev/null +++ b/tools/swift/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php @@ -0,0 +1,51 @@ +executeCommand("AUTH LOGIN\r\n", array(334)); + $agent->executeCommand(sprintf("%s\r\n", base64_encode($username)), array(334)); + $agent->executeCommand(sprintf("%s\r\n", base64_encode($password)), array(235)); + + return true; + } catch (Swift_TransportException $e) { + $agent->executeCommand("RSET\r\n", array(250)); + + return false; + } + } +} diff --git a/tools/swift/classes/Swift/Transport/Esmtp/Auth/NTLMAuthenticator.php b/tools/swift/classes/Swift/Transport/Esmtp/Auth/NTLMAuthenticator.php new file mode 100644 index 000000000..2c02bd2c1 --- /dev/null +++ b/tools/swift/classes/Swift/Transport/Esmtp/Auth/NTLMAuthenticator.php @@ -0,0 +1,700 @@ + + */ +class Swift_Transport_Esmtp_Auth_NTLMAuthenticator implements Swift_Transport_Esmtp_Authenticator +{ + const NTLMSIG = "NTLMSSP\x00"; + const DESCONST = "KGS!@#$%"; + + /** + * Get the name of the AUTH mechanism this Authenticator handles. + * + * @return string + */ + public function getAuthKeyword() + { + return 'NTLM'; + } + + /** + * Try to authenticate the user with $username and $password. + * + * @param Swift_Transport_SmtpAgent $agent + * @param string $username + * @param string $password + * + * @return bool + */ + public function authenticate(Swift_Transport_SmtpAgent $agent, $username, $password) + { + if (!function_exists('mcrypt_module_open')) { + throw new LogicException('The mcrypt functions need to be enabled to use the NTLM authenticator.'); + } + + if (!function_exists('openssl_random_pseudo_bytes')) { + throw new LogicException('The OpenSSL extension must be enabled to use the NTLM authenticator.'); + } + + if (!function_exists('bcmul')) { + throw new LogicException('The BCMatch functions must be enabled to use the NTLM authenticator.'); + } + + try { + // execute AUTH command and filter out the code at the beginning + // AUTH NTLM xxxx + $response = base64_decode(substr(trim($this->sendMessage1($agent)), 4)); + + // extra parameters for our unit cases + $timestamp = func_num_args() > 3 ? func_get_arg(3) : $this->getCorrectTimestamp(bcmul(microtime(true), "1000")); + $client = func_num_args() > 4 ? func_get_arg(4) : $this->getRandomBytes(8); + + // Message 3 response + $this->sendMessage3($response, $username, $password, $timestamp, $client, $agent); + + return true; + } catch (Swift_TransportException $e) { + $agent->executeCommand("RSET\r\n", array(250)); + + return false; + } + } + + protected function si2bin($si, $bits = 32) + { + $bin = null; + if ($si >= -pow(2, $bits - 1) && ($si <= pow(2, $bits - 1))) { + // positive or zero + if ($si >= 0) { + $bin = base_convert($si, 10, 2); + // pad to $bits bit + $bin_length = strlen($bin); + if ($bin_length < $bits) { + $bin = str_repeat("0", $bits - $bin_length).$bin; + } + } else { + // negative + $si = -$si - pow(2, $bits); + $bin = base_convert($si, 10, 2); + $bin_length = strlen($bin); + if ($bin_length > $bits) { + $bin = str_repeat("1", $bits - $bin_length).$bin; + } + } + } + + return $bin; + } + + /** + * Send our auth message and returns the response + * + * @param Swift_Transport_SmtpAgent $agent + * @return string SMTP Response + */ + protected function sendMessage1(Swift_Transport_SmtpAgent $agent) + { + $message = $this->createMessage1(); + + return $agent->executeCommand(sprintf("AUTH %s %s\r\n", $this->getAuthKeyword(), base64_encode($message)), array(334)); + } + + /** + * Fetch all details of our response (message 2) + * + * @param string $response + * @return array our response parsed + */ + protected function parseMessage2($response) + { + $responseHex = bin2hex($response); + $length = floor(hexdec(substr($responseHex, 28, 4)) / 256) * 2; + $offset = floor(hexdec(substr($responseHex, 32, 4)) / 256) * 2; + $challenge = $this->hex2bin(substr($responseHex, 48, 16)); + $context = $this->hex2bin(substr($responseHex, 64, 16)); + $targetInfoH = $this->hex2bin(substr($responseHex, 80, 16)); + $targetName = $this->hex2bin(substr($responseHex, $offset, $length)); + $offset = floor(hexdec(substr($responseHex, 88, 4)) / 256) * 2; + $targetInfoBlock = substr($responseHex, $offset); + list($domainName, $serverName, $DNSDomainName, $DNSServerName, $terminatorByte) = $this->readSubBlock($targetInfoBlock); + + return array( + $challenge, + $context, + $targetInfoH, + $targetName, + $domainName, + $serverName, + $DNSDomainName, + $DNSServerName, + $this->hex2bin($targetInfoBlock), + $terminatorByte, + ); + } + + /** + * Read the blob information in from message2 + * + * @param $block + * @return array + */ + protected function readSubBlock($block) + { + // remove terminatorByte cause it's always the same + $block = substr($block, 0, -8); + + $length = strlen($block); + $offset = 0; + $data = array(); + while ($offset < $length) { + $blockLength = hexdec(substr(substr($block, $offset, 8), -4)) / 256; + $offset += 8; + $data[] = $this->hex2bin(substr($block, $offset, $blockLength * 2)); + $offset += $blockLength * 2; + } + + if (count($data) == 3) { + $data[] = $data[2]; + $data[2] = ''; + } + + $data[] = $this->createByte('00'); + + return $data; + } + + /** + * Send our final message with all our data + * + * @param string $response Message 1 response (message 2) + * @param string $username + * @param string $password + * @param string $timestamp + * @param string $client + * @param Swift_Transport_SmtpAgent $agent + * @param bool $v2 Use version2 of the protocol + * @return string + */ + protected function sendMessage3($response, $username, $password, $timestamp, $client, Swift_Transport_SmtpAgent $agent, $v2 = true) + { + list($domain, $username) = $this->getDomainAndUsername($username); + //$challenge, $context, $targetInfoH, $targetName, $domainName, $workstation, $DNSDomainName, $DNSServerName, $blob, $ter + list($challenge, , , , , $workstation, , , $blob) = $this->parseMessage2($response); + + if (!$v2) { + // LMv1 + $lmResponse = $this->createLMPassword($password, $challenge); + // NTLMv1 + $ntlmResponse = $this->createNTLMPassword($password, $challenge); + } else { + // LMv2 + $lmResponse = $this->createLMv2Password($password, $username, $domain, $challenge, $client); + // NTLMv2 + $ntlmResponse = $this->createNTLMv2Hash($password, $username, $domain, $challenge, $blob, $timestamp, $client); + } + + $message = $this->createMessage3($domain, $username, $workstation, $lmResponse, $ntlmResponse); + + return $agent->executeCommand(sprintf("%s\r\n", base64_encode($message)), array(235)); + } + + /** + * Create our message 1 + * + * @return string + */ + protected function createMessage1() + { + return self::NTLMSIG + .$this->createByte('01') // Message 1 +.$this->createByte('0702'); // Flags + } + + /** + * Create our message 3 + * + * @param string $domain + * @param string $username + * @param string $workstation + * @param string $lmResponse + * @param string $ntlmResponse + * @return string + */ + protected function createMessage3($domain, $username, $workstation, $lmResponse, $ntlmResponse) + { + // Create security buffers + $domainSec = $this->createSecurityBuffer($domain, 64); + $domainInfo = $this->readSecurityBuffer(bin2hex($domainSec)); + $userSec = $this->createSecurityBuffer($username, ($domainInfo[0] + $domainInfo[1]) / 2); + $userInfo = $this->readSecurityBuffer(bin2hex($userSec)); + $workSec = $this->createSecurityBuffer($workstation, ($userInfo[0] + $userInfo[1]) / 2); + $workInfo = $this->readSecurityBuffer(bin2hex($workSec)); + $lmSec = $this->createSecurityBuffer($lmResponse, ($workInfo[0] + $workInfo[1]) / 2, true); + $lmInfo = $this->readSecurityBuffer(bin2hex($lmSec)); + $ntlmSec = $this->createSecurityBuffer($ntlmResponse, ($lmInfo[0] + $lmInfo[1]) / 2, true); + + return self::NTLMSIG + .$this->createByte('03') // TYPE 3 message +.$lmSec // LM response header +.$ntlmSec // NTLM response header +.$domainSec // Domain header +.$userSec // User header +.$workSec // Workstation header +.$this->createByte("000000009a", 8) // session key header (empty) +.$this->createByte('01020000') // FLAGS +.$this->convertTo16bit($domain) // domain name +.$this->convertTo16bit($username) // username +.$this->convertTo16bit($workstation) // workstation +.$lmResponse + .$ntlmResponse; + } + + /** + * @param string $timestamp Epoch timestamp in microseconds + * @param string $client Random bytes + * @param string $targetInfo + * @return string + */ + protected function createBlob($timestamp, $client, $targetInfo) + { + return $this->createByte('0101') + .$this->createByte('00') + .$timestamp + .$client + .$this->createByte('00') + .$targetInfo + .$this->createByte('00'); + } + + /** + * Get domain and username from our username + * + * @example DOMAIN\username + * + * @param string $name + * @return array + */ + protected function getDomainAndUsername($name) + { + if (strpos($name, '\\') !== false) { + return explode('\\', $name); + } + + list($user, $domain) = explode('@', $name); + + return array($domain, $user); + } + + /** + * Create LMv1 response + * + * @param string $password + * @param string $challenge + * @return string + */ + protected function createLMPassword($password, $challenge) + { + // FIRST PART + $password = $this->createByte(strtoupper($password), 14, false); + list($key1, $key2) = str_split($password, 7); + + $desKey1 = $this->createDesKey($key1); + $desKey2 = $this->createDesKey($key2); + + $constantDecrypt = $this->createByte($this->desEncrypt(self::DESCONST, $desKey1).$this->desEncrypt(self::DESCONST, $desKey2), 21, false); + + // SECOND PART + list($key1, $key2, $key3) = str_split($constantDecrypt, 7); + + $desKey1 = $this->createDesKey($key1); + $desKey2 = $this->createDesKey($key2); + $desKey3 = $this->createDesKey($key3); + + return $this->desEncrypt($challenge, $desKey1).$this->desEncrypt($challenge, $desKey2).$this->desEncrypt($challenge, $desKey3); + } + + /** + * Create NTLMv1 response + * + * @param string $password + * @param string $challenge + * @return string + */ + protected function createNTLMPassword($password, $challenge) + { + // FIRST PART + $ntlmHash = $this->createByte($this->md4Encrypt($password), 21, false); + list($key1, $key2, $key3) = str_split($ntlmHash, 7); + + $desKey1 = $this->createDesKey($key1); + $desKey2 = $this->createDesKey($key2); + $desKey3 = $this->createDesKey($key3); + + return $this->desEncrypt($challenge, $desKey1).$this->desEncrypt($challenge, $desKey2).$this->desEncrypt($challenge, $desKey3); + } + + /** + * Convert a normal timestamp to a tenth of a microtime epoch time + * + * @param string $time + * @return string + */ + protected function getCorrectTimestamp($time) + { + // Get our timestamp (tricky!) + bcscale(0); + + $time = number_format($time, 0, '.', ''); // save microtime to string + $time = bcadd($time, "11644473600000"); // add epoch time + $time = bcmul($time, 10000); // tenths of a microsecond. + + $binary = $this->si2bin($time, 64); // create 64 bit binary string + $timestamp = ""; + for ($i = 0; $i < 8; $i++) { + $timestamp .= chr(bindec(substr($binary, -(($i + 1) * 8), 8))); + } + + return $timestamp; + } + + /** + * Create LMv2 response + * + * @param string $password + * @param string $username + * @param string $domain + * @param string $challenge NTLM Challenge + * @param string $client Random string + * @return string + */ + protected function createLMv2Password($password, $username, $domain, $challenge, $client) + { + $lmPass = '00'; // by default 00 + // if $password > 15 than we can't use this method + if (strlen($password) <= 15) { + $ntlmHash = $this->md4Encrypt($password); + $ntml2Hash = $this->md5Encrypt($ntlmHash, $this->convertTo16bit(strtoupper($username).$domain)); + + $lmPass = bin2hex($this->md5Encrypt($ntml2Hash, $challenge.$client).$client); + } + + return $this->createByte($lmPass, 24); + } + + /** + * Create NTLMv2 response + * + * @param string $password + * @param string $username + * @param string $domain + * @param string $challenge Hex values + * @param string $targetInfo Hex values + * @param string $timestamp + * @param string $client Random bytes + * @return string + * @see http://davenport.sourceforge.net/ntlm.html#theNtlmResponse + */ + protected function createNTLMv2Hash($password, $username, $domain, $challenge, $targetInfo, $timestamp, $client) + { + $ntlmHash = $this->md4Encrypt($password); + $ntml2Hash = $this->md5Encrypt($ntlmHash, $this->convertTo16bit(strtoupper($username).$domain)); + + // create blob + $blob = $this->createBlob($timestamp, $client, $targetInfo); + + $ntlmv2Response = $this->md5Encrypt($ntml2Hash, $challenge.$blob); + + return $ntlmv2Response.$blob; + } + + protected function createDesKey($key) + { + $material = array(bin2hex($key[0])); + $len = strlen($key); + for ($i = 1; $i < $len; $i++) { + list($high, $low) = str_split(bin2hex($key[$i])); + $v = $this->castToByte(ord($key[$i - 1]) << (7 + 1 - $i) | $this->uRShift(hexdec(dechex(hexdec($high) & 0xf).dechex(hexdec($low) & 0xf)), $i)); + $material[] = str_pad(substr(dechex($v), -2), 2, '0', STR_PAD_LEFT); // cast to byte + } + $material[] = str_pad(substr(dechex($this->castToByte(ord($key[6]) << 1)), -2), 2, '0'); + + // odd parity + foreach ($material as $k => $v) { + $b = $this->castToByte(hexdec($v)); + $needsParity = (($this->uRShift($b, 7) ^ $this->uRShift($b, 6) ^ $this->uRShift($b, 5) + ^ $this->uRShift($b, 4) ^ $this->uRShift($b, 3) ^ $this->uRShift($b, 2) + ^ $this->uRShift($b, 1)) & 0x01) == 0; + + list($high, $low) = str_split($v); + if ($needsParity) { + $material[$k] = dechex(hexdec($high) | 0x0).dechex(hexdec($low) | 0x1); + } else { + $material[$k] = dechex(hexdec($high) & 0xf).dechex(hexdec($low) & 0xe); + } + } + + return $this->hex2bin(implode('', $material)); + } + + /** HELPER FUNCTIONS */ + /** + * Create our security buffer depending on length and offset + * + * @param string $value Value we want to put in + * @param int $offset start of value + * @param bool $is16 Do we 16bit string or not? + * @return string + */ + protected function createSecurityBuffer($value, $offset, $is16 = false) + { + $length = strlen(bin2hex($value)); + $length = $is16 ? $length / 2 : $length; + $length = $this->createByte(str_pad(dechex($length), 2, '0', STR_PAD_LEFT), 2); + + return $length.$length.$this->createByte(dechex($offset), 4); + } + + /** + * Read our security buffer to fetch length and offset of our value + * + * @param string $value Securitybuffer in hex + * @return array array with length and offset + */ + protected function readSecurityBuffer($value) + { + $length = floor(hexdec(substr($value, 0, 4)) / 256) * 2; + $offset = floor(hexdec(substr($value, 8, 4)) / 256) * 2; + + return array($length, $offset); + } + + /** + * Cast to byte java equivalent to (byte) + * + * @param int $v + * @return int + */ + protected function castToByte($v) + { + return (($v + 128) % 256) - 128; + } + + /** + * Java unsigned right bitwise + * $a >>> $b + * + * @param int $a + * @param int $b + * @return int + */ + protected function uRShift($a, $b) + { + if ($b == 0) { + return $a; + } + + return ($a >> $b) & ~(1 << (8 * PHP_INT_SIZE - 1) >> ($b - 1)); + } + + /** + * Right padding with 0 to certain length + * + * @param string $input + * @param int $bytes Length of bytes + * @param bool $isHex Did we provided hex value + * @return string + */ + protected function createByte($input, $bytes = 4, $isHex = true) + { + if ($isHex) { + $byte = $this->hex2bin(str_pad($input, $bytes * 2, '00')); + } else { + $byte = str_pad($input, $bytes, "\x00"); + } + + return $byte; + } + + /** + * Create random bytes + * + * @param $length + * @return string + */ + protected function getRandomBytes($length) + { + $bytes = openssl_random_pseudo_bytes($length, $strong); + + if (false !== $bytes && true === $strong) { + return $bytes; + } + + throw new RuntimeException('OpenSSL did not produce a secure random number.'); + } + + /** ENCRYPTION ALGORITHMS */ + /** + * DES Encryption + * + * @param string $value + * @param string $key + * @return string + */ + protected function desEncrypt($value, $key) + { + $cipher = mcrypt_module_open(MCRYPT_DES, '', 'ecb', ''); + mcrypt_generic_init($cipher, $key, mcrypt_create_iv(mcrypt_enc_get_iv_size($cipher), MCRYPT_DEV_RANDOM)); + + return mcrypt_generic($cipher, $value); + } + + /** + * MD5 Encryption + * + * @param string $key Encryption key + * @param string $msg Message to encrypt + * @return string + */ + protected function md5Encrypt($key, $msg) + { + $blocksize = 64; + if (strlen($key) > $blocksize) { + $key = pack('H*', md5($key)); + } + + $key = str_pad($key, $blocksize, "\0"); + $ipadk = $key ^ str_repeat("\x36", $blocksize); + $opadk = $key ^ str_repeat("\x5c", $blocksize); + + return pack('H*', md5($opadk.pack('H*', md5($ipadk.$msg)))); + } + + /** + * MD4 Encryption + * + * @param string $input + * @return string + * @see http://php.net/manual/en/ref.hash.php + */ + protected function md4Encrypt($input) + { + $input = $this->convertTo16bit($input); + + return function_exists('hash') ? $this->hex2bin(hash('md4', $input)) : mhash(MHASH_MD4, $input); + } + + /** + * Convert UTF-8 to UTF-16 + * + * @param string $input + * @return string + */ + protected function convertTo16bit($input) + { + return iconv('UTF-8', 'UTF-16LE', $input); + } + + /** + * Hex2bin replacement for < PHP 5.4 + * @param string $hex + * @return string Binary + */ + protected function hex2bin($hex) + { + if (function_exists('hex2bin')) { + return hex2bin($hex); + } else { + return pack('H*', $hex); + } + } + + /** + * @param string $message + */ + protected function debug($message) + { + $message = bin2hex($message); + $messageId = substr($message, 16, 8); + echo substr($message, 0, 16)." NTLMSSP Signature
    \n"; + echo $messageId." Type Indicator
    \n"; + + if ($messageId == "02000000") { + $map = array( + 'Challenge', + 'Context', + 'Target Information Security Buffer', + 'Target Name Data', + 'NetBIOS Domain Name', + 'NetBIOS Server Name', + 'DNS Domain Name', + 'DNS Server Name', + 'BLOB', + 'Target Information Terminator', + ); + + $data = $this->parseMessage2($this->hex2bin($message)); + + foreach ($map as $key => $value) { + echo bin2hex($data[$key]).' - '.$data[$key].' ||| '.$value."
    \n"; + } + } elseif ($messageId == "03000000") { + $i = 0; + $data[$i++] = substr($message, 24, 16); + list($lmLength, $lmOffset) = $this->readSecurityBuffer($data[$i - 1]); + + $data[$i++] = substr($message, 40, 16); + list($ntmlLength, $ntmlOffset) = $this->readSecurityBuffer($data[$i - 1]); + + $data[$i++] = substr($message, 56, 16); + list($targetLength, $targetOffset) = $this->readSecurityBuffer($data[$i - 1]); + + $data[$i++] = substr($message, 72, 16); + list($userLength, $userOffset) = $this->readSecurityBuffer($data[$i - 1]); + + $data[$i++] = substr($message, 88, 16); + list($workLength, $workOffset) = $this->readSecurityBuffer($data[$i - 1]); + + $data[$i++] = substr($message, 104, 16); + $data[$i++] = substr($message, 120, 8); + $data[$i++] = substr($message, $targetOffset, $targetLength); + $data[$i++] = substr($message, $userOffset, $userLength); + $data[$i++] = substr($message, $workOffset, $workLength); + $data[$i++] = substr($message, $lmOffset, $lmLength); + $data[$i] = substr($message, $ntmlOffset, $ntmlLength); + + $map = array( + 'LM Response Security Buffer', + 'NTLM Response Security Buffer', + 'Target Name Security Buffer', + 'User Name Security Buffer', + 'Workstation Name Security Buffer', + 'Session Key Security Buffer', + 'Flags', + 'Target Name Data', + 'User Name Data', + 'Workstation Name Data', + 'LM Response Data', + 'NTLM Response Data', + ); + + foreach ($map as $key => $value) { + echo $data[$key].' - '.$this->hex2bin($data[$key]).' ||| '.$value."
    \n"; + } + } + + echo "

    "; + } +} diff --git a/tools/swift/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php b/tools/swift/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php new file mode 100644 index 000000000..98f6d1816 --- /dev/null +++ b/tools/swift/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php @@ -0,0 +1,50 @@ +executeCommand(sprintf("AUTH PLAIN %s\r\n", $message), array(235)); + + return true; + } catch (Swift_TransportException $e) { + $agent->executeCommand("RSET\r\n", array(250)); + + return false; + } + } +} diff --git a/tools/swift/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php b/tools/swift/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php new file mode 100644 index 000000000..80c00b987 --- /dev/null +++ b/tools/swift/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php @@ -0,0 +1,69 @@ + + * $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls') + * ->setAuthMode('XOAUTH2') + * ->setUsername('YOUR_EMAIL_ADDRESS') + * ->setPassword('YOUR_ACCESS_TOKEN'); + * + * + * @author xu.li + * @see https://developers.google.com/google-apps/gmail/xoauth2_protocol + */ +class Swift_Transport_Esmtp_Auth_XOAuth2Authenticator implements Swift_Transport_Esmtp_Authenticator +{ + /** + * Get the name of the AUTH mechanism this Authenticator handles. + * + * @return string + */ + public function getAuthKeyword() + { + return 'XOAUTH2'; + } + + /** + * Try to authenticate the user with $email and $token. + * + * @param Swift_Transport_SmtpAgent $agent + * @param string $email + * @param string $token + * + * @return bool + */ + public function authenticate(Swift_Transport_SmtpAgent $agent, $email, $token) + { + try { + $param = $this->constructXOAuth2Params($email, $token); + $agent->executeCommand("AUTH XOAUTH2 ".$param."\r\n", array(235)); + + return true; + } catch (Swift_TransportException $e) { + $agent->executeCommand("RSET\r\n", array(250)); + + return false; + } + } + + /** + * Construct the auth parameter + * + * @see https://developers.google.com/google-apps/gmail/xoauth2_protocol#the_sasl_xoauth2_mechanism + */ + protected function constructXOAuth2Params($email, $token) + { + return base64_encode("user=$email\1auth=Bearer $token\1\1"); + } +} diff --git a/tools/swift/classes/Swift/Transport/Esmtp/Auth/index.php b/tools/swift/classes/Swift/Transport/Esmtp/Auth/index.php new file mode 100644 index 000000000..9a99a8662 --- /dev/null +++ b/tools/swift/classes/Swift/Transport/Esmtp/Auth/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/tools/swift/classes/Swift/Transport/Esmtp/AuthHandler.php b/tools/swift/classes/Swift/Transport/Esmtp/AuthHandler.php new file mode 100644 index 000000000..6b83194c9 --- /dev/null +++ b/tools/swift/classes/Swift/Transport/Esmtp/AuthHandler.php @@ -0,0 +1,263 @@ +setAuthenticators($authenticators); + } + + /** + * Set the Authenticators which can process a login request. + * + * @param Swift_Transport_Esmtp_Authenticator[] $authenticators + */ + public function setAuthenticators(array $authenticators) + { + $this->_authenticators = $authenticators; + } + + /** + * Get the Authenticators which can process a login request. + * + * @return Swift_Transport_Esmtp_Authenticator[] + */ + public function getAuthenticators() + { + return $this->_authenticators; + } + + /** + * Set the username to authenticate with. + * + * @param string $username + */ + public function setUsername($username) + { + $this->_username = $username; + } + + /** + * Get the username to authenticate with. + * + * @return string + */ + public function getUsername() + { + return $this->_username; + } + + /** + * Set the password to authenticate with. + * + * @param string $password + */ + public function setPassword($password) + { + $this->_password = $password; + } + + /** + * Get the password to authenticate with. + * + * @return string + */ + public function getPassword() + { + return $this->_password; + } + + /** + * Set the auth mode to use to authenticate. + * + * @param string $mode + */ + public function setAuthMode($mode) + { + $this->_auth_mode = $mode; + } + + /** + * Get the auth mode to use to authenticate. + * + * @return string + */ + public function getAuthMode() + { + return $this->_auth_mode; + } + + /** + * Get the name of the ESMTP extension this handles. + * + * @return bool + */ + public function getHandledKeyword() + { + return 'AUTH'; + } + + /** + * Set the parameters which the EHLO greeting indicated. + * + * @param string[] $parameters + */ + public function setKeywordParams(array $parameters) + { + $this->_esmtpParams = $parameters; + } + + /** + * Runs immediately after a EHLO has been issued. + * + * @param Swift_Transport_SmtpAgent $agent to read/write + */ + public function afterEhlo(Swift_Transport_SmtpAgent $agent) + { + if ($this->_username) { + $count = 0; + foreach ($this->_getAuthenticatorsForAgent() as $authenticator) { + if (in_array(strtolower($authenticator->getAuthKeyword()), + array_map('strtolower', $this->_esmtpParams))) { + $count++; + if ($authenticator->authenticate($agent, $this->_username, $this->_password)) { + return; + } + } + } + throw new Swift_TransportException( + 'Failed to authenticate on SMTP server with username "'. + $this->_username.'" using '.$count.' possible authenticators' + ); + } + } + + /** + * Not used. + */ + public function getMailParams() + { + return array(); + } + + /** + * Not used. + */ + public function getRcptParams() + { + return array(); + } + + /** + * Not used. + */ + public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = array(), &$failedRecipients = null, &$stop = false) + { + } + + /** + * Returns +1, -1 or 0 according to the rules for usort(). + * + * This method is called to ensure extensions can be execute in an appropriate order. + * + * @param string $esmtpKeyword to compare with + * + * @return int + */ + public function getPriorityOver($esmtpKeyword) + { + return 0; + } + + /** + * Returns an array of method names which are exposed to the Esmtp class. + * + * @return string[] + */ + public function exposeMixinMethods() + { + return array('setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode'); + } + + /** + * Not used. + */ + public function resetState() + { + } + + /** + * Returns the authenticator list for the given agent. + * + * @param Swift_Transport_SmtpAgent $agent + * + * @return array + */ + protected function _getAuthenticatorsForAgent() + { + if (!$mode = strtolower($this->_auth_mode)) { + return $this->_authenticators; + } + + foreach ($this->_authenticators as $authenticator) { + if (strtolower($authenticator->getAuthKeyword()) == $mode) { + return array($authenticator); + } + } + + throw new Swift_TransportException('Auth mode '.$mode.' is invalid'); + } +} diff --git a/tools/swift/classes/Swift/Transport/Esmtp/Authenticator.php b/tools/swift/classes/Swift/Transport/Esmtp/Authenticator.php new file mode 100644 index 000000000..9078003a9 --- /dev/null +++ b/tools/swift/classes/Swift/Transport/Esmtp/Authenticator.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/tools/swift/classes/Swift/Transport/EsmtpHandler.php b/tools/swift/classes/Swift/Transport/EsmtpHandler.php new file mode 100644 index 000000000..cb76eddf8 --- /dev/null +++ b/tools/swift/classes/Swift/Transport/EsmtpHandler.php @@ -0,0 +1,86 @@ +. + * + * @return string[] + */ + public function getMailParams(); + + /** + * Get params which are appended to RCPT TO:<>. + * + * @return string[] + */ + public function getRcptParams(); + + /** + * Runs when a command is due to be sent. + * + * @param Swift_Transport_SmtpAgent $agent to read/write + * @param string $command to send + * @param int[] $codes expected in response + * @param string[] $failedRecipients to collect failures + * @param bool $stop to be set true by-reference if the command is now sent + */ + public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = array(), &$failedRecipients = null, &$stop = false); + + /** + * Returns +1, -1 or 0 according to the rules for usort(). + * + * This method is called to ensure extensions can be execute in an appropriate order. + * + * @param string $esmtpKeyword to compare with + * + * @return int + */ + public function getPriorityOver($esmtpKeyword); + + /** + * Returns an array of method names which are exposed to the Esmtp class. + * + * @return string[] + */ + public function exposeMixinMethods(); + + /** + * Tells this handler to clear any buffers and reset its state. + */ + public function resetState(); +} diff --git a/tools/swift/classes/Swift/Transport/EsmtpTransport.php b/tools/swift/classes/Swift/Transport/EsmtpTransport.php new file mode 100644 index 000000000..e860a8ef3 --- /dev/null +++ b/tools/swift/classes/Swift/Transport/EsmtpTransport.php @@ -0,0 +1,386 @@ + 'tcp', + 'host' => 'localhost', + 'port' => 25, + 'timeout' => 30, + 'blocking' => 1, + 'tls' => false, + 'type' => Swift_Transport_IoBuffer::TYPE_SOCKET, + ); + + /** + * Creates a new EsmtpTransport using the given I/O buffer. + * + * @param Swift_Transport_IoBuffer $buf + * @param Swift_Transport_EsmtpHandler[] $extensionHandlers + * @param Swift_Events_EventDispatcher $dispatcher + */ + public function __construct(Swift_Transport_IoBuffer $buf, array $extensionHandlers, Swift_Events_EventDispatcher $dispatcher) + { + parent::__construct($buf, $dispatcher); + $this->setExtensionHandlers($extensionHandlers); + } + + /** + * Set the host to connect to. + * + * @param string $host + * + * @return Swift_Transport_EsmtpTransport + */ + public function setHost($host) + { + $this->_params['host'] = $host; + + return $this; + } + + /** + * Get the host to connect to. + * + * @return string + */ + public function getHost() + { + return $this->_params['host']; + } + + /** + * Set the port to connect to. + * + * @param int $port + * + * @return Swift_Transport_EsmtpTransport + */ + public function setPort($port) + { + $this->_params['port'] = (int) $port; + + return $this; + } + + /** + * Get the port to connect to. + * + * @return int + */ + public function getPort() + { + return $this->_params['port']; + } + + /** + * Set the connection timeout. + * + * @param int $timeout seconds + * + * @return Swift_Transport_EsmtpTransport + */ + public function setTimeout($timeout) + { + $this->_params['timeout'] = (int) $timeout; + $this->_buffer->setParam('timeout', (int) $timeout); + + return $this; + } + + /** + * Get the connection timeout. + * + * @return int + */ + public function getTimeout() + { + return $this->_params['timeout']; + } + + /** + * Set the encryption type (tls or ssl) + * + * @param string $encryption + * + * @return Swift_Transport_EsmtpTransport + */ + public function setEncryption($encryption) + { + if ('tls' == $encryption) { + $this->_params['protocol'] = 'tcp'; + $this->_params['tls'] = true; + } else { + $this->_params['protocol'] = $encryption; + $this->_params['tls'] = false; + } + + return $this; + } + + /** + * Get the encryption type. + * + * @return string + */ + public function getEncryption() + { + return $this->_params['tls'] ? 'tls' : $this->_params['protocol']; + } + + /** + * Sets the source IP. + * + * @param string $source + * + * @return Swift_Transport_EsmtpTransport + */ + public function setSourceIp($source) + { + $this->_params['sourceIp'] = $source; + + return $this; + } + + /** + * Returns the IP used to connect to the destination. + * + * @return string + */ + public function getSourceIp() + { + return $this->_params['sourceIp']; + } + + /** + * Set ESMTP extension handlers. + * + * @param Swift_Transport_EsmtpHandler[] $handlers + * + * @return Swift_Transport_EsmtpTransport + */ + public function setExtensionHandlers(array $handlers) + { + $assoc = array(); + foreach ($handlers as $handler) { + $assoc[$handler->getHandledKeyword()] = $handler; + } + uasort($assoc, array($this, '_sortHandlers')); + $this->_handlers = $assoc; + $this->_setHandlerParams(); + + return $this; + } + + /** + * Get ESMTP extension handlers. + * + * @return Swift_Transport_EsmtpHandler[] + */ + public function getExtensionHandlers() + { + return array_values($this->_handlers); + } + + /** + * Run a command against the buffer, expecting the given response codes. + * + * If no response codes are given, the response will not be validated. + * If codes are given, an exception will be thrown on an invalid response. + * + * @param string $command + * @param int[] $codes + * @param string[] $failures An array of failures by-reference + * + * @return string + */ + public function executeCommand($command, $codes = array(), &$failures = null) + { + $failures = (array) $failures; + $stopSignal = false; + $response = null; + foreach ($this->_getActiveHandlers() as $handler) { + $response = $handler->onCommand( + $this, $command, $codes, $failures, $stopSignal + ); + if ($stopSignal) { + return $response; + } + } + + return parent::executeCommand($command, $codes, $failures); + } + + // -- Mixin invocation code + + /** Mixin handling method for ESMTP handlers */ + public function __call($method, $args) + { + foreach ($this->_handlers as $handler) { + if (in_array(strtolower($method), + array_map('strtolower', (array) $handler->exposeMixinMethods()) + )) { + $return = call_user_func_array(array($handler, $method), $args); + // Allow fluid method calls + if (is_null($return) && substr($method, 0, 3) == 'set') { + return $this; + } else { + return $return; + } + } + } + trigger_error('Call to undefined method '.$method, E_USER_ERROR); + } + + /** Get the params to initialize the buffer */ + protected function _getBufferParams() + { + return $this->_params; + } + + /** Overridden to perform EHLO instead */ + protected function _doHeloCommand() + { + try { + $response = $this->executeCommand( + sprintf("EHLO %s\r\n", $this->_domain), array(250) + ); + } catch (Swift_TransportException $e) { + return parent::_doHeloCommand(); + } + + if ($this->_params['tls']) { + try { + $this->executeCommand("STARTTLS\r\n", array(220)); + + if (!$this->_buffer->startTLS()) { + throw new Swift_TransportException('Unable to connect with TLS encryption'); + } + + try { + $response = $this->executeCommand( + sprintf("EHLO %s\r\n", $this->_domain), array(250) + ); + } catch (Swift_TransportException $e) { + return parent::_doHeloCommand(); + } + } catch (Swift_TransportException $e) { + $this->_throwException($e); + } + } + + $this->_capabilities = $this->_getCapabilities($response); + $this->_setHandlerParams(); + foreach ($this->_getActiveHandlers() as $handler) { + $handler->afterEhlo($this); + } + } + + /** Overridden to add Extension support */ + protected function _doMailFromCommand($address) + { + $handlers = $this->_getActiveHandlers(); + $params = array(); + foreach ($handlers as $handler) { + $params = array_merge($params, (array) $handler->getMailParams()); + } + $paramStr = !empty($params) ? ' '.implode(' ', $params) : ''; + $this->executeCommand( + sprintf("MAIL FROM: <%s>%s\r\n", $address, $paramStr), array(250) + ); + } + + /** Overridden to add Extension support */ + protected function _doRcptToCommand($address) + { + $handlers = $this->_getActiveHandlers(); + $params = array(); + foreach ($handlers as $handler) { + $params = array_merge($params, (array) $handler->getRcptParams()); + } + $paramStr = !empty($params) ? ' '.implode(' ', $params) : ''; + $this->executeCommand( + sprintf("RCPT TO: <%s>%s\r\n", $address, $paramStr), array(250, 251, 252) + ); + } + + /** Determine ESMTP capabilities by function group */ + private function _getCapabilities($ehloResponse) + { + $capabilities = array(); + $ehloResponse = trim($ehloResponse); + $lines = explode("\r\n", $ehloResponse); + array_shift($lines); + foreach ($lines as $line) { + if (preg_match('/^[0-9]{3}[ -]([A-Z0-9-]+)((?:[ =].*)?)$/Di', $line, $matches)) { + $keyword = strtoupper($matches[1]); + $paramStr = strtoupper(ltrim($matches[2], ' =')); + $params = !empty($paramStr) ? explode(' ', $paramStr) : array(); + $capabilities[$keyword] = $params; + } + } + + return $capabilities; + } + + /** Set parameters which are used by each extension handler */ + private function _setHandlerParams() + { + foreach ($this->_handlers as $keyword => $handler) { + if (array_key_exists($keyword, $this->_capabilities)) { + $handler->setKeywordParams($this->_capabilities[$keyword]); + } + } + } + + /** Get ESMTP handlers which are currently ok to use */ + private function _getActiveHandlers() + { + $handlers = array(); + foreach ($this->_handlers as $keyword => $handler) { + if (array_key_exists($keyword, $this->_capabilities)) { + $handlers[] = $handler; + } + } + + return $handlers; + } + + /** Custom sort for extension handler ordering */ + private function _sortHandlers($a, $b) + { + return $a->getPriorityOver($b->getHandledKeyword()); + } +} diff --git a/tools/swift/classes/Swift/Transport/FailoverTransport.php b/tools/swift/classes/Swift/Transport/FailoverTransport.php new file mode 100644 index 000000000..eafde009b --- /dev/null +++ b/tools/swift/classes/Swift/Transport/FailoverTransport.php @@ -0,0 +1,85 @@ +_transports); + $sent = 0; + + for ($i = 0; $i < $maxTransports + && $transport = $this->_getNextTransport(); ++$i) { + try { + if (!$transport->isStarted()) { + $transport->start(); + } + + return $transport->send($message, $failedRecipients); + } catch (Swift_TransportException $e) { + $this->_killCurrentTransport(); + } + } + + if (count($this->_transports) == 0) { + throw new Swift_TransportException( + 'All Transports in FailoverTransport failed, or no Transports available' + ); + } + + return $sent; + } + + protected function _getNextTransport() + { + if (!isset($this->_currentTransport)) { + $this->_currentTransport = parent::_getNextTransport(); + } + + return $this->_currentTransport; + } + + protected function _killCurrentTransport() + { + $this->_currentTransport = null; + parent::_killCurrentTransport(); + } +} diff --git a/tools/swift/classes/Swift/Transport/IoBuffer.php b/tools/swift/classes/Swift/Transport/IoBuffer.php new file mode 100644 index 000000000..71b3f1e5d --- /dev/null +++ b/tools/swift/classes/Swift/Transport/IoBuffer.php @@ -0,0 +1,67 @@ +_transports = $transports; + $this->_deadTransports = array(); + } + + /** + * Get $transports to delegate to. + * + * @return Swift_Transport[] + */ + public function getTransports() + { + return array_merge($this->_transports, $this->_deadTransports); + } + + /** + * Test if this Transport mechanism has started. + * + * @return bool + */ + public function isStarted() + { + return count($this->_transports) > 0; + } + + /** + * Start this Transport mechanism. + */ + public function start() + { + $this->_transports = array_merge($this->_transports, $this->_deadTransports); + } + + /** + * Stop this Transport mechanism. + */ + public function stop() + { + foreach ($this->_transports as $transport) { + $transport->stop(); + } + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retrieved from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $maxTransports = count($this->_transports); + $sent = 0; + + for ($i = 0; $i < $maxTransports + && $transport = $this->_getNextTransport(); ++$i) { + try { + if (!$transport->isStarted()) { + $transport->start(); + } + if ($sent = $transport->send($message, $failedRecipients)) { + break; + } + } catch (Swift_TransportException $e) { + $this->_killCurrentTransport(); + } + } + + if (count($this->_transports) == 0) { + throw new Swift_TransportException( + 'All Transports in LoadBalancedTransport failed, or no Transports available' + ); + } + + return $sent; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + foreach ($this->_transports as $transport) { + $transport->registerPlugin($plugin); + } + } + + /** + * Rotates the transport list around and returns the first instance. + * + * @return Swift_Transport + */ + protected function _getNextTransport() + { + if ($next = array_shift($this->_transports)) { + $this->_transports[] = $next; + } + + return $next; + } + + /** + * Tag the currently used (top of stack) transport as dead/useless. + */ + protected function _killCurrentTransport() + { + if ($transport = array_pop($this->_transports)) { + try { + $transport->stop(); + } catch (Exception $e) { + } + $this->_deadTransports[] = $transport; + } + } +} diff --git a/tools/swift/classes/Swift/Transport/MailInvoker.php b/tools/swift/classes/Swift/Transport/MailInvoker.php new file mode 100644 index 000000000..77489cedc --- /dev/null +++ b/tools/swift/classes/Swift/Transport/MailInvoker.php @@ -0,0 +1,32 @@ +_invoker = $invoker; + $this->_eventDispatcher = $eventDispatcher; + } + + /** + * Not used. + */ + public function isStarted() + { + return false; + } + + /** + * Not used. + */ + public function start() + { + } + + /** + * Not used. + */ + public function stop() + { + } + + /** + * Set the additional parameters used on the mail() function. + * + * This string is formatted for sprintf() where %s is the sender address. + * + * @param string $params + * + * @return Swift_Transport_MailTransport + */ + public function setExtraParams($params) + { + $this->_extraParams = $params; + + return $this; + } + + /** + * Get the additional parameters used on the mail() function. + * + * This string is formatted for sprintf() where %s is the sender address. + * + * @return string + */ + public function getExtraParams() + { + return $this->_extraParams; + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retrieved from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) { + return 0; + } + } + + $count = ( + count((array) $message->getTo()) + + count((array) $message->getCc()) + + count((array) $message->getBcc()) + ); + + $toHeader = $message->getHeaders()->get('To'); + $subjectHeader = $message->getHeaders()->get('Subject'); + + if (!$toHeader) { + throw new Swift_TransportException( + 'Cannot send message without a recipient' + ); + } + $to = $toHeader->getFieldBody(); + $subject = $subjectHeader ? $subjectHeader->getFieldBody() : ''; + + $reversePath = $this->_getReversePath($message); + + // Remove headers that would otherwise be duplicated + $message->getHeaders()->remove('To'); + $message->getHeaders()->remove('Subject'); + + $messageStr = $message->toString(); + + $message->getHeaders()->set($toHeader); + $message->getHeaders()->set($subjectHeader); + + // Separate headers from body + if (false !== $endHeaders = strpos($messageStr, "\r\n\r\n")) { + $headers = substr($messageStr, 0, $endHeaders)."\r\n"; //Keep last EOL + $body = substr($messageStr, $endHeaders + 4); + } else { + $headers = $messageStr."\r\n"; + $body = ''; + } + + unset($messageStr); + + if ("\r\n" != PHP_EOL) { + // Non-windows (not using SMTP) + $headers = str_replace("\r\n", PHP_EOL, $headers); + $body = str_replace("\r\n", PHP_EOL, $body); + } else { + // Windows, using SMTP + $headers = str_replace("\r\n.", "\r\n..", $headers); + $body = str_replace("\r\n.", "\r\n..", $body); + } + + if ($this->_invoker->mail($to, $subject, $body, $headers, + sprintf($this->_extraParams, $reversePath))) { + if ($evt) { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + } else { + $failedRecipients = array_merge( + $failedRecipients, + array_keys((array) $message->getTo()), + array_keys((array) $message->getCc()), + array_keys((array) $message->getBcc()) + ); + + if ($evt) { + $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); + + $count = 0; + } + + return $count; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } + + /** Determine the best-use reverse path for this message */ + private function _getReversePath(Swift_Mime_Message $message) + { + $return = $message->getReturnPath(); + $sender = $message->getSender(); + $from = $message->getFrom(); + $path = null; + if (!empty($return)) { + $path = $return; + } elseif (!empty($sender)) { + $keys = array_keys($sender); + $path = array_shift($keys); + } elseif (!empty($from)) { + $keys = array_keys($from); + $path = array_shift($keys); + } + + return $path; + } +} diff --git a/tools/swift/classes/Swift/Transport/NullTransport.php b/tools/swift/classes/Swift/Transport/NullTransport.php new file mode 100644 index 000000000..f87cfbf3e --- /dev/null +++ b/tools/swift/classes/Swift/Transport/NullTransport.php @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Pretends messages have been sent, but just ignores them. + * + * @author Fabien Potencier + */ +class Swift_Transport_NullTransport implements Swift_Transport +{ + /** The event dispatcher from the plugin API */ + private $_eventDispatcher; + + /** + * Constructor. + */ + public function __construct(Swift_Events_EventDispatcher $eventDispatcher) + { + $this->_eventDispatcher = $eventDispatcher; + } + + /** + * Tests if this Transport mechanism has started. + * + * @return bool + */ + public function isStarted() + { + return true; + } + + /** + * Starts this Transport mechanism. + */ + public function start() + { + } + + /** + * Stops this Transport mechanism. + */ + public function stop() + { + } + + /** + * Sends the given message. + * + * @param Swift_Mime_Message $message + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int The number of sent emails + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) { + return 0; + } + } + + if ($evt) { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $count = ( + count((array) $message->getTo()) + + count((array) $message->getCc()) + + count((array) $message->getBcc()) + ); + + return $count; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } +} diff --git a/tools/swift/classes/Swift/Transport/SendmailTransport.php b/tools/swift/classes/Swift/Transport/SendmailTransport.php new file mode 100644 index 000000000..c508cb135 --- /dev/null +++ b/tools/swift/classes/Swift/Transport/SendmailTransport.php @@ -0,0 +1,159 @@ + 30, + 'blocking' => 1, + 'command' => '/usr/sbin/sendmail -bs', + 'type' => Swift_Transport_IoBuffer::TYPE_PROCESS, + ); + + /** + * Create a new SendmailTransport with $buf for I/O. + * + * @param Swift_Transport_IoBuffer $buf + * @param Swift_Events_EventDispatcher $dispatcher + */ + public function __construct(Swift_Transport_IoBuffer $buf, Swift_Events_EventDispatcher $dispatcher) + { + parent::__construct($buf, $dispatcher); + } + + /** + * Start the standalone SMTP session if running in -bs mode. + */ + public function start() + { + if (false !== strpos($this->getCommand(), ' -bs')) { + parent::start(); + } + } + + /** + * Set the command to invoke. + * + * If using -t mode you are strongly advised to include -oi or -i in the flags. + * For example: /usr/sbin/sendmail -oi -t + * Swift will append a -f flag if one is not present. + * + * The recommended mode is "-bs" since it is interactive and failure notifications + * are hence possible. + * + * @param string $command + * + * @return Swift_Transport_SendmailTransport + */ + public function setCommand($command) + { + $this->_params['command'] = $command; + + return $this; + } + + /** + * Get the sendmail command which will be invoked. + * + * @return string + */ + public function getCommand() + { + return $this->_params['command']; + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retrieved from the Message API. + * + * The return value is the number of recipients who were accepted for delivery. + * NOTE: If using 'sendmail -t' you will not be aware of any failures until + * they bounce (i.e. send() will always return 100% success). + * + * @param Swift_Mime_Message $message + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + $command = $this->getCommand(); + $buffer = $this->getBuffer(); + + if (false !== strpos($command, ' -t')) { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) { + return 0; + } + } + + if (false === strpos($command, ' -f')) { + $command .= ' -f'.escapeshellarg($this->_getReversePath($message)); + } + + $buffer->initialize(array_merge($this->_params, array('command' => $command))); + + if (false === strpos($command, ' -i') && false === strpos($command, ' -oi')) { + $buffer->setWriteTranslations(array("\r\n" => "\n", "\n." => "\n..")); + } else { + $buffer->setWriteTranslations(array("\r\n" => "\n")); + } + + $count = count((array) $message->getTo()) + + count((array) $message->getCc()) + + count((array) $message->getBcc()) + ; + $message->toByteStream($buffer); + $buffer->flushBuffers(); + $buffer->setWriteTranslations(array()); + $buffer->terminate(); + + if ($evt) { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); + } elseif (false !== strpos($command, ' -bs')) { + $count = parent::send($message, $failedRecipients); + } else { + $this->_throwException(new Swift_TransportException( + 'Unsupported sendmail command flags ['.$command.']. '. + 'Must be one of "-bs" or "-t" but can include additional flags.' + )); + } + + return $count; + } + + /** Get the params to initialize the buffer */ + protected function _getBufferParams() + { + return $this->_params; + } +} diff --git a/tools/swift/classes/Swift/Transport/SimpleMailInvoker.php b/tools/swift/classes/Swift/Transport/SimpleMailInvoker.php new file mode 100644 index 000000000..21e629a64 --- /dev/null +++ b/tools/swift/classes/Swift/Transport/SimpleMailInvoker.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Stores Messages in a queue. + * + * @author Fabien Potencier + */ +class Swift_Transport_SpoolTransport implements Swift_Transport +{ + /** The spool instance */ + private $_spool; + + /** The event dispatcher from the plugin API */ + private $_eventDispatcher; + + /** + * Constructor. + */ + public function __construct(Swift_Events_EventDispatcher $eventDispatcher, Swift_Spool $spool = null) + { + $this->_eventDispatcher = $eventDispatcher; + $this->_spool = $spool; + } + + /** + * Sets the spool object. + * + * @param Swift_Spool $spool + * + * @return Swift_Transport_SpoolTransport + */ + public function setSpool(Swift_Spool $spool) + { + $this->_spool = $spool; + + return $this; + } + + /** + * Get the spool object. + * + * @return Swift_Spool + */ + public function getSpool() + { + return $this->_spool; + } + + /** + * Tests if this Transport mechanism has started. + * + * @return bool + */ + public function isStarted() + { + return true; + } + + /** + * Starts this Transport mechanism. + */ + public function start() + { + } + + /** + * Stops this Transport mechanism. + */ + public function stop() + { + } + + /** + * Sends the given message. + * + * @param Swift_Mime_Message $message + * @param string[] $failedRecipients An array of failures by-reference + * + * @return int The number of sent e-mail's + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) { + return 0; + } + } + + $success = $this->_spool->queueMessage($message); + + if ($evt) { + $evt->setResult($success ? Swift_Events_SendEvent::RESULT_SUCCESS : Swift_Events_SendEvent::RESULT_FAILED); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + return 1; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } +} diff --git a/tools/swift/classes/Swift/Transport/StreamBuffer.php b/tools/swift/classes/Swift/Transport/StreamBuffer.php new file mode 100644 index 000000000..53e2ffa8d --- /dev/null +++ b/tools/swift/classes/Swift/Transport/StreamBuffer.php @@ -0,0 +1,321 @@ +_replacementFactory = $replacementFactory; + } + + /** + * Perform any initialization needed, using the given $params. + * + * Parameters will vary depending upon the type of IoBuffer used. + * + * @param array $params + */ + public function initialize(array $params) + { + $this->_params = $params; + switch ($params['type']) { + case self::TYPE_PROCESS: + $this->_establishProcessConnection(); + break; + case self::TYPE_SOCKET: + default: + $this->_establishSocketConnection(); + break; + } + } + + /** + * Set an individual param on the buffer (e.g. switching to SSL). + * + * @param string $param + * @param mixed $value + */ + public function setParam($param, $value) + { + if (isset($this->_stream)) { + switch ($param) { + case 'timeout': + if ($this->_stream) { + stream_set_timeout($this->_stream, $value); + } + break; + + case 'blocking': + if ($this->_stream) { + stream_set_blocking($this->_stream, 1); + } + + } + } + $this->_params[$param] = $value; + } + + public function startTLS() + { + return stream_socket_enable_crypto($this->_stream, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); + } + + /** + * Perform any shutdown logic needed. + */ + public function terminate() + { + if (isset($this->_stream)) { + switch ($this->_params['type']) { + case self::TYPE_PROCESS: + fclose($this->_in); + fclose($this->_out); + proc_close($this->_stream); + break; + case self::TYPE_SOCKET: + default: + fclose($this->_stream); + break; + } + } + $this->_stream = null; + $this->_out = null; + $this->_in = null; + } + + /** + * Set an array of string replacements which should be made on data written + * to the buffer. + * + * This could replace LF with CRLF for example. + * + * @param string[] $replacements + */ + public function setWriteTranslations(array $replacements) + { + foreach ($this->_translations as $search => $replace) { + if (!isset($replacements[$search])) { + $this->removeFilter($search); + unset($this->_translations[$search]); + } + } + + foreach ($replacements as $search => $replace) { + if (!isset($this->_translations[$search])) { + $this->addFilter( + $this->_replacementFactory->createFilter($search, $replace), $search + ); + $this->_translations[$search] = true; + } + } + } + + /** + * Get a line of output (including any CRLF). + * + * The $sequence number comes from any writes and may or may not be used + * depending upon the implementation. + * + * @param int $sequence of last write to scan from + * + * @return string + * + * @throws Swift_IoException + */ + public function readLine($sequence) + { + if (isset($this->_out) && !feof($this->_out)) { + $line = fgets($this->_out); + if (strlen($line) == 0) { + $metas = stream_get_meta_data($this->_out); + if ($metas['timed_out']) { + throw new Swift_IoException( + 'Connection to '. + $this->_getReadConnectionDescription(). + ' Timed Out' + ); + } + } + + return $line; + } + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. + * + * If less bytes exist than are requested the remaining bytes are given instead. + * If no bytes are remaining at all, boolean false is returned. + * + * @param int $length + * + * @return string|bool + * + * @throws Swift_IoException + */ + public function read($length) + { + if (isset($this->_out) && !feof($this->_out)) { + $ret = fread($this->_out, $length); + if (strlen($ret) == 0) { + $metas = stream_get_meta_data($this->_out); + if ($metas['timed_out']) { + throw new Swift_IoException( + 'Connection to '. + $this->_getReadConnectionDescription(). + ' Timed Out' + ); + } + } + + return $ret; + } + } + + /** Not implemented */ + public function setReadPointer($byteOffset) + { + } + + /** Flush the stream contents */ + protected function _flush() + { + if (isset($this->_in)) { + fflush($this->_in); + } + } + + /** Write this bytes to the stream */ + protected function _commit($bytes) + { + if (isset($this->_in)) { + $bytesToWrite = strlen($bytes); + $totalBytesWritten = 0; + + while ($totalBytesWritten < $bytesToWrite) { + $bytesWritten = fwrite($this->_in, substr($bytes, $totalBytesWritten)); + if (false === $bytesWritten || 0 === $bytesWritten) { + break; + } + + $totalBytesWritten += $bytesWritten; + } + + if ($totalBytesWritten > 0) { + return ++$this->_sequence; + } + } + } + + /** + * Establishes a connection to a remote server. + */ + private function _establishSocketConnection() + { + $host = $this->_params['host']; + if (!empty($this->_params['protocol'])) { + $host = $this->_params['protocol'].'://'.$host; + } + $timeout = 15; + if (!empty($this->_params['timeout'])) { + $timeout = $this->_params['timeout']; + } + $options = array(); + if (!empty($this->_params['sourceIp'])) { + $options['socket']['bindto'] = $this->_params['sourceIp'].':0'; + } + $this->_stream = @stream_socket_client($host.':'.$this->_params['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, stream_context_create($options)); + if (false === $this->_stream) { + throw new Swift_TransportException( + 'Connection could not be established with host '.$this->_params['host']. + ' ['.$errstr.' #'.$errno.']' + ); + } + if (!empty($this->_params['blocking'])) { + stream_set_blocking($this->_stream, 1); + } else { + stream_set_blocking($this->_stream, 0); + } + stream_set_timeout($this->_stream, $timeout); + $this->_in = & $this->_stream; + $this->_out = & $this->_stream; + } + + /** + * Opens a process for input/output. + */ + private function _establishProcessConnection() + { + $command = $this->_params['command']; + $descriptorSpec = array( + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('pipe', 'w'), + ); + $this->_stream = proc_open($command, $descriptorSpec, $pipes); + stream_set_blocking($pipes[2], 0); + if ($err = stream_get_contents($pipes[2])) { + throw new Swift_TransportException( + 'Process could not be started ['.$err.']' + ); + } + $this->_in = & $pipes[0]; + $this->_out = & $pipes[1]; + } + + private function _getReadConnectionDescription() + { + switch ($this->_params['type']) { + case self::TYPE_PROCESS: + return 'Process '.$this->_params['command']; + break; + + case self::TYPE_SOCKET: + default: + $host = $this->_params['host']; + if (!empty($this->_params['protocol'])) { + $host = $this->_params['protocol'].'://'.$host; + } + $host .= ':'.$this->_params['port']; + + return $host; + break; + } + } +} diff --git a/tools/swift/classes/Swift/Transport/index.php b/tools/swift/classes/Swift/Transport/index.php new file mode 100644 index 000000000..9a99a8662 --- /dev/null +++ b/tools/swift/classes/Swift/Transport/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/tools/swift/classes/Swift/TransportException.php b/tools/swift/classes/Swift/TransportException.php new file mode 100644 index 000000000..bdcd23bb9 --- /dev/null +++ b/tools/swift/classes/Swift/TransportException.php @@ -0,0 +1,27 @@ + + */ +class Swift_Validate +{ + /** + * Grammar Object + * + * @var Swift_Mime_Grammar + */ + private static $grammar = null; + + /** + * Checks if an e-mail address matches the current grammars. + * + * @param string $email + * + * @return bool + */ + public static function email($email) + { + if (self::$grammar === null) { + self::$grammar = Swift_DependencyContainer::getInstance() + ->lookup('mime.grammar'); + } + + return (bool) preg_match( + '/^'.self::$grammar->getDefinition('addr-spec').'$/D', + $email + ); + } +} diff --git a/tools/swift/classes/Swift/index.php b/tools/swift/classes/Swift/index.php new file mode 100644 index 000000000..9a99a8662 --- /dev/null +++ b/tools/swift/classes/Swift/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/tools/swift/classes/index.php b/tools/swift/classes/index.php new file mode 100644 index 000000000..9a99a8662 --- /dev/null +++ b/tools/swift/classes/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/tools/swift/dependency_maps/cache_deps.php b/tools/swift/dependency_maps/cache_deps.php new file mode 100644 index 000000000..6023448e8 --- /dev/null +++ b/tools/swift/dependency_maps/cache_deps.php @@ -0,0 +1,23 @@ +register('cache') + ->asAliasOf('cache.array') + + ->register('tempdir') + ->asValue('/tmp') + + ->register('cache.null') + ->asSharedInstanceOf('Swift_KeyCache_NullKeyCache') + + ->register('cache.array') + ->asSharedInstanceOf('Swift_KeyCache_ArrayKeyCache') + ->withDependencies(array('cache.inputstream')) + + ->register('cache.disk') + ->asSharedInstanceOf('Swift_KeyCache_DiskKeyCache') + ->withDependencies(array('cache.inputstream', 'tempdir')) + + ->register('cache.inputstream') + ->asNewInstanceOf('Swift_KeyCache_SimpleKeyCacheInputStream') +; diff --git a/tools/swift/dependency_maps/index.php b/tools/swift/dependency_maps/index.php new file mode 100644 index 000000000..9a99a8662 --- /dev/null +++ b/tools/swift/dependency_maps/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/tools/swift/dependency_maps/message_deps.php b/tools/swift/dependency_maps/message_deps.php new file mode 100644 index 000000000..64d69d215 --- /dev/null +++ b/tools/swift/dependency_maps/message_deps.php @@ -0,0 +1,9 @@ +register('message.message') + ->asNewInstanceOf('Swift_Message') + + ->register('message.mimepart') + ->asNewInstanceOf('Swift_MimePart') +; diff --git a/tools/swift/dependency_maps/mime_deps.php b/tools/swift/dependency_maps/mime_deps.php new file mode 100644 index 000000000..04f394b32 --- /dev/null +++ b/tools/swift/dependency_maps/mime_deps.php @@ -0,0 +1,123 @@ +register('properties.charset') + ->asValue('utf-8') + + ->register('mime.grammar') + ->asSharedInstanceOf('Swift_Mime_Grammar') + + ->register('mime.message') + ->asNewInstanceOf('Swift_Mime_SimpleMessage') + ->withDependencies(array( + 'mime.headerset', + 'mime.qpcontentencoder', + 'cache', + 'mime.grammar', + 'properties.charset', + )) + + ->register('mime.part') + ->asNewInstanceOf('Swift_Mime_MimePart') + ->withDependencies(array( + 'mime.headerset', + 'mime.qpcontentencoder', + 'cache', + 'mime.grammar', + 'properties.charset', + )) + + ->register('mime.attachment') + ->asNewInstanceOf('Swift_Mime_Attachment') + ->withDependencies(array( + 'mime.headerset', + 'mime.base64contentencoder', + 'cache', + 'mime.grammar', + )) + ->addConstructorValue($swift_mime_types) + + ->register('mime.embeddedfile') + ->asNewInstanceOf('Swift_Mime_EmbeddedFile') + ->withDependencies(array( + 'mime.headerset', + 'mime.base64contentencoder', + 'cache', + 'mime.grammar', + )) + ->addConstructorValue($swift_mime_types) + + ->register('mime.headerfactory') + ->asNewInstanceOf('Swift_Mime_SimpleHeaderFactory') + ->withDependencies(array( + 'mime.qpheaderencoder', + 'mime.rfc2231encoder', + 'mime.grammar', + 'properties.charset', + )) + + ->register('mime.headerset') + ->asNewInstanceOf('Swift_Mime_SimpleHeaderSet') + ->withDependencies(array('mime.headerfactory', 'properties.charset')) + + ->register('mime.qpheaderencoder') + ->asNewInstanceOf('Swift_Mime_HeaderEncoder_QpHeaderEncoder') + ->withDependencies(array('mime.charstream')) + + ->register('mime.base64headerencoder') + ->asNewInstanceOf('Swift_Mime_HeaderEncoder_Base64HeaderEncoder') + ->withDependencies(array('mime.charstream')) + + ->register('mime.charstream') + ->asNewInstanceOf('Swift_CharacterStream_NgCharacterStream') + ->withDependencies(array('mime.characterreaderfactory', 'properties.charset')) + + ->register('mime.bytecanonicalizer') + ->asSharedInstanceOf('Swift_StreamFilters_ByteArrayReplacementFilter') + ->addConstructorValue(array(array(0x0D, 0x0A), array(0x0D), array(0x0A))) + ->addConstructorValue(array(array(0x0A), array(0x0A), array(0x0D, 0x0A))) + + ->register('mime.characterreaderfactory') + ->asSharedInstanceOf('Swift_CharacterReaderFactory_SimpleCharacterReaderFactory') + + ->register('mime.safeqpcontentencoder') + ->asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoder') + ->withDependencies(array('mime.charstream', 'mime.bytecanonicalizer')) + + ->register('mime.rawcontentencoder') + ->asNewInstanceOf('Swift_Mime_ContentEncoder_RawContentEncoder') + + ->register('mime.nativeqpcontentencoder') + ->withDependencies(array('properties.charset')) + ->asNewInstanceOf('Swift_Mime_ContentEncoder_NativeQpContentEncoder') + + ->register('mime.qpcontentencoderproxy') + ->asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoderProxy') + ->withDependencies(array('mime.safeqpcontentencoder', 'mime.nativeqpcontentencoder', 'properties.charset')) + + ->register('mime.7bitcontentencoder') + ->asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') + ->addConstructorValue('7bit') + ->addConstructorValue(true) + + ->register('mime.8bitcontentencoder') + ->asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') + ->addConstructorValue('8bit') + ->addConstructorValue(true) + + ->register('mime.base64contentencoder') + ->asSharedInstanceOf('Swift_Mime_ContentEncoder_Base64ContentEncoder') + + ->register('mime.rfc2231encoder') + ->asNewInstanceOf('Swift_Encoder_Rfc2231Encoder') + ->withDependencies(array('mime.charstream')) + + // As of PHP 5.4.7, the quoted_printable_encode() function behaves correctly. + // see https://github.com/php/php-src/commit/18bb426587d62f93c54c40bf8535eb8416603629 + ->register('mime.qpcontentencoder') + ->asAliasOf(version_compare(phpversion(), '5.4.7', '>=') ? 'mime.qpcontentencoderproxy' : 'mime.safeqpcontentencoder') +; + +unset($swift_mime_types); diff --git a/tools/swift/dependency_maps/transport_deps.php b/tools/swift/dependency_maps/transport_deps.php new file mode 100644 index 000000000..77e432cfa --- /dev/null +++ b/tools/swift/dependency_maps/transport_deps.php @@ -0,0 +1,76 @@ +register('transport.smtp') + ->asNewInstanceOf('Swift_Transport_EsmtpTransport') + ->withDependencies(array( + 'transport.buffer', + array('transport.authhandler'), + 'transport.eventdispatcher', + )) + + ->register('transport.sendmail') + ->asNewInstanceOf('Swift_Transport_SendmailTransport') + ->withDependencies(array( + 'transport.buffer', + 'transport.eventdispatcher', + )) + + ->register('transport.mail') + ->asNewInstanceOf('Swift_Transport_MailTransport') + ->withDependencies(array('transport.mailinvoker', 'transport.eventdispatcher')) + + ->register('transport.loadbalanced') + ->asNewInstanceOf('Swift_Transport_LoadBalancedTransport') + + ->register('transport.failover') + ->asNewInstanceOf('Swift_Transport_FailoverTransport') + + ->register('transport.spool') + ->asNewInstanceOf('Swift_Transport_SpoolTransport') + ->withDependencies(array('transport.eventdispatcher')) + + ->register('transport.null') + ->asNewInstanceOf('Swift_Transport_NullTransport') + ->withDependencies(array('transport.eventdispatcher')) + + ->register('transport.mailinvoker') + ->asSharedInstanceOf('Swift_Transport_SimpleMailInvoker') + + ->register('transport.buffer') + ->asNewInstanceOf('Swift_Transport_StreamBuffer') + ->withDependencies(array('transport.replacementfactory')) + + ->register('transport.authhandler') + ->asNewInstanceOf('Swift_Transport_Esmtp_AuthHandler') + ->withDependencies(array( + array( + 'transport.crammd5auth', + 'transport.loginauth', + 'transport.plainauth', + 'transport.ntlmauth', + 'transport.xoauth2auth', + ), + )) + + ->register('transport.crammd5auth') + ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_CramMd5Authenticator') + + ->register('transport.loginauth') + ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_LoginAuthenticator') + + ->register('transport.plainauth') + ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_PlainAuthenticator') + + ->register('transport.xoauth2auth') + ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_XOAuth2Authenticator') + + ->register('transport.ntlmauth') + ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_NTLMAuthenticator') + + ->register('transport.eventdispatcher') + ->asNewInstanceOf('Swift_Events_SimpleEventDispatcher') + + ->register('transport.replacementfactory') + ->asSharedInstanceOf('Swift_StreamFilters_StringReplacementFilterFactory') +; diff --git a/tools/swift/index.php b/tools/swift/index.php index 2d4b752c4..9a99a8662 100644 --- a/tools/swift/index.php +++ b/tools/swift/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/tools/swift/mime_types.php b/tools/swift/mime_types.php new file mode 100644 index 000000000..2d7b98dc1 --- /dev/null +++ b/tools/swift/mime_types.php @@ -0,0 +1,1007 @@ + 'text/vnd.in3d.3dml', + '3ds' => 'image/x-3ds', + '3g2' => 'video/3gpp2', + '3gp' => 'video/3gpp', + '7z' => 'application/x-7z-compressed', + 'aab' => 'application/x-authorware-bin', + 'aac' => 'audio/x-aac', + 'aam' => 'application/x-authorware-map', + 'aas' => 'application/x-authorware-seg', + 'abw' => 'application/x-abiword', + 'ac' => 'application/pkix-attr-cert', + 'acc' => 'application/vnd.americandynamics.acc', + 'ace' => 'application/x-ace-compressed', + 'acu' => 'application/vnd.acucobol', + 'acutc' => 'application/vnd.acucorp', + 'adp' => 'audio/adpcm', + 'aep' => 'application/vnd.audiograph', + 'afm' => 'application/x-font-type1', + 'afp' => 'application/vnd.ibm.modcap', + 'ahead' => 'application/vnd.ahead.space', + 'ai' => 'application/postscript', + 'aif' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'air' => 'application/vnd.adobe.air-application-installer-package+zip', + 'ait' => 'application/vnd.dvb.ait', + 'ami' => 'application/vnd.amiga.ami', + 'apk' => 'application/vnd.android.package-archive', + 'appcache' => 'text/cache-manifest', + 'apr' => 'application/vnd.lotus-approach', + 'aps' => 'application/postscript', + 'arc' => 'application/x-freearc', + 'asc' => 'application/pgp-signature', + 'asf' => 'video/x-ms-asf', + 'asm' => 'text/x-asm', + 'aso' => 'application/vnd.accpac.simply.aso', + 'asx' => 'video/x-ms-asf', + 'atc' => 'application/vnd.acucorp', + 'atom' => 'application/atom+xml', + 'atomcat' => 'application/atomcat+xml', + 'atomsvc' => 'application/atomsvc+xml', + 'atx' => 'application/vnd.antix.game-component', + 'au' => 'audio/basic', + 'avi' => 'video/x-msvideo', + 'aw' => 'application/applixware', + 'azf' => 'application/vnd.airzip.filesecure.azf', + 'azs' => 'application/vnd.airzip.filesecure.azs', + 'azw' => 'application/vnd.amazon.ebook', + 'bat' => 'application/x-msdownload', + 'bcpio' => 'application/x-bcpio', + 'bdf' => 'application/x-font-bdf', + 'bdm' => 'application/vnd.syncml.dm+wbxml', + 'bed' => 'application/vnd.realvnc.bed', + 'bh2' => 'application/vnd.fujitsu.oasysprs', + 'bin' => 'application/octet-stream', + 'blb' => 'application/x-blorb', + 'blorb' => 'application/x-blorb', + 'bmi' => 'application/vnd.bmi', + 'bmp' => 'image/bmp', + 'book' => 'application/vnd.framemaker', + 'box' => 'application/vnd.previewsystems.box', + 'boz' => 'application/x-bzip2', + 'bpk' => 'application/octet-stream', + 'btif' => 'image/prs.btif', + 'bz' => 'application/x-bzip', + 'bz2' => 'application/x-bzip2', + 'c' => 'text/x-c', + 'c11amc' => 'application/vnd.cluetrust.cartomobile-config', + 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg', + 'c4d' => 'application/vnd.clonk.c4group', + 'c4f' => 'application/vnd.clonk.c4group', + 'c4g' => 'application/vnd.clonk.c4group', + 'c4p' => 'application/vnd.clonk.c4group', + 'c4u' => 'application/vnd.clonk.c4group', + 'cab' => 'application/vnd.ms-cab-compressed', + 'caf' => 'audio/x-caf', + 'cap' => 'application/vnd.tcpdump.pcap', + 'car' => 'application/vnd.curl.car', + 'cat' => 'application/vnd.ms-pki.seccat', + 'cb7' => 'application/x-cbr', + 'cba' => 'application/x-cbr', + 'cbr' => 'application/x-cbr', + 'cbt' => 'application/x-cbr', + 'cbz' => 'application/x-cbr', + 'cc' => 'text/x-c', + 'cct' => 'application/x-director', + 'ccxml' => 'application/ccxml+xml', + 'cdbcmsg' => 'application/vnd.contact.cmsg', + 'cdf' => 'application/x-netcdf', + 'cdkey' => 'application/vnd.mediastation.cdkey', + 'cdmia' => 'application/cdmi-capability', + 'cdmic' => 'application/cdmi-container', + 'cdmid' => 'application/cdmi-domain', + 'cdmio' => 'application/cdmi-object', + 'cdmiq' => 'application/cdmi-queue', + 'cdx' => 'chemical/x-cdx', + 'cdxml' => 'application/vnd.chemdraw+xml', + 'cdy' => 'application/vnd.cinderella', + 'cer' => 'application/pkix-cert', + 'cfs' => 'application/x-cfs-compressed', + 'cgm' => 'image/cgm', + 'chat' => 'application/x-chat', + 'chm' => 'application/vnd.ms-htmlhelp', + 'chrt' => 'application/vnd.kde.kchart', + 'cif' => 'chemical/x-cif', + 'cii' => 'application/vnd.anser-web-certificate-issue-initiation', + 'cil' => 'application/vnd.ms-artgalry', + 'cla' => 'application/vnd.claymore', + 'class' => 'application/java-vm', + 'clkk' => 'application/vnd.crick.clicker.keyboard', + 'clkp' => 'application/vnd.crick.clicker.palette', + 'clkt' => 'application/vnd.crick.clicker.template', + 'clkw' => 'application/vnd.crick.clicker.wordbank', + 'clkx' => 'application/vnd.crick.clicker', + 'clp' => 'application/x-msclip', + 'cmc' => 'application/vnd.cosmocaller', + 'cmdf' => 'chemical/x-cmdf', + 'cml' => 'chemical/x-cml', + 'cmp' => 'application/vnd.yellowriver-custom-menu', + 'cmx' => 'image/x-cmx', + 'cod' => 'application/vnd.rim.cod', + 'com' => 'application/x-msdownload', + 'conf' => 'text/plain', + 'cpio' => 'application/x-cpio', + 'cpp' => 'text/x-c', + 'cpt' => 'application/mac-compactpro', + 'crd' => 'application/x-mscardfile', + 'crl' => 'application/pkix-crl', + 'crt' => 'application/x-x509-ca-cert', + 'csh' => 'application/x-csh', + 'csml' => 'chemical/x-csml', + 'csp' => 'application/vnd.commonspace', + 'css' => 'text/css', + 'cst' => 'application/x-director', + 'csv' => 'text/csv', + 'cu' => 'application/cu-seeme', + 'curl' => 'text/vnd.curl', + 'cww' => 'application/prs.cww', + 'cxt' => 'application/x-director', + 'cxx' => 'text/x-c', + 'dae' => 'model/vnd.collada+xml', + 'daf' => 'application/vnd.mobius.daf', + 'dart' => 'application/vnd.dart', + 'dataless' => 'application/vnd.fdsn.seed', + 'davmount' => 'application/davmount+xml', + 'dbk' => 'application/docbook+xml', + 'dcr' => 'application/x-director', + 'dcurl' => 'text/vnd.curl.dcurl', + 'dd2' => 'application/vnd.oma.dd2+xml', + 'ddd' => 'application/vnd.fujixerox.ddd', + 'deb' => 'application/x-debian-package', + 'def' => 'text/plain', + 'deploy' => 'application/octet-stream', + 'der' => 'application/x-x509-ca-cert', + 'dfac' => 'application/vnd.dreamfactory', + 'dgc' => 'application/x-dgc-compressed', + 'dic' => 'text/x-c', + 'dir' => 'application/x-director', + 'dis' => 'application/vnd.mobius.dis', + 'dist' => 'application/octet-stream', + 'distz' => 'application/octet-stream', + 'djv' => 'image/vnd.djvu', + 'djvu' => 'image/vnd.djvu', + 'dll' => 'application/x-msdownload', + 'dmg' => 'application/x-apple-diskimage', + 'dmp' => 'application/vnd.tcpdump.pcap', + 'dms' => 'application/octet-stream', + 'dna' => 'application/vnd.dna', + 'doc' => 'application/msword', + 'docm' => 'application/vnd.ms-word.document.macroenabled.12', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dot' => 'application/msword', + 'dotm' => 'application/vnd.ms-word.template.macroenabled.12', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'dp' => 'application/vnd.osgi.dp', + 'dpg' => 'application/vnd.dpgraph', + 'dra' => 'audio/vnd.dra', + 'dsc' => 'text/prs.lines.tag', + 'dssc' => 'application/dssc+der', + 'dtb' => 'application/x-dtbook+xml', + 'dtd' => 'application/xml-dtd', + 'dts' => 'audio/vnd.dts', + 'dtshd' => 'audio/vnd.dts.hd', + 'dump' => 'application/octet-stream', + 'dvb' => 'video/vnd.dvb.file', + 'dvi' => 'application/x-dvi', + 'dwf' => 'model/vnd.dwf', + 'dwg' => 'image/vnd.dwg', + 'dxf' => 'image/vnd.dxf', + 'dxp' => 'application/vnd.spotfire.dxp', + 'dxr' => 'application/x-director', + 'ecelp4800' => 'audio/vnd.nuera.ecelp4800', + 'ecelp7470' => 'audio/vnd.nuera.ecelp7470', + 'ecelp9600' => 'audio/vnd.nuera.ecelp9600', + 'ecma' => 'application/ecmascript', + 'edm' => 'application/vnd.novadigm.edm', + 'edx' => 'application/vnd.novadigm.edx', + 'efif' => 'application/vnd.picsel', + 'ei6' => 'application/vnd.pg.osasli', + 'elc' => 'application/octet-stream', + 'emf' => 'application/x-msmetafile', + 'eml' => 'message/rfc822', + 'emma' => 'application/emma+xml', + 'emz' => 'application/x-msmetafile', + 'eol' => 'audio/vnd.digital-winds', + 'eot' => 'application/vnd.ms-fontobject', + 'eps' => 'application/postscript', + 'epub' => 'application/epub+zip', + 'es3' => 'application/vnd.eszigno3+xml', + 'esa' => 'application/vnd.osgi.subsystem', + 'esf' => 'application/vnd.epson.esf', + 'et3' => 'application/vnd.eszigno3+xml', + 'etx' => 'text/x-setext', + 'eva' => 'application/x-eva', + 'evy' => 'application/x-envoy', + 'exe' => 'application/x-msdownload', + 'exi' => 'application/exi', + 'ext' => 'application/vnd.novadigm.ext', + 'ez' => 'application/andrew-inset', + 'ez2' => 'application/vnd.ezpix-album', + 'ez3' => 'application/vnd.ezpix-package', + 'f' => 'text/x-fortran', + 'f4v' => 'video/x-f4v', + 'f77' => 'text/x-fortran', + 'f90' => 'text/x-fortran', + 'fbs' => 'image/vnd.fastbidsheet', + 'fcdt' => 'application/vnd.adobe.formscentral.fcdt', + 'fcs' => 'application/vnd.isac.fcs', + 'fdf' => 'application/vnd.fdf', + 'fe_launch' => 'application/vnd.denovo.fcselayout-link', + 'fg5' => 'application/vnd.fujitsu.oasysgp', + 'fgd' => 'application/x-director', + 'fh' => 'image/x-freehand', + 'fh4' => 'image/x-freehand', + 'fh5' => 'image/x-freehand', + 'fh7' => 'image/x-freehand', + 'fhc' => 'image/x-freehand', + 'fig' => 'application/x-xfig', + 'flac' => 'audio/x-flac', + 'fli' => 'video/x-fli', + 'flo' => 'application/vnd.micrografx.flo', + 'flv' => 'video/x-flv', + 'flw' => 'application/vnd.kde.kivio', + 'flx' => 'text/vnd.fmi.flexstor', + 'fly' => 'text/vnd.fly', + 'fm' => 'application/vnd.framemaker', + 'fnc' => 'application/vnd.frogans.fnc', + 'for' => 'text/x-fortran', + 'fpx' => 'image/vnd.fpx', + 'frame' => 'application/vnd.framemaker', + 'fsc' => 'application/vnd.fsc.weblaunch', + 'fst' => 'image/vnd.fst', + 'ftc' => 'application/vnd.fluxtime.clip', + 'fti' => 'application/vnd.anser-web-funds-transfer-initiation', + 'fvt' => 'video/vnd.fvt', + 'fxp' => 'application/vnd.adobe.fxp', + 'fxpl' => 'application/vnd.adobe.fxp', + 'fzs' => 'application/vnd.fuzzysheet', + 'g2w' => 'application/vnd.geoplan', + 'g3' => 'image/g3fax', + 'g3w' => 'application/vnd.geospace', + 'gac' => 'application/vnd.groove-account', + 'gam' => 'application/x-tads', + 'gbr' => 'application/rpki-ghostbusters', + 'gca' => 'application/x-gca-compressed', + 'gdl' => 'model/vnd.gdl', + 'geo' => 'application/vnd.dynageo', + 'gex' => 'application/vnd.geometry-explorer', + 'ggb' => 'application/vnd.geogebra.file', + 'ggt' => 'application/vnd.geogebra.tool', + 'ghf' => 'application/vnd.groove-help', + 'gif' => 'image/gif', + 'gim' => 'application/vnd.groove-identity-message', + 'gml' => 'application/gml+xml', + 'gmx' => 'application/vnd.gmx', + 'gnumeric' => 'application/x-gnumeric', + 'gph' => 'application/vnd.flographit', + 'gpx' => 'application/gpx+xml', + 'gqf' => 'application/vnd.grafeq', + 'gqs' => 'application/vnd.grafeq', + 'gram' => 'application/srgs', + 'gramps' => 'application/x-gramps-xml', + 'gre' => 'application/vnd.geometry-explorer', + 'grv' => 'application/vnd.groove-injector', + 'grxml' => 'application/srgs+xml', + 'gsf' => 'application/x-font-ghostscript', + 'gtar' => 'application/x-gtar', + 'gtm' => 'application/vnd.groove-tool-message', + 'gtw' => 'model/vnd.gtw', + 'gv' => 'text/vnd.graphviz', + 'gxf' => 'application/gxf', + 'gxt' => 'application/vnd.geonext', + 'gz' => 'application/x-gzip', + 'h' => 'text/x-c', + 'h261' => 'video/h261', + 'h263' => 'video/h263', + 'h264' => 'video/h264', + 'hal' => 'application/vnd.hal+xml', + 'hbci' => 'application/vnd.hbci', + 'hdf' => 'application/x-hdf', + 'hh' => 'text/x-c', + 'hlp' => 'application/winhlp', + 'hpgl' => 'application/vnd.hp-hpgl', + 'hpid' => 'application/vnd.hp-hpid', + 'hps' => 'application/vnd.hp-hps', + 'hqx' => 'application/mac-binhex40', + 'htke' => 'application/vnd.kenameaapp', + 'htm' => 'text/html', + 'html' => 'text/html', + 'hvd' => 'application/vnd.yamaha.hv-dic', + 'hvp' => 'application/vnd.yamaha.hv-voice', + 'hvs' => 'application/vnd.yamaha.hv-script', + 'i2g' => 'application/vnd.intergeo', + 'icc' => 'application/vnd.iccprofile', + 'ice' => 'x-conference/x-cooltalk', + 'icm' => 'application/vnd.iccprofile', + 'ico' => 'image/x-icon', + 'ics' => 'text/calendar', + 'ief' => 'image/ief', + 'ifb' => 'text/calendar', + 'ifm' => 'application/vnd.shana.informed.formdata', + 'iges' => 'model/iges', + 'igl' => 'application/vnd.igloader', + 'igm' => 'application/vnd.insors.igm', + 'igs' => 'model/iges', + 'igx' => 'application/vnd.micrografx.igx', + 'iif' => 'application/vnd.shana.informed.interchange', + 'imp' => 'application/vnd.accpac.simply.imp', + 'ims' => 'application/vnd.ms-ims', + 'in' => 'text/plain', + 'ink' => 'application/inkml+xml', + 'inkml' => 'application/inkml+xml', + 'install' => 'application/x-install-instructions', + 'iota' => 'application/vnd.astraea-software.iota', + 'ipfix' => 'application/ipfix', + 'ipk' => 'application/vnd.shana.informed.package', + 'irm' => 'application/vnd.ibm.rights-management', + 'irp' => 'application/vnd.irepository.package+xml', + 'iso' => 'application/x-iso9660-image', + 'itp' => 'application/vnd.shana.informed.formtemplate', + 'ivp' => 'application/vnd.immervision-ivp', + 'ivu' => 'application/vnd.immervision-ivu', + 'jad' => 'text/vnd.sun.j2me.app-descriptor', + 'jam' => 'application/vnd.jam', + 'jar' => 'application/java-archive', + 'java' => 'text/x-java-source', + 'jisp' => 'application/vnd.jisp', + 'jlt' => 'application/vnd.hp-jlyt', + 'jnlp' => 'application/x-java-jnlp-file', + 'joda' => 'application/vnd.joost.joda-archive', + 'jpe' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'jpgm' => 'video/jpm', + 'jpgv' => 'video/jpeg', + 'jpm' => 'video/jpm', + 'js' => 'application/javascript', + 'json' => 'application/json', + 'jsonml' => 'application/jsonml+json', + 'kar' => 'audio/midi', + 'karbon' => 'application/vnd.kde.karbon', + 'kfo' => 'application/vnd.kde.kformula', + 'kia' => 'application/vnd.kidspiration', + 'kml' => 'application/vnd.google-earth.kml+xml', + 'kmz' => 'application/vnd.google-earth.kmz', + 'kne' => 'application/vnd.kinar', + 'knp' => 'application/vnd.kinar', + 'kon' => 'application/vnd.kde.kontour', + 'kpr' => 'application/vnd.kde.kpresenter', + 'kpt' => 'application/vnd.kde.kpresenter', + 'kpxx' => 'application/vnd.ds-keypoint', + 'ksp' => 'application/vnd.kde.kspread', + 'ktr' => 'application/vnd.kahootz', + 'ktx' => 'image/ktx', + 'ktz' => 'application/vnd.kahootz', + 'kwd' => 'application/vnd.kde.kword', + 'kwt' => 'application/vnd.kde.kword', + 'lasxml' => 'application/vnd.las.las+xml', + 'latex' => 'application/x-latex', + 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop', + 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml', + 'les' => 'application/vnd.hhe.lesson-player', + 'lha' => 'application/x-lzh-compressed', + 'link66' => 'application/vnd.route66.link66+xml', + 'list' => 'text/plain', + 'list3820' => 'application/vnd.ibm.modcap', + 'listafp' => 'application/vnd.ibm.modcap', + 'lnk' => 'application/x-ms-shortcut', + 'log' => 'text/plain', + 'lostxml' => 'application/lost+xml', + 'lrf' => 'application/octet-stream', + 'lrm' => 'application/vnd.ms-lrm', + 'ltf' => 'application/vnd.frogans.ltf', + 'lvp' => 'audio/vnd.lucent.voice', + 'lwp' => 'application/vnd.lotus-wordpro', + 'lzh' => 'application/x-lzh-compressed', + 'm13' => 'application/x-msmediaview', + 'm14' => 'application/x-msmediaview', + 'm1v' => 'video/mpeg', + 'm21' => 'application/mp21', + 'm2a' => 'audio/mpeg', + 'm2v' => 'video/mpeg', + 'm3a' => 'audio/mpeg', + 'm3u' => 'audio/x-mpegurl', + 'm3u8' => 'application/vnd.apple.mpegurl', + 'm4a' => 'audio/mp4', + 'm4u' => 'video/vnd.mpegurl', + 'm4v' => 'video/x-m4v', + 'ma' => 'application/mathematica', + 'mads' => 'application/mads+xml', + 'mag' => 'application/vnd.ecowin.chart', + 'maker' => 'application/vnd.framemaker', + 'man' => 'text/troff', + 'mar' => 'application/octet-stream', + 'mathml' => 'application/mathml+xml', + 'mb' => 'application/mathematica', + 'mbk' => 'application/vnd.mobius.mbk', + 'mbox' => 'application/mbox', + 'mc1' => 'application/vnd.medcalcdata', + 'mcd' => 'application/vnd.mcd', + 'mcurl' => 'text/vnd.curl.mcurl', + 'mdb' => 'application/x-msaccess', + 'mdi' => 'image/vnd.ms-modi', + 'me' => 'text/troff', + 'mesh' => 'model/mesh', + 'meta4' => 'application/metalink4+xml', + 'metalink' => 'application/metalink+xml', + 'mets' => 'application/mets+xml', + 'mfm' => 'application/vnd.mfmp', + 'mft' => 'application/rpki-manifest', + 'mgp' => 'application/vnd.osgeo.mapguide.package', + 'mgz' => 'application/vnd.proteus.magazine', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mie' => 'application/x-mie', + 'mif' => 'application/vnd.mif', + 'mime' => 'message/rfc822', + 'mj2' => 'video/mj2', + 'mjp2' => 'video/mj2', + 'mk3d' => 'video/x-matroska', + 'mka' => 'audio/x-matroska', + 'mks' => 'video/x-matroska', + 'mkv' => 'video/x-matroska', + 'mlp' => 'application/vnd.dolby.mlp', + 'mmd' => 'application/vnd.chipnuts.karaoke-mmd', + 'mmf' => 'application/vnd.smaf', + 'mmr' => 'image/vnd.fujixerox.edmics-mmr', + 'mng' => 'video/x-mng', + 'mny' => 'application/x-msmoney', + 'mobi' => 'application/x-mobipocket-ebook', + 'mods' => 'application/mods+xml', + 'mov' => 'video/quicktime', + 'movie' => 'video/x-sgi-movie', + 'mp2' => 'audio/mpeg', + 'mp21' => 'application/mp21', + 'mp2a' => 'audio/mpeg', + 'mp3' => 'audio/mpeg', + 'mp4' => 'video/mp4', + 'mp4a' => 'audio/mp4', + 'mp4s' => 'application/mp4', + 'mp4v' => 'video/mp4', + 'mpc' => 'application/vnd.mophun.certificate', + 'mpe' => 'video/mpeg', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpg4' => 'video/mp4', + 'mpga' => 'audio/mpeg', + 'mpkg' => 'application/vnd.apple.installer+xml', + 'mpm' => 'application/vnd.blueice.multipass', + 'mpn' => 'application/vnd.mophun.application', + 'mpp' => 'application/vnd.ms-project', + 'mpt' => 'application/vnd.ms-project', + 'mpy' => 'application/vnd.ibm.minipay', + 'mqy' => 'application/vnd.mobius.mqy', + 'mrc' => 'application/marc', + 'mrcx' => 'application/marcxml+xml', + 'ms' => 'text/troff', + 'mscml' => 'application/mediaservercontrol+xml', + 'mseed' => 'application/vnd.fdsn.mseed', + 'mseq' => 'application/vnd.mseq', + 'msf' => 'application/vnd.epson.msf', + 'msh' => 'model/mesh', + 'msi' => 'application/x-msdownload', + 'msl' => 'application/vnd.mobius.msl', + 'msty' => 'application/vnd.muvee.style', + 'mts' => 'model/vnd.mts', + 'mus' => 'application/vnd.musician', + 'musicxml' => 'application/vnd.recordare.musicxml+xml', + 'mvb' => 'application/x-msmediaview', + 'mwf' => 'application/vnd.mfer', + 'mxf' => 'application/mxf', + 'mxl' => 'application/vnd.recordare.musicxml', + 'mxml' => 'application/xv+xml', + 'mxs' => 'application/vnd.triscape.mxs', + 'mxu' => 'video/vnd.mpegurl', + 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install', + 'n3' => 'text/n3', + 'nb' => 'application/mathematica', + 'nbp' => 'application/vnd.wolfram.player', + 'nc' => 'application/x-netcdf', + 'ncx' => 'application/x-dtbncx+xml', + 'nfo' => 'text/x-nfo', + 'ngdat' => 'application/vnd.nokia.n-gage.data', + 'nitf' => 'application/vnd.nitf', + 'nlu' => 'application/vnd.neurolanguage.nlu', + 'nml' => 'application/vnd.enliven', + 'nnd' => 'application/vnd.noblenet-directory', + 'nns' => 'application/vnd.noblenet-sealer', + 'nnw' => 'application/vnd.noblenet-web', + 'npx' => 'image/vnd.net-fpx', + 'nsc' => 'application/x-conference', + 'nsf' => 'application/vnd.lotus-notes', + 'ntf' => 'application/vnd.nitf', + 'nzb' => 'application/x-nzb', + 'oa2' => 'application/vnd.fujitsu.oasys2', + 'oa3' => 'application/vnd.fujitsu.oasys3', + 'oas' => 'application/vnd.fujitsu.oasys', + 'obd' => 'application/x-msbinder', + 'obj' => 'application/x-tgif', + 'oda' => 'application/oda', + 'odb' => 'application/vnd.oasis.opendocument.database', + 'odc' => 'application/vnd.oasis.opendocument.chart', + 'odf' => 'application/vnd.oasis.opendocument.formula', + 'odft' => 'application/vnd.oasis.opendocument.formula-template', + 'odg' => 'application/vnd.oasis.opendocument.graphics', + 'odi' => 'application/vnd.oasis.opendocument.image', + 'odm' => 'application/vnd.oasis.opendocument.text-master', + 'odp' => 'application/vnd.oasis.opendocument.presentation', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + 'odt' => 'application/vnd.oasis.opendocument.text', + 'oga' => 'audio/ogg', + 'ogg' => 'audio/ogg', + 'ogv' => 'video/ogg', + 'ogx' => 'application/ogg', + 'omdoc' => 'application/omdoc+xml', + 'onepkg' => 'application/onenote', + 'onetmp' => 'application/onenote', + 'onetoc' => 'application/onenote', + 'onetoc2' => 'application/onenote', + 'opf' => 'application/oebps-package+xml', + 'opml' => 'text/x-opml', + 'oprc' => 'application/vnd.palm', + 'org' => 'application/vnd.lotus-organizer', + 'osf' => 'application/vnd.yamaha.openscoreformat', + 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml', + 'otc' => 'application/vnd.oasis.opendocument.chart-template', + 'otf' => 'application/x-font-otf', + 'otg' => 'application/vnd.oasis.opendocument.graphics-template', + 'oth' => 'application/vnd.oasis.opendocument.text-web', + 'oti' => 'application/vnd.oasis.opendocument.image-template', + 'otp' => 'application/vnd.oasis.opendocument.presentation-template', + 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', + 'ott' => 'application/vnd.oasis.opendocument.text-template', + 'oxps' => 'application/oxps', + 'oxt' => 'application/vnd.openofficeorg.extension', + 'p' => 'text/x-pascal', + 'p10' => 'application/pkcs10', + 'p12' => 'application/x-pkcs12', + 'p7b' => 'application/x-pkcs7-certificates', + 'p7c' => 'application/pkcs7-mime', + 'p7m' => 'application/pkcs7-mime', + 'p7r' => 'application/x-pkcs7-certreqresp', + 'p7s' => 'application/pkcs7-signature', + 'p8' => 'application/pkcs8', + 'pas' => 'text/x-pascal', + 'paw' => 'application/vnd.pawaafile', + 'pbd' => 'application/vnd.powerbuilder6', + 'pbm' => 'image/x-portable-bitmap', + 'pcap' => 'application/vnd.tcpdump.pcap', + 'pcf' => 'application/x-font-pcf', + 'pcl' => 'application/vnd.hp-pcl', + 'pclxl' => 'application/vnd.hp-pclxl', + 'pct' => 'image/x-pict', + 'pcurl' => 'application/vnd.curl.pcurl', + 'pcx' => 'image/x-pcx', + 'pdb' => 'application/vnd.palm', + 'pdf' => 'application/pdf', + 'pfa' => 'application/x-font-type1', + 'pfb' => 'application/x-font-type1', + 'pfm' => 'application/x-font-type1', + 'pfr' => 'application/font-tdpfr', + 'pfx' => 'application/x-pkcs12', + 'pgm' => 'image/x-portable-graymap', + 'pgn' => 'application/x-chess-pgn', + 'pgp' => 'application/pgp-encrypted', + 'php' => 'application/x-php', + 'php3' => 'application/x-php', + 'php4' => 'application/x-php', + 'php5' => 'application/x-php', + 'pic' => 'image/x-pict', + 'pkg' => 'application/octet-stream', + 'pki' => 'application/pkixcmp', + 'pkipath' => 'application/pkix-pkipath', + 'plb' => 'application/vnd.3gpp.pic-bw-large', + 'plc' => 'application/vnd.mobius.plc', + 'plf' => 'application/vnd.pocketlearn', + 'pls' => 'application/pls+xml', + 'pml' => 'application/vnd.ctc-posml', + 'png' => 'image/png', + 'pnm' => 'image/x-portable-anymap', + 'portpkg' => 'application/vnd.macports.portpkg', + 'pot' => 'application/vnd.ms-powerpoint', + 'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12', + 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12', + 'ppd' => 'application/vnd.cups-ppd', + 'ppm' => 'image/x-portable-pixmap', + 'pps' => 'application/vnd.ms-powerpoint', + 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', + 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'pqa' => 'application/vnd.palm', + 'prc' => 'application/x-mobipocket-ebook', + 'pre' => 'application/vnd.lotus-freelance', + 'prf' => 'application/pics-rules', + 'ps' => 'application/postscript', + 'psb' => 'application/vnd.3gpp.pic-bw-small', + 'psd' => 'image/vnd.adobe.photoshop', + 'psf' => 'application/x-font-linux-psf', + 'pskcxml' => 'application/pskc+xml', + 'ptid' => 'application/vnd.pvi.ptid1', + 'pub' => 'application/x-mspublisher', + 'pvb' => 'application/vnd.3gpp.pic-bw-var', + 'pwn' => 'application/vnd.3m.post-it-notes', + 'pya' => 'audio/vnd.ms-playready.media.pya', + 'pyv' => 'video/vnd.ms-playready.media.pyv', + 'qam' => 'application/vnd.epson.quickanime', + 'qbo' => 'application/vnd.intu.qbo', + 'qfx' => 'application/vnd.intu.qfx', + 'qps' => 'application/vnd.publishare-delta-tree', + 'qt' => 'video/quicktime', + 'qwd' => 'application/vnd.quark.quarkxpress', + 'qwt' => 'application/vnd.quark.quarkxpress', + 'qxb' => 'application/vnd.quark.quarkxpress', + 'qxd' => 'application/vnd.quark.quarkxpress', + 'qxl' => 'application/vnd.quark.quarkxpress', + 'qxt' => 'application/vnd.quark.quarkxpress', + 'ra' => 'audio/x-pn-realaudio', + 'ram' => 'audio/x-pn-realaudio', + 'rar' => 'application/x-rar-compressed', + 'ras' => 'image/x-cmu-raster', + 'rcprofile' => 'application/vnd.ipunplugged.rcprofile', + 'rdf' => 'application/rdf+xml', + 'rdz' => 'application/vnd.data-vision.rdz', + 'rep' => 'application/vnd.businessobjects', + 'res' => 'application/x-dtbresource+xml', + 'rgb' => 'image/x-rgb', + 'rif' => 'application/reginfo+xml', + 'rip' => 'audio/vnd.rip', + 'ris' => 'application/x-research-info-systems', + 'rl' => 'application/resource-lists+xml', + 'rlc' => 'image/vnd.fujixerox.edmics-rlc', + 'rld' => 'application/resource-lists-diff+xml', + 'rm' => 'application/vnd.rn-realmedia', + 'rmi' => 'audio/midi', + 'rmp' => 'audio/x-pn-realaudio-plugin', + 'rms' => 'application/vnd.jcp.javame.midlet-rms', + 'rmvb' => 'application/vnd.rn-realmedia-vbr', + 'rnc' => 'application/relax-ng-compact-syntax', + 'roa' => 'application/rpki-roa', + 'roff' => 'text/troff', + 'rp9' => 'application/vnd.cloanto.rp9', + 'rpss' => 'application/vnd.nokia.radio-presets', + 'rpst' => 'application/vnd.nokia.radio-preset', + 'rq' => 'application/sparql-query', + 'rs' => 'application/rls-services+xml', + 'rsd' => 'application/rsd+xml', + 'rss' => 'application/rss+xml', + 'rtf' => 'application/rtf', + 'rtx' => 'text/richtext', + 's' => 'text/x-asm', + 's3m' => 'audio/s3m', + 'saf' => 'application/vnd.yamaha.smaf-audio', + 'sbml' => 'application/sbml+xml', + 'sc' => 'application/vnd.ibm.secure-container', + 'scd' => 'application/x-msschedule', + 'scm' => 'application/vnd.lotus-screencam', + 'scq' => 'application/scvp-cv-request', + 'scs' => 'application/scvp-cv-response', + 'scurl' => 'text/vnd.curl.scurl', + 'sda' => 'application/vnd.stardivision.draw', + 'sdc' => 'application/vnd.stardivision.calc', + 'sdd' => 'application/vnd.stardivision.impress', + 'sdkd' => 'application/vnd.solent.sdkm+xml', + 'sdkm' => 'application/vnd.solent.sdkm+xml', + 'sdp' => 'application/sdp', + 'sdw' => 'application/vnd.stardivision.writer', + 'see' => 'application/vnd.seemail', + 'seed' => 'application/vnd.fdsn.seed', + 'sema' => 'application/vnd.sema', + 'semd' => 'application/vnd.semd', + 'semf' => 'application/vnd.semf', + 'ser' => 'application/java-serialized-object', + 'setpay' => 'application/set-payment-initiation', + 'setreg' => 'application/set-registration-initiation', + 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data', + 'sfs' => 'application/vnd.spotfire.sfs', + 'sfv' => 'text/x-sfv', + 'sgi' => 'image/sgi', + 'sgl' => 'application/vnd.stardivision.writer-global', + 'sgm' => 'text/sgml', + 'sgml' => 'text/sgml', + 'sh' => 'application/x-sh', + 'shar' => 'application/x-shar', + 'shf' => 'application/shf+xml', + 'sid' => 'image/x-mrsid-image', + 'sig' => 'application/pgp-signature', + 'sil' => 'audio/silk', + 'silo' => 'model/mesh', + 'sis' => 'application/vnd.symbian.install', + 'sisx' => 'application/vnd.symbian.install', + 'sit' => 'application/x-stuffit', + 'sitx' => 'application/x-stuffitx', + 'skd' => 'application/vnd.koan', + 'skm' => 'application/vnd.koan', + 'skp' => 'application/vnd.koan', + 'skt' => 'application/vnd.koan', + 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12', + 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', + 'slt' => 'application/vnd.epson.salt', + 'sm' => 'application/vnd.stepmania.stepchart', + 'smf' => 'application/vnd.stardivision.math', + 'smi' => 'application/smil+xml', + 'smil' => 'application/smil+xml', + 'smv' => 'video/x-smv', + 'smzip' => 'application/vnd.stepmania.package', + 'snd' => 'audio/basic', + 'snf' => 'application/x-font-snf', + 'so' => 'application/octet-stream', + 'spc' => 'application/x-pkcs7-certificates', + 'spf' => 'application/vnd.yamaha.smaf-phrase', + 'spl' => 'application/x-futuresplash', + 'spot' => 'text/vnd.in3d.spot', + 'spp' => 'application/scvp-vp-response', + 'spq' => 'application/scvp-vp-request', + 'spx' => 'audio/ogg', + 'sql' => 'application/x-sql', + 'src' => 'application/x-wais-source', + 'srt' => 'application/x-subrip', + 'sru' => 'application/sru+xml', + 'srx' => 'application/sparql-results+xml', + 'ssdl' => 'application/ssdl+xml', + 'sse' => 'application/vnd.kodak-descriptor', + 'ssf' => 'application/vnd.epson.ssf', + 'ssml' => 'application/ssml+xml', + 'st' => 'application/vnd.sailingtracker.track', + 'stc' => 'application/vnd.sun.xml.calc.template', + 'std' => 'application/vnd.sun.xml.draw.template', + 'stf' => 'application/vnd.wt.stf', + 'sti' => 'application/vnd.sun.xml.impress.template', + 'stk' => 'application/hyperstudio', + 'stl' => 'application/vnd.ms-pki.stl', + 'str' => 'application/vnd.pg.format', + 'stw' => 'application/vnd.sun.xml.writer.template', + 'sub' => 'text/vnd.dvb.subtitle', + 'sus' => 'application/vnd.sus-calendar', + 'susp' => 'application/vnd.sus-calendar', + 'sv4cpio' => 'application/x-sv4cpio', + 'sv4crc' => 'application/x-sv4crc', + 'svc' => 'application/vnd.dvb.service', + 'svd' => 'application/vnd.svd', + 'svg' => 'image/svg+xml', + 'svgz' => 'image/svg+xml', + 'swa' => 'application/x-director', + 'swf' => 'application/x-shockwave-flash', + 'swi' => 'application/vnd.aristanetworks.swi', + 'sxc' => 'application/vnd.sun.xml.calc', + 'sxd' => 'application/vnd.sun.xml.draw', + 'sxg' => 'application/vnd.sun.xml.writer.global', + 'sxi' => 'application/vnd.sun.xml.impress', + 'sxm' => 'application/vnd.sun.xml.math', + 'sxw' => 'application/vnd.sun.xml.writer', + 't' => 'text/troff', + 't3' => 'application/x-t3vm-image', + 'taglet' => 'application/vnd.mynfc', + 'tao' => 'application/vnd.tao.intent-module-archive', + 'tar' => 'application/x-tar', + 'tcap' => 'application/vnd.3gpp2.tcap', + 'tcl' => 'application/x-tcl', + 'teacher' => 'application/vnd.smart.teacher', + 'tei' => 'application/tei+xml', + 'teicorpus' => 'application/tei+xml', + 'tex' => 'application/x-tex', + 'texi' => 'application/x-texinfo', + 'texinfo' => 'application/x-texinfo', + 'text' => 'text/plain', + 'tfi' => 'application/thraud+xml', + 'tfm' => 'application/x-tex-tfm', + 'tga' => 'image/x-tga', + 'thmx' => 'application/vnd.ms-officetheme', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'tmo' => 'application/vnd.tmobile-livetv', + 'torrent' => 'application/x-bittorrent', + 'tpl' => 'application/vnd.groove-tool-template', + 'tpt' => 'application/vnd.trid.tpt', + 'tr' => 'text/troff', + 'tra' => 'application/vnd.trueapp', + 'trm' => 'application/x-msterminal', + 'tsd' => 'application/timestamped-data', + 'tsv' => 'text/tab-separated-values', + 'ttc' => 'application/x-font-ttf', + 'ttf' => 'application/x-font-ttf', + 'ttl' => 'text/turtle', + 'twd' => 'application/vnd.simtech-mindmapper', + 'twds' => 'application/vnd.simtech-mindmapper', + 'txd' => 'application/vnd.genomatix.tuxedo', + 'txf' => 'application/vnd.mobius.txf', + 'txt' => 'text/plain', + 'u32' => 'application/x-authorware-bin', + 'udeb' => 'application/x-debian-package', + 'ufd' => 'application/vnd.ufdl', + 'ufdl' => 'application/vnd.ufdl', + 'ulx' => 'application/x-glulx', + 'umj' => 'application/vnd.umajin', + 'unityweb' => 'application/vnd.unity', + 'uoml' => 'application/vnd.uoml+xml', + 'uri' => 'text/uri-list', + 'uris' => 'text/uri-list', + 'urls' => 'text/uri-list', + 'ustar' => 'application/x-ustar', + 'utz' => 'application/vnd.uiq.theme', + 'uu' => 'text/x-uuencode', + 'uva' => 'audio/vnd.dece.audio', + 'uvd' => 'application/vnd.dece.data', + 'uvf' => 'application/vnd.dece.data', + 'uvg' => 'image/vnd.dece.graphic', + 'uvh' => 'video/vnd.dece.hd', + 'uvi' => 'image/vnd.dece.graphic', + 'uvm' => 'video/vnd.dece.mobile', + 'uvp' => 'video/vnd.dece.pd', + 'uvs' => 'video/vnd.dece.sd', + 'uvt' => 'application/vnd.dece.ttml+xml', + 'uvu' => 'video/vnd.uvvu.mp4', + 'uvv' => 'video/vnd.dece.video', + 'uvva' => 'audio/vnd.dece.audio', + 'uvvd' => 'application/vnd.dece.data', + 'uvvf' => 'application/vnd.dece.data', + 'uvvg' => 'image/vnd.dece.graphic', + 'uvvh' => 'video/vnd.dece.hd', + 'uvvi' => 'image/vnd.dece.graphic', + 'uvvm' => 'video/vnd.dece.mobile', + 'uvvp' => 'video/vnd.dece.pd', + 'uvvs' => 'video/vnd.dece.sd', + 'uvvt' => 'application/vnd.dece.ttml+xml', + 'uvvu' => 'video/vnd.uvvu.mp4', + 'uvvv' => 'video/vnd.dece.video', + 'uvvx' => 'application/vnd.dece.unspecified', + 'uvvz' => 'application/vnd.dece.zip', + 'uvx' => 'application/vnd.dece.unspecified', + 'uvz' => 'application/vnd.dece.zip', + 'vcard' => 'text/vcard', + 'vcd' => 'application/x-cdlink', + 'vcf' => 'text/x-vcard', + 'vcg' => 'application/vnd.groove-vcard', + 'vcs' => 'text/x-vcalendar', + 'vcx' => 'application/vnd.vcx', + 'vis' => 'application/vnd.visionary', + 'viv' => 'video/vnd.vivo', + 'vob' => 'video/x-ms-vob', + 'vor' => 'application/vnd.stardivision.writer', + 'vox' => 'application/x-authorware-bin', + 'vrml' => 'model/vrml', + 'vsd' => 'application/vnd.visio', + 'vsf' => 'application/vnd.vsf', + 'vss' => 'application/vnd.visio', + 'vst' => 'application/vnd.visio', + 'vsw' => 'application/vnd.visio', + 'vtu' => 'model/vnd.vtu', + 'vxml' => 'application/voicexml+xml', + 'w3d' => 'application/x-director', + 'wad' => 'application/x-doom', + 'wav' => 'audio/x-wav', + 'wax' => 'audio/x-ms-wax', + 'wbmp' => 'image/vnd.wap.wbmp', + 'wbs' => 'application/vnd.criticaltools.wbs+xml', + 'wbxml' => 'application/vnd.wap.wbxml', + 'wcm' => 'application/vnd.ms-works', + 'wdb' => 'application/vnd.ms-works', + 'wdp' => 'image/vnd.ms-photo', + 'weba' => 'audio/webm', + 'webm' => 'video/webm', + 'webp' => 'image/webp', + 'wg' => 'application/vnd.pmi.widget', + 'wgt' => 'application/widget', + 'wks' => 'application/vnd.ms-works', + 'wm' => 'video/x-ms-wm', + 'wma' => 'audio/x-ms-wma', + 'wmd' => 'application/x-ms-wmd', + 'wmf' => 'application/x-msmetafile', + 'wml' => 'text/vnd.wap.wml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'wmls' => 'text/vnd.wap.wmlscript', + 'wmlsc' => 'application/vnd.wap.wmlscriptc', + 'wmv' => 'video/x-ms-wmv', + 'wmx' => 'video/x-ms-wmx', + 'wmz' => 'application/x-msmetafile', + 'woff' => 'application/font-woff', + 'wpd' => 'application/vnd.wordperfect', + 'wpl' => 'application/vnd.ms-wpl', + 'wps' => 'application/vnd.ms-works', + 'wqd' => 'application/vnd.wqd', + 'wri' => 'application/x-mswrite', + 'wrl' => 'model/vrml', + 'wsdl' => 'application/wsdl+xml', + 'wspolicy' => 'application/wspolicy+xml', + 'wtb' => 'application/vnd.webturbo', + 'wvx' => 'video/x-ms-wvx', + 'x32' => 'application/x-authorware-bin', + 'x3d' => 'model/x3d+xml', + 'x3db' => 'model/x3d+binary', + 'x3dbz' => 'model/x3d+binary', + 'x3dv' => 'model/x3d+vrml', + 'x3dvz' => 'model/x3d+vrml', + 'x3dz' => 'model/x3d+xml', + 'xaml' => 'application/xaml+xml', + 'xap' => 'application/x-silverlight-app', + 'xar' => 'application/vnd.xara', + 'xbap' => 'application/x-ms-xbap', + 'xbd' => 'application/vnd.fujixerox.docuworks.binder', + 'xbm' => 'image/x-xbitmap', + 'xdf' => 'application/xcap-diff+xml', + 'xdm' => 'application/vnd.syncml.dm+xml', + 'xdp' => 'application/vnd.adobe.xdp+xml', + 'xdssc' => 'application/dssc+xml', + 'xdw' => 'application/vnd.fujixerox.docuworks', + 'xenc' => 'application/xenc+xml', + 'xer' => 'application/patch-ops-error+xml', + 'xfdf' => 'application/vnd.adobe.xfdf', + 'xfdl' => 'application/vnd.xfdl', + 'xht' => 'application/xhtml+xml', + 'xhtml' => 'application/xhtml+xml', + 'xhvml' => 'application/xv+xml', + 'xif' => 'image/vnd.xiff', + 'xla' => 'application/vnd.ms-excel', + 'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12', + 'xlc' => 'application/vnd.ms-excel', + 'xlf' => 'application/x-xliff+xml', + 'xlm' => 'application/vnd.ms-excel', + 'xls' => 'application/vnd.ms-excel', + 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12', + 'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xlt' => 'application/vnd.ms-excel', + 'xltm' => 'application/vnd.ms-excel.template.macroenabled.12', + 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', + 'xlw' => 'application/vnd.ms-excel', + 'xm' => 'audio/xm', + 'xml' => 'application/xml', + 'xo' => 'application/vnd.olpc-sugar', + 'xop' => 'application/xop+xml', + 'xpi' => 'application/x-xpinstall', + 'xpl' => 'application/xproc+xml', + 'xpm' => 'image/x-xpixmap', + 'xpr' => 'application/vnd.is-xpr', + 'xps' => 'application/vnd.ms-xpsdocument', + 'xpw' => 'application/vnd.intercon.formnet', + 'xpx' => 'application/vnd.intercon.formnet', + 'xsl' => 'application/xml', + 'xslt' => 'application/xslt+xml', + 'xsm' => 'application/vnd.syncml+xml', + 'xspf' => 'application/xspf+xml', + 'xul' => 'application/vnd.mozilla.xul+xml', + 'xvm' => 'application/xv+xml', + 'xvml' => 'application/xv+xml', + 'xwd' => 'image/x-xwindowdump', + 'xyz' => 'chemical/x-xyz', + 'xz' => 'application/x-xz', + 'yang' => 'application/yang', + 'yin' => 'application/yin+xml', + 'z1' => 'application/x-zmachine', + 'z2' => 'application/x-zmachine', + 'z3' => 'application/x-zmachine', + 'z4' => 'application/x-zmachine', + 'z5' => 'application/x-zmachine', + 'z6' => 'application/x-zmachine', + 'z7' => 'application/x-zmachine', + 'z8' => 'application/x-zmachine', + 'zaz' => 'application/vnd.zzazz.deck+xml', + 'zip' => 'application/zip', + 'zir' => 'application/vnd.zul', + 'zirz' => 'application/vnd.zul', + 'zmm' => 'application/vnd.handheld-entertainment+xml', + '123' => 'application/vnd.lotus-1-2-3', +); diff --git a/tools/swift/preferences.php b/tools/swift/preferences.php new file mode 100644 index 000000000..e51950148 --- /dev/null +++ b/tools/swift/preferences.php @@ -0,0 +1,25 @@ +setCharset('utf-8'); + +// Without these lines the default caching mechanism is "array" but this uses a lot of memory. +// If possible, use a disk cache to enable attaching large attachments etc. +// You can override the default temporary directory by setting the TMPDIR environment variable. +if (@is_writable($tmpDir = sys_get_temp_dir())) { + $preferences->setTempDir($tmpDir)->setCacheType('disk'); +} + +// this should only be done when Swiftmailer won't use the native QP content encoder +// see mime_deps.php +if (version_compare(phpversion(), '5.4.7', '<')) { + $preferences->setQPDotEscape(false); +} diff --git a/tools/swift/swift_init.php b/tools/swift/swift_init.php new file mode 100644 index 000000000..5c4bae4f4 --- /dev/null +++ b/tools/swift/swift_init.php @@ -0,0 +1,28 @@ + 'application/x-php', + 'php3' => 'application/x-php', + 'php4' => 'application/x-php', + 'php5' => 'application/x-php', + 'zip' => 'application/zip', + 'gif' => 'image/gif', + 'png' => 'image/png', + 'css' => 'text/css', + 'js' => 'text/javascript', + 'txt' => 'text/plain', + 'xml' => 'text/xml', + 'aif' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'avi' => 'video/avi', + 'bmp' => 'image/bmp', + 'bz2' => 'application/x-bz2', + 'csv' => 'text/csv', + 'dmg' => 'application/x-apple-diskimage', + 'doc' => 'application/msword', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'eml' => 'message/rfc822', + 'aps' => 'application/postscript', + 'exe' => 'application/x-ms-dos-executable', + 'flv' => 'video/x-flv', + 'gz' => 'application/x-gzip', + 'hqx' => 'application/stuffit', + 'htm' => 'text/html', + 'html' => 'text/html', + 'jar' => 'application/x-java-archive', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'm3u' => 'audio/x-mpegurl', + 'm4a' => 'audio/mp4', + 'mdb' => 'application/x-msaccess', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mov' => 'video/quicktime', + 'mp3' => 'audio/mpeg', + 'mp4' => 'video/mp4', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'odg' => 'vnd.oasis.opendocument.graphics', + 'odp' => 'vnd.oasis.opendocument.presentation', + 'odt' => 'vnd.oasis.opendocument.text', + 'ods' => 'vnd.oasis.opendocument.spreadsheet', + 'ogg' => 'audio/ogg', + 'pdf' => 'application/pdf', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'ps' => 'application/postscript', + 'rar' => 'application/x-rar-compressed', + 'rtf' => 'application/rtf', + 'tar' => 'application/x-tar', + 'sit' => 'application/x-stuffit', + 'svg' => 'image/svg+xml', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'ttf' => 'application/x-font-truetype', + 'vcf' => 'text/x-vcard', + 'wav' => 'audio/wav', + 'wma' => 'audio/x-ms-wma', + 'wmv' => 'audio/x-ms-wmv', + 'xls' => 'application/excel', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xml' => 'application/xml', + ); + + // wrap array for generating file + foreach ($valid_mime_types_preset as $extension => $mime_type) { + // generate array for mimetype to extension resolver (only first match) + $valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'"; + } + + // collect extensions + $valid_extensions = array(); + + // all extensions from second match + foreach ($matches[2] as $i => $extensions) { + // explode multiple extensions from string + $extensions = explode(" ", strtolower($extensions)); + + // force array for foreach + if (!is_array($extensions)) { + $extensions = array($extensions); + } + + foreach ($extensions as $extension) { + // get mime type + $mime_type = $matches[1][$i]; + + // check if string length lower than 10 + if (strlen($extension) < 10) { + // add extension + $valid_extensions[] = $extension; + + if (!isset($valid_mime_types[$mime_type])) { + // generate array for mimetype to extension resolver (only first match) + $valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'"; + } + } + } + } + } + + $xml = simplexml_load_string($mime_xml); + + foreach ($xml as $node) { + // check if there is no pattern + if (!isset($node->glob["pattern"])) { + continue; + } + + // get all matching extensions from match + foreach ((array) $node->glob["pattern"] as $extension) { + // skip none glob extensions + if (strpos($extension, '.') === FALSE) { + continue; + } + + // remove get only last part + $extension = explode('.', strtolower($extension)); + $extension = end($extension); + + // maximum length in database column + if (strlen($extension) <= 9) { + $valid_extensions[] = $extension; + } + } + + if (isset($node->glob["pattern"][0])) { + // mime type + $mime_type = strtolower((string) $node["type"]); + + // get first extension + $extension = strtolower(trim($node->glob["ddpattern"][0], '*.')); + + // skip none glob extensions and check if string length between 1 and 10 + if (strpos($extension, '.') !== FALSE || strlen($extension) < 1 || strlen($extension) > 9) { + continue; + } + + // check if string length lower than 10 + if (!isset($valid_mime_types[$mime_type])) { + // generate array for mimetype to extension resolver (only first match) + $valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'"; + } + } + } + + // full list of valid extensions only + $valid_mime_types = array_unique($valid_mime_types); + ksort($valid_mime_types); + + // combine mime types and extensions array + $output = "$preamble\$swift_mime_types = array(\n ".implode($valid_mime_types, ",\n ")."\n);"; + + // write mime_types.php config file + @file_put_contents('./mime_types.php', $output); +} + +generateUpToDateMimeArray(); diff --git a/tools/tar/Archive_Tar.php b/tools/tar/Archive_Tar.php index 5647bfdb8..30557ebcb 100644 --- a/tools/tar/Archive_Tar.php +++ b/tools/tar/Archive_Tar.php @@ -131,7 +131,7 @@ class Archive_Tar extends PEAR * * @access public */ - function __construct($p_tarname, $p_compress = null) + function __construct($p_tarname, $p_compress = null) { $this->Archive_Tar($p_tarname, $p_compress); } @@ -2116,13 +2116,6 @@ class Archive_Tar extends PEAR ); return false; } - // By webkul to change powwered by from prrestashop to webkul - if (strpos($v_header['filename'], 'mails') !== false) { - $fileContent = file_get_contents($v_header['filename']); - $fileContent = str_replace("http://www.prestashop.com/", "https://webkul.com", $fileContent); - $fileContent = str_replace("PrestaShop", "Webkul", $fileContent); - file_put_contents($v_header['filename'], $fileContent); - } } } else { $this->_jumpBlock(ceil(($v_header['size'] / 512))); diff --git a/tools/tar/LICENSE b/tools/tar/LICENSE new file mode 100644 index 000000000..b7de6e186 --- /dev/null +++ b/tools/tar/LICENSE @@ -0,0 +1,165 @@ +GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + +0. Additional Definitions. + +As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + +"The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + +An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + +A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + +The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + +The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + +1. Exception to Section 3 of the GNU GPL. + +You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + +2. Conveying Modified Versions. + +If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + +a) under this License, provided that you make a good faith effort to +ensure that, in the event an Application does not supply the +function or data, the facility still operates, and performs +whatever part of its purpose remains meaningful, or + +b) under the GNU GPL, with none of the additional permissions of +this License applicable to that copy. + +3. Object Code Incorporating Material from Library Header Files. + +The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + +a) Give prominent notice with each copy of the object code that the +Library is used in it and that the Library and its use are +covered by this License. + +b) Accompany the object code with a copy of the GNU GPL and this license +document. + +4. Combined Works. + +You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + +a) Give prominent notice with each copy of the Combined Work that +the Library is used in it and that the Library and its use are +covered by this License. + +b) Accompany the Combined Work with a copy of the GNU GPL and this license +document. + +c) For a Combined Work that displays copyright notices during +execution, include the copyright notice for the Library among +these notices, as well as a reference directing the user to the +copies of the GNU GPL and this license document. + +d) Do one of the following: + +0) Convey the Minimal Corresponding Source under the terms of this +License, and the Corresponding Application Code in a form +suitable for, and under terms that permit, the user to +recombine or relink the Application with a modified version of +the Linked Version to produce a modified Combined Work, in the +manner specified by section 6 of the GNU GPL for conveying +Corresponding Source. + +1) Use a suitable shared library mechanism for linking with the +Library. A suitable mechanism is one that (a) uses at run time +a copy of the Library already present on the user's computer +system, and (b) will operate properly with a modified version +of the Library that is interface-compatible with the Linked +Version. + +e) Provide Installation Information, but only if you would otherwise +be required to provide such information under section 6 of the +GNU GPL, and only to the extent that such information is +necessary to install and execute a modified version of the +Combined Work produced by recombining or relinking the +Application with a modified version of the Linked Version. (If +you use option 4d0, the Installation Information must accompany +the Minimal Corresponding Source and Corresponding Application +Code. If you use option 4d1, you must provide the Installation +Information in the manner specified by section 6 of the GNU GPL +for conveying Corresponding Source.) + +5. Combined Libraries. + +You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + +a) Accompany the combined library with a copy of the same work based +on the Library, uncombined with any other library facilities, +conveyed under the terms of this License. + +b) Give prominent notice with the combined library that part of it +is a work based on the Library, and explaining where to find the +accompanying uncombined form of the same work. + +6. Revised Versions of the GNU Lesser General Public License. + +The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/tools/tar/index.php b/tools/tar/index.php index 8412b6434..df55e1000 100644 --- a/tools/tar/index.php +++ b/tools/tar/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/tools/tcpdf/cache/index.php b/tools/tcpdf/cache/index.php index 66ba34df4..d295cc517 100644 --- a/tools/tcpdf/cache/index.php +++ b/tools/tcpdf/cache/index.php @@ -1,35 +1,35 @@ - -* @copyright 2007-2015 PrestaShop SA -* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*/ - -header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); -header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); - -header('Cache-Control: no-store, no-cache, must-revalidate'); -header('Cache-Control: post-check=0, pre-check=0', false); -header('Pragma: no-cache'); - -header('Location: ../../../'); -exit; + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../../../'); +exit; diff --git a/tools/tcpdf/config/index.php b/tools/tcpdf/config/index.php index 66ba34df4..d295cc517 100644 --- a/tools/tcpdf/config/index.php +++ b/tools/tcpdf/config/index.php @@ -1,35 +1,35 @@ - -* @copyright 2007-2015 PrestaShop SA -* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*/ - -header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); -header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); - -header('Cache-Control: no-store, no-cache, must-revalidate'); -header('Cache-Control: post-check=0, pre-check=0', false); -header('Pragma: no-cache'); - -header('Location: ../../../'); -exit; + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../../../'); +exit; diff --git a/tools/tcpdf/config/lang/bul.php b/tools/tcpdf/config/lang/bul.php index a65f00310..e6f3109bf 100644 --- a/tools/tcpdf/config/lang/bul.php +++ b/tools/tcpdf/config/lang/bul.php @@ -1,48 +1,48 @@ - -* @copyright 2007-2015 PrestaShop SA -* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*/ - -header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); -header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); - -header('Cache-Control: no-store, no-cache, must-revalidate'); -header('Cache-Control: post-check=0, pre-check=0', false); -header('Pragma: no-cache'); - -header('Location: ../../../../'); -exit; + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../../../../'); +exit; diff --git a/tools/tcpdf/fonts/index.php b/tools/tcpdf/fonts/index.php index 66ba34df4..d295cc517 100644 --- a/tools/tcpdf/fonts/index.php +++ b/tools/tcpdf/fonts/index.php @@ -1,35 +1,35 @@ - -* @copyright 2007-2015 PrestaShop SA -* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*/ - -header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); -header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); - -header('Cache-Control: no-store, no-cache, must-revalidate'); -header('Cache-Control: post-check=0, pre-check=0', false); -header('Pragma: no-cache'); - -header('Location: ../../../'); -exit; + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../../../'); +exit; diff --git a/tools/tcpdf/index.php b/tools/tcpdf/index.php index 91fa49fbb..aca71cfae 100644 --- a/tools/tcpdf/index.php +++ b/tools/tcpdf/index.php @@ -1,35 +1,35 @@ - -* @copyright 2007-2015 PrestaShop SA -* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*/ - -header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); -header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); - -header('Cache-Control: no-store, no-cache, must-revalidate'); -header('Cache-Control: post-check=0, pre-check=0', false); -header('Pragma: no-cache'); - -header('Location: ../../'); -exit; + +* @copyright 2007-2017 PrestaShop SA +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../../'); +exit; diff --git a/tools/tcpdf/tcpdf.php b/tools/tcpdf/tcpdf.php index 976394e68..66308061e 100644 --- a/tools/tcpdf/tcpdf.php +++ b/tools/tcpdf/tcpdf.php @@ -76,7 +76,7 @@ // dullus for text Justification. // Bob Vincent (pillarsdotnet@users.sourceforge.net) for
  • value attribute. // Patrick Benny for text stretch suggestion on Cell(). -// Johannes G�ntert for JavaScript support. +// Johannes Güntert for JavaScript support. // Denis Van Nuffelen for Dynamic Form. // Jacek Czekaj for multibyte justification // Anthony Ferrara for the reintroduction of legacy image methods. @@ -87,7 +87,7 @@ // Mohamad Ali Golkar, Saleh AlMatrafe, Charles Abbott for Arabic and Persian support. // Moritz Wagner and Andreas Wurmser for graphic functions. // Andrew Whitehead for core fonts support. -// Esteban Jo�l Mar�n for OpenType font conversion. +// Esteban Joël Marín for OpenType font conversion. // Teus Hagen for several suggestions and fixes. // Yukihiro Nakadaira for CID-0 CJK fonts fixes. // Kosmas Papachristos for some CSS improvements. @@ -141,7 +141,7 @@ * @version 5.9.179 */ -/* +/* PrestaShop all calls to file_exists replaced by Tools::file_exists_no_cache() */ @@ -7060,7 +7060,7 @@ class TCPDF { * @param $cellpadding (float) Internal cell padding, if empty uses default cell padding. * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
    • 0: no border (default)
    • 1: frame
    or a string containing some or all of the following characters (in any order):
    • L: left
    • T: top
    • R: right
    • B: bottom
    or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) * @return float Return the minimal height needed for multicell method for printing the $txt param. - * @author Alexander Escalona Fern�ndez, Nicola Asuni + * @author Alexander Escalona Fernández, Nicola Asuni * @public * @since 4.5.011 */ @@ -7167,7 +7167,7 @@ class TCPDF { * @param $cellpadding (float) Internal cell padding, if empty uses default cell padding. * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
    • 0: no border (default)
    • 1: frame
    or a string containing some or all of the following characters (in any order):
    • L: left
    • T: top
    • R: right
    • B: bottom
    or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) * @return float Return the minimal height needed for multicell method for printing the $txt param. - * @author Nicola Asuni, Alexander Escalona Fern�ndez + * @author Nicola Asuni, Alexander Escalona Fernández * @public */ public function getStringHeight($w, $txt, $reseth=false, $autopadding=true, $cellpadding='', $border=0) { @@ -15264,7 +15264,7 @@ class TCPDF { } /** - * Append a cubic B�zier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using (x1, y1) and (x2, y2) as the B�zier control points. + * Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using (x1, y1) and (x2, y2) as the Bézier control points. * The new current point shall be (x3, y3). * @param $x1 (float) Abscissa of control point 1. * @param $y1 (float) Ordinate of control point 1. @@ -15280,7 +15280,7 @@ class TCPDF { } /** - * Append a cubic B�zier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using the current point and (x2, y2) as the B�zier control points. + * Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using the current point and (x2, y2) as the Bézier control points. * The new current point shall be (x3, y3). * @param $x2 (float) Abscissa of control point 2. * @param $y2 (float) Ordinate of control point 2. @@ -15294,7 +15294,7 @@ class TCPDF { } /** - * Append a cubic B�zier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using (x1, y1) and (x3, y3) as the B�zier control points. + * Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using (x1, y1) and (x3, y3) as the Bézier control points. * The new current point shall be (x3, y3). * @param $x1 (float) Abscissa of control point 1. * @param $y1 (float) Ordinate of control point 1. @@ -16676,7 +16676,7 @@ class TCPDF { /** * Create a javascript PDF string. * @protected - * @author Johannes G�ntert, Nicola Asuni + * @author Johannes Güntert, Nicola Asuni * @since 5.9.098 (2011-06-23) */ protected function _putdests() { @@ -16875,7 +16875,7 @@ class TCPDF { * Adds a javascript * @param $script (string) Javascript code * @public - * @author Johannes G�ntert, Nicola Asuni + * @author Johannes Güntert, Nicola Asuni * @since 2.1.002 (2008-02-12) */ public function IncludeJS($script) { @@ -16904,7 +16904,7 @@ class TCPDF { /** * Create a javascript PDF string. * @protected - * @author Johannes G�ntert, Nicola Asuni + * @author Johannes Güntert, Nicola Asuni * @since 2.1.002 (2008-02-12) */ protected function _putjavascript() { @@ -16994,15 +16994,14 @@ class TCPDF { $k = $this->k; $this->javascript .= sprintf("f".$name."=this.addField('%s','%s',%u,[%F,%F,%F,%F]);", $name, $type, $this->PageNo()-1, $x*$k, ($this->h-$y)*$k+1, ($x+$w)*$k, ($this->h-$y-$h)*$k+1)."\n"; $this->javascript .= 'f'.$name.'.textSize='.$this->FontSizePt.";\n"; - foreach($prop as $key => $val) { + while (list($key, $val) = each($prop)) { if (strcmp(substr($key, -5), 'Color') == 0) { - $val = TCPDF_COLORS::_JScolor($val); + $val = $this->_JScolor($val); } else { $val = "'".$val."'"; } $this->javascript .= 'f'.$name.'.'.$key.'='.$val.";\n"; } - if ($this->rtl) { $this->x -= $w; } else { @@ -18935,7 +18934,7 @@ class TCPDF { * @param $col1 (array) first color (Grayscale, RGB or CMYK components). * @param $col2 (array) second color (Grayscale, RGB or CMYK components). * @param $coords (array) array of the form (x1, y1, x2, y2) which defines the gradient vector (see linear_gradient_coords.jpg). The default value is from left to right (x1=0, y1=0, x2=1, y2=0). - * @author Andreas W�rmser, Nicola Asuni + * @author Andreas Würmser, Nicola Asuni * @since 3.1.000 (2008-06-09) * @public */ @@ -18953,7 +18952,7 @@ class TCPDF { * @param $col1 (array) first color (Grayscale, RGB or CMYK components). * @param $col2 (array) second color (Grayscale, RGB or CMYK components). * @param $coords (array) array of the form (fx, fy, cx, cy, r) where (fx, fy) is the starting point of the gradient with color1, (cx, cy) is the center of the circle with color2, and r is the radius of the circle (see radial_gradient_coords.jpg). (fx, fy) should be inside the circle, otherwise some areas will not be defined. - * @author Andreas W�rmser, Nicola Asuni + * @author Andreas Würmser, Nicola Asuni * @since 3.1.000 (2008-06-09) * @public */ @@ -18976,7 +18975,7 @@ class TCPDF { * @param $coords_min (array) minimum value used by the coordinates. If a coordinate's value is smaller than this it will be cut to coords_min. default: 0 * @param $coords_max (array) maximum value used by the coordinates. If a coordinate's value is greater than this it will be cut to coords_max. default: 1 * @param $antialias (boolean) A flag indicating whether to filter the shading function to prevent aliasing artifacts. - * @author Andreas W�rmser, Nicola Asuni + * @author Andreas Würmser, Nicola Asuni * @since 3.1.000 (2008-06-09) * @public */ @@ -19068,7 +19067,7 @@ class TCPDF { * @param $y (float) ordinate of the top left corner of the rectangle. * @param $w (float) width of the rectangle. * @param $h (float) height of the rectangle. - * @author Andreas W�rmser, Nicola Asuni + * @author Andreas Würmser, Nicola Asuni * @since 3.1.000 (2008-06-09) * @protected */ @@ -20577,19 +20576,19 @@ class TCPDF { // remove empty blocks $cssdata = preg_replace('/([^\}\{]+)\{\}/', '', $cssdata); // replace media type parenthesis - $cssdata = preg_replace('/@media[\s]+([^\{]*)\{/i', '@media \\1�', $cssdata); - $cssdata = preg_replace('/\}\}/si', '}�', $cssdata); + $cssdata = preg_replace('/@media[\s]+([^\{]*)\{/i', '@media \\1§', $cssdata); + $cssdata = preg_replace('/\}\}/si', '}§', $cssdata); // trim string $cssdata = trim($cssdata); // find media blocks (all, braille, embossed, handheld, print, projection, screen, speech, tty, tv) $cssblocks = array(); $matches = array(); - if (preg_match_all('/@media[\s]+([^\�]*)�([^�]*)�/i', $cssdata, $matches) > 0) { + if (preg_match_all('/@media[\s]+([^\§]*)§([^§]*)§/i', $cssdata, $matches) > 0) { foreach ($matches[1] as $key => $type) { $cssblocks[$type] = $matches[2][$key]; } // remove media blocks - $cssdata = preg_replace('/@media[\s]+([^\�]*)�([^�]*)�/i', '', $cssdata); + $cssdata = preg_replace('/@media[\s]+([^\§]*)§([^§]*)§/i', '', $cssdata); } // keep 'all' and 'print' media, other media types are discarded if (isset($cssblocks['all']) and !empty($cssblocks['all'])) { @@ -21537,12 +21536,10 @@ class TCPDF { } // get attributes preg_match_all('/([^=\s]*)[\s]*=[\s]*"([^"]*)"/', $element, $attr_array, PREG_PATTERN_ORDER); - $dom[$key]['attribute'] = array(); // reset attribute array - foreach($attr_array[1] as $id => $name) { - $dom[$key]['attribute'][strtolower($name)] = $attr_array[2][$id]; + while (list($id, $name) = each($attr_array[1])) { + $dom[$key]['attribute'][strtolower($name)] = $attr_array[2][$id]; } - if (!empty($css)) { // merge CSS style to current style list($dom[$key]['csssel'], $dom[$key]['cssdata']) = $this->getCSSdataArray($dom, $key, $css); @@ -21553,11 +21550,10 @@ class TCPDF { // get style attributes preg_match_all('/([^;:\s]*):([^;]*)/', $dom[$key]['attribute']['style'], $style_array, PREG_PATTERN_ORDER); $dom[$key]['style'] = array(); // reset style attribute array - foreach($style_array[1] as $id => $name) { - // in case of duplicate attribute the last replace the previous - $dom[$key]['style'][strtolower($name)] = trim($style_array[2][$id]); - } - + while (list($id, $name) = each($style_array[1])) { + // in case of duplicate attribute the last replace the previous + $dom[$key]['style'][strtolower($name)] = trim($style_array[2][$id]); + } // --- get some style attributes --- // text direction if (isset($dom[$key]['style']['direction'])) { @@ -28800,7 +28796,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: } break; } - case 'Q': { // quadratic B�zier curveto + case 'Q': { // quadratic Bézier curveto foreach ($params as $ck => $cp) { $params[$ck] = $cp; if ((($ck + 1) % 4) == 0) { @@ -28826,7 +28822,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: } break; } - case 'T': { // shorthand/smooth quadratic B�zier curveto + case 'T': { // shorthand/smooth quadratic Bézier curveto foreach ($params as $ck => $cp) { $params[$ck] = $cp; if (($ck % 2) != 0) { diff --git a/translations/custom_mails/hotel-booking-cart-data.tpl b/translations/custom_mails/hotel-booking-cart-data.tpl index c79ef93df..d1161a822 100644 --- a/translations/custom_mails/hotel-booking-cart-data.tpl +++ b/translations/custom_mails/hotel-booking-cart-data.tpl @@ -1,114 +1,162 @@ {if isset($list)} {foreach from=$list key=data_k item=data_v} {foreach from=$data_v['date_diff'] key=rm_k item=rm_v} -
  • - - - - - - -
      - - - -  
    -
    - - - - - - -
      - - {$data_v['name']} - -  
    -
    - - - - - - -
      - - - {$data_v['adult']} {l s='Adults'}, {$data_v['children']} {l s='Children'} - - -  
    -
    - - - - - - -
      - - {convertPrice price=$data_v['unit_price']} - -  
    -
    - - - - - - -
      - - {$rm_v['num_rm']} - -  
    -
    - - - - - - -
      - - {$rm_v['data_form']|date_format:"%d-%b-%G"} - -  
    -
    - - - - - - -
      - - {$rm_v['data_to']|date_format:"%d-%b-%G"} - -  
    -
    - - - - - - -
      - - {convertPrice price=$rm_v['amount']} - -  
    -
    + + + + + + +
      + + + +  
    +
    + + + + + + +
      + + {$data_v['name']} + +  
    +
    + + + + + + +
      + + + {$data_v['adult']} {l s='Adults'}, {$data_v['children']} {l s='Children'} + + +  
    +
    + + + + + + +
      + + {convertPrice price=$data_v['unit_price']} + +  
    +
    + + + + + + +
      + + {$rm_v['num_rm']} + +  
    +
    + + + + + + +
      + + {$rm_v['data_form']|date_format:"%d-%b-%G"} + +  
    +
    + + + + + + +
      + + {$rm_v['data_to']|date_format:"%d-%b-%G"} + +  
    +
    + + + + + + +
      + + {convertPrice price=$rm_v['amount']} + +  
    +
    +

      {l s='Additional Facilities Details'}

    + + + + {assign var=roomCount value=1} + {foreach $rm_v['extra_demands'] as $roomDemand} + + {assign var=roomCount value=$roomCount+1} + {/foreach} + + + + + {foreach $rm_v['extra_demands'] as $roomDemands} + + {/foreach} + + +
    {l s='Room'} - {$roomCount}
    + {foreach $roomDemands['extra_demands'] as $demand} +

    + + + {$demand['name']} + +    -    + + + {convertPrice price=$demand['price']} + + +

    + {/foreach} +
    +
    + + + + + + + + +
      + + Total Additional Facilities Cost + +  
    + + + + + + + + +
      + + {total_extra_demands} + +  
    + + diff --git a/translations/custom_mails/order_conf.txt b/translations/custom_mails/order_conf.txt index 71ec1ad66..16c0116f5 100644 --- a/translations/custom_mails/order_conf.txt +++ b/translations/custom_mails/order_conf.txt @@ -26,6 +26,9 @@ Total Rooms Cost {total_products} +Total Additional Facilities Cost +{total_extra_demands + DISCOUNTS {total_discounts} diff --git a/translations/en.gzip b/translations/en.gzip index edd644816..855b7c8e1 100644 Binary files a/translations/en.gzip and b/translations/en.gzip differ diff --git a/translations/export/index.php b/translations/export/index.php index 0df79964c..9a99a8662 100644 --- a/translations/export/index.php +++ b/translations/export/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/translations/fr.gzip b/translations/fr.gzip index 2f4615045..ad02c464b 100644 Binary files a/translations/fr.gzip and b/translations/fr.gzip differ diff --git a/translations/index.php b/translations/index.php index 0df79964c..9a99a8662 100644 --- a/translations/index.php +++ b/translations/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/upload/5788caf68893fg.jpg b/upload/5788caf68893fg.jpg deleted file mode 100644 index db494b905..000000000 Binary files a/upload/5788caf68893fg.jpg and /dev/null differ diff --git a/upload/5788cdd3dead0g.jpg b/upload/5788cdd3dead0g.jpg deleted file mode 100644 index db494b905..000000000 Binary files a/upload/5788cdd3dead0g.jpg and /dev/null differ diff --git a/upload/5788ce04e3f2be.png b/upload/5788ce04e3f2be.png deleted file mode 100644 index 7731c9a96..000000000 Binary files a/upload/5788ce04e3f2be.png and /dev/null differ diff --git a/upload/57989eb85bd403.jpg b/upload/57989eb85bd403.jpg deleted file mode 100644 index ab6fcc864..000000000 Binary files a/upload/57989eb85bd403.jpg and /dev/null differ diff --git a/webservice/dispatcher.php b/webservice/dispatcher.php index 3c874bbe0..89568c9c5 100644 --- a/webservice/dispatcher.php +++ b/webservice/dispatcher.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/webservice/index.php b/webservice/index.php index ffdebb428..212276dc9 100644 --- a/webservice/index.php +++ b/webservice/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2015 PrestaShop SA +* @copyright 2007-2017 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */