Василий Столейков
С нами с 19 декабря 2012; Место в рейтинге пользователей: #23Добавление пользователя в другую группу
Добрый день!
Натолкнулся на снипет который сделал Николай https://modx.pro/help/9699/, чтобы добавить всех пользователей из одной группы в другую.
<?php
$usergroup = 4;
$c = $modx->newQuery('modUser');
$c->innerJoin ('modUserProfile','Profile');
$c->innerJoin ('modUserGroupMember','UserGroupMembers');
$c->innerJoin ('modUserGroup','UserGroup','`UserGroupMembers`.`user_group` = `UserGroup`.`id`');
$c->leftJoin ('modUserGroupRole','UserGroupRole','`UserGroupMembers`.`role` = `UserGroupRole`.`id`');
$c->where(array(
'UserGroupMembers.user_group' => $usergroup,
'UserGroupMembers.role' => '1',
));
$users = $modx->getCollection('modUser',$c);
foreach($users as $user) {
$user->joinGroup(11,1);
}
Снипет работает, добавляет всех пользователей, но подскажите, что нужно изменить в снипете, чтобы не всех пользователей из одной группы добавляло в другую группу, а только одного. Или может есть другое решение. Нужно для того, чтобы зарегистрированные при нажатии кнопки «Стать партнером» попадали в другую группу.
Натолкнулся на снипет который сделал Николай https://modx.pro/help/9699/, чтобы добавить всех пользователей из одной группы в другую.
<?php
$usergroup = 4;
$c = $modx->newQuery('modUser');
$c->innerJoin ('modUserProfile','Profile');
$c->innerJoin ('modUserGroupMember','UserGroupMembers');
$c->innerJoin ('modUserGroup','UserGroup','`UserGroupMembers`.`user_group` = `UserGroup`.`id`');
$c->leftJoin ('modUserGroupRole','UserGroupRole','`UserGroupMembers`.`role` = `UserGroupRole`.`id`');
$c->where(array(
'UserGroupMembers.user_group' => $usergroup,
'UserGroupMembers.role' => '1',
));
$users = $modx->getCollection('modUser',$c);
foreach($users as $user) {
$user->joinGroup(11,1);
}
Снипет работает, добавляет всех пользователей, но подскажите, что нужно изменить в снипете, чтобы не всех пользователей из одной группы добавляло в другую группу, а только одного. Или может есть другое решение. Нужно для того, чтобы зарегистрированные при нажатии кнопки «Стать партнером» попадали в другую группу.
Как вывести количество комментариев?
Выводим количество комментариев (TicketComments) любых ресурсов (тикеты и простые ресурсы MODX) в любом месте.
Прошелся по страницам сообщества и собрал в один сниппет. Спасибо Василию Наумкину!
Создаем сниппет countComments:
Прошелся по страницам сообщества и собрал в один сниппет. Спасибо Василию Наумкину!
Создаем сниппет countComments:
<?php
// считаем комменты тикетов
if ($res = $modx->getObject('Ticket',$id)) {
if ($res->get('comments') == 0) { return "0";}
else {return $res->get('comments');}
}
// считаем комменты ресурсов
if ($q = $modx->newQuery('modResource', $id)) {
$q->leftJoin('TicketThread','TicketThread', "`TicketThread`.`name` = 'resource-{$id}'");
$q->leftJoin('TicketComment','TicketComment', "`TicketThread`.`id` = `TicketComment`.`thread`");
$q->select('COUNT(`TicketComment`.`id`) as `comments`');
$count = 0;
if ($q->prepare() && $q->stmt->execute()) {
$count = (integer) $q->stmt->fetch(PDO::FETCH_COLUMN);
}
if ($count == 0) { return "0";}
else {return $count;}
}
Вызывать внутри ресурса так:[[!countComments? &id = `[[*id]]`]]
Вызывать вне ресурса так:[[!countComments? &id = `[[+id]]`]]
Видео с MODX Meetup Almaty 2017

Не так давно прошел MODX Meetup Almaty 2017. Теперь мы все можем посмотреть доклады участников.
[msFavorites] - апгрейд компонента.
msFavorites — списки избранного.

— работа с любыми ресурсами
— работа с любыми пользователями
Основное отличие от ранних версий работа без каких либо сниппетов, нужно только инициализировать скрипт.
Интерактивные примеры тут msfavorites.vgrish.ru/

— работа с любыми ресурсами
— работа с любыми пользователями
Основное отличие от ранних версий работа без каких либо сниппетов, нужно только инициализировать скрипт.
Интерактивные примеры тут msfavorites.vgrish.ru/
Как загрузить/обновить" изображение к тикету?
Приветствую!
Стояла задача: при создании тикета из фронтенда загружать главное изображение, которое будет использоваться в превью и отображаться на странице самого тикета в начале.
В качестве решения можно было бы использовать, например, первое изображение из встроенной загрузки файлов для тикета, но желание экспериментировать перебороло.
Кратко:
1. В форму создания тикета добавляем поле input type=«file»
2. Создаем плагин на событие сохранения формы с загрузкой и изменением размеров изображения.
Стояла задача: при создании тикета из фронтенда загружать главное изображение, которое будет использоваться в превью и отображаться на странице самого тикета в начале.
В качестве решения можно было бы использовать, например, первое изображение из встроенной загрузки файлов для тикета, но желание экспериментировать перебороло.
Кратко:
1. В форму создания тикета добавляем поле input type=«file»
2. Создаем плагин на событие сохранения формы с загрузкой и изменением размеров изображения.
[Office] Версия 1.4.6 - повтор заказов
Удаление профиля пользователя по нажатию кнопки
Добрый день.
Подскажите, как сделать удаление профиля пользователя по нажатию кнопки.
Сделал такую форму:
Где я ошибся?
Подскажите, как сделать удаление профиля пользователя по нажатию кнопки.
Сделал такую форму:
<form action="" method="post">
<input type="hidden" name="uid" value="[[!+modx.user.id]]">
<input type="hidden" name="remove_profile" value="1">
<button type="submit" class="btn btn-danger" name="remove" value="remove" onclick="return confirm('Удалить Ваш профиль?')">Удалить</button>
</form>
и такой сниппет, вызываемый также на странице с формой<?php
if ($_POST['remove'] && ($_POST['remove_profile'] == 1)) {
$processor = 'user/delete';
}
$processorProps = array('processors_path' => $modx->getOption('core_path'). 'model/modx/processors/security/');
$response = $modx->runProcessor($processor, $_POST, $processorProps);
return true;
Но что-то не работает…Где я ошибся?
Пишем свой информер погоды для сайта

Данный тикет не относится к разработке под MODX, но так как информер я разместил на MODX-сайте, то делюсь наработками здесь.
Вкратце: скрипт парсит XML с погодой и по нескольким условиям выводит результат на сайте.
Итак, XML для своего города берем тут и вставляем ссылку с дописанным /data/ в $rss = simplexml_load_file(...).
Значки «погоды» прилагаются.
Пример работы посмотреть можно тут.
[localizator] Мультиязычность, СЕО, автоперевод...
Удаление группы у пользователя
Добрый вечер.
Прошу помощи, не могу понять как удалить определенную группу у пользователя через api.
Процесс создания группы нашел и успешно использую
Прошу помощи, не могу понять как удалить определенную группу у пользователя через api.
Процесс создания группы нашел и успешно использую
$user->leaveGroup(1);
$user->joinGroup(3);
$user->save();