aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+github@gmail.com>2021-07-22 16:07:19 +0200
committerJan-Hendrik Willms <tleilax+github@gmail.com>2021-07-22 16:19:12 +0200
commita3da1483a9e689846179159355badfec8073dbec (patch)
tree770dcca6bdf5f6f2a11b0e7fcbbeda6919a3fc52 /lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php
current code from svn, revision 62608
Diffstat (limited to 'lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php')
-rw-r--r--lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php144
1 files changed, 144 insertions, 0 deletions
diff --git a/lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php b/lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php
new file mode 100644
index 0000000..1843084
--- /dev/null
+++ b/lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php
@@ -0,0 +1,144 @@
+<?php
+/**
+ * AdvancedBasicDataWizardStep.php
+ * Course wizard step for getting the basic course data.
+ *
+ * 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 (at your option) any later version.
+ *
+ * @author Thomas Hackl <thomas.hackl@uni-passau.de>
+ * @author Stefan Osterloh <s.osterloh@uni-oldenburg.de>
+ * @copyright 2015 Stud.IP Core-Group
+ * @license http://www.gnu.org/licenses/gpl-2.0.html GPL version 2
+ * @category Stud.IP
+ */
+
+class AdvancedBasicDataWizardStep extends BasicDataWizardStep
+{
+ /**
+ * Returns the Flexi template for entering the necessary values
+ * for this step.
+ *
+ * @param Array $values Pre-set values
+ * @param int $stepnumber which number has the current step in the wizard?
+ * @param String $temp_id temporary ID for wizard workflow
+ * @return String a Flexi template for getting needed data.
+ */
+ public function getStepTemplate($values, $stepnumber, $temp_id)
+ {
+ $values = $this->adjustValues($values);
+
+ // We only need our own stored values here.
+ if ($values[__CLASS__]['studygroup']) {
+ return parent::getStepTemplate($values, $stepnumber, $temp_id);
+ }
+
+ // Load template from step template directory.
+ $factory = new Flexi_TemplateFactory($GLOBALS['STUDIP_BASE_PATH'].'/app/views/course/wizard/steps');
+ $template = $factory->open('advancedbasicdata/index');
+
+ if ($template = $this->setupTemplateAttributes($template, $values, $stepnumber, $temp_id)) {
+ $values = $this->makeI18N($values[__CLASS__], ['name', 'description', 'subtitle', 'kind']);
+
+ $template->set_attribute('values', array_merge($template->values, $values));
+
+ return $template->render();
+ }
+ }
+
+ /**
+ * Validates if given values are sufficient for completing the current
+ * course wizard step and switch to another one. If not, all errors are
+ * collected and shown via PageLayout::postMessage.
+ *
+ * @param mixed $values Array of stored values
+ * @return bool Everything ok?
+ */
+ public function validate($values)
+ {
+ $values = $this->adjustValues($values);
+ return parent::validate($values);
+ }
+
+ /**
+ * Stores the given values to the given course.
+ *
+ * @param Course $course the course to store values for
+ * @param Array $values values to set
+ * @return Course The course object with updated values.
+ */
+ public function storeValues($course, $values)
+ {
+ $values = $this->adjustValues($values);
+ $course = parent::storeValues($course, $values);
+
+ // There probably was an error upon storing
+ if (!$course) {
+ return false;
+ }
+
+ // Studygroup? -> nothing to do here
+ if ($values[__CLASS__]['studygroup']) {
+ return $course;
+ }
+
+ // Add advanced data
+ $course->untertitel = new I18NString($values[__CLASS__]['subtitle'], $values[__CLASS__]['subtitle_i18n']);
+ $course->art = new I18NString($values[__CLASS__]['kind'], $values[__CLASS__]['kind_i18n']);
+ $course->ects = $values[__CLASS__]['ects'];
+ $course->admission_turnout = $values[__CLASS__]['maxmembers'];
+ if ($course->store() === false) {
+ PageLayout::postError(sprintf(_('Es ist ein Fehler beim Speichern der erweiterten Einstellungen für %s aufgetreten. Kontrollieren Sie bitte:')
+ , htmlReady($course->name)),
+ [_('Untertitel der Veranstalung'),
+ _('Art der Veranstaltung'),
+ _('ECTS-Punkte der Veranstaltung'),
+ _('Max. Teilnehmendenzahl der Veranstaltung')]);
+ }
+ return $course;
+ }
+
+ /**
+ * This method will adjust the given values from parent class
+ * or use previously set values from this class.
+ *
+ * @param array $values Array of values
+ * @return array of adjusted values
+ */
+ private function adjustValues($values)
+ {
+ $parent_class = get_parent_class($this);
+
+ if (!isset($values[__CLASS__]) && isset($values[$parent_class])) {
+ $values[__CLASS__] = $values[$parent_class];
+ } else {
+ $values[$parent_class] = $values[__CLASS__];
+ }
+
+ return $values;
+ }
+
+ /**
+ * Copy values for basic data wizard step from given course.
+ * @param Course $course
+ * @param Array $values
+ */
+ public function copy($course, $values)
+ {
+ $values = parent::copy($course, $values);
+ $values = $this->adjustValues($values);
+
+ $values[__CLASS__] = array_merge($values[__CLASS__], [
+ 'subtitle' => $course->untertitel,
+ 'subtitle_i18n' => $course->untertitel->toArray(),
+ 'kind' => $course->art,
+ 'kind_i18n' => $course->art->toArray(),
+ 'ects' => $course->ects,
+ 'maxmembers' => $course->admission_turnout,
+ ]);
+
+ return $values;
+ }
+}