[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Joomla регистрационное письмо админу
HukpoFuJl
Приветствую всех, это мой первый пост, прошу строго не пинать.
В ПХП я пока дубоват, программирую немного на другого рода языках, но основы вроде знаю =)
Разделов по конкретным CMS не нашел, по этому создал тему здесь, т.к. связка SQL+PHP на мой взгляд тут как раз основная.

В общем, есть Joomla 1.7, никаких глобальных компонентов не повешено, только AlphaUserPoints и AJAXRegister.
Регистрация пользователей проходит с подтверждением на мыло. В registration.php добавил код, который высылает админу уведомление о регистрации нового пользователя:
Концовка кода registration.php:
if ($useractivation == 1)
{
$data = $user->getProperties();
$data['fromname'] = $config->get('fromname');
$data['mailfrom'] = $config->get('mailfrom');
$data['sitename'] = $config->get('sitename');
$data['siteurl'] = JUri::base();

$db = $this->getDbo();

$emailSubject = JText::sprintf(
'COM_USERS_EMAIL_REGISTRATION_NOTIFY_SUBJECT',
$data['name']
);


$emailBody = JText::sprintf(
'COM_USERS_EMAIL_REGISTRATION_NOTIFY_BODY',
$data['name'],
$data['email'],
$data['username']
);


// get all admin users
$query = 'SELECT name, email, sendEmail' .
' FROM #__users' .
' WHERE sendEmail=1';

$db->setQuery( $query );
$rows = $db->loadObjectList();

// Send mail to all superadministrators id
foreach( $rows as $row )
{
$return = JUtility::sendMail($data['mailfrom'], $data['fromname'], $row->email, $emailSubject, $emailBody);

// Check for an error.
if ($return !== true) {
$this->setError(JText::_('COM_USERS_REGISTRATION_ACTIVATION_NOTIFY_SEND_MAIL_FAILED'));
return false;
}
}

return "useractivate";}
elseif ($useractivation == 2)
{return "adminactivate";}
else
{return $user->id;}


Вопрос в следующем: Как получить ВСЕ поля, заполненные пользователем при регистрации??
В моем примере я получаю только логин, имя и мыло. Нужны параметры стандартного плагина "Пользователь - профиль", такие как "номер телефона", "Адрес", "Страна", "Город", "Дата рождения" и т.п.
Перегуглил всё что мог - ничего полезного нету...



Спустя 53 минуты, 31 секунда (22.03.2012 - 12:19) TranceIT написал(а):
Смотрите по коду откуда берется массив $data. Попробуйте вывести его полностью, возможно он всю инфу уже содержит, а далее ее надо просто добавить в

$emailBody = JText::sprintf(
'COM_USERS_EMAIL_REGISTRATION_NOTIFY_BODY',
$data['name'],
$data['email'],
$data['username']
);



Могу ошибаться, надо курить джумлу.

Спустя 14 минут, 58 секунд (22.03.2012 - 12:34) HukpoFuJl написал(а):
Спасибо за ответ. Но тут всё не так просто. Дело в том, что как раз $data заполняется параметрами тут:
$data = $user->getProperties();

И как раз там всего параметров и есть только ид/имя/мыло/логин. Остальные данные заполняются как бы в отдельном плагине при регистрации и пишутся в отдельную таблицу... Тут нужен знаток джумлы, выкуривать инфу из исходников надоело, ничего не могу найти...

Спустя 23 минуты, 9 секунд (22.03.2012 - 12:57) TranceIT написал(а):
Значит надо курить этот метод.

Если остальные данные в другую таблицу добавляются, то скорее всего просто надо добавить в этот метод дополнительный запрос к БД.

Спустя 1 час, 18 минут (22.03.2012 - 14:15) HukpoFuJl написал(а):
Ок, поковырялся по базе, нашел таки заветную таблицу, сделал её дамп. Помогите оформить правильный запрос, желательно что бы поля из таблицы можно было добавить в массив $data (код в первом посте).

Вот SQL дамп:

CREATE TABLE `ori_user_profiles` (
`user_id` int(11) NOT NULL,
`profile_key` varchar(100) NOT NULL,
`profile_value` varchar(255) NOT NULL,
`ordering` int(11) NOT NULL DEFAULT '0',
UNIQUE KEY `idx_user_id_profile_key` (`user_id`,`profile_key`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Simple user profile storage table';

INSERT INTO `ori_user_profiles` VALUES(47, 'profile.phone', '+7000000000', 5);
INSERT INTO `ori_user_profiles` VALUES(47, 'profile.postal_code', '0000000', 4);
INSERT INTO `ori_user_profiles` VALUES(47, 'profile.country', 'Россия', 3);
INSERT INTO `ori_user_profiles` VALUES(47, 'profile.city', 'Москва', 2);
INSERT INTO `ori_user_profiles` VALUES(47, 'profile.address1', 'Адрес', 1);
INSERT INTO `ori_user_profiles` VALUES(47, 'profile.dob', '2012-03-09', 6);
INSERT INTO `ori_user_profiles` VALUES(47, 'profile.pasport', 'AA000000', 7);
INSERT INTO `ori_user_profiles` VALUES(47, 'profile.refknow', '1', 8);

INSERT INTO `ori_user_profiles` VALUES(48, 'profile.phone', '+3750000000', 5);
INSERT INTO `ori_user_profiles` VALUES(48, 'profile.postal_code', '246031', 4);
INSERT INTO `ori_user_profiles` VALUES(48, 'profile.country', 'Беларусь', 3);
INSERT INTO `ori_user_profiles` VALUES(48, 'profile.city', 'Гомель', 2);
INSERT INTO `ori_user_profiles` VALUES(48, 'profile.address1', 'Адрессс', 1);
INSERT INTO `ori_user_profiles` VALUES(48, 'profile.dob', '1999-11-30', 6);
INSERT INTO `ori_user_profiles` VALUES(48, 'profile.pasport', 'AA000000', 7);
INSERT INTO `ori_user_profiles` VALUES(48, 'profile.refknow', '2', 8);


ID пользователя на сколько я знаю можно получить так:
$user->get('id');
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.