Доброго времени суток!!! есть несколько непонятных моментов, при создании компонента 1) у компонента есть несколько таблиц, одна из которых Студенты и ещё одна Преподаватели, нужно из админки привязать некоторых пользователей, зная их имя на сайте сайта, назначить их Преподавателями. Как пользоваться классом JUser для этого? 2) при входе в компонент зарегестрированный пользователь имеет доступ к некоторым его частям, а гость не имеет (как разрешать и запрещать доступ, простым if, или есть какие-то механизмы специальные для этого?) Если этот зарегистрированный пользователь является преподавателем, он может так же назначить себе студента, зная его имя на сайте. Так же студенты и преподаватели имеют доступ к некоторым файлам которые должен хранить компонент, путь к файлу, название, дата и прочие характеристики занесены в отдельную таблицу. Как регулировать этот доступ?? Всё тем же механизмом? Получается 2 вопроса основных: как привязать JUser -ов к объектам классов моего компонента, (а может на уровне БД как-то можно это делать) и как через свой компонент ограничивать или разрешать им доступ?? Буду благодарен за советы и примеры кода! С уважением, soif
1 JUser такого разделения не имеет и ничего подобного не может 2 Разделяйте по IF, если Joomla 1.5, в 1.6 разделение есть, но в своем компоненте его все равно надо программировать все равно.
Код (PHP): class userdip extends JUser { function role() { // роль текущего пользователя в моём компоненте, если он зарегестрирован на сайте, // его роль в компоненте будет D $role = D; // если он гость на сайте, то его рольв компоненте будет С, и дальше не проверяем if (this->guest) $role = C; // если зарегестрирован, но не гость else { $id=this->id; // получу ли я таким образом id текущего пользователя?? //лезу в базу, проверяю там некоторое условие $db = & JFactory::getDBO(); $query = "SELECT ... FROM ... WHERE 'user'=" . $id . ";"; $db->setQuery($query); $dataA = $db->loadResult(); if (mysql_errno() == 0 && mysql_num_rows($dataA) > 0) { // роль будет А $role = A; } // аналогично для B else { $query = "SELECT ... FROM ... WHERE 'user'=" . $id . ";"; $db->setQuery($query); $dataB = $db->loadResult(); if (mysql_errno() == 0 && mysql_num_rows($dataB) > 0) { $role = B; } } //если ни A, ни В, ни С, то так и останется Д return $role; } } } вот таким образуом хочу сделать... эдакий полупсевдокод, для демонстрации логики )) Теперь вопрос, корректно ли такое использование класса JUser? И как сделать чтобы role срабатывала 1 раз всего после авторизации на сайте и потом уже эта роль хранилась в какой-то переменной для моего компонента или может в сессии, с ПХП плохо знаком вообще, поэтому если покажется бессмысленной задача, прошу объяснить почему? Возможно мне ещё придётся добавить больше ролей, в зависимости от разных условий будут более сложные селекты, по нескольким параметрам.