Opencart 2.0.1.1 bugfix: OC2 extension installer

- Posted in Uncategorized by

Подарок тем пользователям OC2, которые ловят ошибки JSON Error при попытках использовать стандартный установщик расширений в OC2 (при правильно прописанных параметрах в настройках магазина на вкладке FTP).

Ошибок оказалось целых три. Причём не у всех хостеров проявлялось: где-то работает инсталл, где-то нет. Повезло исследовать ситуацию на проблемном хостинге - в результате вылечили опенкартовский инсталлятор расширений.

  • Исправлена ошибка "PHP Warning: Invalid argument supplied for foreach() ... on line 333";
  • Подавление вывода предупреждений "PHP Warning: ftp_mkdir(): Create directory operation failed ... on line 338" (возникает всегда - при попытках создания существующих каталогов, таких как catalog, admin, admin/controller и т.д.);
  • включение пассивного режима FTP для устранения ошибки "PHP Warning: ftp_put(): Illegal PORT command ... on line 345"

Также описано на OpencartJazz: OCJ :: OC2 extension installer bugfix. Там прикреплён изменённый файл, но пока его можно скачать только после регистрации и "покупки" за 0.00. Будет время - починю это неудобство.

Для параноиков: мне даром не нужны ваши регистрации и личная информация. Просто мне удобно обслуживать и обновлять файлы в одном месте. И это место на данный момент -- там.
commit a60015450b6516406dcbf15f5e978b43eeee693f
Author: Ruslan Brest <rb@labtodo.com>
Date:   Thu Dec 25 20:43:39 2014 +0200
    [!] bugfix OC2 extension installer:
    
    - fix "PHP Warning:  Invalid argument supplied for foreach() ... on line 333";
    - prevent "PHP Warning:  ftp_mkdir(): Create directory operation failed ... on line 338"
      (when existing directories created: catalog, admin, admin/controller, etc.);
    - prevent "PHP Warning:  ftp_put(): Illegal PORT command ... on line 345"
diff --git a/public_html/admin/controller/extension/installer.php b/public_html/admin/controller/extension/installer.php
index 55f4517..1755cca 100644
--- a/public_html/admin/controller/extension/installer.php
+++ b/public_html/admin/controller/extension/installer.php
@@ -295,6 +295,10 @@ class ControllerExtensionInstaller extends Controller {
                $login = ftp_login($connection, $this->config->get('config_ftp_username'), $this->config->get('config_ftp_password'));
 
                if ($login) {
+
+                   // Prevent "PHP Warning:  ftp_put(): Illegal PORT command"
+                   ftp_pasv($connection, true);
+
                    if ($this->config->get('config_ftp_root')) {
                        $root = ftp_chdir($connection, $this->config->get('config_ftp_root'));
                    } else {
@@ -330,12 +334,16 @@ class ControllerExtensionInstaller extends Controller {
                                // Basename all the directories because on some servers they don't return the fulll paths.
                                $list_data = array();
                                
-                               foreach ($list as $list) {
-                                   $list_data[] = basename($list);
+                               if (FALSE !== $list) {
+                                   foreach ($list as $list_item) {
+                                       $list_data[] = basename($list_item);
+                                   }
                                }
                                                                
                                if (!in_array(basename($destination), $list_data)) {
-                                   if (!ftp_mkdir($connection, $destination)) {
+                                   // Prevent "PHP Warning:  ftp_mkdir(): Create directory operation failed" when
+                                   // existing directories created
+                                   if (!@ftp_mkdir($connection, $destination)) {
                                        $json['error'] = sprintf($this->language->get('error_ftp_directory'), $destination);
                                    }
                                }

Русский язык / русский перевод для Opencart v2.0 обновление до версий v201x

- Posted in Opencart by

Информация для покупателей модуля.

Доступен перевод для версий Opencart 2.0.1.0 и 2.0.1.1 (v201x).

По ходу его подготовки были замечены мелкие ошибки и опечатки в переводе для 2.0.0.0. Небольшое обновление для 2.0.0.0 планируется завтра. Завтра же наверняка будут ещё некоторые обновления по 2.0.1.1 (остался список тудушек).

Критичных обновлений не будет: в основном косметические правки и мелкие опечатки. Сегодняшняя версия вполне работоспособна и может использоваться.

Единственное что может быть критично - пользователям версий 2.0.0.x в файле catalog/language/russian/mail/customer.php надо изменить строку:

$_['text_welcome'] = 'Добро пожаловать и благодарим Вас за регистрацию в %s!'; // %s - название магазина

Общий список изменений можно видеть в history.txt.