Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 1223 Просмотров
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
Адс версия - 2.2.1

Что то затупил мозг ( давно не копал Адс).
Решил вывести в список под каждым объявлением кол-во фото внутри объявления.

-Вывести данные не проблема ( проблема их получить при сохранении - обновлении объявления ).
-Переменную создал. $row->ad_countfoto

А вот в функции function save_ad где и происходит сохр-обновл никак не получается..

Код - не срабатывает  ( вообще срабатывает если только в самом начале функции задать переменной значение)
Код
if (isset( $_FILES["ad_picture$i"])){
        $row->ad_countfoto = 0;
            $arr_count = 0;
            for($d = 0 ;$d < count($_FILES["ad_picture$i"]); $d++)
            {
            $cv_err = $_FILES["ad_picture$i"][$d]['error'];
            if($cv_err === 0)
                 {
                 $arr_count++;
                 }
            else { echo "ничего не загрузилось";}
            }
          }
         $row->ad_countfoto = $arr_count;

ни перед, ни после того как "делаются" фото.
 
Код
if (isset( $_FILES["ad_picture$i"]) and !$_FILES["ad_picture$i"]['error'] ) {
        
createImageAndThumb($_FILES["ad_picture$i"]['tmp_name'],$row->id.$ext_name.".jpg",$row->id.$ext_name."_t.jpg",
$conf->max_width,
$conf->max_height,
$conf->max_width_t,
$conf->max_height_t,
$conf->tag,
$mosConfig_absolute_path."/images/$option/images/",
$_FILES["ad_picture$i"]['name']);


          

        
}


Если кто реализовал подобное - был бы рад.

Или по крайней мере толкните в нужную сторону
« Последнее редактирование: 12.02.2014, 11:32:55 от AlexSims »
С фантазией плохо.
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
Практически решил, осталась загвоздка с поиском в строке по id объявлению

конструкция ниже считает только или по расширению или по вхождению определенного символа - типо _t.jpg,
а такой вариант $row-id."*_t.jpg"  или "500*_t.jpg"  ее не устраивает ( уже голову сломал).


Код
while(False !== ($file = readdir($dir))){
                  if(strpos($file, $z)){
                    $k++;
                  }
                  else echo "Ошибка";
            }
            closedir("$path");
С фантазией плохо.
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
вот код может кто доведет до ума ( проблема с поиском в строке)

Код
///подсчет кол-ва фото

            $path = $mosConfig_absolute_path."/images/$option/images/";
            $dir  = opendir("$path");
 //           $z = $row->id."*_t.jpg"; /* не пашет */
            $z = '673a_t.jpg'; /*пашет только находит 1673a_t.jpg или 2673a_t.jpg  , а вот 673a_t.jpg не находит */
            $k    = 0;   
            while(False !== ($file = readdir($dir))){
                  if(stripos($file, $z, 0)){
                    $k++;
                  }
                  else echo "Ошибка";
            }
            closedir("$path");
            echo $k;
           
    //Обновление данных в базе
            $query = ' UPDATE #__adsmanager_ads '
                     .' SET `ad_countfoto` = '.$k
                     .' WHERE id = '.$row->id;

    if ($first != 0)
{
$database->setQuery( $query);
$database->query();
}

вставляется после кода в функцию save_ad ( строка 1513 где-то)

Код
	if (isset( $_FILES["ad_picture$i"]) and !$_FILES["ad_picture$i"]['error'] ) {
       
createImageAndThumb($_FILES["ad_picture$i"]['tmp_name'],$row->id.$ext_name.".jpg",$row->id.$ext_name."_t.jpg",
$conf->max_width,
$conf->max_height,
$conf->max_width_t,
$conf->max_height_t,
$conf->tag,
$mosConfig_absolute_path."/images/$option/images/",
$_FILES["ad_picture$i"]['name']);


           

       
}

}
С фантазией плохо.
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
Вот же блин
если $r = 736, то считает все правильно в папке (32 совпад.  ),
а если 6736, то не считает ( хотя должно быть 3 совпадения)
не пойму в чем косяк
Код
           $path = $mosConfig_absolute_path."/images/$option/images/";
//открываем директорию
            $dir  = opendir("$path");
 
            $k    = 0;  
            $r = 6736;
//значение паттерна id объявление+все буквы кроме _t
            $name = '/('.$r.')[a-z^_t].jpg/';
            
//цикл открытия директории и чтения всех файлов
            while(($file = readdir($dir))!== false ){
//если фаил соответствует паттерну то пихаем его в массив $a
                      if(preg_match($name, $file, $a)){
//находим первое вхождение из массива в нулевой позиции в строке, если есть то +1
                         if(strpos($file, $a[0])){
                        $k++;
                        }
//если нет то к=0
                        else
                        { echo "Ошибка";  $k = 0;   }
                     }                  
           }    
//заканчивается цикл, закрывается директория                  
            closedir("$path");
« Последнее редактирование: 11.02.2014, 02:55:59 от AlexSims »
С фантазией плохо.
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
Так как советов не дождался решил на сколько хватило ума ( только почему-то пару объявлений так и не находит и пишет 0, большинство находит). Если спецы заглянуть - может объяснят

Код
 
           $path = $mosConfig_absolute_path."/images/$option/images/";
//открываем директорию
            $dir  = opendir("$path");
 
            $k = 0;   
