Вопрос по созданию компонента

Тема в разделе "Создание расширений для Joomla", создана пользователем soif, 13.03.2011.

  1. Offline

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

    Регистрация:
    13.03.2011
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    Доброго времени суток!!! есть несколько непонятных моментов, при создании компонента
    1) у компонента есть несколько таблиц, одна из которых Студенты и ещё одна Преподаватели, нужно из админки привязать некоторых пользователей, зная их имя на сайте сайта, назначить их Преподавателями. Как пользоваться классом JUser для этого?
    2) при входе в компонент зарегестрированный пользователь имеет доступ к некоторым его частям, а гость не имеет (как разрешать и запрещать доступ, простым if, или есть какие-то механизмы специальные для этого?)
    Если этот зарегистрированный пользователь является преподавателем, он может так же назначить себе студента, зная его имя на сайте.
    Так же студенты и преподаватели имеют доступ к некоторым файлам которые должен хранить компонент, путь к файлу, название, дата и прочие характеристики занесены в отдельную таблицу.
    Как регулировать этот доступ?? Всё тем же механизмом?
    Получается 2 вопроса основных: как привязать JUser -ов к объектам классов моего компонента, (а может на уровне БД как-то можно это делать) и как через свой компонент ограничивать или разрешать им доступ??
    Буду благодарен за советы и примеры кода!
    С уважением, soif
     
    Последнее редактирование: 13.03.2011
  2.  
  3. Tureckiy
    Offline

    Tureckiy специалист

    Регистрация:
    11.04.2009
    Сообщения:
    423
    Симпатии:
    30
    Пол:
    Мужской
    1 JUser такого разделения не имеет и ничего подобного не может
    2 Разделяйте по IF, если Joomla 1.5, в 1.6 разделение есть, но в своем компоненте его все равно надо программировать все равно.
     
  4. Offline

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

    Регистрация:
    13.03.2011
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    Код (PHP):
    1. class userdip extends JUser {
    2.  
    3.     function role() {
    4.         // роль текущего пользователя в моём компоненте, если он зарегестрирован на сайте,
    5.         // его роль в компоненте будет D
    6.         $role = D;
    7.         // если он гость на сайте, то его рольв компоненте будет С, и дальше не проверяем
    8.         if (this->guest)
    9.         $role = C;
    10.        
    11.         // если зарегестрирован, но не гость
    12.         else {
    13.            
    14.             $id=this->id; // получу ли я таким образом id текущего пользователя??
    15.        
    16.             //лезу в базу, проверяю там некоторое условие
    17.             $db = & JFactory::getDBO();
    18.             $query = "SELECT ... FROM ...
    19.                  WHERE 'user'=" . $id . ";";
    20.             $db->setQuery($query);
    21.             $dataA = $db->loadResult();
    22.             if (mysql_errno() == 0 && mysql_num_rows($dataA) > 0) {
    23.             // роль будет А
    24.                 $role = A;
    25.             }
    26.            
    27.             // аналогично для B
    28.             else {
    29.                 $query = "SELECT ... FROM ...
    30.                  WHERE 'user'=" . $id . ";";
    31.                 $db->setQuery($query);
    32.                 $dataB = $db->loadResult();
    33.                 if (mysql_errno() == 0 && mysql_num_rows($dataB) > 0) {
    34.                     $role = B;
    35.                 }
    36.             }
    37.            
    38.             //если ни A, ни В, ни С, то так и останется Д
    39.             return $role;
    40.         }
    41.     }
    42.  
    43. }


    вот таким образуом хочу сделать... эдакий полупсевдокод, для демонстрации логики ))
    Теперь вопрос, корректно ли такое использование класса JUser? И как сделать чтобы role срабатывала 1 раз всего после авторизации на сайте и потом уже эта роль хранилась в какой-то переменной для моего компонента или может в сессии, с ПХП плохо знаком вообще, поэтому если покажется бессмысленной задача, прошу объяснить почему?
    Возможно мне ещё придётся добавить больше ролей, в зависимости от разных условий будут более сложные селекты, по нескольким параметрам.
     

Поделиться этой страницей

Загрузка...