PHP. Нужна помощь с кодом компонента для вывода имени пользователя

Тема в разделе "Модернизация расширений", создана пользователем Alepri, 12.02.2011.

  1. Offline

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

    Регистрация:
    12.02.2011
    Сообщения:
    4
    Симпатии:
    0
    Пол:
    Мужской
    Это моя первая тема в этом форуме и я хотел бы заранее извиниться, если я ее создал не в том разделе.

    Мне нужна помощь с кодом PHP одного из компонентов(расширений) Joomla.
    PHP я знаю мало, но код могу читать и кое-что модифицировать.

    У меня есть компонент, в котором пользователь может добавить URL вебсайта в случае, если еще такого URL не существует в БД.
    В админке есть таблица компонента, в которой прописывается новый добавленный URL и с какого IP адреса он был добавлен. Так как этим компонентом, на моем сайте, могут пользоваться только зарегистрированные пользователи, мне нужно знать, кто из пользователей выполнил добавление нового URL,
    т.е. username и желательно e-mail (подобно как указывается в таблице User Manager) и прописывался в таблице моего компонента.

    Просмотрев код компонента, я нашел следующее:

    Построение таблицы в панели администратора:

    Код (CODE):
    1. <?php
    2. defined('_JEXEC') or die();
    3. class Tablefavic_style extends JTable
    4. {
    5.   var $id =null;        // int(11) NOT NULL auto_increment,
    6.   var $ip = '';         // varchar(255) NOT NULL default ''
    7.   var $url = '';        // varchar(255) NOT NULL default ''
    8.  
    9.        
    10.   function __construct(&$db)
    11.   {
    12.     parent::__construct( '#__favic_style', 'id', $db );
    13.   }
    14. }


    Я добавил еще одну строку: (не знаю правильно ли значение varchar(255) NOT NULL default)
    Код (CODE):
    1. var $users = '';            // varchar(255) NOT NULL default ''


    В следующем файле я нашел функции:

    Код (CODE):
    1. JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables');
    2. //create an instance of TableName class
    3. $row = &JTable::getInstance('favic_style', 'table');
    4. //use $row to make changes on Table999, these changes is maped to #__999
    5. /*  var $id =null;      // int(11) NOT NULL auto_increment,
    6.             var $ip = '';       // varchar(255) NOT NULL default ''
    7.             var $url = '';      // varchar(255) NOT NULL default ''
    8.             */


    Здесь также добавил:
    Код (CODE):
    1. var $users = '';            // varchar(255) NOT NULL default ''


    Далее:
    Код (CODE):
    1. $row->title     = $title;
    2. $row->ip    = $this->getClientIp();
    3. $row->url   = $icon_link_url;


    Добавил:
    Код (CODE):
    1. $row->users    = $userGet();


    Далее следуют функции (пишу только для ориентировки)
    Код (CODE):
    1. /**
    2.      *  valid URL
    3.      *
    4.      * @param string $str
    5.      * @return bool
    6.      */
    7.     function isExistUrl($str) {
    8. //      $str    =   $this->standardizeUrl($str);
    9.         $db =   JFactory::getDBO();
    10.         $query = 'SELECT COUNT(*)'
    11.             . ' FROM #__favic_style'
    12.             . ' WHERE `url`='.$db->quote($str)
    13.             ;
    14.         $db->setQuery($query);
    15.         $isExist    =   $db->loadResult();
    16.        
    17.         return ($isExist)? true : false;
    18.     }


    И дальше я стараюсь прописать нужную функцию для вывода имени пользователя:
    Код (CODE):
    1. function userGet($value) {
    2.         $db =   JFactory::getDBO();
    3.         $query = 'SELECT COUNT(*)'
    4.             . ' FROM #__users'
    5.             . ' WHERE `username`='.$db->quote($value)
    6.             ;
    7.         $db->setQuery($query);
    8.        
    9.         return ;
    10.     }


    Эта функция не работает.

    Устанавливаю компонент. Выводится таблица в компоненте панели администратора, есть столбик users, такая же таблица строится в SQL.
    При добавлении нового URL, username пользователя не выводится.

    Помогите мне пожалуйста с этим кодом, или если есть возможность посоветуйте нужный ресурс для решения этой проблемы.

    Заранее благодарен, буду ждать ответа. :)
     
  2.  
  3. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 813
    Симпатии:
    771
    Пол:
    Мужской
    наверно не создаётся переменная username.
    смотрю по названию функции-userGet,и возник вопрос-Get или POST метод передачи username.
     
  4. Offline

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

    Регистрация:
    12.02.2011
    Сообщения:
    4
    Симпатии:
    0
    Пол:
    Мужской
    Хмм… я думаю, что Get…

    Я постараюсь объяснить, как я это вижу:
    К примеру, пользователь вчера добавил новую запись (в данном случае URL).
    Запись добавляется во время его сессии, где изначально нужно Get его username, то есть обращение к БД здесь не нужно, скорее здесь подойдет такой код:

    Код (CODE):
    1. $user = JFactory::getUser();
    2. return $user->get('username');

    Но я не знаю где и как правильно его здесь прикрепить…
    Далее этот username должен прописаться в БД таблицы моего компонента (в данном случае jos_favic_style)

    Код (CODE):
    1. [B][I]Здесь я не знаю какой код прописывать
    2. [/I][/B]

    К примеру, сегодня я захожу в панель администратора и получаю информацию о новой записи и кто ее добавил. Здесь уже идет обращение к БД компонента, и я думаю, что здесь не обязательно обращение к jos_users, если уже эта запись существует в jos_favic_style.

    :hz: :hz: :hz:
     
  5. Offline

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

    Регистрация:
    12.02.2011
    Сообщения:
    4
    Симпатии:
    0
    Пол:
    Мужской
    Тема еще актуальна. Помогите, кто может!
     

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

Загрузка...