Joomla spreminjanje user IDjev?

Lp,
za joomlo delamo en bridge, s katero bo komunicirala z eno drugo aplikacijo, v kateri že imamo userje in jih moramo tam ohraniti. Userji tam imajo čisto svoje IDje (vrednosti xxxx) in sedaj preden začnemo z bridgejom delat, bi bilo treba v Joomli spremeniti IDje userjem, da bodo enaki tistim v naši aplikaciji.
Na kaj moram paziti, ko to delam? Na spletu nisem našel praktično nič o tem, kar me malo skrbi? Je ok, če jim ID kar spremenim v bazi? Predvsem bi želel, da potem joomla enkrat v prihodnosti ne povozi teh IDjev, ko pride z lastnim štetjem do tja?

Hvala!

13 odgovorov

Načeloma je ok, če jih spremeniš v bazi - jih nebi smela povozit ko pride do zaporednega dodajanja. Seveda pa najbolje stestirat z nekaj testnimi userji, da bo za ziher.

Gre za Joomlo 2.5.9.
Sedaj gledam, da očitno to ni problematično, joomla si zapomni najvišjo številko IDja v bazi in potem naslednjemu userju, ki se registira, da najvišja + 1. Zgleda da bo ok. Zdaj pa grem uničit spletno stran :D

Za plonkec si lahko vzameš tole ;)

1

Če boš ročno spreminjal tabelo users moraš popraviti še tabelo "userusergroupmap" v kateri so relacije med userid in groupid.
Popraviti boš moral tudi id-je userjev v teh tabelah, če niso prazne (običajno se napolnijo že pri inštalaciji, če namestiš "Sample Data").categories
contactdetails
content
finder
filters
messages
newsfeeds
usernotes
user
profiles
weblinks
Če ne ti bo v adminu sporočalo napake, ker Joomla ne bo našla id userja, ki je ali lastnik zapisa ali ga je nazadnje spreminjal.

1

Če ima zadeva foreign keye in ON UPDATE nastavljen na CASCADE, ti bo vse samo spremenilo v omenjenih tabelah.
Če ne uporablja FKjev, pa je še eno potrdilo zame, kakšen šrot od software-a je to :)

Matjaž ? jfusion že imam, ker se bo ta joomla povezovala tudi z phpbb, ne vem pa kaj točno si mislil s tem?

esedic, zdaj si me pa malo prestrašil :D V osnovi gre za userje, ki nimajo ne prispevkov, ne čisto ničesar drugega. Admin-a, ki to ima, bom pustil pri miru.. Tako da po moje ravno veliko v teh drugih tabelah, ki si mi jih zapisal, ni treba popravljat, ali?
Kolikor vidim, se userusergroupmap sama popravi. Mogoče zato, ker sem potem userja odprl in zaprl v joomla user nadzoru...
User notes in user profiles sta pa prazni. V osnovi, če tega userjem ne dodajam, verjetno tudi ni potrebno spreminjat, ali?

SlimDeluxe, I have no idea what you speak about. Ampak trenutno izgleda, da se stvar sama rihta :D Tak da, očitno je ql :D

@Preseren, ce bos admina pustil na miru, potem ni panike glede lastništva v drugih tabelah, če drži to, da ostali userji niso lastniki vsebine.
Če si te userje odpril in shranil potem, ko si spremenil id-je, potem se je tabela userusergroupmap sama posodobila.

@SlimDeluxe, Joomla je CMS v osnovi namenjen za široko množico in ni predvideno, da se id-ji userjev spreminjajo, zato verjetno ni implementirano to, kar si napisal. Ko sem sam menjaval id-je userjev direktno v bazi, sem pa naletel na prej omenjeno težavo. Vse je funkcioniralo normalno, samo napaka o lastništvu se je pojavljala tam, kjer sta v tabelah polji createduserid in modifieduserid. Bi te pa prosil (če najdeš čas), če bi mi v ZS konkretno opisal, kako bi nastavil te stvari v bazi. Me res zanima, mogoče bi lahko naredi predlagal izboljšavo prek Joomla repozitorija na GitHubu.

To je recept za samomor.

"Pravilna" rešitev je, da k vsakemu userju daš še "joomlaID" polje in potem delaš dostope prek tega podatka.

Prešeren: foreign keyi (tuji ključ) se v podatkovnih bazah uporabljajo ravno za to, da se ohranja konsistenca/integriteta podatkov. Imaš ON UPDATE in ON DELETE trigger, kjer poveš, kaj se zgodi, če se originalni zapis (v tem primeru ID userja) spremeni ali izbriše.

esedic: neke hude implementacije ni, samo tabela mora biti pravilno ustvarjena. Pa če uporabljaš MySQL, mora za table engine biti nastavljen InnoDB.
Predvidevam, da sedanja joomla to ima že urejeno, lahko pa mi pošlješ eno sample bazo na info afna tauron pika si, pa ti povem točno oz. ti pošljem upgrade skripto (SQL file z DDL stavki).

Kokr vem, MySQL ne podpira tujih ključev.