diff --git a/MultiCopy.class.php b/MultiCopy.class.php index 54a63474008c5e5fa60bab341e019925180791cf..061399de7cae865a79af9bdc2eb3e08c4cd0b0a5 100644 --- a/MultiCopy.class.php +++ b/MultiCopy.class.php @@ -30,21 +30,21 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin Navigation::activateItem('/admin/plugins/multicopy'); // alle modi variablen umbiegen... - $modus = $_REQUEST['modus']; - $modus2 = $_REQUEST['modus2']; - $modus3 = $_REQUEST['modus3']; - $modus4 = $_REQUEST['modus4']; - - $sem = $_REQUEST['sem']; - $category = $_REQUEST['category']; - $show_sem_tree = $_REQUEST['show_sem_tree']; - $subselects = $_REQUEST['subselects']; - $act_sem = $_REQUEST['act_sem']; - $my_cat = $_REQUEST['my_cat']; - $subselects2 = $_REQUEST['subselects2']; - $info_checkbox = $_REQUEST['info_checkbox']; - $sem_cp = $_REQUEST['sem_cp']; - $check = $_REQUEST['check']; + $modus = Request::get('modus'); + $modus2 = Request::get('modus2'); + $modus3 = Request::get('modus3'); + $modus4 = Request::get('modus4'); + + $sem = Request::get('sem'); + $category = Request::get('category'); + $show_sem_tree = Request::get('show_sem_tree'); + $subselects = Request::get('subselects'); + $act_sem = Request::get('act_sem'); + $my_cat = Request::get('my_cat'); + $subselects2 = Request::get('subselects2'); + $info_checkbox = Request::get('info_checkbox'); + $sem_cp = Request::get('sem_cp'); + $check = Request::getArray('check'); ob_start(); @@ -132,10 +132,10 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin $show = "one_kat"; } elseif ($category=="") { - unset($modus); + $modus = null; } elseif (isset($category) && (!is_array($categories[$category]["sub"]))) { - unset($modus); + $modus = null; } elseif (isset($subselects) && (!is_array($categories[$category]["sub"][$subselects]["sub"]))) { $modus = "go_fb"; @@ -177,6 +177,7 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin $u_reader->setAllSeminars(); // alle Seminare werden in den StorageVector gepackt $u_writer = new UniWriter($start_time, $u_reader->storage_vector); $u_writer->initWrite(); + $info = null; // add all selected seminars to a new grouped courseset, removing @@ -242,7 +243,7 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin } ?></table><? } - if (count($deny_sem_array)>0) { + if ($deny_sem_array) { ?> <?= MessageBox::error(sprintf('%d Veranstaltung(en) konnte(n) nicht kopiert werden (keine Berechtigung):', count($deny_sem_array))) ?> <table class="default"> @@ -284,7 +285,7 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin } elseif ($modus=="go_fb" && Request::submitted('modus_img')) { // erste Unterkategorie ?> - <?=make_form($PHP_SELF)?> + <?=make_form()?> <table width="100%"> <tr> <td width="20%" class="blank"> @@ -296,8 +297,6 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin <tr> <td class="blank" width="20%" valign="top"> Oberkategorien:<br><?=$s_categories?> - <?=create_sem_tree_checkbox($show_sem_tree)?> - <?=create_info_checkbox($info_checkbox)?> </td> <td width="5%" class="blank" align="center" valign="middle"> <?=make_image_button("go_fb","right")?> @@ -331,7 +330,7 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin } elseif (($modus3=="go_fb2") && Request::submitted('modus3_img')) { // weitere Unterkategorien ?> - <?=make_form($PHP_SELF)?> + <?=make_form()?> <table width="100%"> <tr> <td width="20%" class="blank"> @@ -344,8 +343,6 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin <td class="blank" width="20%" valign="top"> Oberkategorien:<br> <?=$s_categories?> - <?=create_sem_tree_checkbox($show_sem_tree)?> - <?=create_info_checkbox($info_checkbox)?> </td> <td width="5%" class="blank" align="center" valign="middle"> <?=make_image_button("go_fb","right")?> @@ -388,7 +385,7 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin } elseif (($modus2=="go_sem") && Request::submitted('modus2_img')) { // zeige alles an ?> - <?=make_form($PHP_SELF)?> + <?=make_form()?> <table width="100%"> <tr> <td width="20%" class="blank"> @@ -400,8 +397,6 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin <tr> <td class="blank" valign="top"> Oberkategorien:<br><?= $s_categories?> - <?= create_sem_tree_checkbox($show_sem_tree)?> - <?=create_info_checkbox($info_checkbox) ?> </td> <td width="5%" class="blank" align="center" valign="middle"> <?= make_image_button("go_fb","right")?> @@ -507,7 +502,7 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin </fieldset> <?=make_end_form()?> <? } else { // default ?> - <?=make_form($PHP_SELF)?> + <?=make_form()?> <table width="100%"> <tr> <td width="20%" class="blank"> @@ -519,8 +514,6 @@ class MultiCopy extends StudIPPlugin implements SystemPlugin <tr> <td class="blank"> Oberkategorien:<br> <?= $s_categories?> - <?=create_sem_tree_checkbox($show_sem_tree)?> - <?=create_info_checkbox($info_checkbox)?> </td> <td width="80%" class="blank" align="left" valign="middle"> <?=make_image_button("go_fb","right")?> diff --git a/admin_copy_mult.inc.php b/admin_copy_mult.inc.php index b806406b8dd611d17da54183f84ba0c7cefaf3af..99e92bf684bd6515a389439b0679453bf67efe5c 100644 --- a/admin_copy_mult.inc.php +++ b/admin_copy_mult.inc.php @@ -54,7 +54,7 @@ function show_select_categories($categories,$size,$selected="") { $data .= " SELECTED "; } $data .=">".$val["name"]."</option>\n"; - if (is_array($val["sub"])) { + if (isset($val["sub"]) && is_array($val["sub"])) { $offset = " "; //$data .= show_sub_select_categories($val["sub"],$offset); } @@ -66,8 +66,8 @@ function show_select_categories($categories,$size,$selected="") { // // Erzeuge HTML-Formular-Kopf // -function make_form($target) { - $form = "<form name=\"cp_mult\" action=\"".$target."\" METHOD=\"POST\">"; +function make_form() { + $form = "<form name=\"cp_mult\" action=\"\" METHOD=\"POST\">"; return $form; } @@ -93,13 +93,14 @@ function show_sub_selected_categories($s_categories,$size,$selected="",$depth,$f // Hilfsfunktion: Enzeleinträge erzeugen // function show_sub_select_categories($s_categories,$offset="",$selected="",$depth) { + $data = ''; foreach ($s_categories as $key => $val) { $data .= "<option value=\"".$key."\""; if ($selected==$key) { $data .= " SELECTED "; } $data .= ">".$offset.$val["name"]."</option></b>"; - if (is_array($val["sub"]) && ($depth>=1)) { + if (isset($val["sub"]) && is_array($val["sub"]) && ($depth>=1)) { //$depth--; $data .= show_sub_select_categories($val["sub"],$offset." ",$selected,$depth); } @@ -107,18 +108,6 @@ function show_sub_select_categories($s_categories,$offset="",$selected="",$depth return $data; } -// -// Checkbox für sem_tree-Eintrage erzeugen -// - -function create_sem_tree_checkbox($sem_tree) { - return $data; -} - -function create_info_checkbox($info_checkbox) { - return $data; -} - function get_admin_user_inst($user_id) { $user_inst_array = array(); $db = new DB_Seminar; @@ -145,6 +134,8 @@ function show_cats_with_seminars($categories,$db,$offset,$start,$cats="",$show_s $db6->query($sql); $db6->next_record(); $semester_id = $db6->f("semester_id"); + $data = $csv = ''; + foreach ($categories as $key => $val) { @@ -185,10 +176,6 @@ function show_cats_with_seminars($categories,$db,$offset,$start,$cats="",$show_s $db4 = new DB_Seminar; $sql4 = "SELECT a.Nachname,a.Vorname FROM seminar_user LEFT JOIN auth_user_md5 a USING (user_id) WHERE Seminar_id='".$db3->f("Seminar_id")."' AND status='dozent'"; $db4->query($sql4); - $db5 = new DB_Seminar; - $sql = "SELECT content FROM datafields_entries WHERE datafield_id='8d94e6a5277b8b279d4216be4800e570' AND range_id='".$db3->f("Seminar_id")."'"; - $db5->query($sql); - $db5->next_record(); $style = " style=\"border-top:thin solid\" "; $data .= "<tr>"; // duerfen wir ueberhaupt kopieren? @@ -248,21 +235,17 @@ function show_cats_with_seminars($categories,$db,$offset,$start,$cats="",$show_s } $checkbox_count++; $data .= "</tr>"; - if ($db3->f("teilnehmer") || $db5->f("content")) { + if ($db3->f("teilnehmer")) { $data .= "<tr><td> </td><td colspan=4>"; $data .= "<font ".$_color."><em>"; $data .= $db3->f("teilnehmer"); - if ($db3->f("teilnehmer") && $db5->f("content")) { - $data .= ", "; - } - $data .= $db5->f("content"); $data .= " </em></font>"; $data .= "</td>"; $data .= "</tr>\n"; } $data .= $_comment; - if ($path) { + if (isset($path) && $path) { foreach($path as $sem_tree_id => $path_name) { $data .= "<tr>"; $data .= "<td> </td>"; @@ -270,7 +253,6 @@ function show_cats_with_seminars($categories,$db,$offset,$start,$cats="",$show_s $data .= "</tr>"; } } - $position++; } if (is_array($val["sub"])) { @@ -301,6 +283,7 @@ function get_institute($seminar_id) { } function make_cats_together($category,$db) { + $data = []; $sql = "SELECT * FROM sem_tree WHERE sem_tree_id = '".$category."'"; $db->query($sql); $db->next_record(); @@ -320,6 +303,7 @@ function make_cats_together($category,$db) { } function get_all_down_categories($id,$db) { + $data = []; $sql = "SELECT * FROM sem_tree WHERE parent_id='".$id."' ORDER BY priority"; $db->query($sql); while ($db->next_record()) { @@ -332,6 +316,7 @@ function get_all_down_categories($id,$db) { } function make_image_button($modus,$pic) { + $button = ''; switch ($modus) { case "go_fb": $mod = "modus_img"; @@ -362,6 +347,7 @@ function make_image_button($modus,$pic) { } function get_sub_categories($level,$subselects,$db,$id) { + $data = null; $level--; $sql = "SELECT * FROM sem_tree s WHERE parent_id='".$id."' ORDER BY priority"; $db->query($sql); @@ -418,6 +404,7 @@ function make_button($value,$name) { // Sucht die Veranstaltungen raus, die nicht kopiert werden dürfen und gibt diese als assoz Array zurück // function check_seminars($seminars, $user) { + $sem_array = [[], []]; $db = new DB_Seminar; $sql = "SELECT Institut_id ". "FROM user_inst ". diff --git a/multicopy/UniReader.class.php b/multicopy/UniReader.class.php index e479e8a4bd66fe878a46943ac0c9a985b5a167dd..a132b83a17807468507445446f44db56de6017e7 100644 --- a/multicopy/UniReader.class.php +++ b/multicopy/UniReader.class.php @@ -71,8 +71,8 @@ class UniReader extends Reader { } function getDatafieldEntries($sem_id) { - $sql = "SELECT de.datafield_id,de.content,de.mkdate,de.chdate FROM datafields_entries de - LEFT JOIN datafields d ON (d.datafield_id = de.datafield_id) WHERE de.range_id = '$sem_id' AND d.object_type IN ('sem','usersemdata')"; + $sql = "SELECT datafields_entries.* FROM datafields_entries JOIN datafields USING(datafield_id) + WHERE range_id = '$sem_id' AND object_type = 'sem'"; $db = DBManager::get(); $st = $db->prepare($sql); $st->execute(); diff --git a/multicopy/UniWriter.class.php b/multicopy/UniWriter.class.php index 57813a2e1b174e9dc098b8d3f34e99b2dab8123c..90ff61dd08107d8d76ca5bd5c9dc94dd3b8faea5 100644 --- a/multicopy/UniWriter.class.php +++ b/multicopy/UniWriter.class.php @@ -133,6 +133,7 @@ class UniWriter extends Writer { } function setSeminarInst($seminar_insts) { + $j = 0; $i = count($seminar_insts); foreach($seminar_insts as $seminar_inst) { @@ -152,8 +153,12 @@ class UniWriter extends Writer { } function setGeneric($d_fields) { - $d_fields['range_id'] = $this->current_sem_id; - return $this->setData($d_fields, 'datafields_entries'); + $datafield = DataField::find($d_fields['datafield_id']); + + if ($datafield->editAllowed($GLOBALS['perm']->get_perm())) { + $d_fields['range_id'] = $this->current_sem_id; + $this->setData($d_fields, 'datafields_entries'); + } } /** @@ -225,9 +230,9 @@ class UniWriter extends Writer { PageLayout::postError(sprintf(_("Fehler bei setDeputies für %s."), $new_semid)); if(!$this->setSeminarInst($val->seminar_inst)) PageLayout::postError(sprintf(_("Fehler bei setSeminarInst für %s."), $new_semid)); + foreach ($val->generic as $val2) { - if(!$this->setGeneric($val2)) - PageLayout::postError(sprintf(_("Fehler bei setGeneric für %s."), $new_semid)); + $this->setGeneric($val2); } if ($val->i18n_entries) { diff --git a/plugin.manifest b/plugin.manifest index 04731b7df656cbd13ccc48fbed5ffd8ddf4b2918..9e5ef3760657db0239069995348d824fd42e4761 100644 --- a/plugin.manifest +++ b/plugin.manifest @@ -1,5 +1,5 @@ pluginclassname=MultiCopy pluginname=MultiCopy origin=virtUOS -version=0.6.3 +version=0.7 studipMinVersion=5.0