За последние 24 часа нас посетили 22438 программистов и 1160 роботов. Сейчас ищут 711 программистов ...

Помогите реанимировать работу плагина

Тема в разделе "Сделайте за меня", создана пользователем Leon977, 25 дек 2020.

  1. Leon977

    Leon977 Новичок

    С нами с:
    25 дек 2020
    Сообщения:
    3
    Симпатии:
    0
    Добрый день, после обновления версии php c 5.6 на 7.4 перестал работать плагин

    PHP Compatibility Checker выдает ошибку


    FILE: /home/site/public_html/wp-content/plugins/vk-photos/api/vkapi.class.php
    ---------------------------------------------------------------------------------------------
    FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
    ---------------------------------------------------------------------------------------------
    16 | WARNING | Use of deprecated PHP4 style class constructor is not supported since PHP 7.

    подскажите что тут нужно исправить ?
    PHP:
    1. class vkapi {
    2.     var $access_token;
    3.     var $api_url;
    4.    
    5.     function vkapi($api_url = 'api.vk.com/method/') {
    6.         if (!strstr($api_url, 'https://')) $api_url = 'https://'.$api_url;
    7.         $this->api_url = $api_url;
    8.     }
    9.    
    10.     function api($method,$params=false) {
    11.         if (!$params) $params = array();
    12.  
    13.             $params["v"] =  "5.75";
    14.  
    15.             ksort($params);
    16.             $sig = '';
    17.             foreach($params as $k=>$v) {
    18.                 $sig .= $k.'='.$v;
    19.             }
    20.  
    21.         $query = $this->api_url.$method.'?'.$this->params($params);
    22.  
    23.         if (function_exists('curl_init')) {
    24.             $ch = curl_init();
    25.             @curl_setopt($ch,CURLOPT_URL,$query);
    26.             @curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);        
    27.             @curl_setopt($ch,CURLOPT_TIMEOUT, 2);
    28.             //задает время на соединение с сервером
    29.             @curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 2);
    30.             //я не скрипт, я браузер опера
    31.             @curl_setopt($ch, CURLOPT_USERAGENT, 'Opera 10.00');  
    32.             //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    33.             @curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
    34.             @curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );      
    35.             $res = @curl_exec($ch);
    36.             @curl_close($ch);
    37.             // контрольный выстрел в голову
    38.             if(empty($res)){
    39.                 $res = @file_get_contents($query);
    40.             }
    41.         }else{
    42.            $res = @file_get_contents($query);
    43.         }
    44.  
    45.         return @json_decode($res, true);
    46.     }
    47.    
    48.     function params($params) {
    49.         $pice = array();
    50.         foreach($params as $k=>$v) {
    51.             $pice[] = $k.'='.urlencode($v);
    52.         }
    53.         return implode('&',$pice);
    54.     }
    55. }
    От модератора. Код оформляется кнопкой </>
     
    #1 Leon977, 25 дек 2020
    Последнее редактирование модератором: 25 дек 2020
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Вместо объявления функции, одноименной с названием класса - надо определить конструктор класса.
     
  3. Leon977

    Leon977 Новичок

    С нами с:
    25 дек 2020
    Сообщения:
    3
    Симпатии:
    0
    В этом не силен, а поддержка плагина прекращена, если не сложно можете показать где в коде исправить ?
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    @Leon977 php 7.4
    PHP:
    1. <?php
    2.  
    3. class vkapi
    4. {
    5.     //var $access_token;
    6.     protected string $api_url;
    7.  
    8.     public function __construct() {}
    9.  
    10.     public function vkapi( string $api_url = 'https://api.vk.com/method/' ): void
    11.     {
    12.         $this -> api_url = ( empty ( parse_url ( $api_url, PHP_URL_SCHEME ) ) ? 'https://' . $api_url ? $api_url );
    13.     }
    14.  
    15.     public function api( string $method, array $params = [] ): array
    16.     {
    17.         $params['v'] = 5.75;
    18.    
    19.         $query = $this -> api_url . $method . '?' . http_build_query ( $params );
    20.    
    21.         $ch = curl_init();
    22.    
    23.         curl_setopt ( $ch, CURLOPT_URL, $query );
    24.         curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );    
    25.         curl_setopt ( $ch, CURLOPT_TIMEOUT, 2 );
    26.    
    27.         //задает время на соединение с сервером
    28.         curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 2 );
    29.    
    30.         // я браузер
    31.         curl_setopt ( $ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0' );
    32.    
    33.         //curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
    34.         curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, false );
    35.         curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
    36.    
    37.         $res = curl_exec ( $ch ) ?: '[]';
    38.    
    39.         curl_close ( $ch );
    40.  
    41.         return json_decode ( $res, true );
    42.     }
    43. }
     
    #4 MouseZver, 25 дек 2020
    Последнее редактирование: 25 дек 2020
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Leon977, в общем-то надо
    function vkapi
    заменить на
    public function __construct
     
  6. Leon977

    Leon977 Новичок

    С нами с:
    25 дек 2020
    Сообщения:
    3
    Симпатии:
    0
    заменил но теперь получаю ошибку:
    Parse error: syntax error, unexpected ')' in /home/site/public_html/wp-content/plugins/vk-photos/api/vkapi.class.php on line 21
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    :D
    --- Добавлено ---
    PHP:
    1. $this -> api_url = ( empty ( parse_url ( $api_url, PHP_URL_SCHEME ) ) ? 'https://' . $api_url : $api_url );
     
  8. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Интерпретатор неожиданно встретил закрывающую скобку, которой не должно быть в языковой конструкции на 21 строке.
    Неаккуратно заменили.
    Полученный код покажите, если уж редактор, который используете в работе не подсвечивает подобные несуразности...
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    Не всегда ошибки до точности указывают на проблемы @Sail o_O
    Например: Достаточно забыть точку с запятой в одной строке - как Интерпретатор начнет ругаться на следующую строку.
     
  10. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Спасибо, КЭП!
    PS: потому-то и нужны "сырцы" :)