コード例 #1
0
 /**
  * Changement des responsables d'une procedure
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2009/01/21
  * @param integer $id Id de la procedure
  * @param string $responsables Nouveaux responsables
  */
 public function changeResponsables()
 {
     $id = $this->getRequest('id', null);
     $daoIntervention = CopixDAOFactory::create("intervention");
     $criticErrors = $errors = array();
     if ($id && ($rFiche = $daoIntervention->get($id))) {
         $title = $rFiche->objet;
         $mondroit = Kernel::getLevel("MOD_TELEPROCEDURES", $rFiche->type_teleprocedure);
         if (!TeleproceduresService::canMakeInTelep('DELEGUE', $mondroit, array('idinter' => $rFiche->idinter))) {
             $criticErrors[] = CopixI18N::get('kernel|kernel.error.noRights');
         }
     } else {
         $criticErrors[] = CopixI18N::get('teleprocedures|teleprocedures.error.prob.telep');
     }
     if ($criticErrors) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $criticErrors), 'back' => CopixUrl::get('teleprocedures||')));
     }
     $reqResponsables = $this->getRequest('responsables');
     // Responsables
     $responsables = $reqResponsables;
     $responsables = str_replace(array(" "), "", $responsables);
     $responsables = str_replace(array(",", ";"), ",", $responsables);
     $responsables = preg_split("/[\\s,]+/", $responsables);
     $tabResponsables = array();
     $deja = array();
     // On vérifie que les membres existent
     while (list(, $login) = each($responsables)) {
         if (!$login) {
             continue;
         }
         $userInfo = Kernel::getUserInfo("LOGIN", $login);
         if (!$userInfo) {
             $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberNoUser', array($login));
         } elseif ($userInfo['type'] != 'USER_VIL') {
             $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberNoVille', array($login));
         } else {
             $tabResponsables[] = $userInfo;
             $deja[] = $login;
         }
     }
     // Lecteurs
     $lecteurs = $this->getRequest('lecteurs');
     $lecteurs = str_replace(array(" "), "", $lecteurs);
     $lecteurs = str_replace(array(",", ";"), ",", $lecteurs);
     $lecteurs = preg_split("/[\\s,]+/", $lecteurs);
     $tabLecteurs = array();
     // On vérifie que les membres existent
     while (list(, $login) = each($lecteurs)) {
         if (!$login) {
             continue;
         }
         $userInfo = Kernel::getUserInfo("LOGIN", $login);
         if (!$userInfo) {
             $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberNoUser', array($login));
         } elseif ($userInfo['type'] != 'USER_VIL') {
             $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberNoVille', array($login));
         } elseif (in_array($login, $deja)) {
             $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.memberDeja', array($login));
         } else {
             $tabLecteurs[] = $userInfo;
         }
     }
     if (!count($tabResponsables)) {
         $errors[] = CopixI18N::get('teleprocedures|teleprocedures.error.noResp');
     }
     if (!$errors) {
         if ($rFiche->responsables != $reqResponsables) {
             TeleproceduresService::alertChangeResponsables($rFiche, $reqResponsables);
             $rFiche->responsables = $reqResponsables;
             //var_dump($rFiche);
             $daoIntervention->update($rFiche);
             TeleproceduresService::saveDroits('intervention', $rFiche->idinter, 'responsables', $tabResponsables);
         }
         return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('|fiche', array('id' => $id)));
     }
     return CopixActionGroup::process('teleprocedures|default::ficheDroits', array('id' => $id, 'errors' => $errors, 'rFiche' => array('responsables' => $this->getRequest('responsables'), 'lecteurs' => $this->getRequest('lecteurs'))));
 }