예제 #1
0
 function checkEmailConfirmation()
 {
     global $request;
     $wikidb = $request->getDbh();
     $data = $wikidb->get('ConfirmEmail');
     $id = $request->getArg('id');
     if (empty($data[$id])) {
         // id not found
         return HTML(HTML::h1("Confirm E-mail address"), HTML::h1("Sorry! Wrong URL"));
     }
     // upgrade the user
     $userid = $data['userid'];
     $email = $data['email'];
     $u = $request->getUser();
     if ($u->UserName() == $userid) {
         // lucky: current user (session)
         $prefs = $u->getPreferences();
         $request->_user->_level = WIKIAUTH_USER;
         $request->_prefs->set('emailVerified', true);
     } else {
         // not current user
         if (ENABLE_USER_NEW) {
             $u = WikiUser($userid);
             $u->getPreferences();
             $prefs =& $u->_prefs;
         } else {
             $u = new WikiUser($request, $userid);
             $prefs = $u->getPreferences();
         }
         $u->_level = WIKIAUTH_USER;
         $request->setUser($u);
         $request->_prefs->set('emailVerified', true);
     }
     unset($data[$id]);
     $wikidb->set('ConfirmEmail', $data);
     return HTML(HTML::h1("Confirm E-mail address"), HTML::p("Your e-mail address has now been confirmed."));
 }
예제 #2
0
 function _do_email_verification(&$request, &$args)
 {
     $dbi = $request->getDbh();
     $pagelist = new PageList('pagename', 0, $args);
     //$args['return_url'] = 'action=email-verification-verified';
     $email = new _PageList_Column_email('email', _("E-Mail"), 'left');
     $emailVerified = new _PageList_Column_emailVerified('emailVerified', _("Verification Status"), 'center');
     $pagelist->_columns[] = $email;
     $pagelist->_columns[] = $emailVerified;
     //This is the best method to find all users (Db and PersonalPage)
     $current_user = $request->_user;
     if (empty($args['verify'])) {
         $group = $request->getGroup();
         $allusers = $group->_allUsers();
     } else {
         $allusers = array_keys($args['user']);
     }
     foreach ($allusers as $username) {
         if (ENABLE_USER_NEW) {
             $user = WikiUser($username);
         } else {
             $user = new WikiUser($request, $username);
         }
         $prefs = $user->getPreferences();
         if ($prefs->get('email')) {
             if (!$prefs->get('userid')) {
                 $prefs->set('userid', $username);
             }
             if (!empty($pagelist->_rows)) {
                 $group = (int) (count($pagelist->_rows) / $pagelist->_group_rows);
             } else {
                 $group = 0;
             }
             $class = $group % 2 ? 'oddrow' : 'evenrow';
             $row = HTML::tr(array('class' => $class));
             $page_handle = $dbi->getPage($username);
             $row->pushContent($pagelist->_columns[0]->format($pagelist, $page_handle, $page_handle));
             $row->pushContent($email->format($pagelist, $prefs, $page_handle));
             if (!empty($args['verify'])) {
                 $prefs->_prefs['email']->set('emailVerified', empty($args['verified'][$username]) ? 0 : 2);
                 $user->setPreferences($prefs);
             }
             $row->pushContent($emailVerified->format($pagelist, $prefs, $args['verify']));
             $pagelist->_rows[] = $row;
         }
     }
     $request->_user = $current_user;
     if (!empty($args['verify'])) {
         return HTML($pagelist->_generateTable(false));
     } else {
         $args['verify'] = 1;
         $args['return_url'] = $request->getURLtoSelf();
         return HTML::form(array('action' => $request->getPostURL(), 'method' => 'post'), HiddenInputs($args, 'wikiadminutils'), HiddenInputs(array('require_authority_for_post' => WIKIAUTH_ADMIN)), HiddenInputs($request->getArgs()), $pagelist->_generateTable(false), HTML::p(Button('submit:', _("Change Verification Status"), 'wikiadmin'), HTML::Raw(' '), Button('cancel', _("Cancel"))));
     }
 }
예제 #3
0
파일: WikiDB.php 프로젝트: nterray/tuleap
 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);
 }
예제 #4
0
 function getPageChangeEmails($notify)
 {
     $emails = array();
     $userids = array();
     foreach ($notify as $page => $users) {
         if (glob_match($page, $this->_pagename)) {
             foreach ($users as $userid => $user) {
                 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[] = $prefs->get('email');
                     $userids[] = $userid;
                 } else {
                     if (!empty($user['verified']) and !empty($user['email'])) {
                         $emails[] = $user['email'];
                         $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['email'];
                                 $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['email'];
                                 $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);
 }