Новости Joomla

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

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

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
Просмотров: 14406
Последний ответ 06.04.2024, 09:54:15
от Rinat abzyi
Вывод данных

Автор FlexNL

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

Автор Pavel

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

Автор Sabotage

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

Автор d.im_a

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