public function executeSearch($request) { $page = $request->getParameter('page', 1); $num = $request->getParameter('num', 20); $this->query = $request->getParameter('query'); $s = new LsSphinxClient($page, $num); $s->setFilter('visible_to_user_ids', array_unique(array(0, sfGuardUserTable::getCurrentUserId()))); $this->note_pager = NoteTable::getSphinxPager($s, $this->query, Doctrine::HYDRATE_ARRAY); }
public function executeRecordSample() { $model = isset($this->model) ? $this->model : get_class($this->record); $this->actions = array(array('text' => 'see all', 'url' => $this->more_uri ? $this->more_uri : $this->record->getInternalUrl('notes'))); if ($this->getUser()->isAuthenticated()) { $class = $model == 'LsList' ? 'List' : $model; $this->actions[] = array('text' => 'write a note', 'url' => 'home/notes?compose=1&' . strtolower($class) . '_id=' . $this->record['id']); $this->actions[] = array('text' => 'note all', 'credential' => 'editor', 'url' => 'home/notes?compose=1&analysts=1&' . strtolower($class) . '_id=' . $this->record['id']); } $attribute = strtolower($model) . '_ids'; $s = new LsSphinxClient(1, 5); $s->setFilter($attribute, array($this->record['id'])); if (!($currentUserId = sfGuardUserTable::getCurrentUserId())) { $currentUserId = 0; } $s->setFilter('visible_to_user_ids', array_unique(array(0, $currentUserId))); $this->notes = NoteTable::getSphinxRecords($s, null, Doctrine::HYDRATE_ARRAY); }
public function executeNotes($request) { $this->checkUser($request); if ($this->user->isCurrentUser()) { $this->redirect('home/notes'); } $this->note_form = new NoteForm(); $page = $request->getParameter('page', 1); $num = $request->getParameter('num', 20); $withReplies = $request->getParameter('replies', 1); $s = new LsSphinxClient($page, $num); if ($withReplies) { $s->setFilter('visible_to_user_ids', array($this->user->id)); } else { $s->setFilter('user_id', array($this->user->id)); } $s->setFilter('visible_to_user_ids', array_unique(array(0, sfGuardUserTable::getCurrentUserId()))); $this->note_pager = NoteTable::getSphinxPager($s, null, Doctrine::HYDRATE_ARRAY); }
static function getEntities($options = array()) { $s = new LsSphinxClient(); $s->SetServer('localhost', 3312); //$s->SetMatchMode(SPH_MATCH_ANY); $s->SetFieldWeights(array('name' => 3, 'aliases' => 3)); if (@$options['list_ids']) { $listIds = explode(',', $options['list_ids']); if (is_array($listIds) && count($listIds)) { $s->setFilter('list_ids', $listIds); } } //no query produces no results if (!($query = @$options['q'])) { $query = 'bleahbleahbleahbleahbleahbleahbleah'; } $query = LsSphinxClient::cleanQuery($query); $query = $s->EscapeString($query); //filter by type_ids, if requested if ($typeIds = @$options['type_ids']) { $s->SetFilter('type_ids', explode(',', $typeIds)); } //paging if (!($num = @$options['num'])) { $num = 20; } if (!($page = @$options['page'])) { $page = 1; } $s->SetLimits(($page - 1) * $num, (int) $num); $result = $s->Query($query, 'entities entities_delta'); if ($result === false) { throw new Exception("Sphinx search failed: " . $s->getLastError()); } return $result; }
static function getSphinxHits($query, $page = 1, $num = 20, array $listIds = null, $aliases = true, $primary_ext = null) { $s = new LsSphinxClient(); $s->SetServer('localhost', 3312); $s->SetMatchMode(SPH_MATCH_EXTENDED); $s->SetFieldWeights(array('name' => 3, 'aliases' => 3)); $s->SetLimits(($page - 1) * $num, $num); if (is_array($listIds) && count($listIds)) { $s->setFilter('list_ids', $listIds); } $query = $s->buildEntityQuery($query, $aliases, $primary_ext); $result = $s->Query($query, 'entities entities_delta'); if ($result === false) { throw new Exception("Sphinx search failed: " . $s->getLastError()); } return $result; }
public function executeNotes($request) { $this->checkGroup($request); $this->checkUser($request); $page = $request->getParameter('page', 1); $num = $request->getParameter('num', 20); $s = new LsSphinxClient($page, $num); $s->setFilter('sfguardgroup_ids', array($this->group['id'])); $s->setFilter('visible_to_user_ids', array_unique(array(0, sfGuardUserTable::getCurrentUserId()))); if ($userId = $request->getParameter('user_id')) { $s->setFilter('user_id', array($userId)); } $this->note_pager = NoteTable::getSphinxPager($s); }
public function executeNotes($request) { $this->checkList($request); $page = $request->getParameter('page', 1); $num = $request->getParameter('num', 20); $s = new LsSphinxClient($page, $num); $s->setFilter('lslist_ids', array($this->list['id'])); $s->setFilter('visible_to_user_ids', array_unique(array(0, sfGuardUserTable::getCurrentUserId()))); if ($userId = $request->getParameter('user_id')) { $s->setFilter('user_id', array($userId)); } $this->note_pager = NoteTable::getSphinxPager($s, null, Doctrine::HYDRATE_ARRAY); }
public function executeNotes($request) { $this->checkUser(); $this->profile = $this->getUser()->getProfile(); $this->note_form = new NoteForm(); $this->unread_notes = $this->profile->unread_notes; $this->profile->unread_notes = 0; $this->profile->save(); //get network options $networkIds = array_unique(array(sfGuardUserTable::getHomeNetworkId(), LsListTable::US_NETWORK_ID)); $networkIds = array_unique(array_merge($networkIds, $request->getParameter('network_ids', array()))); if (count($networkIds) > 1) { $this->networks = LsDoctrineQuery::create()->from('LsList l')->whereIn('l.id', $networkIds)->fetchArray(); } if ($request->isMethod('post')) { $params = $request->getParameter('note'); $this->note_form->bind($params); if ($this->note_form->isValid()) { $db = Doctrine_Manager::connection(); try { $db->beginTransaction(); //associate note with specified networks, or else the user's home network $networkIds = $request->getParameter('network_ids', array(sfGuardUserTable::getHomeNetworkId())); $note = new Note(); $note->user_id = $this->getUser()->getGuardUser()->id; $note->encodeBody($params['body']); $note->is_private = isset($params['is_private']) ? true : false; $note->network_ids = NoteTable::serialize($networkIds); $note->save(); //if there are alerted users, add notification emails to email queue foreach (NoteTable::unserialize($note->alerted_user_names) as $public_name) { if ($profile = Doctrine::getTable('sfGuardUserProfile')->findOneByPublicName($public_name)) { $public_name = $this->getUser()->getGuardUser()->getProfile()->public_name; $profile->unread_notes++; $profile->save(); $email = new ScheduledEmail(); $email->from_name = sfConfig::get('app_mail_notes_sender_name'); $email->from_email = sfConfig::get('app_mail_notes_sender_address'); $email->to_name = $profile->getName(); $email->to_email = $profile->email; $email->subject = $public_name . ' has written you a note on LittleSis'; $email->body_text = $this->getPartial('notenotify', array('note_author' => $public_name, 'note_author_id' => $note->user_id, 'note_body' => NoteTable::prepareBodyForEmail($note->body), 'note_is_private' => $note->is_private)); $email->body_html = nl2br($this->getPartial('notenotify', array('note_author' => $public_name, 'note_author_id' => $note->user_id, 'note_body' => NoteTable::prepareBodyForEmail($note->body, true), 'note_is_private' => $note->is_private))); $email->save(); } } $db->commit(); } catch (Exception $e) { $db->rollback(); throw $e; } $this->redirect('home/notes'); } } $page = $request->getParameter('page', 1); $num = $request->getParameter('num', 20); $withReplies = $request->getParameter('replies', 1); //get notes to/from the current user using sphinx $s = new LsSphinxClient($page, $num); $currentUserId = sfGuardUserTable::getCurrentUserId(); if ($withReplies) { $s->setFilter('visible_to_user_ids', array($currentUserId)); } else { $s->setFilter('user_id', array($currentUserId)); } $this->note_pager = NoteTable::getSphinxPager($s, null, Doctrine::HYDRATE_ARRAY); //execute pager to get most recently indexed note $notes = $this->note_pager->execute(); $lastNoteId = count($notes) ? $notes[0]['id'] : 1; //get new notes that may not yet be indexed $this->new_notes = LsDoctrineQuery::create()->from('Note n')->leftJoin('n.User u')->leftJoin('u.Profile p')->where('n.user_id = ?', $this->getUser()->getGuardUser()->id)->andWhere('n.id > ?', $lastNoteId)->orderBy('n.id DESC')->setHydrationMode(Doctrine::HYDRATE_ARRAY)->execute(); }
static function getSphinxIds(LsSphinxClient $s, $query = null) { $s->setSortMode(SPH_SORT_ATTR_DESC, 'created_at'); $query = LsSphinxClient::cleanQuery($query); $result = $s->Query($query, 'notes notes_delta'); if ($result === false) { throw new Exception("Sphinx search failed: " . $s->getLastError()); } if ($result['total_found'] > 0 && isset($result['matches'])) { return array_keys($result['matches']); } return null; }
static function getSphinxHits($query, $admin = false) { $s = new LsSphinxClient(); $s->SetServer('localhost', 3312); $s->SetMatchMode(SPH_MATCH_EXTENDED); $s->setFilter('is_admin', array(false, $admin)); $query = $s->buildListQuery($query); $result = $s->Query($query, 'lists lists_delta'); return $result; }
public function executeRecentNotes() { $s = new LsSphinxClient($page = 1, $num = 10); if (isset($this->network_ids)) { $s->setFilter('network_ids', $this->network_ids); } $userIds = array_filter(array_unique(array(0, sfGuardUserTable::getCurrentUserId())), 'strlen'); $s->setFilter('visible_to_user_ids', $userIds); $this->notes = NoteTable::getSphinxRecords($s, null, Doctrine::HYDRATE_ARRAY); }