Новости 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

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #270 : 31.10.2015, 04:52:13 »
Istaan, попробуем сделать так, как Вы говорите.

Итак, мы в модели получаем спискок сборников:
Код
protected function getListQuery()
{
$db = $this->getDbo();
$query = $db->getQuery(true);
$query
->select('a.id, a.title, a.created_by')
->from($db->quoteName('#__chmos_compilations', 'a'))
->where($db->quoteName('a.created_by'). ' = ' . (int) JFactory::getUser()->get('id'));

return $query;
}

public function getItems()
{
$items = parent::getItems();
return $items;

}

Вот что скрин того, что получили:
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #271 : 31.10.2015, 05:56:41 »
Разбирались сейчас, что такое помощник вида и как нам его создать.
Мы пошли в наш компонент и создали в нём папку helpers. В ней создали файл ClassHelperName.php с таким кодом:

Спойлер
[свернуть]

После этого мы пошли в наш вид и вставили после строки
$this->items = $this->get('Items');
строку ClassHelperName::appendArticlesByCategory($this->items);

Вот код нашего вида с добавленной строкой:
Спойлер
[свернуть]

У нас ошибка: Fatal error: Class 'ClassHelperName' not found in Z:\home\starting\www\components\com_chmos\views\compilations\view.html.php on line 33. В виде не хочет почему-то наш созданный класс читаться. Подскажите, пожалуйста, значит, мы напутали что-то с помощником видов?

Сам код в помощнике вида мы практически не правили. Пока пробуем всё подключить, чтобы правильно работало. Про помощник видов читали, ошибки не видим... Также прочитали СОЗДАНИЕ MVC КОМПОНЕНТА ДЛЯ Joomla 1.6-2.5 (ЧАСТЬ 3), - тоже не помогло...
Подскажите, пожалуйста, где мы могли ошибиться?
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #272 : 31.10.2015, 09:37:47 »
С моим запросом все в порядке. Задача была получить все материалы и к ним сборники. Ошибка в составлении массива, я не учел материалы без сборников. Пробуем вот так:

Код: php
$compilations = array();
 
foreach ($items as $item)
{
$article = new stdClass;
$article->id       = $item->articleId;
$article->title    = $item->articleTitle;
$article->alias    = $item->articleAlias;
$article->category = $item->articleCategory;

// Если у нас есть сборник
if ($item->id)
{
$compilations[$item->id]['article'] = $article;

$compilation = new stdClass;
$compilation->id               = $item->id;
$compilation->title            = $item->title;
$compilation->state            = $item->state;
$compilation->checked_out      = $item->checked_out;
$compilation->checked_out_time = $item->checked_out_time;
$compilation->created_by       = $item->created_by;
$compilation->editor           = $item->editor;

$compilations[$item->id]['compilation'] = $compilation;
}

// Материалы без сборников
$compilations[0][$article->id] = $article;
}

return $compilations;

Хотя предвижу пробему с пагинацией, так как изначальная выборка не будет совпадать с конечным массивом.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Создание папок из фронтенда
« Ответ #273 : 31.10.2015, 10:08:40 »
С моим запросом все в порядке. Задача была получить все материалы и к ним сборники. Ошибка в составлении массива, я не учел материалы без сборников. Пробуем вот так:
А по задаче вроде нужно получить все сборники и к ним материалы )

Хотя предвижу пробему с пагинацией, так как изначальная выборка не будет совпадать с конечным массивом.
Естественно не будет, так что только присоедененные запросы!
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Создание папок из фронтенда
« Ответ #274 : 31.10.2015, 10:18:55 »
У нас ошибка: Fatal error: Class 'ClassHelperName' not found in Z:\home\starting\www\components\com_chmos\views\compilations\view.html.php on line 33. В виде не хочет почему-то наш созданный класс читаться. Подскажите, пожалуйста, значит, мы напутали что-то с помощником видов?
А у вас класс помощника вида не подключен скорее всего!
Но можно сделать проще все запихнуть в модель:
Код: php
protected function getListQuery()
{
$db = $this->getDbo();
$query = $db->getQuery(true);
$query
->select('a.id, a.title, a.created_by')
->from($db->quoteName('#__chmos_compilations', 'a'))
->where($db->quoteName('a.created_by'). ' = ' . (int) JFactory::getUser()->get('id'));

return $query;
}

public function getItems()
{
$items = parent::getItems();
$this->appendArticlesByCategory($items);
return $items;
}


