public static function registerStep($name, $class, $number, $enabled = false) { $step = new CourseWizardStepRegistry(); $step->name = $name; $step->classname = $class; $step->number = $number; $step->enabled = $enabled ? 1 : 0; return $step->store(); }
/** * Saves data for a new or existing step. * @param string $id ID of the step to save; if empty, create new step. */ public function save_action($id = '') { CSRFProtection::verifyUnsafeRequest(); if (Request::submitted('submit')) { if ($id) { $step = CourseWizardStepRegistry::find($id); $step->name = Request::get('name'); $step->classname = Request::get('classname'); $step->number = Request::int('number'); $step->enabled = Request::option('enabled') ? 1 : 0; if ($step->store()) { PageLayout::postMessage(MessageBox::success(_('Die Daten wurden gespeichert.'))); } else { PageLayout::postMessage(MessageBox::error(_('Die Daten konnten nicht gespeichert werden.'))); } } else { $classname = Request::get('classname'); // Check if given class name can be found in system. if (!class_exists($classname)) { PageLayout::postMessage(MessageBox::error(sprintf(_('Die angegebene PHP-Klasse "%s" wurde nicht gefunden.'), htmlReady($classname)))); // Class found, now check if it implements the interface definition for wizard steps. } else { if (!in_array('CourseWizardStep', class_implements($classname) ?: array())) { PageLayout::postMessage(MessageBox::error(sprintf(_('Die angegebene PHP-Klasse "%s" implementiert nicht das Interface CourseWizardStep.'), htmlReady($classname)))); // All ok, create new database entry. } else { $step = new CourseWizardStepRegistry(); $step->name = Request::get('name'); $step->classname = $classname; $step->number = Request::int('number'); $step->enabled = Request::option('enabled') ? 1 : 0; if ($step->store()) { PageLayout::postMessage(MessageBox::success(_('Die Daten wurden gespeichert.'))); } else { PageLayout::postMessage(MessageBox::error(_('Die Daten konnten nicht gespeichert werden.'))); } } } } } $this->redirect($this->url_for('admin/coursewizardsteps')); }