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