[Помогите] MegaReviews сыпет ошибками

Тема в разделе "OpenCart", создана пользователем skiv14, 22 июн 2018.

  1. skiv14

    skiv14

    Регистрация:
    9 июн 2015
    Сообщения:
    437
    Симпатии:
    180
    Приветствую.
    OcStore 2.1.0.2
    Модуль MegaReviews 1.04 (OC_2.x)

    Нашёл хороший модуль отзывов о товаре. С картинками, рейтингом, видео и прочими плюшками.
    Работает, но оставляет ошибки о недостатке переменных в логах.
    Модуль англоязычный, если поможете победить ошибки, то сделаю авторский уникальный перевод и выложу тут.

    Ошибки в 2 файлах
    Первый файл


    2018-06-22 15:34:05 - PHP Notice: Undefined variable: j in /home/w/w87959f4/***/public_html/catalog/controller/module/megareviews.php on line 111

    Кусок кода. Выделил строку с ошибкой

    Код:
    public function addReview(){
            if (($this->request->server['REQUEST_METHOD'] == 'POST') ) {
                $post=$this->request->post;
                $this->load->model('setting/setting');
                $settings=$this->config->get('megareviews_settings');
                if ($settings['captcha']==1 && (empty($this->session->data['captcha']) || ($this->session->data['captcha'] != $this->request->post['captcha']))) {
                    return;
                }
                for ($i = 0; $i < count($_FILES['file']['name']); $i++) {//loop to get individual element from the array
                    $target_path = "image/catalog/mr/"; //Declaring Path for uploaded images
                    if(!is_dir($target_path)) mkdir($target_path);
                    $validextensions = array("jpeg", "jpg", "png");  //Extensions which are allowed
                    $ext = explode('.', basename($_FILES['file']['name'][$i]));//explode file name from dot(.)
                    $file_extension = end($ext); //store extensions in the variable
                  
                    $target_name = rand(1,10000). $ext[0]. "." . $ext[count($ext) - 1];//set the target path with a new name of image
                    $target_path = $target_path.$target_name;
    111           $j = $j + 1;//increment the number of uploaded images according to the files in array       
                    
                  if (($_FILES["file"]["size"][$i] < 10000000) //Approx. 100kb files can be uploaded.
                            && in_array($file_extension, $validextensions)) {
                        if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $target_path)) {//if file moved to uploads folder
                            $post['files'][]="catalog/mr/".$target_name;
                        } else {//if file was not moved.
                          
                        }
                    }
                }
            }
            $post['status']='0';
            if($settings['approve']==0)$post['status']='1';
            $this->load->model('module/megareviews');
          
            $this->model_module_megareviews->addReview($post);
        }
    
    Второй файл

    2018-06-22 15:34:05 - PHP Notice: Undefined index: author in /home/w/w87959f4/***/public_html/catalog/model/module/megareviews.php on line 4
    2018-06-22 15:34:05 - PHP Notice: Undefined index: title in /home/w/w87959f4/***/public_html/catalog/model/module/megareviews.php on line 4
    2018-06-22 15:34:05 - PHP Notice: Undefined index: rating in /home/w/w87959f4/***/public_html/catalog/model/module/megareviews.php on line 4
    2018-06-22 15:34:05 - PHP Notice: Undefined index: recommend in /home/w/w87959f4/***/public_html/catalog/model/module/megareviews.php on line 4
    2018-06-22 15:34:05 - PHP Notice: Undefined index: options in /home/w/w87959f4/***/public_html/catalog/model/module/megareviews.php on line 6
    2018-06-22 15:34:05 - PHP Warning: Invalid argument supplied for foreach() in /home/w/w87959f4/***/public_html/catalog/model/module/megareviews.php on line 6
    2018-06-22 15:34:05 - PHP Notice: Undefined index: ay in /home/w/w87959f4/***/public_html/catalog/model/module/megareviews.php on line 9
    2018-06-22 15:34:05 - PHP Warning: Invalid argument supplied for foreach() in /home/w/w87959f4/***/public_html/catalog/model/module/megareviews.php on line 9
    2018-06-22 15:34:05 - PHP Notice: Undefined index: files in /home/w/w87959f4/***/public_html/catalog/model/module/megareviews.php on line 11
    2018-06-22 15:34:05 - PHP Warning: Invalid argument supplied for foreach() in /home/w/w87959f4/***/public_html/catalog/model/module/megareviews.php on line 11

    Кусок кода. Подсветил строки с ошибками

    Код:
    1 <?php
    2 class ModelModuleMegareviews extends Model {
    3     public function addReview($data) {
    4        $this->db->query("INSERT INTO " . DB_PREFIX . "megareviews SET author = '" . $this->db->escape($data['author']) . "', title = '" . $this->db->escape($data['title']) . "',videotitle = '" . $this->db->escape($data['videotitle']) . "',videourl= '" . $this->db->escape($data['videourl']) . "', product_id = '" . (int)($data['product_id']) . "', text = '" . $this->db->escape(strip_tags($data['text'])) . "', rating = '" . (int)$data['rating'] . "',recommend = '" . (int)$data['recommend'] . "', status = '" . (int)$data['status'] . "', date_added = NOW()");
    5        $review_id = $this->db->getLastId();
    6        foreach($data['options'] as $id=>$value)
    7            if((int)$value>-1)$this->db->query("INSERT INTO " . DB_PREFIX . "megareviewsoptions_to_review SET option_id = '" . (int)($id) . "', review_id = '" . (int)$review_id . "', value = '" . (int)$value . "' ");
    8        unset($id);unset($value);
    9        foreach($data['ay'] as $id=>$value)
    10           if((int)$value>-1)$this->db->query("INSERT INTO " . DB_PREFIX . "megareviewsays_to_review SET ay_id = '" . (int)($id) . "', review_id = '" . (int)$review_id . "', value = '" . (int)$value . "' ");
    11        foreach($data['files'] as $value)
    12            if((int)$value>-1)$this->db->query("INSERT INTO " . DB_PREFIX . "megareviewsimg_to_review SET url = '" . $this->db->escape($value) . "', review_id = '" . (int)$review_id . "'");
    13       
    14        $this->cache->delete('product');
    15    }
    ps уже было подобное в этой теме, но для 1.5.х
     
  2. Strannik69

    Strannik69

    Регистрация:
    6 окт 2013
    Сообщения:
    180
    Симпатии:
    488
    Попробуйте вариант с русским языком, работает у меня на живом проекте
     
    skiv14 нравится это.
  3. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    803
    Симпатии:
    399
    глянул по коду из первого файла... строку 111:
    Код:
    $j = $j + 1;
    можно спокойно закомментировать, вот так, она не имеет никакой функциональной логики:
    Код:
    //$j = $j + 1;
     
    skiv14 нравится это.
  4. skiv14

    skiv14

    Регистрация:
    9 июн 2015
    Сообщения:
    437
    Симпатии:
    180
    Strannik69, а у Вас какая версия движка ? Какая сборка ?
    Если отзывы заполняю кириллицей, то крутит колесо ожидания и ничего не происходит.
    Если же латиницей, то отзыв сохраняется и в админке те же самые ошибки.
    --- Добавлено, 22 июн 2018 ---
    Baco, именно так. Удалил - пропала ошибка. Ничего не изменилось.
     
  5. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    skiv14, по второму файлу причину ошибок надо искать не в нём, а в контроллере, где вызывается addReview.
    Там должен заполняться массив $data, но как показывают ошибки - этого не происходит.

    Если этот метод вызывается из какого-то стандартного контроллера, куда вызов прописан модификаторами, то, вероятно, какие-то из модификаторов не сработали и не всё прописалось.
     
    skiv14 нравится это.
  6. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    803
    Симпатии:
    399
    сам фунционал подгрузки модели и вызова метода, я бы дополнительно поставил на условие, тоесть поменял с:
    Код:
    $this->load->model('module/megareviews');
    $this->model_module_megareviews->addReview($post);
    на:
    Код:
    if (isset($post)) {
        $this->load->model('module/megareviews');
        $this->model_module_megareviews->addReview($post);
    }
    а в идеале, то отдебажил бы сразу и массив с "постом":
    Код:
    if (isset($post)) {
        $this->load->model('module/megareviews');
    $this->log->write('Review_arr:'.print_r($post,1));
        $this->model_module_megareviews->addReview($post);
    }
    ну и после добавления отзыва - смотреть в журнал, есть ли там аргументы: author, title, rating...
     
    skiv14 нравится это.
  7. skiv14

    skiv14

    Регистрация:
    9 июн 2015
    Сообщения:
    437
    Симпатии:
    180
    Ребят, спасибо за Вашу помощь !

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

    Самому допилить у меня мозгов не хватит. Попробую зайти с двух других сторон.
    Во-первых, попробую почитать про перевод модулей с 2.0 на 2.1. Возможно, получится.
    И Во-вторых, я не понимаю. Отзывы оставляются, модуль работает. Ошибки в админке - это настораживает, но не более. Отзывы-то сами работают. Можно потестить и если это действительно так, то закомментировать эти строчки, которые вызывают ошибки или забить на журнал ошибок.
     
  8. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Вот этого делать категорически не стоит!
    Каждая запись в журнал ошибок - это дополнительная затрата времени при выполнении запроса. Работа с файловой системой - это одна из самых медленных операций.
    Конечно, кардинально на скорость это не повлияет, но зачем сознательно замедлять сайт?

    Да и за мусором в логе можно не заметить какие-то более критические ошибки.
     
    skiv14 нравится это.
  9. MGT1

    MGT1

    Регистрация:
    5 янв 2013
    Сообщения:
    900
    Симпатии:
    218
    Напишешь в конечном итоге какие оибки исправлял.
    У меня 1.5.6 работает на кириице врое норм. Но логка работы иногда храмает+стандартная капча дырявая+ошибок дохрена) но он работает вполне норм


    --- Добавлено, 15 июл 2018 ---
    Кстати а вопрос Questions & Answers ты решал отдельным модулем? А то тут такого функционала нету.
    --- Добавлено, 15 июл 2018 ---
    А кстати Product-Questions-And-Answers-vQmod не пробовал?