aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/StudipSemTreeSearch.class.php
diff options
context:
space:
mode:
authorPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
committerPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
commit4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch)
tree5c07151ae61276d334e88f6309c30d439a85c12e /lib/classes/StudipSemTreeSearch.class.php
parentda0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff)
parent97a188592c679890a25c37ab78463add76a52ff7 (diff)
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'lib/classes/StudipSemTreeSearch.class.php')
-rw-r--r--lib/classes/StudipSemTreeSearch.class.php241
1 files changed, 0 insertions, 241 deletions
diff --git a/lib/classes/StudipSemTreeSearch.class.php b/lib/classes/StudipSemTreeSearch.class.php
deleted file mode 100644
index e79a34f..0000000
--- a/lib/classes/StudipSemTreeSearch.class.php
+++ /dev/null
@@ -1,241 +0,0 @@
-<?php
-# Lifter002: TODO
-# Lifter007: TODO
-# Lifter003: TODO
-# Lifter010: TODO
-// +---------------------------------------------------------------------------+
-// This file is part of Stud.IP
-// StudipSemTreeSearch.class.php
-// Class to build search formular and execute search
-//
-// Copyright (c) 2003 André Noack <noack@data-quest.de>
-// +---------------------------------------------------------------------------+
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or any later version.
-// +---------------------------------------------------------------------------+
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-// +---------------------------------------------------------------------------+
-
-/**
-* Class to build search formular and execute search
-*
-*
-*
-* @access public
-* @author André Noack <noack@data-quest.de>
-* @package DBTools
-**/
-class StudipSemTreeSearch {
-
- var $view;
- var $num_search_result = false;
- var $num_inserted;
- var $num_deleted;
- var $form_name;
- var $tree;
- var $seminar_id;
- var $institut_id = [];
- var $sem_tree_ranges = [];
- var $sem_tree_ids = [];
- var $selected = [];
- var $search_result = [];
- var $search_done = false;
-
- function __construct($seminar_id,$form_name = "search_sem_tree", $auto_search = true){
- $this->view = DbView::getView('sem_tree');
- $this->form_name = $form_name;
- $this->tree = TreeAbstract::GetInstance("StudipSemTree", false);
- $this->seminar_id = $seminar_id;
- $this->view->params[0] = $seminar_id;
- $rs = $this->view->get_query("view:SEM_GET_INST");
- while($rs->next_record()){
- $this->institut_id[] = $rs->f(0);
- }
- $this->init();
- if($auto_search){
- $this->doSearch();
- }
- }
-
- function init(){
- $this->sem_tree_ranges = [];
- $this->sem_tree_ids = [];
- $this->selected = [];
- $this->view->params[0] = $this->seminar_id;
- $rs = $this->view->get_query("view:SEMINAR_SEM_TREE_GET_IDS");
- while($rs->next_record()){
- if (!$this->tree->hasKids($rs->f("sem_tree_id"))){
- $this->sem_tree_ranges[$rs->f("parent_id")][] = $rs->f("sem_tree_id");
- $this->sem_tree_ids[] = $rs->f("sem_tree_id");
- $this->selected[$rs->f("sem_tree_id")] = true;
- }
- }
- }
- /* fuzzy !!!
- function getExpectedRanges(){
- $this->view->params[0] = $this->institut_id;
- $this->view->params[1] = $this->sem_tree_ids;
- $rs = $this->view->get_query("view:SEMINAR_SEM_TREE_GET_EXP_IDS");
- while ($rs->next_record()){
- if (!$this->tree->hasKids($rs->f("sem_tree_id"))){
- $this->sem_tree_ranges[$rs->f("parent_id")][] = $rs->f("sem_tree_id");
- $this->sem_tree_ids[] = $rs->f("sem_tree_id");
- }
- }
- }
- */
-
- //not fuzzy
- function getExpectedRanges(){
- $this->view->params[0] = $this->institut_id;
- $rs = $this->view->get_query("view:SEM_TREE_GET_FAK");
- while($rs->next_record()){
- $the_kids = $this->tree->getKidsKids($rs->f("sem_tree_id"));
- $the_kids[] = $rs->f("sem_tree_id");
- for ($i = 0; $i < count($the_kids); ++$i){
- if (!$this->tree->hasKids($the_kids[$i]) && !in_array($the_kids[$i],$this->sem_tree_ids)){
- $this->sem_tree_ranges[$this->tree->tree_data[$the_kids[$i]]['parent_id']][] = $the_kids[$i];
- $this->sem_tree_ids[] = $the_kids[$i];
- }
- }
- }
- }
-
- function prepRangePath($path, $cols) {
- $parts=explode(">",$path);
- $paths=[];
- $currpath="";
- foreach ($parts as $part) {
- if (mb_strlen($part)>$cols) {
- $p=my_substr($part, 0, $cols);
- } else {
- $p = $part;
- }
- if (mb_strlen($currpath)+mb_strlen($p)+3 > $cols) {
- $paths[]=htmlReady($currpath);
- $currpath=" >> " . $p;
- } else {
- if (count($paths)==0 && mb_strlen($currpath)==0) {
- $currpath.=$p;
- } else {
- $currpath.=" > ".$p;
- }
- }
- }
- $paths[]=htmlReady($currpath);
- return $paths;
- }
-
- function getChooserField($attributes = [], $cols = 70, $field_name = 'chooser'){
- if ($this->institut_id){
- $this->getExpectedRanges();
- }
- $element_name = "{$this->form_name}_{$field_name}[]";
- $ret = "\n<div class=\"selectbox\"";
- foreach ($attributes as $key => $value){
- $ret .= " " . $key . "=\"" . htmlReady($value) . "\"";
- }
- $ret .= ">";
- foreach ($this->sem_tree_ranges as $range_id => $sem_tree_id){
- $paths=$this->prepRangePath($this->getPath($range_id), $cols);
- foreach ($paths as $p) {
- $ret .= "\n<div style=\"margin-top:5px;font-weight:bold;color:red;\">" . $p ."</div>";
- }
- $ret .= "\n<div style=\"font-weight:bold;color:red;\">" . str_repeat("¯",$cols) . "</div>";
- for ($i = 0; $i < count($sem_tree_id); ++$i){
- $id = $this->form_name . '_' . $field_name . '_' . $sem_tree_id[$i];
- $ret .= "\n<div>";
- $ret .= "\n<label for=\"$id\"><input style=\"vertical-align:middle;\" id=\"$id\" type=\"checkbox\" name=\"$element_name\" value=\"".$sem_tree_id[$i]."\" " . (($this->selected[$sem_tree_id[$i]]) ? " checked " : "");
- $ret .= ">&nbsp;";
- $ret .= "<span ". (($this->search_result[$sem_tree_id[$i]]) ? " style=\"color:blue;\" " : "") . ">";
- $ret .= htmlReady(my_substr($this->tree->tree_data[$sem_tree_id[$i]]['name'],0,$cols)) . "</span></label>";
- $ret .= "\n</div>";
- }
- }
- $ret .= "</div>";
- return $ret;
- }
-
- function getPath($item_id,$delimeter = ">"){
- return $this->tree->getShortPath($item_id);
- }
-
-
- function getSearchField($attributes = []){
- $ret = "\n<input type=\"text\" name=\"{$this->form_name}_search_field\"";
- foreach ($attributes as $key => $value){
- $ret .= " " . $key . "=\"" . htmlReady($value) ."\"";
- }
- $ret .= ">";
- return $ret;
- }
-
- function getSearchButton($attributes = [])
- {
- $ret = Icon::create('search', 'clickable', ['title' => _('Suche nach Studienbereichen starten')])
- ->asInput(["type" => "image", "class" => "middle", "name" => $this->form_name . "_do_search"]);
-
- return $ret;
- }
-
- function getFormStart($action = ""){
- if (!$action){
- $action = URLHelper::getLink();
- }
- $ret = "\n<form action=\"$action\" method=\"post\" name=\"{$this->form_name}\">";
- $ret .= CSRFProtection::tokenTag();
- return $ret;
- }
-
- function getFormEnd(){
-
- return "\n<input type=\"hidden\" name=\"{$this->form_name}_send\" value=\"1\">\n</form>";
- }
-
- function doSearch(){
- if (Request::submitted($this->form_name . "_do_search") || Request::submitted($this->form_name . "_send")){
- if(mb_strlen($_REQUEST[$this->form_name . "_search_field"]) > 2){
- $this->view->params[0] = "%" . Request::quoted($this->form_name . "_search_field") . "%";
- $this->view->params[1] = $this->sem_tree_ids;
- $rs = $this->view->get_query("view:SEM_TREE_SEARCH_ITEM");
- while($rs->next_record()){
- $this->sem_tree_ranges[$rs->f("parent_id")][] = $rs->f("sem_tree_id");
- $this->sem_tree_ids[] = $rs->f("sem_tree_id");
- $this->search_result[$rs->f("sem_tree_id")] = true;
- }
- $this->num_search_result = $rs->num_rows();
- }
- $this->search_done = true;
- }
- return;
- }
-
- public function insertSelectedRanges($selected = null)
- {
- if (!$selected){
- $selected = array_filter(Request::quotedArray("{$this->form_name}_chooser"));
- }
-
- if (is_array($selected)){
- $count_intersect = count(array_intersect($selected,array_keys($this->selected)));
- if (count($this->selected) != $count_intersect || count($selected) != $count_intersect){
- $count_del = (count($this->selected)) ? $this->tree->DeleteSemEntries(array_keys($this->selected),$this->seminar_id) : 0;
- for ($i = 0; $i < count($selected); ++$i){
- $new_selected[$selected[$i]] = true;
- $count_ins += $this->tree->InsertSemEntry($selected[$i], $this->seminar_id);
- }
- $this->num_inserted = $count_ins - $count_intersect;
- $this->num_deleted = $count_del - $count_intersect;
- $this->selected = $new_selected;
- }
- }
- }
-}