Василий Столейков

Василий Столейков

С нами с 19 декабря 2012; Место в рейтинге пользователей: #25
Отправить деньги
Василий Наумкин
06 февраля 2014, 22:39
2
+1
Объект msdUserGroup, его id совпадает с id группы пользователей, а скидка в поле discount.

Вывод юзеров с присоединением основной группы:
[[!pdoUsers?
	&tpl=`@INLINE <p>[[+id]] [[+fullname]] [[+discount]]</p>`
	&innerJoin=`{"msdUserGroup":{"class":"msdUserGroup","on":"msdUserGroup.id = modUser.primary_group"}}`
	&select=`{"modUser":"*","msdUserGroup":"*"}`
]]
Следует иметь в виду, что юзер может входить в несколько групп, и тогда показывать его скидку так просто уже не выйдет.
Василий Наумкин
28 января 2014, 14:19
1
0
Эдак ты бы у меня каждый день заново логинился.

Не обязательно завершать все сеансы, можно точечно обновлять права юзера.
Василий Наумкин
28 января 2014, 14:18
4
0
Я выставляю пользователю переменную в поле extended профиля, а потом проверяю её при загрузке им страницы.

Если есть — перезагружаю его права.
$extended = $modx->user->Profile->get('extended')) {
if (!empty($extended['updateGroups'])) {
	unset($_SESSION['modx.user.'.$modx->user->id.'.userGroupNames']);
	$extended['updateGroups'] = 0;
	$modx->user->Profile->set('extended', $extended);
	$modx->user->Profile->save();
	
	$ctxQuery = $modx->newQuery('modContext');
	$ctxQuery->select($modx->getSelectColumns('modContext', '', '', array('key')));
	if ($ctxQuery->prepare() && $ctxQuery->stmt->execute()) {
		if ($contexts = $ctxQuery->stmt->fetchAll(PDO::FETCH_COLUMN)) {
			$serialized = serialize($contexts);
			$modx->exec("UPDATE {$modx->getTableName('modUser')} SET {$modx->escape('session_stale')} = {$modx->quote($serialized)}");
		}
	}
}
Василий Наумкин
12 декабря 2013, 15:41
1
0
Сниппеты быстрые, должно нормально работать. Иначе только свой писать, и не факт что будет большая разница.

Укажи только pdoResources
&depth=`0`
&where=`{"class_key":"msCategory"}`

Ну и в msProducts можно тоже подкорректировать. Иначе, если товаров много, выборка будет дольше.
Василий Наумкин
07 декабря 2013, 18:14
1
0
Почитать по ссылке не пробовал?
&where=`{"Data.favorite":"1"}`
Clean
26 ноября 2013, 23:28
1
0
Подозреваю что в системных настройках выставить
Схема URL link_tag_scheme full
поможет
Василий Наумкин
19 ноября 2013, 05:52
1
0
Тут всё просто:
$результат = условие
	? если да, то это
	: если нет, то вот это;

Очень удобно, и можно писать в одну строку:
$результат = условие ? если да, то это : если нет, то вот это;
Василий Наумкин
06 ноября 2013, 10:18
2
0
Установи пакет QuickEmail и проведи диагностику:
[[!QuickEmail?
	&debug=`1`
]]
Олег Трубин
11 сентября 2013, 17:47
3
0
Я сделал так. Задача: Нужно разным группам пользователей показывать разные ресурсы.
1. Иду «Безопасность — Группы ресурсов». Создаю группу ресурсов: имя — «vkm-kurs», контекст — «web», ставлю галочку — «Создать параллельную группу пользователей», жму «сохранить»;
2. Прямо там же, перетаскиванием, добавляю в эту группу нужный ресурс;
3. Иду «Безопасность — Контроль доступа». На вкладке «Группы пользователей» щелкаю правой кнопкой по автоматически созданной группе пользователей «vkm-kurs» и выбираю «Добавить пользователя в группу». В появившемся окошке выбираю нужного пользователя и выбираю роль «member» (у неё ранг 9999).
4. Далее, для проверки, опять щелкаю правой кнопкой по группе пользователей «vkm-kurs» и выбираю «Редактировать группу пользователей». На открывшейся страничке, на вкладке «Доступ к группам ресурсов» в табличке вижу запись: Группа ресурсов — «vkm-kurs», минимальная роль — «Member — 9999», Политика доступа — «Resource», Контекст — «web».
5. Далее проверяю её видимость на фронте для анонимов и для нужного юзера. Проверяю в другом браузере — где НЕ залогинен админом — вроде всё работает.
Смирнов Николай
Смирнов Николай
28 июня 2013, 02:46
1
0
Лучше такие вещи делать через процессоры.
Тут и проверка прав, и кэш обновиться и события сработают
<?php
if (!isset($_GET['docid']) and !$id = intval($_GET['docid'])) {
    return;
}
$response = $modx->runProcessor('resource/delete', array('id' => $id));
if (!$response->isError()) {
    return 'Ресурс отмечен как удаленный!';
    // echo $response->getResponse();
}