Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 140 комментариев

Алексей Марунин
Алексей Марунин
Да, я помню в свое время долго ломал голову, пока не добрался до этого пресловутого 'passwordnotifymethod' :) Сожалею, что не увидел ваш вопрос вовремя. Тем не менее, пару моментов все же отмечу:

Для начала корректно обрабатываем ошибки при регистрации:

// Запускаем стандартный процессор регистрации
$response = $this->modx->runProcessor( 'security/user/create', $options );
if ( $response->isError() ) {
	// Получаем весь набор ошибок (например, не задано имя пользователя, пустой пароль и т.д.)
        $errors = $response->response['errors'];
	foreach ( $errors as $error ) {
		$errorMsg = $error['msg'];
		// Выводим сообщение об ошибке в лог или плейсхолдер
	}
}
else {
	// А здесь все замечательно, получаем массив 
	// с параметрами пользователя (не объект типа modUser!)
	$userArray = $response->getObject();
}


Далее. Добавление в группу при регистрации тоже простое:

// Получаем идентификаторы групп и ролей, используемых по умолчанию
// Группу Registered заменить на нужную (она должна быть заранее создана!)
$group = $this->modx->getObject( 'modUserGroup', array( 'name' => 'Registered' ) ); 
$userGroup = $group->get( 'id' );
$role = $this->modx->getObject( 'modUserGroupRole', array( 'name' => 'Member' ) );
$userRole = $role->get( 'id' );

...
// При вызове процессора обратите внимание на второй параметр - $options.
// В него нужно добавить следующий элемент:
$options['groups'] = array( array( 'usergroup' => $userGroup , 'role' => $userRole ) );
// По аналогии можете созданного пользователя добавлять сразу в несколько групп с различными ролями

Надеюсь, помог :) Ибо сам буквально недавно «варился» в этом очень основательно :)
Дмитрий Кудинкин
Дмитрий Кудинкин
Столкнулся с таким:

[2012-12-02 14:18:16] (ERROR @ /assets/components/tickets/connector.php) Encountered empty IN condition with key resource
[2012-12-02 14:18:16] (ERROR @ /assets/components/tickets/connector.php) Error 42000 executing statement:
Array
(
[0] => 42000
[1] => 1064
[2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY `TicketComment`.`createdon` DESC LIMIT 20' at line 1
)

Раздел с тикетами создается, но таблица pgt_tickets_threads пуста. С локалями вроде все в порядке.
Подтолкните в нужном направлении…
Сергей Лелеко
Сергей Лелеко
Сергей Лелеко
Сергей Лелеко
Ваше решение пока не пробовал ибо не разобрался до конца, но максимум чего удалось достигнуть так это регистрации 137 пользователей (всего 390). И в эррор логе системы пусто не могу понять чего не хватает.
Владимир Ребров
Владимир Ребров
В общем сделал так:
в чанке дерева вызываю сниппет для вывода первого уровня
[[!getResources? &parents=`19` &tpl=`menu-list-tpl` &depth=`0` &limit=`1000` ]]
в указанном шаблоне menu-list-tpl вывожу тайтл ресурсов первого уровня и опять вызываю сниппет,
указывая родителем ресурс из текущей итерации верхнего getResources
[[+pagetitle]]
[[!getResources? &parents=`[[+id]]` &tpl=`sub-menu-list-tpl` &includeTVs=`1` &processTVs=`1` &limit=`1000` ]]
в sub-menu-list-tpl вывожу то, что нужно для ресурсов 2 уровня(тайтл, тв-параметры).
Дальше дело за CSS.
Сергей Лелеко
Сергей Лелеко
совсем забыл что есть пользователи с 0000000000 вместо уникального номера, которых мне обрабатывать не нужно. Видимо как раз при попытке создать второго пользователя с таки же логином и выдается ошибка и дальнейшее создание пользователей уже не происходит.
Сергей Лелеко
Сергей Лелеко
Нашел вот какой момент, пользователи не регистрировались пока не внес такие изменения:
foreach ($users_data_arr as $usr_data) {
$username = $usr_data->get('inn');
$org_name = $usr_data->get('organization');
$password = $usr_data->get('passwd');
$response = $modx->runProcessor('/security/user/create', array(
'username' => $username,
'fullname' => $org_name,
'email' => 'test@com.ru',
'newpassword' => TRUE,
'specifiedpassword' => $password,
'confirmpassword' => $password,
'passwordnotifymethod' => 'e'
));
И 3 пользователя на ура создаются!!! Правда только 3 и дальше ошибки пишутся в лог но ошибка пустая также, так что теперь я в замешательстве… Почему же 3 пользователя все-таки создаются? Значит решение работает но чего-то не хватает толи памяти толи времени выполнения.
Ваня
Ваня
Вот я когда-то себе делал
<?php
if ($modx->event->name == 'OnPageNotFound') {

if ($modx->getOption('friendly_urls')) {
    if (!function_exists('cleanArray')) {
        function cleanArray($array) {
            $Result = array();
            foreach ($array as $key => $value) {
    	        if ($value != '')
    	            $Result[] = $value;
    	    }
    	    return $Result;
    	}
    }
	$url = cleanArray(explode('/',$_SERVER['REQUEST_URI']));
    
    if ($url[count($url)-1] == 'compare') {
    	$modx->sendForward(118);
    }
}

}
Форвард на ресурс с ID 118

А уже на этом ресурсе проверяется сниппетом URL и возвращается результат