Это моя первая тема в этом форуме и я хотел бы заранее извиниться, если я ее создал не в том разделе. Мне нужна помощь с кодом PHP одного из компонентов(расширений) Joomla. PHP я знаю мало, но код могу читать и кое-что модифицировать. У меня есть компонент, в котором пользователь может добавить URL вебсайта в случае, если еще такого URL не существует в БД. В админке есть таблица компонента, в которой прописывается новый добавленный URL и с какого IP адреса он был добавлен. Так как этим компонентом, на моем сайте, могут пользоваться только зарегистрированные пользователи, мне нужно знать, кто из пользователей выполнил добавление нового URL, т.е. username и желательно e-mail (подобно как указывается в таблице User Manager) и прописывался в таблице моего компонента. Просмотрев код компонента, я нашел следующее: Построение таблицы в панели администратора: Код (CODE): <?php defined('_JEXEC') or die(); class Tablefavic_style extends JTable { var $id =null; // int(11) NOT NULL auto_increment, var $ip = ''; // varchar(255) NOT NULL default '' var $url = ''; // varchar(255) NOT NULL default '' function __construct(&$db) { parent::__construct( '#__favic_style', 'id', $db ); } } Я добавил еще одну строку: (не знаю правильно ли значение varchar(255) NOT NULL default) Код (CODE): var $users = ''; // varchar(255) NOT NULL default '' В следующем файле я нашел функции: Код (CODE): JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables'); //create an instance of TableName class $row = &JTable::getInstance('favic_style', 'table'); //use $row to make changes on Table999, these changes is maped to #__999 /* var $id =null; // int(11) NOT NULL auto_increment, var $ip = ''; // varchar(255) NOT NULL default '' var $url = ''; // varchar(255) NOT NULL default '' */ Здесь также добавил: Код (CODE): var $users = ''; // varchar(255) NOT NULL default '' Далее: Код (CODE): $row->title = $title; $row->ip = $this->getClientIp(); $row->url = $icon_link_url; Добавил: Код (CODE): $row->users = $userGet(); Далее следуют функции (пишу только для ориентировки) Код (CODE): /** * valid URL * * @param string $str * @return bool */ function isExistUrl($str) { // $str = $this->standardizeUrl($str); $db = JFactory::getDBO(); $query = 'SELECT COUNT(*)' . ' FROM #__favic_style' . ' WHERE `url`='.$db->quote($str) ; $db->setQuery($query); $isExist = $db->loadResult(); return ($isExist)? true : false; } И дальше я стараюсь прописать нужную функцию для вывода имени пользователя: Код (CODE): function userGet($value) { $db = JFactory::getDBO(); $query = 'SELECT COUNT(*)' . ' FROM #__users' . ' WHERE `username`='.$db->quote($value) ; $db->setQuery($query); return ; } Эта функция не работает. Устанавливаю компонент. Выводится таблица в компоненте панели администратора, есть столбик users, такая же таблица строится в SQL. При добавлении нового URL, username пользователя не выводится. Помогите мне пожалуйста с этим кодом, или если есть возможность посоветуйте нужный ресурс для решения этой проблемы. Заранее благодарен, буду ждать ответа.
наверно не создаётся переменная username. смотрю по названию функции-userGet,и возник вопрос-Get или POST метод передачи username.
Хмм… я думаю, что Get… Я постараюсь объяснить, как я это вижу: К примеру, пользователь вчера добавил новую запись (в данном случае URL). Запись добавляется во время его сессии, где изначально нужно Get его username, то есть обращение к БД здесь не нужно, скорее здесь подойдет такой код: Код (CODE): $user = JFactory::getUser(); return $user->get('username'); Но я не знаю где и как правильно его здесь прикрепить… Далее этот username должен прописаться в БД таблицы моего компонента (в данном случае jos_favic_style) Код (CODE): [B][I]Здесь я не знаю какой код прописывать [/I][/B] К примеру, сегодня я захожу в панель администратора и получаю информацию о новой записи и кто ее добавил. Здесь уже идет обращение к БД компонента, и я думаю, что здесь не обязательно обращение к jos_users, если уже эта запись существует в jos_favic_style.