Exemplo n.º 1
0
 public function getView($params, $synchrone)
 {
     $form = new Form(self::getFields(), $params);
     $view = View::setFile('chatbox', View::JSON_FILE);
     $fields = Chatbox::getFields();
     if (F::i('Session')->isConnected()) {
         $fields['name']['disabled'] = TRUE;
     }
     $errors = $form->getErrors();
     if (!Tools::isEmpty($errors)) {
         foreach ($errors as $field => $msg) {
             $view->setGroupValues('error', array('field' => $field, 'errmsg' => $msg));
         }
     }
     // If Submitting
     if ($form->isSubmitting() && Tools::isEmpty($form->getErrors())) {
         // TODO Sauvegarde du pseudo en cookie
         // Enregistrement des données
         if (F::i('Session')->isConnected()) {
             $m_name = '';
         } else {
             $m_name = $params['name'];
             self::setNickname($m_name);
         }
         F::i(_DBMS_SYS)->exec('INSERT INTO !prefix_chatbox_messages (m_id, m_name, mes_content) VALUES (?, ?, ?)', array(F::i('Session')->getMid(), $m_name, $params['content']));
         // Et sortie
         return;
     }
     // Recuperation des derniers messages
     $sql = 'SELECT mes.m_name, m.m_login, mes.m_id, mes_content, UNIX_TIMESTAMP(mes_date) AS mes_date FROM !prefix_chatbox_messages mes, !prefix_members m WHERE m.m_id = mes.m_id';
     $array = array();
     // si une date est donnée, tous les messages depuis cette date
     if (isset($params['since'])) {
         $sql .= ' AND mes_date > FROM_UNIXTIME(?)';
         $array[] = $params['since'];
     }
     // sinon, limiter à _LIMIT_LAST_CHATBOX messages
     $sql .= ' ORDER BY mes_date DESC';
     if (!isset($params['since'])) {
         $sql .= ' LIMIT ?';
         $array[] = _LIMIT_LAST_CHATBOX;
     }
     // Generation d'un pseudo si non connecté et pseudo non fourni
     // Si connecté, verouiller le pseudo
     $result = F::i(_DBMS_SYS)->query($sql, $array);
     // Recover messages and switch the order to get the last _LIMIT_LAST_CHATBOX messages but the last at the end.
     $messages = array();
     for ($i = 0; $i < $result->getNumRows(); $i++) {
         $obj = $result->getObject();
         $messages[] = array('author_mid' => $obj->m_id, 'author_name' => $obj->m_id == _ID_VISITOR ? $obj->m_name : $obj->m_login, 'content' => htmlentities($obj->mes_content, ENT_QUOTES, 'UTF-8', TRUE), 'date' => $obj->mes_date);
     }
     $messages = array_reverse($messages);
     for ($i = 0; $i < count($messages); $i++) {
         $view->setGroupValues('message', $messages[$i]);
     }
     return $view->getContent();
 }
Exemplo n.º 2
0
 public function getView($params, $synchrone)
 {
     include_once _MODEL_DIR . '/chatbox.php';
     $chatbox = new Form(Chatbox::getFields(), array('name' => Chatbox::getNickname()));
     $login = F::i('Session')->getUsername();
     // Display Index page...
     $view = View::setFile('index', View::HTML_FILE);
     $view->setValue('u_chatbox', '?action=chatbox');
     $view->setValue('chatbox_form', $chatbox->getHTML('', '?action=chatbox', 'ajax', 'chatbox_form', 'cron.socket', 'clear_chatbox'));
     $view->setValue('login', $login);
     return parent::setBody($view, F::i('Lang')->getKey('title_index'));
 }
Exemplo n.º 3
0
 public function renderMessages($msgCountryID, $messages)
 {
     global $Member;
     for ($i = 0; $i < count($messages); $i++) {
         if ($messages[$i]['fromCountryID'] != 0) {
             if (!isset($Member) || $Member->countryID != $messages[$i]['fromCountryID']) {
                 $messages[$i]['message'] = '[<strong>' . $this->countryName($messages[$i]['fromCountryID']) . '</strong>]<span style="color: black;">:' . $messages[$i]['message'];
             } else {
                 $messages[$i]['message'] = '[<strong>You</strong>]<span style="color: black;">:' . $messages[$i]['message'];
             }
         }
     }
     return parent::renderMessages($msgCountryID, $messages);
 }