Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Messages extends Object
- {
- /*
- function getList($userName = NULL, $onlyReplies = FALSE) {
- if ($onlyReplies) {
- $userId = dibi::fetchSingle('
- SELECT userId FROM users WHERE name = %s', $userName, '
- ');
- return dibi::dataSource('
- SELECT messages.message, messages.created, users.name, messages.messageId
- FROM messages
- INNER JOIN messages AS orig ON messages.previousId = orig.messageId
- INNER JOIN users ON messages.userId = users.userId
- WHERE orig.userId = %i', $userId, '
- ORDER BY created DESC
- ');
- } elseif ($userName) {
- return dibi::dataSource('
- SELECT message, created, name, messageId
- FROM messages
- INNER JOIN users USING (userId)
- WHERE name = %s', $userName, '
- ORDER BY created DESC
- ');
- } else {
- return dibi::dataSource('
- SELECT message, created, name, messageId
- FROM messages
- INNER JOIN users USING (userId)
- ORDER BY created DESC
- ');
- }
- }
- */
- function getAuthorLogin($messageId) {
- return dibi::fetchSingle('
- SELECT user_login
- FROM messages
- INNER JOIN users ON (user_id=message_author)
- WHERE message_id = %i', $messageId, '
- ');
- }
- /*-----------------------------------------------------------------------*/
- /**
- * @desc gets list of all message
- *
- * @created 16.12.2009
- * @param
- */
- public function getList() {
- try {
- return dibi::dataSource('SELECT * FROM [messages]
- LEFT JOIN [users] ON(user_id=message_author)
- ORDER BY message_id DESC
- ');
- } catch(DibiException $e) {
- Debug::processException($e);
- throw new IOException();
- }
- }
- /**
- * @desc insert message
- *
- * @created 16.12.2009
- * @param
- */
- public function insert($to, $type, $text, $array = array()) {
- try {
- dibi::query('
- INSERT INTO [messages]', array(
- 'message_to' => $to ? (int)$to : NULL,
- 'message_type' => $type,
- 'message_text' => nl2br($this->validateMessage($text)),
- 'message_ip' => $_SERVER['REMOTE_ADDR'],
- 'message_created' => time(),
- 'message_author' => Environment::getUser()->identity->user_id,
- )
- );
- return TRUE;
- } catch(DibiException $e) {
- Debug::processException($e);
- throw new IOException();
- }
- }
- /**
- * @desc delete message
- *
- * @created 16.12.2009
- * @param int message id
- */
- public function deleteMessage($mesasgeId) {
- try {
- dibi::query('
- DELETE FROM [messages] WHERE message_id=%i', $mesasgeId
- );
- return TRUE;
- } catch(DibiException $e) {
- Debug::processException($e);
- return FALSE;
- }
- }
- /**
- * @desc set message as favorite
- *
- * @created 29.12.2009
- * @param int message id
- * @param string info about relation
- */
- public function setMessageAsFavorite($mesasgeId, $info=NULL) {
- try {
- dibi::query('
- INSERT INTO [favorites]', array(
- 'favorite_userId' => Environment::getUser()->identity->user_id,
- 'favorite_messageId' => $mesasgeId,
- 'favorite_info' => $info,
- ));
- return TRUE;
- } catch(DibiException $e) {
- Debug::processException($e);
- return FALSE;
- }
- }
- private function validateMessage($text) {
- // there will be validate fnc of unavaliable words...
- preg_match_all('#@[a-z][a-z0-9-_]*#',$text,$matches);
- foreach($matches[0] as $value) {
- $userName = substr($value,1);
- $userName = dibi::select('*')->from('users')->where('user_login=%s', $userName)->fetch();
- if(!empty($userName->user_id)) {
- $link = "<a href='".Environment::getApplication()->getPresenter()->link(':Front:Dashboard:people', array('userName'=>$userName->user_login))."'>@".$userName->user_login."</a>";
- /*
- $link = $this->link(':Front:Dashboard:people', array(
- 'userName' => $value->user_login,
- ));
- */
- $text = preg_replace('#@'.$userName->user_login.'#',$link,$text);
- }
- }
- return $text;
- }
- }
Add Comment
Please, Sign In to add comment