[OPT] Department id * * @return departments Matching departments * ---------------------------------------------------------*/ public function get($args){ $id_dep = null; extract($args); /** @var meta $meta_repo */ $meta_repo = Repo::getRepo('meta'); /* (1) Get the list of linked departments for this @cas_login */ $departments = $meta_repo->get_prof_departments($_SESSION['CAS']['login']); /* (2) If no @id_dep -> return all */ if( is_null($id_dep) ) return ['departments' => $departments]; /* (3) If @id_dep -> Only add elements that are @id_dep */ $filtered = []; foreach($departments as $dep){ if( $dep['idDep'] == $id_dep ){ $filtered[] = $dep; break; } } /* (4) Return filtered departments */ return ['departments' => $filtered]; } public function put($args){ $department = 0; extract($args); /** @var meta $meta_repo */ $meta_repo = Repo::getRepo('meta'); $deps = $meta_repo->get_prof_departments($_SESSION['CAS']['login']); if( count($deps) > 0 ){ foreach($deps as $dep){ if( $dep['idDep'] == $department ){ $_SESSION['AvailableDepartments'] = $deps; $_SESSION['CurrentDepartmentId'] = $dep['idDep']; $_SESSION['VERSION'] = [ 'list' => $dep['versions'], 'current' => null ]; // select version with default = 1 foreach($_SESSION['VERSION']['list'] as $v){ if( $v['default'] == 1 ){ $_SESSION['VERSION']['current'] = intval($v['iddatabase']); $_SESSION['CurrentDatabase'] = $v['dbName']; break; } } // if no default -> select first if( !is_int($_SESSION['VERSION']) ){ $_SESSION['VERSION']['current'] = intval($_SESSION['VERSION']['list'][0]['iddatabase']); $_SESSION['CurrentDatabase'] = $_SESSION['VERSION']['list'][0]['dbName']; } return ['switched' => true]; } } } return ['switched' => false]; } public function post($args){ $name = null; extract($args); /** @var meta $metaRepo */ $metaRepo = Repo::getRepo("meta"); /** @var professor $profRep */ $profRep = Repo::getRepo("professor"); /** @var database $dbRepo */ $dbRepo = Repo::getRepo("database"); //create the department in the meta database $depId = $metaRepo->createDepartment($name); //link the current user to that department $metaRepo->link($_SESSION['CAS']['login'],$depId); //create the database and init the structure $dbName = $dbRepo->init($depId); //link the new database to the department $metaRepo->createVersion("Version 1",$dbName,$depId,true); //get the current user data from current department $user = $profRep->get($_SESSION['CAS']['id'])[0]; //switch our connexion to that database Repo::switchDatabase($dbName); //create the default admin in the new database (categories are common to all department) $profRep->create($user["lastName"], $user["firstName"], $user["Categorie_idCategorie"], $user["hoursToDo"], $user["abreviation"], true, $user["casLogin"]); //update user session $departments = $metaRepo->get_prof_departments($user["casLogin"]); $_SESSION['AvailableDepartments'] = $departments; //we are good now return ["success" => true]; } }