Návod na použití třídy JUser v Joomla 1.5
Pátek, 21 Srpen 2009 12:28
Nedávno jsem psal jeden menší skript pro Joomlu, a jeden z předpokladů byl aby skript rozeznal přihlášeného uživatele. Rozhodl jsem se Vám tedy ukázat, jak získat informace pro Vaše skripty o daném uživateli. Je to jednoduší, než složitě sepisovat dotazy na databázi. Podívejme se tedy na tuto třídu.Pro získání informací o přihlášeném uživateli můžeme s výhodou využít Joomla Framework. Pro získání informacích o uživateli použijeme funkci třídy JFactory getUser().
Poté můžeme snadno získat informace z proměnných, které si popíšeme o kousek níže. Například základní informace vypíšeme takto:
Všechny proměnné obsahující objekt user jsou tyto:
- id - Jedinečné číslo uživatele, které ho jednoznačně identifikuje v tabulce databáze
- name - Celé jméno, ne uživatelské
- username - přihlašovací jmméno
- password - zašifrovaná verze uživatelského hesla
- password_clear - Nastavuje se, pokud se mění hlavní heslo. Jinak zůstává prázdné.
- usertype - Role uživatele do Joomla!. (Super Administrator, Editor, atd.)
- gid - Id skupiny uživatele
- block - Nastavte na '1 ', když je uživatel nastaven na' blokován' v Joomla!.
- registerDate - Den registrace
- lastvisitDate - Poslední návštěva
- guest - Pokud není uživatel přihlášen, tato proměnná bude nastavena na'1 '.
Mimo proměnné, které jsou uložené v databázi přímo, jsou zde ještě další hodnoty, které si uživatel nastavuje sám, je to jazyk, editor, časové pásmo, atd.
Tyto informace získáme pomocí funkce getParam();
Tímto jsme do proměnné language dostali jazyk, který uživatel používá. Text vychozi udava co se bude zadavat, pokud uživatel nemá vyplněnou žádnou hodnotu.
Další velmi užitečnou věcí je proměnná guest. Zjistí, zda-li je daný uživatel přihlášen nebo ne.
Ne všechny ověřené uživatele je poskytnuta stejná práva. Například Super Administrátor může být schopen upravovat jakýkoliv obsah, zatímco Vydavatel mohou upravovat pouze jejich vlastní články. Funkci authorize() lze použít k určení, zda je současný uživatel oprávněn k provedení daného úkonu. První parametr je používán pro určení, které komponenty nebo funkci chceme ověřovat. Druhý představuje úkol. Třetí a čtvrtá jsou nepovinné určují, typ záznamů a oprávnění k přístupu.
Ukažme si to na příkladu:
Toto určitě pro základní práci s uživateli stačí, snad se bude pokročilým uživatelům hodit. Článek byl částečně přeložen ze stránek jlleblanc.com
Komentáře (13)
Přidej Váš komentář
Další odkazy
Spřátelené weby
Anketa
Uživatelé na chatu
- No users online
Díky moc za pomoc!
HM
Možná jsem to vzal od začátku za špatný konec... předpokládal jsem, že jediná možnost, jak do joomly vložit externí php skript, je přes wrapper. Samozřejmě si to chci komplikovat co nejméně, takže zvolím nejjednodušší cestu... pokud tou cestou bude plugin Jumi, tak se mu jdu hned podívat na zoubek.
Zatím moc děkuji, HM.
Kdyby jsi chtel includovat vsechny soubory sam tak se asi zblaznis: Protoze pouzivas jimport tak musis includovat loader.php, dale chces includovat tridu JFactory ktera vola getUser, jenze v teto funkci je potreba tridy JUser, tato trida ale pouziva JObject, ta zase JError atd. atd. :) Takze doporucuji vlozit kod primo nekam do stranky kde sou vsechny tyto tridy jiz inicializovane
Zkusil jsem i kombinaci:
require_once ( 'libraries/loader.php' );
jimport('joomla.factory');
... pak to sice chybu neháže, ale výsledkem je prázdná obrazovka.
Určitě dělám něco špatně... :-/
doporucuji misto require_once pouzit:
ktery to udela za vas pak by to jiz melo jit
potřebuji v externím php souboru (v joomle typ wrapper) načíst jméno přihlášeného uživatele. Snažím se použít JFactory, ale nefunguje mi to. do kódu toho externího php souboru jsem musel vložit:
require_once ( 'libraries/loader.php' );
require_once ( 'libraries/joomla/factory.php' );
, jinak to házelo chybu "...Class 'JFactory' not found...".
dále mám v kódu:
$user = JFactory::getUser();
echo "jmeno:{$user->username}";
ale výsledkem je prádzná stránka (dokonce se ani nezobrazí nic z dalšího kódu, který je v tom externím souboru za zmíněnými řádky).
Moc prosím o nějaké nakopnutí, co dělám špatně...
potřeboval bych radu, potřebuji upravením kódu joomly (1.5.14) docílit, aby mohli vkládat články uživatelé s oprávněním "registrovaní". Bohužel se mi nedaří najít soubor, kde jsou zanesena oprávnění.
Prosím o odpověď a předem děkuji.
Soubor se nachazi v libraries/joomla/factory.php, ale vam by melo stacit vlozit pred vas kod toto:
Fatal error: Class 'JFactory' not found in.....
k databázi joomly jsem připojen, můžete mi prosím poradit?
echo "Jméno: {$uzivatel->name};