Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 13 Ответов
  • 1707 Просмотров
*

yamenko

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Добрый день.

Мне необходимо сделать новую таблицу в другой базе данных сразу же после регистрации нового пользователя в Joomla 3.0, а также удалить ее если пользователь удалил свой аккаунт.

Нужно:
1. Подключиться к новой базе данных.
2. Добавить таблицу название которой совпадает с ID пользователя который присвоил ему Joomla.

Из этого следует:
1. Как получить сразу же этот ID?
2. Куда вставлять запрос на создание базы данных. (База будет отличаться от базы joomla).

PS никаких новых полей в форму регистрации вставлять не надо.

Заранее благодарен.
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Привет!

Это все очень легко делается с помощью плагина типа user. Вам нужно событие onUserAfterSave и onUserAfterDelete. Вот пример, как это сделано в плагине Profile.

И еще материал - подключение к другой базе данных.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Создать плагин в группе юзер и вам нужно два метода onUserAfterSave - после создания пользователя, и onUserAfterDelete - после удаления юзера
например:
Код: php
function onUserAfterSave( $data, $isNew, $result, $error ){
if($isNew){//коннектимся к новой базе и вставляем данные!}
}
в $data - данные о пользователе, $isNew - говорит о том что это новый пользователь !
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Создать плагин в группе юзер и вам нужно два метода onUserAfterSave - после создания пользователя, и onUserBeforeDelete - перед удалением
Перед удалением опасно, а если в базе Joomla произойдет сбой? Лучше убедиться, что удаление прошло успешно в базе Joomla, а потом уже удалять во внешней. Здесь лучше подходит onUserAfterDelete.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Перед удалением опасно, а если в базе Joomla произойдет сбой? Лучше убедиться, что удаление прошло успешно в базе Joomla, а потом уже удалять во внешней. Здесь лучше подходит onUserAfterDelete.
Дим а если после удаления произойдет сбой то данные тоже как бы не удалятся со второй базы )
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Дим а если после удаления произойдет сбой то данные тоже как бы не удалятся со второй базы )
Ну этот вариант лучше, так как внешняя база обычно вторична (имхо). Ну тут уже решать ТС, может у него приоритет у внешней базы.
*

yamenko

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Может еще подскажите документацию на русском с описанием команд, операторов и событий.


Заранее благодарен.
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Может еще подскажите документацию на русском с описанием команд, операторов и событий.


Заранее благодарен.
Я Вам дал ссылку на документацию по плагинам. А что такое команды и операторы?
*

yamenko

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
onUserAfterSave ()
onUserBeforeDelete ()
onUseAfterDelete()


+ в примерах на сайте
JPluginHelper::importPlugin()
JLoader::import()

Вот где вы это берете..... кроме этого внутри еще какие-то параметры.... что за что отвечает?
где взять полный  список с описанием как на сайте php.su или htmlbook.ru 
хотелось бы разобраться подробнее...


« Последнее редактирование: 04.10.2013, 14:49:39 от yamenko »
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Такой документации на русском не найдете (к сожалению). На английском есть чуть больше про плагины:
http://docs.joomla.org/Supporting_plugins_in_your_component
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Скорее всего нигде )
а зачем вам: JPluginHelper::importPlugin() и JLoader::import()?
вы же хотите что бы в стандартной регистрации после регистрации что то внеслось в другую таблицу?
так просто создаете плагин и у него один метод, я уже писал выше:
Код: php
function onUserAfterSave( $data, $isNew, $result, $error ){
if($isNew){//коннектимся к другой базе и вставляем данные!}
}
*

yamenko

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Тогда как будет выглядеть код если удалить пользователя:

Цитировать
function onUserAfterSave( $data, $isNew, $result, $error ){
if($isNew){//коннектимся к другой базе и вставляем данные!}
}
                                    ?
                                      | | |
                                     \/\/\/
onUserAfterDelete ($data, $isNew, $result, $error )

$isNew - тоже самое будет?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Тогда как будет выглядеть код если удалить пользователя:
вам же писали посмотреть плагин /plugins/user/profile/profile.php
Код: php
public function onUserAfterDelete($user, $success, $msg){
if (!$success)
{
return false;
}

$userId = JArrayHelper::getValue($user, 'id', 0, 'int');

if ($userId)
{
//удаляем данные в второй базе...
}

return true;
}
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
yamenko - может Вам еще и весь плагин написать? ;) Я дал Вам все ссылки, извините, но на русском их нет. На английском самая главная ссылка:
http://docs.joomla.org/Portal:Developers
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Условия отображения для конкретной группы пользователей Joomla 3.4.x

Автор dmik

Ответов: 15
Просмотров: 2627
Последний ответ 29.05.2020, 22:42:15
от voland
Подключить Joomla Framework в своем файле

Автор kolhoz

Ответов: 1
Просмотров: 1493
Последний ответ 06.12.2017, 17:15:42
от Aleks.Denezh
Переделать запросы к БД под Joomla

Автор Glog

Ответов: 3
Просмотров: 1187
Последний ответ 03.07.2017, 17:53:28
от Glog
Поддержка Joomla в PhpStorm

Автор b2z

Ответов: 51
Просмотров: 10338
Последний ответ 28.12.2016, 23:31:39
от b2z
Joomla search tools

Автор jitendra

Ответов: 2
Просмотров: 1135
Последний ответ 15.12.2016, 17:13:15
от jitendra