Example #1
0
 private function processRepoManagementNotifications($pane, $repoId, $repositoryName, $user)
 {
     $this->addView('repoManagement');
     if ($this->request->exist('mail_prefix')) {
         $valid = new Valid_String('mail_prefix');
         $valid->required();
         $mailPrefix = $this->request->getValidated('mail_prefix', $valid, '');
         $this->addAction('notificationUpdatePrefix', array($this->groupId, $repoId, $mailPrefix, $pane));
     }
     $add_mail = $this->request->getValidated('add_mail');
     if ($add_mail) {
         $validMails = array();
         $mails = array_map('trim', preg_split('/[,;]/', $add_mail));
         $rule = new Rule_Email();
         $um = UserManager::instance();
         foreach ($mails as $mail) {
             if ($rule->isValid($mail)) {
                 $validMails[] = $mail;
             } else {
                 $user = $um->findUser($mail);
                 if ($user) {
                     $mail = $user->getEmail();
                     if ($mail) {
                         $validMails[] = $mail;
                     } else {
                         $this->addError($this->getText('no_user_mail', array($mail)));
                     }
                 } else {
                     $this->addError($this->getText('no_user', array($mail)));
                 }
             }
         }
         $this->addAction('notificationAddMail', array($this->groupId, $repoId, $validMails, $pane));
     }
     $remove_mail = $this->request->get('remove_mail');
     if (is_array($remove_mail)) {
         $mails = array();
         $valid = new Valid_Email('remove_mail');
         $valid->required();
         if ($this->request->validArray($valid)) {
             $mails = $this->request->get('remove_mail');
         }
         if (count($mails) > 0) {
             $this->addAction('notificationRemoveMail', array($this->groupId, $repoId, $mails, $pane));
         }
     }
     $this->addAction('redirectToRepoManagement', array($this->groupId, $repoId, $pane));
 }
