PDA

Zobacz pełną wersję : Rejestracja nowego użytkownikach w dwóch bazach iMySQL



maverickoti
24-02-2014, 18:53
Potrzebuje posiadać zewnętrzną (poza joomlą) bazę danych z zarejestrowanymi użytkownikami (login) na portalu (Joomla3).

Mój pomysł to w pliku który wysyłane są informacje o nowym użytkowniku do odpowiedniej tabeli w konstrukcji Joomla dopisać, by jeszcze wysyłał do zewnętrznej bazy (INSERT INTO ....)

Ma ktoś lepszy pomysł?
Jak nie to kto wie, który plik w Joomla3 odpowiada za wysyłanie do tabeli prefix_users informacji?

NOTA:
Jeszcze miałem pomysł z użyciem triggera w MySQL, ale szczerze nie wiem czy taki wywoływacz działa pomiędzy dwiema bazami nawet jak są na tym samym hostingu. Hmm....

maverickoti
25-02-2014, 09:08
A czy ktoś wie, który plik odpowiedzialny jest za zapis nowego rekordu z użytkownikiem przy rejestracji?

maverickoti
25-02-2014, 12:51
Najlepsza na forach jest jednoosobowa burza mózgów. Ehhhh

ROZWIĄZANIE:
Wiadomo, że Joomla oparta jest na wzorcu MVC więc pliku odpowiedzialnego za zapis do bazy iMySQL danych będzie odpowiadał plik znajdujący się w katalogu: models.
Na pewno nie będziemy szukać takiego pliku w katalogu module tylko components.

Reasumując taki plik odpowiedzialny za zapis nowego uzytkownika znajduje się:
/components/com_users/models/registration.php

Jeśli ktoś będzie potrzebował pomocy z tego zakresu proszę pisać na prv. Postaram się pomóc.

Jola
25-02-2014, 16:31
Mam nadzieję, że wiesz do ilu tabel zapisywane są informacje o nowym uzytkowniku.
Jeśli nawet dobrze utworzysz modyfikację i będzie kopiowała konto użytkownika do innej bazy, to bedziesz sie cieszył tym rozwiązaniem krótko - do czasu najblizszej aktualizacji.
Najlepszym rozwiazaniem jest napisanie dodatku - np. z grupy user (funkcja onContentPrepareData jest wywoływana w modelu rejestracji)

maverickoti
25-02-2014, 18:52
dodatku, czyli pluginu czy komponentu?
Przyznaje Ci racje. Ubolewałem nad moim rozwiązaniem.

zwiastun
25-02-2014, 20:59
Dodatek= 'plugin'

maverickoti
26-02-2014, 16:55
Dzięki Jola za naprowadzenie na dobry tor. Tego było mi trzeba. Poczytałem trochę tutoriali jak się piszę takie pluginy i na pierwszy rzut oka to nie jest źle. Oczywiście jest mały problem z samym kocem w pliku *.php. Czy możesz zerknąć i powiedzieć co w nim jest nie tak? Nie chodzi mi o brak np nawiasu tylko czy czegoś znaczącego brakuje czy na pierwszy rzut oka to o coś takiego chodzi i powinno działąć.

<?php
defined('_JEXEC') or die;

class plgUserUser_zyga extends JPlugin
{
$db = JFactory::getBDO();
$query = $db->getQuery(true);
$query->select('username')
->from('#__pob1_users');

$username = 'username';
$password = 'password';
$database = 'zygakomp';
mysql_connect('localhost', $username, $password);
@mysql_select_db($database) or die("Nie udało się wybrać bazy danych");
$newquery = "INSERT INTO zz1_users VALUES ('','$row','','')";


$db->setQuery($query);
$rows = &db->loadObjectList();
foreach($rows as $row):
$row->username;
mysql_query($newquery);
endforeach;
mysql_close();
}
?>

Jola
26-02-2014, 17:34
Przyjrzyj się standardowym dodatkom z grupy user a zwłaszcza budowie:
klasa zawiera funkcje;
funkcje zawierają parametry;
funkcje (z parametrami) pluginów są wywoływane w kodzie silnika Joomla

W poprzednim wątku wskazałam Ci jakiej funkcji powinieneś użyć - dane rejestracyjne oprócz hasła masz juz przekazane w parametrach.