Joomla 3.0 не отразява потребителския тип

Направих следния код, за да получа някои потребителски променливи във флаш приложение:

<?php
$user =& JFactory::getUser();
echo $user->get('username') ;
echo $user->get('id') ;
echo $user->get('name') ;
echo $user->get('usertype') ;
?>

Всичко освен usertype работи по някаква причина. Потребителският тип е жизненоважен, за да мога да осигуря приходи от приложението си. Следвах това като справка, така че изглежда добре:

http://docs.joomla.org/Accessing_the_current_user_object

Какво не е наред тук?


person FoxLift    schedule 01.10.2013    source източник
comment
Flash приложение? Следователно той е външен за действителния сайт на Joomla, така че импортирахте ли библиотеката на Joomla?   -  person Lodder    schedule 01.10.2013
comment

Мисля, че не бих се опитал да презапиша файл, а по-скоро твърдо да определя моите настройки по подразбиране и да предложа възможност за презаписване на тези настройки по подразбиране чрез незадължителен файл като:

Properties data = new Properties();
data.setProperty("a", "sensitive default");
InputStream in = getClass().getResourceAsStream("MyLibraryConfig.properties");
if (in != null) {
  data.load(in);
  in.close();
}

Но, разбира се, можете да поставите и вашите настройки по подразбиране във файл, ако предпочитате. В този случай просто използвайте различни имена. Като този:

Properties data = new Properties();
InputStream defaults = getClass().getResourceAsStream("defaults.properties");
data.load(defaults);
defaults.close();
InputStream overwrites= getClass().getResourceAsStream("overwrites.properties");
if (overwrites!= null) {
  data.load(overwrites);
  overwrites.close();
}

Това добавя допълнителна сложност и вие трябва да решите дали това ще ви се отплати.

  -  person FoxLift    schedule 01.10.2013
comment
Това, което опитвате, няма да работи, тъй като JUser::$usertype беше премахнато в Joomla 3.0   -  person Lodder    schedule 01.10.2013
comment
Има ли алтернатива тогава? По някакъв начин мога да различа потребителя един от друг? Flash ще използва някои демонстрационни функции за регистрирани потребители и пълна версия за плащащи потребители (имената обаче могат да се променят).   -  person FoxLift    schedule 01.10.2013
comment
Търся най-лесното решение, за предпочитане не заявка към база данни, която се надявам да не се налага да се използва. Предлагам ви да се огледате и да тествате сами някои примери   -  person Lodder    schedule 01.10.2013


Отговори (1)


Добре, огледах се и всъщност не мога да намеря прилично решение, което просто да ви предостави името на групата, към която принадлежи потребителят. Всичко останало ви дава масив или ID, така че съм написал проста функция, която ще ви даде точно това, което искате:

function getUserGroup($userId){     
     $db = JFactory::getDbo();

     $query  = $db->getQuery(true);
     $query->select('title')
     ->from('#__user_usergroup_map AS map')
     ->where('map.user_id = '.(int) $userId)
     ->leftJoin('#__usergroups AS a ON a.id = map.group_id');

     $db->setQuery($query);
     $result = $db->loadResult();

     return $result;
}

echo getUserGroup($user->id);

Надявам се това да помогне

person Lodder    schedule 01.10.2013
comment
Не успях да накарам това да проработи, въпреки че се страхувам, че изпълнението ми беше лошо направено, така че ще опитам още няколко пъти. Аз съм доста нов в кодирането, така че вярвам, че правя някаква грешка тук. Ще се актуализира след известно време. - person FoxLift; 01.10.2013
comment
Добре без грижи. Само за да ви уведомя, че кодът работи, тъй като го тествах след като го написах :) - person Lodder; 01.10.2013
comment
Както подозирах, имах някои други проблеми в моя HTML, които попречиха на това да работи правилно. След известно почистване мога да потвърдя, че наистина работи перфектно. Благодаря, Lodder! - person FoxLift; 02.10.2013