static function appendArticlesByCategory( &$items )
{
$cid = array();
foreach ( $items as &$item ) {
$item->articles = array(); //добавляем сразу в объекты массива с категориями массив articles
$cid[] = $item->id; // получаем id категорий
}
$cid = array_unique( $cid );
if ( count( $cid ) ) {
$db = JFactory::getDbo();
//запрос для получения всех материалов из категорий которые в запросе
$query = $db->getQuery( true )
->select( 'id, title, alias, catid' )
->from( '#__content' )
->where( 'catid IN (' . implode( ',', $cid ). ')' )
->order( 'ordering ASC' );
$articles= $db->setQuery( $query )->loadObjectList();

$list= array();
//перебираем получение материалы и записуем их в массив по категории
foreach ( $articles as $article ) {
$list[$article ->catid][] = $article;
}
//а тут уже непосредственно добавляем к категориям всем материалы которые в этой категории
foreach ( $items as &$item ) {
if ( isset( $list[$item->id] ) ) $item->articles = $list[$item->id];
}
}
}




Сам код в помощнике вида мы практически не правили. Пока пробуем всё подключить, чтобы правильно работало. Про помощник видов читали, ошибки не видим... Также прочитали СОЗДАНИЕ MVC КОМПОНЕНТА ДЛЯ Joomla 1.6-2.5 (ЧАСТЬ 3), - тоже не помогло...
Подскажите, пожалуйста, где мы могли ошибиться?
ошиблись в том что не подключили помощник вида!
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #275 : 31.10.2015, 11:01:09 »
Istaan - там еще нужно будет отдельно отображать материалы, у которых нет сборника...
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Создание папок из фронтенда
« Ответ #276 : 31.10.2015, 12:40:49 »
материал, у которых нет сборника, отображаться должны не через com_chmod, а напрямую через com_content
чтобы не было проблем с пагинацией, запрос должен возвращать только те материалы, которые присущи сборникам, тогда и пересборку массивов делать не придется
а впереди скорее всего потом будет реализация сортировки результата запроса )))
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #277 : 31.10.2015, 22:48:33 »
Добрый вечер!
Спасибо вам всем за такие развёрнутые комментарии. Первым делом мы внимательно прочитали всё, что вы написали.
b2z, Вы составили массив с учётом материалов без сборников, но при этом предостерегаете нас от того, что в этом варианте могут возникнуть проблемы с пагинацией. Автор Istaan это подтверждает. Поэтому мы решили, что ну их, эти проблемы (их и без этого хватает),- будем составлять массив присоединёнными запросами.
-------------------
Чтобы не тратить время на то, чтобы разбираться с помощником видов (как его подключать), мы идём более простым и понятным путём, который нам подсказал автор Istaan: всё запихиваем в модель.
--------------------
Итак, мы открыли наш файл compilations.php.
Подправили немного функцию getListQuery(). А именно, убрали из select непонятный для нас параметр а. перед полями id, title, created_by (этот параметр вносил автор b2z, мы понимаем, что он для чего-то нужен, но пока что его уберём, чтобы не загружать мозг ни себе, ни вам раньше времени)
Вот функция protected function getListQuery(), которая у нас есть на данный момент:

Спойлер
[свернуть]
« Последнее редактирование: 31.10.2015, 22:55:39 от mila_serdnaya »
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #278 : 31.10.2015, 22:55:15 »
Далее мы в фунции getItems() добавляем нашу будущую статическую функцию appendArticlesByCategory (название пока мы не меняем - просто смотрим принцип того, как всё будет работать), а также временно вставляем...
print_r('<pre>');
print_r($items);
print_r('</pre>');

