diff --git a/include/studienordnung.class.php b/include/studienordnung.class.php index c07df44f9..a7fba89a1 100644 --- a/include/studienordnung.class.php +++ b/include/studienordnung.class.php @@ -548,6 +548,34 @@ class studienordnung extends basis_db return false; } + /** + * prüft ob die Studienordnung aktiv ist + * @param int $studienordnung_id Die ID der Studienordnung + * @param string $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @param int $ausbildungssemester Ausbildungssemester als Zahl + */ + public function isAktiv($studienordnung_id) + { + if(!is_numeric($studienordnung_id)) + { + $this->errormsg = 'studienordnung_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = 'SELECT * FROM lehre.tbl_studienordnung_semester WHERE + studienordnung_id='.$this->db_add_param($studienordnung_id).';'; + + if($this->db_query($qry)) + { + if($this->db_num_rows() >= 1) + { + return true; + } + return false; + } + return false; + } + /** * lädt alle zugeordneten Semester einer Studienordnung * @param int $studienordnung_id ID der Studienordnung @@ -644,13 +672,13 @@ class studienordnung extends basis_db { $studiensemester = new studiensemester(); $studiensemester->getTimestamp($studiensemester_kurzbz); - + var_dump($this); $semGueltigVon = $studiensemester->begin->start; //$semGueltigBis = $studiensemester->ende->ende; $studiensemester = new studiensemester(); $studiensemester->getTimestamp($this->gueltigvon); - + var_dump($studiensemester); $stoGueltigVon = $studiensemester->begin->start; if($this->gueltigbis != null) @@ -719,5 +747,69 @@ class studienordnung extends basis_db $this->new=false; return true; } + + /** + * Laedt alle Studienordnungen zu einem Studiengang der uebergeben wird, die noch nicht aktiv sind + * @param $studiengang_kz Kennzahl des Studiengangs + * @param $studiensemester_kurzbz + * @param $semester + * @return true wenn ok, false im Fehlerfall + */ + public function loadStudienordnungSTGInaktiv($studiengang_kz) + { + //Pruefen ob studiengang_kz eine gueltige Zahl ist + if(!is_numeric($studiengang_kz) || $studiengang_kz === '') + { + $this->errormsg = 'studiengang_kz muss eine gültige Zahl sein'; + return false; + } + + $qry = 'SELECT + * + FROM + lehre.tbl_studienordnung + WHERE + studiengang_kz='.$this->db_add_param($studiengang_kz, FHC_INTEGER, false); + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + while($row = $this->db_fetch_object()) + { + $obj = new studienordnung(); + + $obj->studienordnung_id = $row->studienordnung_id; + $obj->studiengang_kz = $row->studiengang_kz; + $obj->version = $row->version; + $obj->bezeichnung = $row->bezeichnung; + $obj->ects = $row->ects; + $obj->gueltigvon = $row->gueltigvon; + $obj->gueltigbis = $row->gueltigbis; + $obj->studiengangbezeichnung = $row->studiengangbezeichnung; + $obj->studiengangbezeichnung_englisch = $row->studiengangbezeichnung_englisch; + $obj->studiengangkurzbzlang = $row->studiengangkurzbzlang; + $obj->akadgrad_id = $row->akadgrad_id; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->new = false; + $this->result[] = $obj; + } + + foreach($this->result as $key => $obj) + { + if($this->isAktiv($obj->studienordnung_id)) + { + unset($this->result[$key]); + } + } + array_values($this->result); + + return true; + } } ?> diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index 70a9b6887..260497584 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -730,9 +730,9 @@ class studiensemester extends basis_db if(!isset($this->begin)) $this->begin=new stdclass(); $this->begin->start=mktime(0,0,0,mb_substr($row->start,5,2),mb_substr($row->start,8,2),mb_substr($row->start,0,4)); - if(!isset($this->ende)) - $this->ende=new stdclass(); - $this->ende->ende=mktime(0,0,0,mb_substr($row->ende,5,2),mb_substr($row->ende,8,2),mb_substr($row->ende,0,4)); + if(!isset($this->end)) + $this->end=new stdclass(); + $this->end->ende=mktime(0,0,0,mb_substr($row->ende,5,2),mb_substr($row->ende,8,2),mb_substr($row->ende,0,4)); return true; } else diff --git a/vilesci/lehre/saveStudienordnung.php b/vilesci/lehre/saveStudienordnung.php new file mode 100644 index 000000000..d0687e378 --- /dev/null +++ b/vilesci/lehre/saveStudienordnung.php @@ -0,0 +1,170 @@ + + */ +header( 'Expires: -1' ); +header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); +header( 'Cache-Control: no-store, no-cache, must-revalidate' ); +header( 'Pragma: no-cache' ); +header('Content-Type: text/html;charset=UTF-8'); + +require_once('../../config/vilesci.config.inc.php'); +require_once('../../include/functions.inc.php'); +require_once('../../include/webservicerecht.class.php'); +require_once('../../include/studienordnung.class.php'); + +$class = $_REQUEST['class']; +$method = $_REQUEST['method']; +$typ = (isset($_REQUEST['typ'])?$_REQUEST['typ']:''); + +// die einzelnen funktionsparameter werden durchnummeriert mit 0 beginnend: +// parameter_0=param0¶meter_1=param1¶meter_3[0]=param3arr0¶meter_3[1]=param3arr1 +$parameter=array(); +for($i=0;$i<100;$i++) +{ + if(isset($_REQUEST['parameter_'.$i])) + { + if($_REQUEST['parameter_'.$i]=="true") + $parameter[]=true; + elseif($_REQUEST['parameter_'.$i]=="false") + $parameter[]=false; + elseif($_REQUEST['parameter_'.$i]=="null") + $parameter[]=null; + else + $parameter[]=$_REQUEST['parameter_'.$i]; + } + else + break; +} + + +require_once('../../include/'.$class.'.class.php'); + +// Berechtigung pruefen +$uid = get_uid(); + +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +$wsrecht = new webservicerecht(); +if(!$wsrecht->isUserAuthorized($uid, $method, $class)) + die('Sie haben keine Berechtigung fuer diesen Vorgang:'.$class.'->'.$method); + +// Funktion aufrufen +$obj = new $class(); +$error=false; + + +// Bei Save Funktionen werden alle Parameter zugewiesen +if(mb_stristr($method,'save')) +{ + + $loaddata=json_decode($_REQUEST['loaddata'], true); + $savedata=json_decode($_REQUEST['savedata'], true); + + if(!$rechte->isBerechtigt('lehre/studienordnung')) + { + if(!$rechte->isBerechtigt("'lehre/studienordnungInaktiv'")) + { + die('Sie haben keine Berechtigung fuer diesen Vorgang.'); + } + else + { + if(isset($savedata['studienplan_id'])) + { + $studienordnung = new studienordnung(); + $studienordnung->getStudienordnungFromStudienplan($savedata['studienplan_id']); + if($studienordnung->isAktiv($studienordnung->studienordnung_id)) + die('Sie haben keine Berechtigung fuer diesen Vorgang. Studienordnung ist aktiv.'); + } + elseif(isset($loaddata["loadStudienordnung"])) + { + $studienordnung = new studienordnung(); + if($studienordnung->isAktiv($loaddata["parameter_0"])) + die('Sie haben keine Berechtigung fuer diesen Vorgang. Studienordnung ist aktiv.'); + + } + } + } + + + + if(isset($loaddata['method'])) + { + if(!$wsrecht->isUserAuthorized($uid, $loaddata['method'])) + die('keine Berechtigung'); + + // Bearbeiten + $loadparameter=array(); + for($i=0;$i<20;$i++) + { + $name = 'parameter_'.$i; + if(isset($loaddata[$name])) + $loadparameter[]=$loaddata[$name]; + else + break; + } + + if(!call_user_func_array(array($obj, $loaddata['method']), $loadparameter)) + { + $error=true; + } + } + else + { + // Neu + $obj->insertvon = $uid; + $obj->insertamum = date('Y-m-d H:i:s'); + } + + if(!$error) + { + // Attribute zuweisen zum Speichern + foreach($savedata as $key=>$value) + { + $obj->$key=$value; + } + } +} +$return = ''; +if(!$error && ($return = call_user_func_array(array($obj, $method), $parameter))) +{ + $data['result']=$obj->cleanResult(); + $data['return']=$return; + $data['error']='false'; + $data['errormsg']=''; +} +else +{ + $data['result']=''; + $data['return']=$return; + $data['error']='true'; + $data['errormsg']=$obj->errormsg; +} + +// Daten ausgeben +if($typ=='json') + echo json_encode($data); +elseif($typ=='xml') + echo array_to_xml($data); +else + var_dump($data); +?> diff --git a/vilesci/lehre/studienordnung.php b/vilesci/lehre/studienordnung.php index 07882c8c8..ca0661aca 100644 --- a/vilesci/lehre/studienordnung.php +++ b/vilesci/lehre/studienordnung.php @@ -146,8 +146,11 @@ echo "
"; -if(!$rechte->isBerechtigt('lehre/studienordnung')) +if((!$rechte->isBerechtigt('lehre/studienordnung')) && (!$rechte->isBerechtigt('lehre/studienordnungInaktiv'))) die('Sie haben keine Berechtigung für diese Seite'); + +if($rechte->isBerechtigt('lehre/studienordnungInaktiv')) + echo ""; $stg_arr = $rechte->getStgKz('lehre/studienordnung'); $studiengang = new studiengang(); $studiengang->loadArray($stg_arr,'typ,kurzbz');