diff --git a/content/student/studentenoverlay.xul.php b/content/student/studentenoverlay.xul.php index a41693240..911efd8c5 100644 --- a/content/student/studentenoverlay.xul.php +++ b/content/student/studentenoverlay.xul.php @@ -208,6 +208,21 @@ else +
rdf/student.rdf.php?prestudent_id='+prestudent_id+'&studiensemester_kurzbz='+stsem+'&'+gettimestamp(); + + var url = buildStudentRDFURI({ + 'prestudent_id': prestudent_id, + 'studiensemester_kurzbz': stsem + }); var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. getService(Components.interfaces.nsIRDFService); @@ -2564,11 +2568,48 @@ function StudentKontoFilter() kontotree.builder.addListener(StudentKontoTreeListener); } +// **** +// * Generiert eine student.rdf URI +// **** +function buildStudentRDFURI(queryparams, tree) +{ + var baseurl = "rdf/student.rdf.php"; + if ( typeof tree !== "undefined" ) + { + var col = tree.columns ? tree.columns["tree-verband-col-orgform"] : "tree-verband-col-orgform"; + queryparams.orgform = tree.view.getCellText(tree.currentIndex,col); + } + return _buildURI(baseurl, queryparams); +} + +// **** +// * Generiert aus einer BasisURL und einem Dictionary von Parametern eine URI +// **** +function _buildURI(baseurl, queryparams) +{ + var str = []; + var url = baseurl; + for (var p in queryparams) + { + if ( queryparams.hasOwnProperty(p) && queryparams[p].length > 0 ) + { + str.push(encodeURIComponent(p) + "=" + encodeURIComponent(queryparams[p])); + } + } + var querystring = str.join("&"); + if ( querystring.length > 0 ) + { + url = url + '?' + querystring + '&' + gettimestamp(); + } + return url; +} + // **** // * Setzt im Studententree einen vordefinierten Filter // **** function StudentKontoFilterStudenten(filter) { + //alert(filter); netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var tree=document.getElementById('tree-verband'); @@ -2591,12 +2632,26 @@ function StudentKontoFilterStudenten(filter) var gruppe = getTreeCellText(tree, 'gruppe', tree.currentIndex); var typ = getTreeCellText(tree, 'typ', tree.currentIndex); var stsem = getTreeCellText(tree, 'stsem', tree.currentIndex); - + if(stsem=='') stsem = getStudiensemester(); if(typ=='') typ='student'; - url = "rdf/student.rdf.php?studiengang_kz="+stg_kz+"&semester="+sem+"&verband="+ver+"&gruppe="+grp+"&gruppe_kurzbz="+gruppe+"&studiensemester_kurzbz="+stsem+"&typ="+typ+"&filter2="+filter+"&buchungstyp="+buchungstyp+"&"+gettimestamp(); + + var url = buildStudentRDFURI({ + 'studiengang_kz': stg_kz, + 'semester': sem, + 'verband': ver, + 'gruppe': grp, + 'gruppe_kurzbz': gruppe, + 'studiensemester_kurzbz': stsem, + 'typ': typ, + 'filter2': filter, + 'buchungstyp': buchungstyp + }, tree); + + console.log(url); + var treeStudent=document.getElementById('student-tree'); try @@ -2614,6 +2669,7 @@ function StudentKontoFilterStudenten(filter) treeStudent.database.RemoveDataSource(oldDatasources.getNext()); } + //alert(url); var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); StudentTreeDatasource = rdfService.GetDataSource(url); StudentTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); @@ -2655,7 +2711,18 @@ function StudentKontoFilterBuchungstyp() stsem = getStudiensemester(); if(typ=='') typ='student'; - url = "rdf/student.rdf.php?studiengang_kz="+stg_kz+"&semester="+sem+"&verband="+ver+"&gruppe="+grp+"&gruppe_kurzbz="+gruppe+"&studiensemester_kurzbz="+stsem+"&typ="+typ+"&filter2=buchungstyp;"+filter+"&"+gettimestamp(); + + var url = buildStudentRDFURI({ + 'studiengang_kz': stg_kz, + 'semester': sem, + 'verband': ver, + 'gruppe': grp, + 'gruppe_kurzbz': gruppe, + 'studiensemester_kurzbz': stsem, + 'typ': typ, + 'filter2': 'buchungstyp;' + filter + }, tree); + var treeStudent=document.getElementById('student-tree'); try @@ -5436,8 +5503,10 @@ function StudentSuche() document.getElementById('tree-verband').view.selection.clearSelection(); //Datasource setzten und Felder deaktivieren - url = "rdf/student.rdf.php?filter="+encodeURIComponent(filter)+"&"+gettimestamp(); - + var url = buildStudentRDFURI({ + 'filter': filter + }); + var treeStudent=document.getElementById('student-tree'); try diff --git a/rdf/student.rdf.php b/rdf/student.rdf.php index 3771f7d5e..008289d94 100644 --- a/rdf/student.rdf.php +++ b/rdf/student.rdf.php @@ -61,8 +61,9 @@ function convdate($date) function checkfilter($row, $filter2, $buchungstyp = null) { - global $studiensemester_kurzbz, $kontofilterstg; + global $studiensemester_kurzbz, $kontofilterstg, $studiengang_kz; $db = new basis_db(); + $studstatusgrund = array(); if($filter2=='dokumente') { @@ -157,6 +158,21 @@ function checkfilter($row, $filter2, $buchungstyp = null) } } } + elseif ( preg_match('/^stud-statusgrund-([0-9]+)$/', $filter2, $studstatusgrund) ) + { + // Alle Studenten mit Statusgrund in tbl_prestudentstatus + $qry = "SELECT count(*) AS anzahl FROM public.tbl_prestudentstatus ps JOIN + public.tbl_prestudent p ON p.prestudent_id = ps.prestudent_id AND + ps. studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND + p. person_id=".$db->db_add_param($row->person_id, FHC_INTEGER)." AND + p.studiengang_kz=" . $db->db_add_param($studiengang_kz, FHC_INTEGER) . " AND + ps.statusgrund_id = " . $db->db_add_param($studstatusgrund[1], FHC_INTEGER); + //echo $qry . "\n"; + $filtered = ( $db->db_query($qry) && ($row_filter = $db->db_fetch_object()) && ($row_filter->anzahl > 0) ) + ? true + : false; + return $filtered; + } return true; }