...для того, чтобы во фронтенде видеть структуру нашего массива.
Вот функция public function getItems(), которая у нас есть на данный момент:
Спойлер
[свернуть]
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #279 : 31.10.2015, 23:05:05 »
После этого мы добавляем в модель статическую функцию, которая будет присоединять материалы к сборникам.
Сейчас мы пробуем с ней разобраться. Основная загвоздка в том что...Поясним сразу на примере:
У сборника id = 5
У материала catid (категория) = 5   
По этим параметрам и происходит связка между материалом и сборником. То есть у нас пропущено в коде обращение к нашей таблице, связывающей id сборника и id материала.... Подскажите, пожалуйста, как нам это обращение в запрос запихнуть? Ещё одним запросом, то есть дополнительной статической функцией?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #280 : 31.10.2015, 23:21:50 »
Статическая функция вызывается так
Код: php-brief
Имя_класса::статическая_функция();
- она привязывается к классу, а не объекту, поэтому $this здесь не работает.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Создание папок из фронтенда
« Ответ #281 : 31.10.2015, 23:24:50 »
Статическая функция вызывается так
Код: php-brief
Имя_класса::статическая_функция();
- она привязывается к классу, а не объекту, поэтому $this здесь не работает.
если статическая функция находится в том же классе, где и вызывается, то к ней можно обратится так:
Код
self::статическая_функция();
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #282 : 01.11.2015, 01:35:08 »
Проблем с вызовом статической функции у нас не возникло. Мы плохо сформулировали то, что нам непонятно - перед выходом из дома поторопились отправить вам сообщение.
Сейчас расскажем нормально, что у нас не получается и что непонятно.
-------------------------------------------------------------------------
После того, как мы в нашем файле  подправили  protected function getListQuery() и public function getItems(), мы в этом же файле подключили статическую функцию static function appendArticlesByCategory, которую написал автор Istaan. Код этой функции мы оставили без изменений.
Вот он:
Спойлер
[свернуть]

В итоге вот что у нас получилось:
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #283 : 01.11.2015, 01:43:15 »
Материал, действительно, присоединяется к сборнику. Но присоединение происходит, если catid материала совпадает с id сборника, а это неверная связь, потому что категории материала никакого отношения к сборникам не имеют.
Для связи сборников с материалами в базе данных уже создана таблица _chmos_compilations_articles, в которой два поля: compilation_id и content_id.
Вот эта таблица:
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #284 : 01.11.2015, 01:47:33 »
То есть нам в нашей статической функции static function appendArticlesByCategory нужно в каком-то месте обратиться к таблице _chmos_compilations_articles, мы правильно понимаем?
Вот файл compilations.php, который мы имеем на данный момент:
Спойлер
[свернуть]
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Создание папок из фронтенда
« Ответ #285 : 01.11.2015, 01:59:49 »
Материал, действительно, присоединяется к сборнику. Но присоединение происходит, если catid материала совпадает с id сборника, а это неверная связь, потому что категории материала никакого отношения к сборникам не имеют.
Для связи сборников с материалами в базе данных уже создана таблица _chmos_compilations_articles, в которой два поля: compilation_id и content_id.
Вот эта таблица:
А я же писал что это только примеры, но не рабочие варианты, я не мог дать рабочие варианты так как не видел структуры таблиц но насколько я понимаю в рабочем виде что то типа:
Код: php
static function appendArticlesByCategory( &$items )
{
$cid = array();
foreach ( $items as &$item ) {
$item->articles = array(); //добавляем сразу в объекты массива со сборниками массив articles
$cid[] = $item->id; // получаем id сборников
}
$cid = array_unique( $cid );
if ( count( $cid ) ) {
$db = JFactory::getDbo();
//запрос для получения всех материалов из сборников которые в запросе
$query = $db->getQuery( true )
->select( 'c.id, c.title, c.alias, c.catid, ca.compilation_id' )
->from( '#__content AS c' )
->where( 'ca.compilation_id IN (' . implode( ',', $cid ). ')' )
->leftJoin( '#__chmos_compilations_articles AS ca ON ca.content_id=c.id' )
->order( 'c.ordering ASC' );
$articles = $db->setQuery( $query )->loadObjectList();

$list = array();
//перебираем получение материалы и записуем их в массив по сборникам
foreach ( $articles as $article ) {
$list[$article->compilation_id][] = $article;
}
//а тут уже непосредственно добавляем к сборникам всем материалы которые в этом сборнике
foreach ( $items as &$item ) {
if ( isset( $list[$item->id] ) ) $item->articles = $list[$item->id];
}
}
}
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #286 : 01.11.2015, 02:24:10 »
Урааааа! =) Материалы к сборникам присоединяются верно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #287 : 01.11.2015, 02:27:10 »
Только непонятно, как же быть с материалами, которые со сборниками не связаны. Они вообще не отображаютя, а нужно, чтобы они выводились под списком сборников с материалами (выделили жирным):

Сборник 1
- материал 1
- материал 2
Сборник 2
- материал 3
- материал 4

