Exemple #1
0
 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);
 }
Exemple #2
0
 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);
 }
Exemple #3
0
 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);
 }
Exemple #4
0
 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;
 }
Exemple #6
0
 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);
 }
Exemple #7
0
 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);
 }
Exemple #8
0
 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();
 }
Exemple #9
0
 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;
 }
Exemple #10
0
 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;
 }
Exemple #11
0
 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);
 }