Example #1
0
 function getPageChangeEmails($notify)
 {
     $emails = array();
     $userids = array();
     foreach ($notify as $page => $users) {
         if (glob_match($page, $this->_pagename)) {
             foreach ($users as $userid => $user) {
                 $um = UserManager::instance();
                 $dbUser = $um->getUserByUserName($userid);
                 $wiki = new Wiki($_REQUEST['group_id']);
                 $wp = new WikiPage($_REQUEST['group_id'], $_REQUEST['pagename']);
                 if ($dbUser && ($dbUser->isActive() || $dbUser->isRestricted()) && $wiki->isAutorized($dbUser->getId()) && $wp->isAutorized($dbUser->getId())) {
                     if (!$user) {
                         // handle the case for ModeratePage: no prefs, just userid's.
                         global $request;
                         $u = $request->getUser();
                         if ($u->UserName() == $userid) {
                             $prefs = $u->getPreferences();
                         } else {
                             // not current user
                             if (ENABLE_USER_NEW) {
                                 $u = WikiUser($userid);
                                 $u->getPreferences();
                                 $prefs =& $u->_prefs;
                             } else {
                                 $u = new WikiUser($GLOBALS['request'], $userid);
                                 $prefs = $u->getPreferences();
                             }
                         }
                         $emails[] = user_getemail_from_unix($userid);
                         $userids[] = $userid;
                     } else {
                         if (!empty($user['verified']) and !empty($user['email'])) {
                             $emails[] = user_getemail_from_unix($userid);
                             $userids[] = $userid;
                         } elseif (!empty($user['email'])) {
                             global $request;
                             // do a dynamic emailVerified check update
                             $u = $request->getUser();
                             if ($u->UserName() == $userid) {
                                 if ($request->_prefs->get('emailVerified')) {
                                     $emails[] = user_getemail_from_unix($userid);
                                     $userids[] = $userid;
                                     $notify[$page][$userid]['verified'] = 1;
                                     $request->_dbi->set('notify', $notify);
                                 }
                             } else {
                                 // not current user
                                 if (ENABLE_USER_NEW) {
                                     $u = WikiUser($userid);
                                     $u->getPreferences();
                                     $prefs =& $u->_prefs;
                                 } else {
                                     $u = new WikiUser($GLOBALS['request'], $userid);
                                     $prefs = $u->getPreferences();
                                 }
                                 if ($prefs->get('emailVerified')) {
                                     $emails[] = user_getemail_from_unix($userid);
                                     $userids[] = $userid;
                                     $notify[$page][$userid]['verified'] = 1;
                                     $request->_dbi->set('notify', $notify);
                                 }
                             }
                             // ignore verification
                             /*
                             if (DEBUG) {
                                 if (!in_array($user['email'],$emails))
                                     $emails[] = $user['email'];
                             }
                             */
                         }
                     }
                 }
             }
         }
     }
     $emails = array_unique($emails);
     $userids = array_unique($userids);
     return array($emails, $userids);
 }
 public function getSearchResults(array $result)
 {
     $results = array();
     $validator = new ElasticSearch_1_2_ResultValidator();
     if (!isset($result['hits']['hits'])) {
         return $results;
     }
     $user = $this->user_manager->getCurrentUser();
     foreach ($result['hits']['hits'] as $hit) {
         $project = $this->project_manager->getProject($this->extractGroupIdFromHit($hit));
         $index = $this->extractIndexFromHit($hit);
         if ($project->isError()) {
             continue;
         }
         try {
             $this->url_verification->userCanAccessProject($user, $project);
         } catch (Project_AccessPrivateException $exception) {
             continue;
         }
         switch ($index) {
             case fulltextsearchPlugin::SEARCH_DOCMAN_TYPE:
                 if (!$validator->isDocmanResultValid($hit)) {
                     continue;
                 }
                 $results[] = new ElasticSearch_SearchResultDocman($hit, $project);
                 break;
             case fulltextsearchPlugin::SEARCH_WIKI_TYPE:
                 if (!$validator->isWikiResultValid($hit)) {
                     continue;
                 }
                 $wiki = new Wiki($project->getID());
                 if ($wiki->isAutorized($user->getId())) {
                     $results[] = new ElasticSearch_SearchResultWiki($hit, $project);
                 }
                 break;
             case fulltextsearchPlugin::SEARCH_TRACKER_TYPE:
                 if (!$validator->isArtifactResultValid($hit)) {
                     continue;
                 }
                 $artifact = Tracker_ArtifactFactory::instance()->getArtifactById($hit['fields']['id'][0]);
                 if ($artifact->userCanView($user)) {
                     $results[] = new ElasticSearch_SearchResultTracker($hit, $project, $artifact);
                 }
                 break;
             default:
         }
     }
     return $results;
 }