Joomla 1.5 Разделение пользователей на группы

Discussion in 'Программирование' started by FeaMor, Mar 14, 2010.

  1. FeaMor
    Offline

    FeaMor Пользователь

    Joined:
    Sep 1, 2008
    Messages:
    104
    Likes Received:
    2
    Gender:
    Male
    Да, на самом деле она влияет, не я не могу залезть в нее ((( там слишком много параметров каких-то
    в поле data:
    Код (CODE):
    1. __default|a:5:{s:24:"session.client.forwarded";s:12:"192.168.0.10";s:22:"session.client.browser";
    2. s:85:"Mozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3";
    3. s:15:"session.counter";i:1;s:8:"registry";O:9:"JRegistry":3:{s:17:"_defaultNameSpace";
    4. s:7:"session";s:9:"_registry";a:1:{s:7:"session";a:1:{s:4:"data";O:8:"stdClass":0:{}}}s:7:"_errors";
    5. a:0:{}}s:4:"user";O:5:"JUser":19:{s:2:"id";s:3:"513";s:4:"name";s:38:"Иванов Иван Иванович"
    6. ;s:8:"username";s:8:"prn_demo";s:5:"email";s:19:"email@mail.ru";s:8:"password";
    7. s:65:"7163454e4ccdc839599d26ce66d14577:4CrJ76GZIz7DtP8IP4wwuQJp2KlfpSMo";
    8. s:14:"password_clear";s:0:"";s:8:"usertype";s:6:"Prn";s:5:"block";s:1:"0";s:9:"sendEmail";
    9. s:1:"0";s:3:"gid";s:2:"31";s:12:"registerDate";s:19:"2010-05-03 14:13:05";s:13:"lastvisitDate";
    10. s:19:"2010-05-06 07:44:59";s:10:"activation";s:0:"";s:6:"params";s:56:"admin_language=
    11. language=
    12. editor=
    13. helpsite=
    14. timezone=3
    15.  
    16. ";s:3:"aid";i:2;s:5:"guest";i:0;s:7:"_params";O:10:"JParameter":7:{s:4:"_raw";s:0:"";
    17. s:4:"_xml";N;s:9:"_elements";a:0:{}s:12:"_elementPath";a:1:{i:0;s:68:"/home/htdocs/
    18. public_html/cab/libraries/joomla/html/parameter/element";}s:17:"_defaultNameSpace";
    19. s:8:"_default";s:9:"_registry";a:1:{s:8:"_default";a:1:{s:4:"data";O:8:"stdClass":5:
    20. {s:14:"admin_language";s:0:"";s:8:"language";s:0:"";s:6:"editor";s:0:"";s:8:"helpsite";
    21. s:0:"";s:8:"timezone";s:1:"3";}}}s:7:"_errors";a:0:{}}s:9:"_errorMsg";N;s:7:"_errors";
    22. a:0:{}}}


    поэтому я тупо удаляю данную сессию, но боюсь, что после этого пользователя будет выкидывать из системы для авторизации, но это все же лучшее решение...
    Вот функция для того, что бы смотреть, если есть пользователь с определенный id в какой-нить особой таблице ( у меня jos_Prn_Group_User), то тогда я ему присваиваю принадлежность к новой группе (31), иначе делаю его обычным зарегистрированным:
    Код (PHP):
    1. function isPRN( $prnid )
    2.     {
    3.         $query = '
    4. SELECT `aro`.`id`, `prn`.`users_id`
    5. FROM `#__core_acl_aro` as `aro`
    6. LEFT OUTER JOIN `#__Prn_Group_User` as `prn` ON `prn`.`users_id` = `aro`.`value`
    7. WHERE `aro`.`value` = "'.$prnid.'"
    8. LIMIT 1;
    9.         ';
    10.         $db =& JFactory::getDBO();
    11.         $db->setQuery($query);
    12.         $ispar = $db->loadObject();
    13.         if ($ispar->users_id == NULL) {
    14.             $query = '
    15. UPDATE `#__users` SET `usertype` = "Registered", `gid` = "18"
    16. WHERE `gid` = "31"
    17. AND `id` = "'.$prnid.'";
    18.             ';
    19.             $db =& JFactory::getDBO();
    20.             $db->setQuery($query);
    21.             $db->Query();
    22.             $query = '
    23. UPDATE `#__core_acl_groups_aro_map`  SET `group_id` = "18"
    24. WHERE `group_id` = "31"
    25. AND `aro_id` = "'.$ispar->id.'";
    26.             ';
    27.             $db =& JFactory::getDBO();
    28.             $db->setQuery($query);
    29.             $db->Query();
    30.         }
    31.         else {
    32.             $query = '
    33. UPDATE `#__users` SET `usertype` = "Prn", `gid` = "31"
    34. WHERE `gid` = "18"
    35. AND `id` = "'.$prnid.'";
    36.             ';
    37.             $db =& JFactory::getDBO();
    38.             $db->setQuery($query);
    39.             $db->Query();
    40.             $query = '
    41. UPDATE `#__core_acl_groups_aro_map` SET `group_id` = "31"
    42. WHERE `group_id` = "18"
    43. AND `aro_id` = "'.$ispar->id.'";
    44.             ';
    45.             $db =& JFactory::getDBO();
    46.             $db->setQuery($query);
    47.             $db->Query();
    48.         }
    49.         $query = '
    50. DELETE FROM `#__session`
    51. WHERE `userid` = "'.$prnid.'";
    52.         ';
    53.         $db =& JFactory::getDBO();
    54.         $db->setQuery($query);
    55.         $db->Query();
    56.     }
     
    Last edited: May 6, 2010
  2. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Joined:
    Jan 22, 2008
    Messages:
    673
    Likes Received:
    53
    Gender:
    Male
    Я смотрю - Вы серьёзно настроены "раковырять" джумлу )))
    Предлагаю менее болезненный вариант:

    Код (PHP):
    1. $currentSession = JSession::getInstance('none',array()); //получаем объект Сессии
    2. $currentSession->restart();


    Может просто перезапустить сессию )
     
  3. FeaMor
    Offline

    FeaMor Пользователь

    Joined:
    Sep 1, 2008
    Messages:
    104
    Likes Received:
    2
    Gender:
    Male
    Ну я не знаю где о всех переменных найти информацию %) (на русском)

    На сколько я понял, это перезаписывает сессию и это хорошо, а то я переживал о вылетании пользователя из авторизации...
    а нужно именно "=" ставить, а не "=&" ?
    больше в вышенаписанном коде нет недочетов? мне именно интересно, нужно ли каждый раз повторять строку
    Код (PHP):
    1. $db =& JFactory::getDBO();
    ?
     
    Last edited: May 7, 2010
  4. March_Cat
    Offline

    March_Cat Недавно здесь

    Joined:
    Oct 27, 2009
    Messages:
    11
    Likes Received:
    0
    Gender:
    Male
    прогоняю запрос даёт ошибку!

    -- Select the parent node to insert after
    SELECT @ins_id := id, @ins_lft := lft, @ins_rgt := rgt
    FROM jos__core_acl_aro_groups
    WHERE name
    COLLATE utf8_general_ci = @parent_name

    Ответ MySQL:
    #1146 - Table 'stixi.jos__core_acl_aro_groups' doesn't exist

    подскажите пожалуйсто в чём проблема может быть
     
  5. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Joined:
    Jan 22, 2008
    Messages:
    673
    Likes Received:
    53
    Gender:
    Male
    не jos__core_acl_aro_groups , а jos_core_acl_aro_groups
     
  6. March_Cat
    Offline

    March_Cat Недавно здесь

    Joined:
    Oct 27, 2009
    Messages:
    11
    Likes Received:
    0
    Gender:
    Male
    пропустил первый запрос вышла ошибка такого вида
    SQL-запрос:

    -- Select the parent node to insert after
    SELECT @ins_id := id, @ins_lft := lft, @ins_rgt := rgt
    FROM jos_core_acl_aro_groups
    WHERE name = @parent_name

    Ответ MySQL:
    #1267 - Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='

    подскажите что делать

    FROM jos_core_acl_aro_groups тоже самое выдаёт
     
    Last edited: Aug 4, 2010
  7. March_Cat
    Offline

    March_Cat Недавно здесь

    Joined:
    Oct 27, 2009
    Messages:
    11
    Likes Received:
    0
    Gender:
    Male
    может кто подскажет другой путь?
    Цель такая нужно два материала и чтобы доступ был для материала №1 только одному пользователю,
    а для материала №2 ТОЛЬКО другому. И только они должны их видить.
     
  8. Offline

    Upsarin Недавно здесь

    Joined:
    Jul 11, 2012
    Messages:
    8
    Likes Received:
    0
    Gender:
    Male
    а как реализовать такой способ в community builder, там ведь отдельная система от joomla'ской регистрации...
    подскажите плз.
     
  9. Offline

    Upsarin Недавно здесь

    Joined:
    Jul 11, 2012
    Messages:
    8
    Likes Received:
    0
    Gender:
    Male
    в коде пропиши
    1) сделай проверку на текущий материал
    2) сделай проверку на id пользователя или на группу пользователей
    3) пропиши if (такой то материал) && (такая то группа пользователей) (или диапозон групп с такой то до такой то) { показать материал }
    как то так...
    я так делал для распределения прав к комментариям. одни группы могли писать только в свой материал и могли видеть, а остальные группы могли только читать материа и комментарии, но не могли писать)
    думаю почти тоже самое...
     

Share This Page

Loading...