материал 5
материал 6
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #288 : 01.11.2015, 02:35:25 »
Istaan, извините, пожалуйста, мы на радостях Вам даже спасибо не сказали, - совсем обалдели. =) Спасибо Вам большое!
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Создание папок из фронтенда
« Ответ #289 : 01.11.2015, 02:51:25 »
Только непонятно, как же быть с материалами, которые со сборниками не связаны. Они вообще не отображаютя, а нужно, чтобы они выводились под списком сборников с материалами (выделили жирным):
А может назвать один сбориник "Без сборника" и впихнуть туда все материалы без сборника?)
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #290 : 01.11.2015, 03:02:19 »
Дело в том, что сборники создают зарегистрированные пользователи. И мы, к сожалению, не можем всем им приказать в обязательном порядке создавать сборник "Без сборника". =) А показывать нужно все материалы, который создал пользователь....
....Даже не знаем, может быть, можно что-то сделать, чтобы создаваемые материалы автоматически помещались в автоматически создаваемый сборник "Без сборника"? Или ещё как-то можно вывести эти материалы? Может быть, ещё подзапрос создавать?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Создание папок из фронтенда
« Ответ #291 : 01.11.2015, 12:11:40 »
Дело в том, что сборники создают зарегистрированные пользователи. И мы, к сожалению, не можем всем им приказать в обязательном порядке создавать сборник "Без сборника". =) А показывать нужно все материалы, который создал пользователь....
....Даже не знаем, может быть, можно что-то сделать, чтобы создаваемые материалы автоматически помещались в автоматически создаваемый сборник "Без сборника"? Или ещё как-то можно вывести эти материалы? Может быть, ещё подзапрос создавать?
ну вы же можете сделать дополнительную проверку и если пользователь для материалов не указал сборники то пихать в какой то сборник по умолчанию!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Создание папок из фронтенда
« Ответ #292 : 01.11.2015, 12:51:38 »
Дело в том, что сборники создают зарегистрированные пользователи. И мы, к сожалению, не можем всем им приказать в обязательном порядке создавать сборник "Без сборника". =) А показывать нужно все материалы, который создал пользователь....
....Даже не знаем, может быть, можно что-то сделать, чтобы создаваемые материалы автоматически помещались в автоматически создаваемый сборник "Без сборника"? Или ещё как-то можно вывести эти материалы? Может быть, ещё подзапрос создавать?

А нужно по умолчанию для каждого пользователя плагином при регистрации создавать этот сборник и помечать его отдельным флагом, а потрм говорить пользователю что-то вроде этого: это системный сборник, в него попадают все ваши материалы, не вошедшие ни в один другой сборник, его нельзя удалить, им нельзя управлять.

Во всяком случае, именно так делает сама J со стандартными материалами: категория "Без категории" присутствует в системе изначально и J не позволяет ее удалять, если нет других категорий. А на сайте вы можете как показывать этот системный сборник, так и вовсе о нем не упоминать, сделав для пользователя все прозрачно.

Для учета такого сборника в таблицу сборников нужно добавить поле, что-то вроде is_sys int(2), значение которого выставляете либо 1 (это будет системный борник для материалов "без сборников") либо 0 (это все остальные, несистемные сборники).
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #293 : 01.11.2015, 15:37:19 »
AlekVolsk, спасибо за такое подробное пояснение, принцип поняли.
--------------
Первым делом после Вашего сообщения мы пошли на http://localhost/Tools/phpMyAdmin/наш сайт в нашу таблицу сборников.
Вот она:
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #294 : 01.11.2015, 15:42:47 »
Вы пишите, что нужно создавать поле в этой таблице, "что-то вроде is_sys int(2), значение которого выставляете либо 1 (это будет системный борник для материалов "без сборников") либо 0 (это все остальные, несистемные сборники)".

