$artefact = param_integer('artefact'); $a = artefact_instance_from_id($artefact); $type = $a->get('artefacttype'); // Set correct redirect when user clicks Cancel button... if ($type == 'languagediploma' || $type == 'languageexperience') { // Find language diploma's or linguistic experience's parent for redirect... $sql = 'SELECT aeo.id, aeo.artefact FROM {artefact_europass_otherlanguage} aeo JOIN {artefact_europass_' . $type . '} ar ON ar.languageid = aeo.id WHERE ar.id = ? AND ar.artefact = ?'; $parent = get_record_sql($sql, array($id, $artefact)); $goto = 'viewcomposite.php?id=' . $parent->id . '&artefact=' . $parent->artefact; } else { $goto = 'languages.php'; } $tabs = PluginArtefactEuropass::composite_tabs(); define('EUROPASS_SUBPAGE', $tabs[$type]); if ($a->get('owner') != $USER->get('id')) { throw new AccessDeniedException(get_string('notartefactowner', 'error')); } $elements = call_static_method(generate_artefact_class_name($type), 'get_addform_elements'); $elements['submit'] = array('type' => 'submitcancel', 'value' => array(get_string('save'), get_string('cancel')), 'goto' => get_config('wwwroot') . 'artefact/europass/' . $goto); $elements['compositetype'] = array('type' => 'hidden', 'value' => $type); $cform = array('name' => 'add' . $type, 'plugintype' => 'artefact', 'pluginname' => 'europass', 'elements' => $elements, 'successcallback' => 'langcompositeformedit_submit'); $a->populate_form($cform, $id, $type); $compositeform = pieform($cform); $smarty = smarty(); $smarty->assign('compositeform', $compositeform); $smarty->assign('composite', $type); $smarty->assign('PAGEHEADING', TITLE); $smarty->assign('SUBPAGENAV', PluginArtefactEuropass::submenu_items());
function langcompositeformedit_submit(Pieform $form, $values) { global $SESSION; $tabs = PluginArtefactEuropass::composite_tabs(); $goto = get_config('wwwroot') . 'artefact/europass/'; if (isset($tabs[$values['compositetype']])) { if ($values['compositetype'] == 'languagediploma' || $values['compositetype'] == 'languageexperience') { // Find language diploma's or linguistic experience's parent for redirect... $sql = 'SELECT aeo.id, aeo.artefact FROM {artefact_europass_otherlanguage} aeo JOIN {artefact_europass_' . $values['compositetype'] . '} ar ON ar.languageid = aeo.id WHERE ar.id = ? AND ar.artefact = ?'; $parent = get_record_sql($sql, array($values['id'], $values['artefact'])); $goto .= 'viewcomposite.php?id=' . $parent->id . '&artefact=' . $parent->artefact; if ($values['compositetype'] == 'languagediploma') { $okmsg = get_string('languagediplomasaved', 'artefact.europass'); $errmsg = get_string('languagediplomasavefailed', 'artefact.europass'); } else { $okmsg = get_string('languageexperiencesaved', 'artefact.europass'); $errmsg = get_string('languageexperiencesavefailed', 'artefact.europass'); } } else { $goto .= $tabs[$values['compositetype']] . '.php'; $okmsg = get_string('languagesaved', 'artefact.europass'); $errmsg = get_string('languagesavefailed', 'artefact.europass'); } } try { call_static_method(generate_artefact_class_name($values['compositetype']), 'process_compositeform', $form, $values); } catch (Exception $e) { $SESSION->add_error_msg($errmsg); redirect($goto); } $SESSION->add_ok_msg($okmsg); redirect($goto); }