Example #2
0
 public function _dispatchActionAndView($action, $repoId, $repositoryName, $user)
 {
     switch ($action) {
         #CREATE REF
         case 'create':
             $this->addView('create');
             break;
             #admin
         #admin
         case 'view':
             $this->addAction('getRepositoryDetails', array($this->groupId, $repoId));
             $this->addView('view');
             break;
             #ADD REF
         #ADD REF
         case 'add':
             $this->addAction('createReference', array($this->groupId, $repositoryName));
             $this->addView('index');
             break;
             #DELETE a repository
         #DELETE a repository
         case 'del':
             $this->addAction('deleteRepository', array($this->groupId, $repoId));
             $this->addView('index');
             break;
             #EDIT
         #EDIT
         case 'edit':
             if ($this->isAPermittedAction('clone') && $this->request->get('clone')) {
                 $valid = new Valid_UInt('parent_id');
                 $valid->required();
                 if ($this->request->valid($valid)) {
                     $parentId = (int) $this->request->get('parent_id');
                 }
                 $this->addAction('cloneRepository', array($this->groupId, $repositoryName, $parentId));
                 $this->addAction('getRepositoryDetails', array($this->groupId, $parentId));
                 $this->addView('view');
             } else {
                 if ($this->isAPermittedAction('confirm_deletion') && $this->request->get('confirm_deletion')) {
                     $this->addAction('confirmDeletion', array($this->groupId, $repoId));
                     $this->addView('confirm_deletion', array(0 => array('repo_id' => $repoId)));
                 } else {
                     if ($this->isAPermittedAction('save') && $this->request->get('save')) {
                         $valid = new Valid_Text('repo_desc');
                         $valid->required();
                         if ($this->request->valid($valid)) {
                             $repoDesc = $this->request->get('repo_desc');
                         }
                         $valid = new Valid_String('repo_access');
                         $valid->required();
                         if ($this->request->valid($valid) || is_array($this->request->get('repo_access'))) {
                             $repoAccess = $this->request->get('repo_access');
                         }
                         $this->addAction('save', array($this->groupId, $repoId, $repoAccess, $repoDesc));
                         $this->addView('view');
                     } else {
                         $this->addError($this->getText('controller_access_denied'));
                         $this->redirect('/plugins/git/?group_id=' . $this->groupId);
                     }
                 }
             }
             break;
             #repo_management
         #repo_management
         case 'repo_management':
             $this->addAction('repoManagement', array($this->groupId, $repoId));
             $this->addView('repoManagement');
             break;
             #mail prefix
         #mail prefix
         case 'mail_prefix':
             $valid = new Valid_String('mail_prefix');
             $valid->required();
             if ($this->request->valid($valid)) {
                 $mailPrefix = $this->request->get('mail_prefix');
             } else {
                 $mailPrefix = '';
             }
             $this->addAction('notificationUpdatePrefix', array($this->groupId, $repoId, $mailPrefix));
             $this->addView('repoManagement');
             break;
             #add mail
         #add mail
         case 'add_mail':
             $validMails = array();
             $mails = array_map('trim', preg_split('/[,;]/', $this->request->get('add_mail')));
             $rule = new Rule_Email();
             $um = UserManager::instance();
             foreach ($mails as $mail) {
                 if ($rule->isValid($mail)) {
                     $validMails[] = $mail;
                 } else {
                     $user = $um->findUser($mail);
                     if ($user) {
                         $mail = $user->getEmail();
                         if ($mail) {
                             $validMails[] = $mail;
                         } else {
                             $this->addError($this->getText('no_user_mail', array($mail)));
                         }
                     } else {
                         $this->addError($this->getText('no_user', array($mail)));
                     }
                 }
             }
             $this->addAction('notificationAddMail', array($this->groupId, $repoId, $validMails));
             $this->addView('repoManagement');
             break;
             #remove mail
         #remove mail
         case 'remove_mail':
             $mails = array();
             $valid = new Valid_Email('mail');
             $valid->required();
             if ($this->request->validArray($valid)) {
                 $mails = $this->request->get('mail');
             }
             if (count($mails) > 0) {
                 $this->addAction('notificationRemoveMail', array($this->groupId, $repoId, $mails));
                 $this->addView('repoManagement');
             } else {
                 $this->addAction('repoManagement', array($this->groupId, $repoId));
                 $this->addView('repoManagement');
             }
             break;
             #fork
         #fork
         case 'fork':
             $this->addAction('repoManagement', array($this->groupId, $repoId));
             $this->addView('forkRepositories');
             break;
             #confirm_private
         #confirm_private
         case 'confirm_private':
             if ($this->isAPermittedAction('confirm_deletion') && $this->request->get('confirm_deletion')) {
                 $this->addAction('confirmDeletion', array($this->groupId, $repoId));
                 $this->addView('confirm_deletion', array(0 => array('repo_id' => $repoId)));
             } else {
                 if ($this->isAPermittedAction('save') && $this->request->get('save')) {
                     $valid = new Valid_Text('repo_desc');
                     $valid->required();
                     if ($this->request->valid($valid)) {
                         $repoDesc = $this->request->get('repo_desc');
                     }
                     $valid = new Valid_String('repo_access');
                     $valid->required();
                     if ($this->request->valid($valid)) {
                         $repoAccess = $this->request->get('repo_access');
                     }
                     $this->addAction('confirmPrivate', array($this->groupId, $repoId, $repoAccess, $repoDesc));
                     $this->addView('confirmPrivate');
                 }
             }
             break;
             #SET TO PRIVATE
         #SET TO PRIVATE
         case 'set_private':
             $this->addAction('setPrivate', array($this->groupId, $repoId));
             $this->addView('view');
             break;
         case 'fork_repositories':
             $this->addAction('getProjectRepositoryList', array($this->groupId));
             $this->addView('forkRepositories');
             break;
         case 'do_fork_repositories':
             try {
                 if ($this->request->get('choose_destination') == 'personal') {
                     $this->_doDispatchForkRepositories($this->request, $user);
                 } else {
                     $this->_doDispatchForkCrossProject($this->request, $user);
                 }
             } catch (MalformedPathException $e) {
                 $this->addError($this->getText('fork_malformed_path'));
             }
             $this->addAction('getProjectRepositoryList', array($this->groupId));
             $this->addView('forkRepositories');
             break;
         case "view_last_git_pushes":
             $vGroupId = new Valid_GroupId();
             $vGroupId->required();
             if ($this->request->valid($vGroupId)) {
                 $groupId = $this->request->get('group_id');
             }
             $vWeeksNumber = new Valid_UInt('weeks_number');
             if ($this->request->valid($vWeeksNumber)) {
                 $weeksNumber = $this->request->get('weeks_number');
             }
             if (empty($weeksNumber) || $weeksNumber > Git_LastPushesGraph::MAX_WEEKSNUMBER) {
                 $weeksNumber = 12;
             }
             $imageRenderer = new Git_LastPushesGraph($groupId, $weeksNumber);
             $imageRenderer->display();
             break;
             #LIST
         #LIST
         default:
             $user_id = null;
             $valid = new Valid_UInt('user');
             $valid->required();
             if ($this->request->valid($valid)) {
                 $user_id = $this->request->get('user');
                 $this->addData(array('user' => $user_id));
             }
             $this->addAction('getProjectRepositoryList', array($this->groupId, $user_id));
             $this->addView('index');
             break;
     }
 }
