Két oldal összevonása

eMeLA képe

A feladat, két oldal user tábláinak összevonása.
A két oldal multisite-kén működne tovább, de az user táblája közös volna.

Az érdekelne, hogy van-e valaki, akinek van ilyen irányú tapasztalata !?
Vagy valakinek elképzelése, hogy lehet nekifogni a dolognak.

Az elképzelésem, hogy az A oldalon a felhasználók UID értékét átszámozom a B oldal legynagyobb értéke fölé, majd az A oldal összes olyan mezőjét az új számozáshoz igazítom, ahol van UID érték. Utána lehet exportálni/importálni a A oldal felhasználóit.
A buktatót ott látom, hogy nem tudom, hol tárol úgy UID értéket a Drupal, ahol a mezőnév valami más.

Fórum: 
pp képe

settings.php-ban elég jól le van írva. A lényeg, hogy a user táblán kívűl a sequences táblát is közössé kell tenned.

Persze kérdés mit akarsz, mert lehet a Drupal modul segítségével lehetővé tenni, hogy az egyik oldalon regisztrált felhasználók a másikon kényelmesen bejelentkezzenek. (a 6-ban meg már ott az openID)

pp

0
0
eMeLA képe

Na igen, ezt nem írtam le :(
Az kevés, hogy az user és a sequences táblákkal operálok, mivel vannak fórumbejegyzések és igen sok felhasználó által beküldött node-ok is (merthogy a két oldal, két meglévő oldal). Mivel ezekhez is tartozik UID, ezekkel is gond van. És ezen kívül biztos van egy két hely ahol a felhasználó uid-ja még ezen kívül is tárolódik.

0
0

...mit tudok: http://web.termuves.hu

Illyés Edit képe

Mivel ezekhez is tartozik UID ezekkel is gond van.

Milyen gond? A node modul eltárolja az UID-t a saját táblájában, node megjelenítéskor pedig a Drupal lekérdezi az UID-hez tartozó felhasználónevet a users táblából (ami történetesen meg van osztva és másik webhely is onnan kérdezi le a felhasználóneveket, de neki ez mindegy).

0
0
pp képe

Tehát van egy meglévő oldalad... Ezek drupal alapú oldalak? mert akkor kapcsold be a Drupal modult és kész. Vagy már én sem értem, hogy mit akarsz...

Két meglévő oldal adatait akarod úgy migrálni két másik oldal adataiba, hogy valami közös legyen bennük?

pp
(szerintem valamit nagyon nem jól gondoltál/gondoltatok át ;))

0
0
eMeLA képe

Ugyan a nyitókérdésől kimaradt a lényeg, de a helyesbítésben benne van "merthogy a két oldal, két meglévő oldal". (na jó lehet, hogy még így sem eleég érthető, tehát a http://www.mmplayer.hu és a http://www.cybergen.hu oldalakat akarom összevonni :)

Akkor mégegyszer:

Van A oldal, 1288 regisztrált tag, 1064 db node (ezek nagy részét a felhasználók hozták létre)
Van B oldal, 785 regisztrált tag, 2685 db node (ezeket 5-6 ember hozta létre)

Namost a két oldal multisite-ként szeretne tovább működni, közös USER táblával.
Nem a multisite beüzemelése a gond, olyat már csináltam, hanem, hogy nem elég a user tábla összevonása.... A Durpal modul pedig esetemben nem kielégítő megoldás.

0
0

...mit tudok: http://web.termuves.hu

Illyés Edit képe

nem elég a user tábla összevonása....

  1. B oldal felhasználóit hozzáadod az A oldal users és user_roles táblájához (vagy fordítva, attól függően, hogy melyik adatbázis tábláját akarod használni).
  2. A sequences táblában átállítod a users_uid értékét A+B-re.
  3. Mivel a B oldal felhasználói új uid azonosítót kaptak, ezért végigmész a B oldal adatbázisán, és mindenhol, ahol uid-t látsz, lecseréled a régi azonosítót az újra.
  4. Előtte biztonsági mentés mindkét adatbázisról :)
0
0
eMeLA képe

Akkor a roles táblákat is össze kell vonni, mivel a csoportokra is szükség van.
Vajon mi van még ?

0
0

...mit tudok: http://web.termuves.hu

Illyés Edit képe

Vajon mi van még ?

Miért nem nézel körül az adatbázisban? Ahol látod, hogy van uid mező, azt nyilván frissíteni kell az új uid értékekkel. Mi a probléma?

0
0
Pasqualle képe

Ha azonos felhasznaloi neveket talalsz, akkor azokkal gond lesz. Legjobb esetben az egyik nem fog mukodni a ketto kozul, de en nem lennek ennyire optimista..

