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; }
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; }
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; }
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; }
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}"); }
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"; } }