Sziasztok!
Próbálok létrehozni felhasználót saját modullal ez alapján
http://www.jayboodhun.com/create-user-programatically
<?php 02./** 03. * Date dd/mm/yyyy 04. * Creates a user with profile values. 05. * 06. * @param $data 07. * $_POST data for example. 08. * 09. * @return 10. * $user Object. 11. */ 12.function my_module_create_user($data) { 13. // Drupal User module function that generates MD5 hash password 14. $pass = user_password(); 15. $newuser = array( 16. 'name' => $data['name'], 17. 'mail' => $data['mail'], 18. 'status' => 1, // Sets user as Active 19. 'pass' => $pass 20. ); 21. $auto_user = user_save('', $newuser); 22. $rid = 4; // Assign Role ID 23. $uid = $auto_user->uid; 24. db_query('INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)', $uid, $rid); 25. // Populates profile values 26. $profile = array( 27. 'firstname' => $data['firstname'], 28. 'lastname' => $data['lastname'], 29. 'company' => $data['company'], 30. 'address' => $data['address'], 31. 'city' => $data['city'], 32. 'state' => $data['state'], 33. 'country' => $data['country'], 34. 'phone' => $data['phone'], 35. ); 36. // Adds details under Personal Information Category set in Profile 37. profile_save_profile($profile, $auto_user, 'Personal Information'); 38. // Load the new user Object 39. $account = user_load(array('uid' => $auto_user->uid, 'status' => 1)); 40. global $user; 41. $user = $account; 42. drupal_set_message(t('You have been authenticated')); 43. db_query("UPDATE {users} SET login = %d WHERE uid = %d", time(), $user->uid); 44. sess_regenerate(); 45. // Finally send an Email 46. /* 47. * Mail templates available: 48. * register_no_approval_required 49. * register_admin_created 50. * register_pending_approval - Need to set Status above as 0 if this option is required 51. */ 52. drupal_mail('user', 'register_no_approval_required', variable_get('site_mail', ini_get('sendmail_from')), language_default(), $params); 53. // Set the redirection to where you want 54. drupal_goto('home'); 55.} 56.?>
de ez a rész nem akar feltöltődni adatbázisba.
25. // Populates profile values 26. $profile = array( 27. 'firstname' => $data['firstname'], 28. 'lastname' => $data['lastname'], 29. 'company' => $data['company'], 30. 'address' => $data['address'], 31. 'city' => $data['city'], 32. 'state' => $data['state'], 33. 'country' => $data['country'], 34. 'phone' => $data['phone'], 35. ); 36. // Adds details under Personal Information Category set in Profile 37. profile_save_profile($profile, $auto_user, 'Personal Information');
kiirattam és tömb értékeivel minden rendben van, de az adatbázis akkor is üres marad. ha jól értem amit a profil alatt létrehoztam mezőket azoknak a nevét kell megadnom, mint mondjuk 'fullname' => $data['teljesnev']
és működnie kellene. Mit szúrtam el?
Drupal verzió:
Fórum:
API
Ne erre indulj el, a Drupal API-t használd, azért van. Pl. van egy user_save() függvény, ami erre való, csak egy $user objektumot kell átadni neki. Ha érdekel az objektum felépítése, akár a user_load() segítségével betöltheted egy létező felhasználóét, és a var_dump(), vagy a Devel modul dpr() függvénye kiírja neked.
Csak akkor matass az adatbázisban, ha nincs más (hatékony) módszer a problémád megoldására és pontosan tudod, hogy mit miért csinálsz.
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
bár lehet
Bár lehet, hogy igazad van, nem teljesen tiszta, hogy miért. Haszálva van a user_save és a profile_save_profile parancs is amiket javasoltok. Nem értem, hogy hol van az a bibi, ami miatt nem ajánlod a megoldást, de szívesen tanulok. :)
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
adatbázis
Mert nincs szükség ilyenkor az adatbázisban való állítgatásra, az amúgy is a Drupal megkerülése lenne. Egy helyesen feltöltött $user objektumnál a user_save() mindent a helyére tesz, és akkor sincs gond, ha változik a táblaszerkezet (mondjuk alverziók között nem fog) vagy ha más modulok szeretnének beleavatkozni a folyamatba. Érdemes átolvasnod a user_save() forrását.
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
Ha a user_save() fgv-t
Ha a user_save() fgv-t használod, akkor le fog futni minden modulban a hook_user insert eseménye, így más modulok is bele tudnak avatkozni a működésbe. Így pl a profile modulé is.
Hosszu Kálmán
http://twitter.com/kalmanhosszu
http://www.kalman-hosszu.com/
http://premiumcmsthemes.com/
elég buta hiba volt
megoldva, teljesen jól működik a fenti dolog, csak hibásan hivatkoztam rá.
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
Addig működik jól, ameddig
Addig működik jól, ameddig nem teszel fel egy másik modult ami az insert eseménybe szeretne belenyúlni.
Hosszu Kálmán
http://twitter.com/kalmanhosszu
http://www.kalman-hosszu.com/
http://premiumcmsthemes.com/
és mi fog történni?
és mi fog történni?
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
nevergone és én is leírtuk
nevergone és én is leírtuk már, hogy miért használd a user_save() fgv-t. Ha nem azt használod akkor más modulok nem tudnak majd beleavatkozni a működésbe. Ez fontos, hiszen ezért vannak a hook-ok. Nameg minek újra feltalálni a mentést, ha már megírták a fgv-t előttünk?
Hosszu Kálmán
http://twitter.com/kalmanhosszu
http://www.kalman-hosszu.com/
http://premiumcmsthemes.com/
ha jól értem
Ha jól értem amire ráakartok világítani, hogy így csináljam meg. Legalábbis az itteni infokat összefésülve az alábbi a topiccal, nekem ez jött le.
http://drupal.hu/forum/usersave-hurok-haszn%C3%A1lata-felhaszn%C3%A1l%C3...
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
jónak tűnik
Igen, valahogy így lenne célszerű. :)
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
juhuu
Köszönöm a segítséget! :)
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
újra én..
Az új beállítások szerint nem inaktív user jön létre, hanem aktív, ez még nem gond.
Viszont hogy tudnám kiküldeni a usernek menő levélben a generált kódot is, ha van már 1 ilyen részletem
gondolom a $paramshoz kellen hozzá fűzni, valami ilyesmi eljárással $params->password = $pass;
az eddigi próbálkozásaim kudarcosak voltak :) tudnátok segíteni?
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)