tabla kereses oszlopnev szerint:

SELECT table_schema, table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'drupal' AND column_name = 'uid';

A drupal helyett a sajat adatbazisod nevet ird..

0
0
eMeLA képe

A lekérdezés nálam nem működik...

A felhasználók azonosítása uid szerint történik (tudtommal), egyedül a beléptetésnél kell felhasználónevet megadni, de ha van azonos felhasználónév, a jelszó mindenképpen eldönti kiről van szó, feltéve ha a felhasználónév és a jelszó nem ugyanaz. Ezután már csak az UID számit (tudtommal).

Igen, vagyis az összevonásnál vizsgálni kell, hogy az illető nem szerepel-e már az adatbázisban mégpedig a felhnév+jelszó páros keresésével.

0
0

...mit tudok: http://web.termuves.hu

Pasqualle képe

Sok minden nem fog mukodni azonos felhasznalo nevekkel. Minden olyan funkcio ami a felhasznalo neve szerint mukodik.
peldaul:
a felhasznalo tiltasa

function user_is_blocked($name) {
  $deny  = db_fetch_object(db_query("SELECT name FROM {users} WHERE status = 0 AND name = LOWER('%s')", $name));
 
  return $deny;
}

es ha jol tudom a jelszo emlekezteto funkciohoz is eleg nevet megadni.
es a beleptetesnel hasznalt user_load() fuggveny is mukodik jelszo nelkul, de nem neztem at mikor hivodik igy..

0
0
Pasqualle képe

megjegyzes: az oldalon nincs bekapcsolva minden alap modul, de van nehany kiegeszito modul, peldaul i18n. szoval lehet elteres a lekerdezes eredmenyeben egy masik adatbazison. ha lokalis gepen (root felhasznaloval) futtatod, akkor kellene, hogy legyen jogosultsagod a futtatashoz.

mysql> SELECT table_schema, table_name, column_name
    -> FROM information_schema.columns
    -> WHERE table_schema = 'drupal5_mede_sk' AND column_name = 'uid';
+-----------------+----------------+-------------+
| table_schema    | table_name     | column_name |
+-----------------+----------------+-------------+
| drupal5_mede_sk | accesslog      | uid         |
| drupal5_mede_sk | authmap        | uid         |
| drupal5_mede_sk | comments       | uid         |
| drupal5_mede_sk | history        | uid         |
| drupal5_mede_sk | node           | uid         |
| drupal5_mede_sk | node_revisions | uid         |
| drupal5_mede_sk | poll_votes     | uid         |
| drupal5_mede_sk | sessions       | uid         |
| drupal5_mede_sk | users          | uid         |
| drupal5_mede_sk | users_roles    | uid         |
| drupal5_mede_sk | watchdog       | uid         |
+-----------------+----------------+-------------+
0
0
pp képe

Kutya legyek, ha ebből értem azt, hogy miért akarod ezt csinálni?
Elég genya dolog csak így az arcomba vágni, hogy "A Durpal modul pedig esetemben nem kielégítő megoldás." :P Persze, hogy nem az, hisz vaktában tapogatózunk.

Én feltételeztem, hogy ezt azért akarod, hogy a júzerek mindkét oldalon be tudjanak lépni ugyan azzal az azonosítóval és jelszóval. Ezért javasoltam amit írtam. Nem vagyok biztos benne, hogy nem létezik egyszerűbb megoldás a problémádra, de mivel nem tudom mit akarsz ezért nem is lehet tanácsot adni.

Edit által leírtak járhatónak tűnnek. Mindenképpen azt javaslom, hogy egy tesztkörnyezetet állíts fel, ahol egy hónapig tesztelhetik a felhasználóid az új rendszert, mert így talán kibuknak majd azok a hibák amikre itt nem gondoltunk.

pp

0
0
dorion képe

Habár ezek igazán csak akkor jók, ha nagyon sok felhasználód van, mint nálunk <45000, és több oldara is be akarod engedni őket, akkor az LDAP integrationnal amolyan szegény ember SSO-ja lehet :-).

Már csak azért is jóbb ez a megoldás mert késöbb más szolgáltatásokat is építhetsz az LDAP-ra akár OpenID kiszolgálót is :-), persze ez csak a monstrum szervezetekre igez mint pl egy egyetem vagy főiskola.

0
0
eMeLA képe

Köszönöm, de ez most kínai volt. Ennyire azért nem értek hozzá, de majd utánanézek .)

0
0

...mit tudok: http://web.termuves.hu

dorion képe

Most már látom nem is lenne ez jó neked.

0
0