Всем доброго дня.
Подскажите как сделать обработку.
Создал несколько групп и при регистрации пользователь выбирает к какой он группе принадлежит
в файле init.php
сделал обработку:
Код |
---|
<?
AddEventHandler("main", "OnAfterUserAdd", Array("AddElementInBlock", "OnAfterUserAddHandler"));
AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserUpdateHandler");
AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserUpdateHandler");
function OnBeforeUserUpdateHandler(&$arFields)
{
if($arFields['UF_SPISOK_SVADBA1'] == 64) {
$arFields["GROUP_ID"] = array(12);
class AddElementInBlock
{
// создаем обработчик события "OnAfterUserAdd"
function OnAfterUserAddHandler(&$arFields)
{
if (CModule::IncludeModule('iblock')) {
$bs = new CIBlockElement;
$PROP = array();
$PROP[204] = $arFields["ID"];
$arFieldsi = Array(
"ACTIVE" => "Y",
"IBLOCK_ID" => 23, //ID инфоблока в котором создастся элемент
"IBLOCK_SECTION_ID" => 132,
"PROPERTY_VALUES"=> $PROP,
"NAME" => $arFields["LOGIN"], //Название раздела с логином пользователя
"CODE" => $arFields["LOGIN"], //Символьный код раздела с логином пользователя
"SORT" => $SORT,
"DETAIL_PICTURE" => $arFields["PERSONAL_PHOTO"], // картинка, загружаемая из файлового поля веб-формы с именем DETAIL_PICTURE
);
if ($ID > 0) {
$res = $bs->Update($ID, $arFieldsi);
} else {
$ID = $bs->Add($arFieldsi);
$res = ($ID > 0);
}
if (!$res)
echo $bs->LAST_ERROR;
}
}
}
}
}
?>
|
при регистрации создается раздел с логином пользователя и идет привязка раздела с пользователем.
Но если пользователь вводит уже имеющийся логин, то он не регистрируется, но раздел создается.
А при вводе уже нового логина раздел не создается.
Например:
user1 уже зарегистрирован
новый пользователь пытается зарегистрироваться под логином user1
выходит сообщение , что такой пользователь уже есть, но создается раздел с именем user1
а после изменения логина на user2
регистрация успешна, но раздел не создается.
Как сделать чтобы была проверка при создании раздела на успешность регистрации?
пробовал так:
Код |
---|
<?
AddEventHandler("main", "OnAfterUserAdd", Array("AddElementInBlock", "OnAfterUserAddHandler"));
AddEventHandler("main", "OnAfterUserRegister", Array("AddElementInBlock", "OnAfterUserRegisterHandler"));
AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserUpdateHandler");
AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserUpdateHandler");
function OnBeforeUserUpdateHandler(&$arFields)
{
if($arFields['UF_SPISOK_SVADBA1'] == 64) {
$arFields["GROUP_ID"] = array(12);
class AddElementInBlock
{
// создаем обработчик события "OnAfterUserRegister"
function OnAfterUserRegisterHandler(&$arFields)
{
// если регистрация успешна то
if($arFields["USER_ID"]>0)
{
// создаем обработчик события "OnAfterUserAdd"
function OnAfterUserAddHandler(&$arFields)
{
if (CModule::IncludeModule('iblock')) {
$bs = new CIBlockElement;
$PROP = array();
$PROP[204] = $arFields["ID"];
$arFieldsi = Array(
"ACTIVE" => "Y",
"IBLOCK_ID" => 23, //ID инфоблока в котором создастся элемент
"IBLOCK_SECTION_ID" => 132,
"PROPERTY_VALUES"=> $PROP,
"NAME" => $arFields["LOGIN"], //Название раздела с логином пользователя
"CODE" => $arFields["LOGIN"], //Символьный код раздела с логином пользователя
"SORT" => $SORT,
"DETAIL_PICTURE" => $arFields["PERSONAL_PHOTO"], // картинка, загружаемая из файлового поля веб-формы с именем DETAIL_PICTURE
);
if ($ID > 0) {
$res = $bs->Update($ID, $arFieldsi);
} else {
$ID = $bs->Add($arFieldsi);
$res = ($ID > 0);
}
if (!$res)
echo $bs->LAST_ERROR;
}
}
}
return $arFields;
}
}
}
}
?> |
но ничего не происходит. только пользователь добавляется.
И как сделать чтобы при создании раздела в нем создавались еще дополнительные разделы?