Но мы ведь создаём автоматический сборник для материалов.... Получается, что и поле, нужно создавать в таблице для материалов, разве нет? Или мы что-то упускаем из виду и чего-то не понимаем?
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #295 : 01.11.2015, 15:59:34 »
....Но, думаем, вам виднее, поэтому сейчас мы смотрим видео о том, как добавить поле в уже существующую таблицу в  phpMyAdmin..
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #296 : 01.11.2015, 17:25:02 »
Итак, мы добавили новое поле is_sys в таблицу _chmos_compilations.
Параметры для поля is_sys создавали аналогично параметрам для поля level таблицы _categories .
Вот что у нас получилось:
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #297 : 01.11.2015, 17:40:00 »
Вы пишите, что теперь нужно "по умолчанию для каждого пользователя плагином при регистрации создавать этот сборник и помечать его отдельным флагом, а потом говорить пользователю что-то вроде этого: это системный сборник, в него попадают все ваши материалы, не вошедшие ни в один другой сборник, его нельзя удалить, им нельзя управлять".
Подскажите, пожалуйста, какой плагин нам можно взять за основу?
----------------------
Сейчас мы создаём каркас плагина, пользуясь сервисом по автоматическому созданию плагина автора Istaan. Не совсем понятно, к какой группе этот плагин отнести: к content или к system? И, соответственно, не совсем понятно, на какое событие писать этот плагин?
----------------------
Решили освежить наши знания о плагинах, - прочитали только что статью на Joomlaблоге: Общая информация о плагинах (автор b2z).
----------------------
Нам нужно "по умолчанию для каждого пользователя плагином при регистрации создавать ...сборник" (автор AlekVolsk).
Мы рассуждаем так: плагин при регистрации будет что-то делать... Какие события отвечают за регистрацию пользователя? Аутентификация!
-----------------------------------------------------------
Вот выдержка из статьи Общая информация о плагинах (автор b2z):
Authentication (Аутентификация)
Существует только одно событие для аутентификации - onUserAuthenticate. Это событие вызывается тогда, когда пользователь пытается авторизоваться на сайте или в панели управления.

------------------------------------------------------------
Получается, нам нужно писать плагин тип Authentication, а событие onUserAuthenticate... Скажите, пожалуйста, правильный ли вывод мы сделали?
« Последнее редактирование: 01.11.2015, 18:14:02 от mila_serdnaya »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Создание папок из фронтенда
« Ответ #298 : 01.11.2015, 18:33:58 »
Вам нужен плагин на событие onUserAfterSave, в функцию события передаются 4 параметра (по порядку):
$user - весь объект JUser со всеми данными о пользователе, данные которого сохраняются
$isnew - true, если это регистрация нового пользователя (именно это вам нужно проверяь в первую очередь)
$success - true, если сохранение данных произошло успешно (т.е. в вашем случае успешная регитстрация, тоже проверяйте)
$msg - сообщение, хз, о чем

В целом, в плагине проверяете, если это новый пользователь и его данные сохранены успешно, а также проверяете дополнительно необходимые данные пользователя (при необходимости), и если все ок, то делаете запрос на добавление необходимого системного сборника для конкретного пользователя
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #299 : 01.11.2015, 20:41:29 »
AlekVolsk, спасибо, поняли. Только что вылезли из теории - знакомились с событием onUserAfterSave и параметрами этого события (статьи автора  b2z на Joomlaблоге, статьи автора Istaan на ссылка вырезана, так как домен распространяет вирусы, а также стандартные компненты и плагины Joomla на сервере).
Разбираемся сейчас с файлом chmosplugbez.php, пишем код на событие public function onUserAfterSave.
Вот что пока получается (всё очень сыро):

public function onUserAfterSave($user, $isnew, $success, $msg)
{
$user =& JFactory:: getUser();
здесь мы получаем весь объект JUser со всеми данными о пользователе
 
        
if ($isnew)
{
return true;
....здесь мы говорим, что если это новый пользователь....
}
      
if ($success)
{
return true;
 ....и сохранение данных прошло успешно....
}
      
$db = JFactory::getDbo();          ....то мы делаем запрос к базе данных....
$query = $db->getQuery(true)
      
....и теперь должны сказать базе данных, чтобы она добавила системный сборник "без сборника"....

$query
->select('is_sys')
 ....это мы обращаемся к добавленному полю....
->from('#__chmos_compilations'))   ....из таблицы сборников...
-----------
...А что нам теперь делать - непонятно.
Подскажите, пожалуйста, верно ли мы пока идём, и как нам добавить этот системный сборник?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Создание релиза компонента средствами GitHub

Автор SkyAn

Ответов: 4
Просмотров: 1131
Последний ответ 01.11.2019, 17:42:04
от Septdir
[Решено] Создание контент плагина

Автор IvanTopor

Ответов: 4
Просмотров: 1799
Последний ответ 26.02.2016, 13:10:37
от IvanTopor
Создание динамических полей в своем компоненте

Автор NeuroZ

Ответов: 14
Просмотров: 1791
Последний ответ 18.08.2015, 11:17:59
от b2z
Создание таблиц средствами компонента

Автор spirit1086

Ответов: 3
Просмотров: 1532
Последний ответ 18.08.2015, 10:17:09
от spirit1086
Создание изображений PHP и GD

Автор vita1971

Ответов: 6
Просмотров: 1283
Последний ответ 10.05.2015, 13:10:38
от vita1971