コード例 #1
0
ファイル: person.php プロジェクト: jeanvoye/utb
 public function doStatus()
 {
     $q = ezcDbInstance::get()->createSelectQuery();
     $q->select('user_id, max(message.id), fullname, message.*')->from('message')->leftJoin('user', 'message.user_id', 'user.id')->groupBy('user_id')->orderBy('fullname');
     $s = $q->prepare();
     $s->execute();
     $messages = shareFormat::formatMessages($s->fetchAll());
     $res = new ezcMvcResult();
     $res->variables['updates'] = $messages;
     return $res;
 }
コード例 #2
0
ファイル: rss.php プロジェクト: jeanvoye/utb
 public function doUpdates()
 {
     $q = ezcDbInstance::get()->createSelectQuery();
     $q->select('message.*, user.fullname')->from('message')->leftJoin('user', 'message.user_id', 'user.id')->orderBy('date', ezcQuerySelect::DESC)->limit(25);
     $s = $q->prepare();
     $s->execute();
     $messages = shareFormat::substituteLinksInMessages($s->fetchAll());
     $res = new ezcMvcResult();
     $res->variables['items'] = $messages;
     $res->content = new ezcMvcResultContent();
     $res->content->type = 'application/rss+xml';
     return $res;
 }
コード例 #3
0
ファイル: tag.php プロジェクト: jeanvoye/utb
 public function doDisplay()
 {
     $q = ezcDbInstance::get()->createSelectQuery();
     $tag = $this->tagName;
     $q->select('message.*, user.fullname')->from('message')->innerJoin('message_tag', 'message.id', 'message_tag.message_id')->innerJoin('user', 'message.user_id', 'user.id')->where($q->expr->eq('tag', $q->bindValue($tag)))->orderBy('date', ezcQuerySelect::DESC)->limit(25);
     $s = $q->prepare();
     $s->execute();
     $messages = shareFormat::formatMessages($s->fetchAll());
     $res = new ezcMvcResult();
     $res->variables['tag'] = $tag;
     $res->variables['updates'] = $messages;
     $res->variables['rss'] = '/tag/' . $tag;
     return $res;
 }
コード例 #4
0
ファイル: tag.php プロジェクト: jeanvoye/utb
 private function list()
 {
     // select last 25 updates with a tag
     $q->select('DISTINCT message.id as id, user_id, date, status, fullname, source')->from('message')->leftJoin('message_tag', 'message.id', 'message_tag.message_id')->innerJoin('user', 'message.user_id', 'user.id')->orderBy('date', ezcQuerySelect::DESC)->limit(25);
     $s = $q->prepare();
     $s->execute();
     $r = $s->fetchAll();
     // collect all IDs
     $ids = array();
     $msgs = array();
     foreach ($r as $message) {
         $ids[] = $message['id'];
         $msgs[$message['id']] = $message;
     }
     // select tags per message
     $q = ezcDbInstance::get()->createSelectQuery();
     $q->select('*')->from('message_tag')->innerJoin('message', 'message.id', 'message_tag.message_id')->where($q->expr->in('message_id', $ids));
     $s = $q->prepare();
     $s->execute();
     // massage tags
     $tagIndex = array();
     $tags = array();
     foreach ($s->fetchAll() as $res) {
         $tagIndex[$res['message_id']][$res['tag']] = true;
         $tags[strtolower($res['tag'])] = $res['tag'];
     }
     sort($tags);
     // loop over all messages and build the tag lists.
     $tagList = array();
     foreach ($msgs as $msg) {
         foreach ($tags as $tag) {
             if (isset($tagIndex[$msg['id']][$tag])) {
                 if (!isset($tagList[$tag])) {
                     $tagList[$tag] = array($msg);
                 } else {
                     $tagList[$tag][] = $msg;
                 }
             }
         }
     }
     foreach ($tagList as &$perTag) {
         $perTag = shareFormat::formatMessages($perTag);
     }
     $res = new ezcMvcResult();
     $res->variables['updates'] = $tagList;
 }
コード例 #5
0
ファイル: link.php プロジェクト: jeanvoye/utb
 public function doDisplay()
 {
     $r = $this->fetchLink($this->linkId);
     if (isset($r['link'])) {
         if ($r['message_id']) {
             $q = ezcDbInstance::get()->createSelectQuery();
             $q->select('*')->from('message')->innerJoin('user', 'message.user_id', 'user.id')->where($q->expr->eq('message.id', $q->bindValue($r['message_id'])));
             $s = $q->prepare();
             $s->execute();
             $t = $s->fetchAll();
             $messages = shareFormat::formatMessages($t);
         } else {
             $messages = '';
         }
         $res = new ezcMvcResult();
         $res->variables['shortLink'] = $this->linkId;
         $res->variables['url'] = $r['link'];
         $res->variables['updates'] = $messages;
         return $res;
     }
     throw new Exception("No such link: {$this->linkId}");
 }
コード例 #6
0
ファイル: jabber_example.php プロジェクト: jeanvoye/utb
 function handleHeartbeat()
 {
     // retrieve user preferences
     $q = ezcDbInstance::get()->createSelectQuery();
     $q->select('jabber, jabber_expand_username')->from('user')->leftJoin('user_pref', 'user.id', 'user_pref.user_id');
     $s = $q->prepare();
     $s->execute();
     $userWantsFull = array();
     foreach ($s as $user) {
         $userWantsFull[$user['jabber']] = $user['jabber_expand_username'];
     }
     // check jabber work log
     $q = ezcDbInstance::get()->createSelectQuery();
     $q->select('*')->from('jabber_work')->leftJoin('message', 'jabber_work.message_id', 'message.id')->leftJoin('user', 'message.user_id', 'user.id');
     $s = $q->prepare();
     $s->execute();
     foreach ($s as $work) {
         $to = $work['jabber_id'];
         if (isset($this->jab->roster[$to]) && !($this->jab->roster[$to]['show'] == 'off' || $this->jab->roster[$to]['show'] == 'dnd')) {
             shareFormat::formatMessage($work, false);
             $work['textStatus'] = shareFormat::substituteLink($work['textStatus']);
             $work['status'] = shareFormat::substituteLink($work['status']);
             if ($userWantsFull[$to]) {
                 echo "- {$to}: Sending {$work['status']} (with username expansion)\n";
                 $this->jab->message($to, "chat", NULL, $work['fullname'] . ': ' . $work['textStatus'], $work['fullname'] . ': ' . $work['status']);
             } else {
                 echo "- {$to}: Sending {$work['status']}\n";
                 $this->jab->message($to, "chat", NULL, $work['user_id'] . ': ' . $work['textStatus'], $work['user_id'] . ': ' . $work['status']);
             }
             // update last sent message information
             // TODO: FIX THIS QUERY
             /*				$q = ezcDbInstance::get()->createUpdateQuery();
             				$q->update( 'user_pref' )
             				  ->set( 'queued_since', $q->bindValue( $work['message_id'] ) )
             				  ->where( $q->expr->eq( 'jabber_id', $q->bindValue( $work['jabber_id'] ) ) );
             				$sa = $q->prepare();
             				$sa->execute();
             */
         }
     }
     // empty jabber work log
     $q = ezcDbInstance::get()->createDeleteQuery();
     $q->deleteFrom('jabber_work');
     $s = $q->prepare();
     $s->execute();
     reset($this->jab->roster);
     foreach ($this->jab->roster as $jid => $details) {
         //			echo "$jid\t\t\t".$details["transport"]."\t".$details["show"]."\t".$details["status"]."\n";
     }
 }