//цикл открытия директории и чтения всех файлов
            while(false !== ($file = readdir($dir))){
//если фаил соответствует паттерну то пихаем его в массив $a
                        if (preg_match("/^".$row->id."[a-z^_t].jpg/", $file, $a)) {
//находим первое вхождение из массива в нулевой позиции в строке, если есть то +1
                         if (strpos($file, $a[0][1])){
                            $k++;
                            }
                        else { echo "Ошибка";}
                                        }
           }   
//заканчивается цикл, закрывается директория                 
            closedir("$path");
   
    //Обновление данных в базе
            $query = ' UPDATE #__adsmanager_ads '
                     .' SET `ad_countfoto` = '.$k
                     .' WHERE id = '.$row->id;

    if ($first != 0)
{
$database->setQuery( $query);
$database->query();
}

С фантазией плохо.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
кол-во фото внутри объявления ?
а чего не сделать с помощью js 3 строчки кода и никаких лишних движений
http://learn.javascript.ru/play/syqs5b
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
вопрос со всеми тоже решился - почти есть еще глюки на некоторых объяваъ( было лишнее условие  if ($first != 0) ). Видимо с некоторыми объявлениями оно не выполнялось.
Остался вопрос с производительностью кода.
« Последнее редактирование: 11.02.2014, 16:44:53 от AlexSims »
С фантазией плохо.
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
кол-во фото внутри объявления ?
а чего не сделать с помощью js 3 строчки кода и никаких лишних движений ( не знаком с js вообще)
Нет не внутри - внутри я и простым счетчиком посчитать смог бы. Там как раз цикл при показе выполняется.
Проблема была при сохранении-обновлении посчитать все фото к данному объекту и в переменную поместить.
(упорно не считалось с начала строки или не так складывалось )

« Последнее редактирование: 11.02.2014, 16:55:58 от AlexSims »
С фантазией плохо.
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
кол-во фото внутри объявления ?
а чего не сделать с помощью js 3 строчки кода и никаких лишних движений
http://learn.javascript.ru/play/syqs5b

Спасибо за совет - может разберусь
С фантазией плохо.
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
Проблема с поиском фото к некоторым объявлениям так и не решилась ( то находит, то не находит - хрен знает в чем глюк).

изменил strpos на strrpos ( вроде пока все ок - но надо тестить )

по времени этот конструктив при поиске 15 фото занимает - 0,04947сек ( не знаю пока как ускорить)

Осталось за малым - придумать как по всей базе объектов пройтись чтоб все посчитать ))))
« Последнее редактирование: 12.02.2014, 07:00:04 от AlexSims »
С фантазией плохо.
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
Добавил изменения - удаление лишних фото
( так как раньше было много фоток на объект - более 30, а щас стало 15. Чтоб удаляло все что свыше установленных в конфиге)

Код
///подсчет кол-ва фото   


           $path = $mosConfig_absolute_path."/images/$option/images/";
//открываем директорию
            $dir  = opendir("$path");
            $k = 0;  
//цикл открытия директории и чтения всех файлов
            while(false !== ($file = readdir($dir))){
//если фаил соответствует паттерну то пихаем его в массив $a
                        if (preg_match("/^".$row->id."[a-z^_t].jpg/", $file, $a)) {
//находим первое вхождение из массива в нулевой позиции в строке, если есть то +1
                         if (strrpos($file, $a[0][1])){ $k++;}
                         else  { $k=99;}
                    }
           }    
//заканчивается цикл, закрывается директория                  
            closedir("$path");
    //Обновление данных в базе

/// если остались старые фото которых больше чем в конфиге - было 30 стало 15
        if ($k > $nbImages){
            for($i = $nbImages; $i < $k; $i++)
             {
       $ext_name = chr(ord('a')+$i-1);
// image1 delete

$pict = $mosConfig_absolute_path."/images/$option/images/".$row->id.$ext_name."_t.jpg";
if ( file_exists( $pict)) {
unlink( $pict);
}
$pic = $mosConfig_absolute_path."/images/$option/images/".$row->id.$ext_name.".jpg";
if ( file_exists( $pic)) {
unlink( $pic);
    }
            }
            $k = $nbImages;
        }


            $query = ' UPDATE #__adsmanager_ads '
                     .' SET `ad_countfoto` = '.$k
                     .' WHERE id = '.$row->id;
// if ($first != 0){
   $database->setQuery($query);
   $database->query();
//}

Вроде бы все верно ( но косяки могут всплыть)

Если хотите чтоб при редактировании в админке, тоже считалось и удалось - то нужно сделать и там изменения
« Последнее редактирование: 16.02.2014, 10:56:04 от AlexSims »
С фантазией плохо.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

AdsManager вывод нужных полей по отдельности

Автор klekovkinandrey

Ответов: 2
Просмотров: 14516
Последний ответ 06.04.2024, 09:54:15
от Rinat abzyi
Вывод данных

Автор FlexNL

Ответов: 0
Просмотров: 2931
Последний ответ 06.11.2021, 12:37:54
от FlexNL
Вывод картинки поля "radioimage"

Автор Pavel

Ответов: 7
Просмотров: 3759
Последний ответ 12.03.2019, 16:23:10
от Pavel
Вывод объявлений в случайном порядке

Автор Sabotage

Ответов: 3
Просмотров: 1674
Последний ответ 28.09.2018, 14:21:05
от Sabotage
Вывод "Классифицированные объявления" вместо меню на всех страницах

Автор d.im_a

Ответов: 3
Просмотров: 2139
Последний ответ 01.07.2017, 15:33:16
от d.im_a