Example #3
0
    }
    $sendMail->processMail($messageToAdmin);
    exit;
}
$um = UserManager::instance();
$user = $um->getCurrentUser();
if (!$user->isLoggedIn()) {
    exit_error($Language->getText('include_exit', 'error'), $Language->getText('include_exit', 'not_logged_in'));
}
$email = $user->getEmail();
$valid = new Valid_Email('toaddress');
$valid->required();
if ($request->valid($valid)) {
    $toaddress = $request->get('toaddress');
}
$valid = new Valid_Email('touser');
$valid->required();
if ($request->valid($valid)) {
    $touser = $request->get('touser');
}
if (!isset($toaddress) && !isset($touser)) {
    exit_error($Language->getText('include_exit', 'error'), $Language->getText('sendmessage', 'err_noparam'));
}
if (strpos(':', $GLOBALS['sys_default_domain']) === false) {
    $host = $GLOBALS['sys_default_domain'];
} else {
    list($host, $port) = explode(':', $GLOBALS['sys_default_domain']);
}
if (isset($toaddress) && !eregi($host, $toaddress)) {
    exit_error($Language->getText('include_exit', 'error'), $Language->getText('sendmessage', 'err_host', array($host)));
}
Example #4
0
     $date_list = split('-', $request->get('expiry_date'), 3);
     $unix_expiry_time = mktime(0, 0, 0, $date_list[1], $date_list[2], $date_list[0]);
     if ($user->getExpiryDate() != $unix_expiry_time) {
         $user->setExpiryDate($unix_expiry_time);
     }
 } else {
     if ($user->getExpiryDate()) {
         $user->setExpiryDate('');
     }
 }
 $vShell = new Valid_WhiteList('form_shell', $user->getAllUnixShells());
 $vShell->required();
 if ($request->valid($vShell)) {
     $user->setShell($request->get('form_shell'));
 }
 $vEmail = new Valid_Email('email');
 $vEmail->required();
 if ($request->valid($vEmail)) {
     $user->setEmail($request->get('email'));
 }
 $vRealName = new Valid_String('form_realname');
 $vRealName->required();
 if ($request->valid($vRealName)) {
     $user->setRealName($request->get('form_realname'));
 }
 // form_unixstatus must be BEFORE form_status validation because
 // form_status can constraint form_unixstatus
 $vUnixStatus = new Valid_WhiteList('form_unixstatus', $user->getAllUnixStatus());
 $vUnixStatus->required();
 if ($request->valid($vUnixStatus)) {
     $user->setUnixStatus($request->get('form_unixstatus'));