За последние 24 часа нас посетили 22785 программистов и 1253 робота. Сейчас ищут 806 программистов ...

ошибка в строке 105 не определена переменная products

Тема в разделе "Сделайте за меня", создана пользователем LegolasAlex, 28 фев 2019.

  1. LegolasAlex

    LegolasAlex Новичок

    С нами с:
    28 фев 2019
    Сообщения:
    2
    Симпатии:
    0
    Высвечивается ошибка как на скриншоте во вложении.
    код со строкой 105, в которой ошибка:
    Код (Text):
    1. <?php
    2. class ControllerExtensionModuleNotificationTelegram extends Controller {
    3.  
    4.     public function sendOrderAlert(&$route, &$data, &$output) {
    5.  
    6.         $order_id = $data[0];
    7.         $this->load->model('checkout/order');
    8.         $order_info = $this->model_checkout_order->getOrder($order_id);
    9.  
    10.         $this->load->model('setting/setting');
    11.         $setting = $this->model_setting_setting->getSetting('module_notificationTelegram');
    12.  
    13.         if (isset($setting['module_notificationTelegram_order_alert'])) {
    14.      
    15.             $this->load->model('account/order');
    16.             if (count($this->model_account_order->getOrderHistories($order_id)) <= 1) {
    17.                 $message = $this->replaceMessage($setting['module_notificationTelegram_meassage'],$order_info);
    18. //                  $message .= $this->buldArray($order_info);
    19.  
    20.                 $this->sendMessagetoTelegam($message);
    21.  
    22.                 if (strpos(strtolower($setting['module_notificationTelegram_meassage']), '{products}') !== false) {
    23.                     $order_products = $this->model_checkout_order->getOrderProducts($order_id);
    24.                     $products = $this->bulidProducts($order_products);
    25.                     $this->sendMessagetoTelegam($products);
    26.  
    27.                 }
    28.             }
    29.      
    30.         }
    31.  
    32.     }
    33.  
    34.     public function sendAccountAlert(&$route, &$data, &$output) {
    35.         $this->load->model('setting/setting');
    36.         $setting = $this->model_setting_setting->getSetting('module_notificationTelegram');
    37.         if (isset($setting['module_notificationTelegram_customer_alert'])) {
    38.  
    39.             $message = $this->replaceMessage($setting['module_notificationTelegram_new_account_meassage'],$data[0]);
    40.             $this->sendMessagetoTelegam( $message);
    41.      
    42.         }
    43.     }
    44.  
    45.     public function sendReturnProductAlert(&$data,&$output) {
    46.         $this->load->model('setting/setting');
    47.         $setting = $this->model_setting_setting->getSetting('module_notificationTelegram');
    48.         if (isset($setting['module_notificationTelegram_return_alert'])) {
    49.      
    50.             $message = "Return request \n ";
    51.             $this->sendMessagetoTelegam( $message);
    52.         }
    53.     }
    54.  
    55.  
    56.     //Send  message To notificationTelegram
    57.     public function sendMessagetoTelegam($msg) {
    58.  
    59.         $this->load->model('setting/setting');
    60.         $setting = $this->model_setting_setting->getSetting('module_notificationTelegram');
    61.  
    62.         //print_r($setting);
    63.         $botToken = $setting['module_notificationTelegram_boot_token'];
    64.         $website = "https://api.telegram.org/bot" . $botToken;
    65.         $chatIds = $setting['module_notificationTelegram_chat_ids'];  //Receiver Chat Id
    66.  
    67.         if (is_array($chatIds)) {
    68.             foreach ($chatIds as $val) {
    69.                 $this->initMessage($botToken, $val, $msg);
    70.             }
    71.         } else {
    72.             $this->initMessage($botToken, $chatIds, $msg);
    73.         }
    74.     }
    75.     private function initMessage($botToken, $chatID, $msg) {
    76.  
    77.         $website = "https://api.telegram.org/bot" . $botToken;
    78.  
    79.         $params = [
    80.             'chat_id' => $chatID,
    81.             'text' => $msg,
    82.         ];
    83.         $ch = curl_init($website . '/sendMessage');
    84.         curl_setopt($ch, CURLOPT_HEADER, false);
    85.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    86.         curl_setopt($ch, CURLOPT_POST, 1);
    87.         curl_setopt($ch, CURLOPT_POSTFIELDS, ($params));
    88.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    89.         $result = curl_exec($ch);
    90.         curl_close($ch);      
    91.     }
    92.  
    93.     public function buldArray($arr) {
    94.         if (is_array($arr)) {
    95.             $dataAttributes = array_map(function ($value, $key) {
    96.                 return @"$key ---> $value  \n";
    97.             }, array_values($arr), array_keys($arr));
    98.      
    99.             return $dataAttributes = implode(' ', $dataAttributes);
    100.         }
    101.     }
    102.  
    103.     public function replaceMessage($string,$arr) {
    104.         return   $str = preg_replace_callback('/{(\w+)}/', function($match) use($arr) {
    105.             return $arr[$match[1]];
    106.         }, $string );
    107.  
    108.     }
    109.  
    110.     protected function  bulidProducts($products){
    111.  
    112.         $pr = array();
    113.  
    114.         foreach ($products as $product){
    115.             $pr[] = "Название : $product[name]  \n    Цена: $product[price] \n Количество : $product[quantity] ";
    116.         }
    117.  
    118.         return implode("------- \n",$pr);
    119.  
    120.     }
    121.  
    122. }
     

    Вложения:

    #1 LegolasAlex, 28 фев 2019
    Последнее редактирование: 1 мар 2019
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
  3. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Хреновый символ в позиции 0 у какого JSON, хммм, а шлем ли мы на телегу json?
     
  4. LegolasAlex

    LegolasAlex Новичок

    С нами с:
    28 фев 2019
    Сообщения:
    2
    Симпатии:
    0
    при попытке передавать product - нет
     
  5. mindrainn

    mindrainn Гость

    С нами с:
    25 янв 2021
    Сообщения:
    2
    Симпатии:
    0
    Получилось решить проблему? У меня такая же ошибка с этим нотификатором в телеграмм
     
  6. mindrainn

    mindrainn Гость

    С нами с:
    25 янв 2021
    Сообщения:
    2
    Симпатии:
    0
    Решил проблему таким путем:
    В админке модуля убрал перечисление продуктов, а именно {products}
    в телегу не будет приходит список продуктов но и ошибка исчезнет.
    Уведомление поступает