public static function render_instance(BlockInstance $instance, $editing = false) { // Check if XSLT extension is loaded properly, because we will need it... // The XSL extension implements the XSL standard, performing XSLT transformations using the libxslt library. $xslext = extension_loaded('xsl'); if (!$xslext) { $missingextensions = array(); !$xslext && ($missingextensions[] = 'xsl'); $errormsg = '<p>' . get_string('europassextensionmissing', 'artefact.europass') . '</p>'; $errormsg .= '<ul>'; foreach ($missingextensions as $extension) { $errormsg .= '<li><a href="http://www.php.net/' . $extension . '">' . $extension . '</a></li>'; } $errormsg .= '</ul>'; return $errormsg; exit; } require_once get_config('docroot') . 'artefact/lib.php'; $smarty = smarty_core(); $configdata = $instance->get('configdata'); $configdata['viewid'] = $instance->get('view'); // Get data about the resume field in this blockinstance if (!empty($configdata['artefactid'])) { $europassfield = $instance->get_artefact_instance($configdata['artefactid']); if ($europassfield->get('artefacttype') != 'application') { $rendered = $europassfield->render_self($configdata); $result = $rendered['html']; if (!empty($rendered['javascript'])) { $result .= '<script type="text/javascript">' . $rendered['javascript'] . '</script>'; } } else { require_once get_config('docroot') . 'artefact/europass/lib/locale.php'; $personalinformation = null; try { $personalinformation = artefact_instance_from_type('personalinformation'); } catch (Exception $e) { } if (!empty($personalinformation)) { $gender = $personalinformation->get_composite('gender'); } else { $gender = null; } $occupation = get_occupation($europassfield->get('description'), get_config('lang'), $gender); $result = $occupation['label']; } return $result; } return ''; }
function generate_xr_projects($projects, $parameters) { $spam_mode = $parameters['spam_mode']; $xr_label = $parameters['xr_label']; $xr_tpl = $parameters['xr_tpl']; //$content = preg_replace("/\[BANER\-$W\-$H\]/",get_baner($W,$H),$content,1); $tpl_name = $xr_tpl['tpl_name']; $tpl_content = $xr_tpl['tpl_content']; $id_mail_type = $xr_tpl['id_mail_type']; $id_hp_links = $xr_tpl['id_hp_links']; $id_sign_links = $xr_tpl['id_sign_links']; $id_post_links = $xr_tpl['id_post_links']; $lang = $xr_tpl['lang']; $rand_text = $xr_tpl['rand_text']; //echo get_nick_mask("NICK_MASK-3-8") ; //exit; foreach ($projects as $project) { //print_r($project); $tpl = $tpl_content; $project_names = get_project_names(); //$tpl = preg_replace("/\[NICK\_MASK\-$X\-$Y\]/",get_nick_mask("NICK_MASK-$X-$Y"),$tpl,1); //$tpl = preg_replace('/\[NICK_MASK\-(\d+)\-(\d+)\]/',get_nick_mask("NICK_MASK-$1-$2"),$tpl); //$tpl = str_replace('NICK_MASK',get_nick_mask(),$tpl); $HOME_RAND_URL_VARS = get_home_rand_url_vars($id_hp_links, $project); $NICK_MASK = get_nick_mask(); $CITY = get_city(); $city = $CITY['city']; $country = $CITY['country']; $occupation = get_occupation($lang); $interest = get_interest($lang); $genders = get_gender(); $gender = $genders['gender']; $firstname = ucfirst(strtolower($genders['firstname'])); echo $gender . "\n" . $firstname; exit; //разделение по типам проектов # Href: $href_tpl = $tpl; $href_project_name = $project_names['Href']; } }
function generate_europasscv_xml($userid, $showHTML = false, $locale = 'en_GB', $internaldateformat = 'dmy11', $externaldateformat = '/numeric/long', $photograph = null) { // ================================ // Load values from Mahara database // ================================ // load user's existing contact information $element_list = array('firstname' => 'text', 'lastname' => 'text', 'email' => 'emaillist', 'address' => 'textarea', 'city' => 'text', 'country' => 'select', 'homenumber' => 'text', 'mobilenumber' => 'text', 'faxnumber' => 'text', 'officialwebsite' => 'text'); $contactinfo = array('firstname' => null, 'lastname' => null, 'email' => null, 'address' => null, 'city' => null, 'country' => null, 'homenumber' => null, 'mobilenumber' => null, 'faxnumber' => null, 'officialwebsite' => null); $contactinfo_data = get_records_select_array('artefact', "owner=? AND artefacttype IN (" . join(",", array_map(create_function('$a', 'return db_quote($a);'), array_keys($element_list))) . ")", array($userid)); if ($contactinfo_data) { foreach ($contactinfo_data as $field) { $contactinfo[$field->artefacttype] = $field->title; } } // load user's existing demographics information $demographics = null; try { $demographics = artefact_instance_from_type('personalinformation', $userid); } catch (Exception $e) { } !empty($demographics) ? $citizenship = $demographics->get_composite('citizenship') : ($citizenship = null); if (strlen($citizenship) == 2 or in_array($citizenship[2], array(',', ';', '/', '-'))) { $nationalities_list = explode(",", str_replace(" ", "", $demographics->get_composite('citizenship'))); } else { $nationalities_list = array(); // no nationality OR nationality value(s) not equals ISO 3166-1-alpha-2 code(s) } // user's application for desired employment / occupational field $application = null; try { $application = artefact_instance_from_type('application', $userid); } catch (Exception $e) { } if ($application == array()) { $application_data = null; } else { if ($application->get('description') == null) { $application_data = null; } else { //log_debug($demographics); if ($demographics == null) { $gender = null; } else { $gender = $demographics->get_composite('gender'); } $application_data = get_occupation($application->get('description'), $locale, $gender); } } // load user's existing workexperience $artefact_id = get_field('artefact', 'id', 'artefacttype', 'employmenthistory', 'owner', $userid); if ($artefact_id !== false) { $workexperience_list = get_records_select_array('artefact_resume_employmenthistory', "artefact=?", array($artefact_id)); } else { $workexperience_list = array(); } // load user's existing education $artefact_id = get_field('artefact', 'id', 'artefacttype', 'educationhistory', 'owner', $userid); if ($artefact_id !== false) { $education_list = get_records_select_array('artefact_resume_educationhistory', "artefact=?", array($artefact_id)); } else { $education_list = array(); } //$education_entries = count($education_list); // load user's existing mother tongue(s) and foreign language(s) $artefact_id = get_field('artefact', 'id', 'artefacttype', 'mothertongue', 'owner', $userid); if ($artefact_id !== false) { $mothertongue_list = get_records_select_array('artefact_europass_mothertongue', "artefact=?", array($artefact_id)); } else { $mothertongue_list = array(); } $artefact_id = get_field('artefact', 'id', 'artefacttype', 'otherlanguage', 'owner', $userid); if ($artefact_id !== false) { $otherlanguage_list = get_records_select_array('artefact_europass_otherlanguage', "artefact=?", array($artefact_id)); } else { $otherlanguage_list = array(); } // load user's existing skills and misc data $skills = array('socialskill' => null, 'organisationalskill' => null, 'technicalskill' => null, 'computerskill' => null, 'artisticskill' => null, 'otherskill' => null); $drivinglicence = null; $misc = array('additionalinfo' => null, 'annexes' => null); try { $skills['socialskill'] = artefact_instance_from_type('socialskill', $userid)->get('description'); } catch (Exception $e) { } try { $skills['organisationalskill'] = artefact_instance_from_type('organisationalskill', $userid)->get('description'); } catch (Exception $e) { } try { $skills['technicalskill'] = artefact_instance_from_type('technicalskill', $userid)->get('description'); } catch (Exception $e) { } try { $skills['computerskill'] = artefact_instance_from_type('computerskill', $userid)->get('description'); } catch (Exception $e) { } try { $skills['artisticskill'] = artefact_instance_from_type('artisticskill', $userid)->get('description'); } catch (Exception $e) { } try { $skills['otherskill'] = artefact_instance_from_type('otherskill', $userid)->get('description'); } catch (Exception $e) { } try { $drivinglicence = unserialize(artefact_instance_from_type('drivinglicence', $userid)->get('description')); } catch (Exception $e) { } try { $misc['additionalinfo'] = artefact_instance_from_type('additionalinfo', $userid)->get('description'); } catch (Exception $e) { } try { $misc['annexes'] = artefact_instance_from_type('annexes', $userid)->get('description'); } catch (Exception $e) { } // ====================== // Dinamically create XML // ====================== $xmlDoc = new DOMDocument('1.0', 'UTF-8'); // We want a nice output //$xmlDoc->formatOutput = true; //$xmlDoc->preserveWhitespace = false; $styleSheet = $xmlDoc->createProcessingInstruction('xml-stylesheet', 'href="http://europass.cedefop.europa.eu/xml/cv_' . $locale . '.xsl" type="text/xsl"'); $xmlDoc->appendChild($styleSheet); $rootElement = $xmlDoc->createElement('europass:learnerinfo'); $rootNode = $xmlDoc->appendChild($rootElement); $rootNode->setAttribute('locale', $locale); $rootNode->setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); $rootNode->setAttribute('xmlns:europass', 'http://europass.cedefop.europa.eu/Europass/V2.0'); $rootNode->setAttribute('xsi:schemaLocation', 'http://europass.cedefop.europa.eu/Europass/V2.0 http://europass.cedefop.europa.eu/xml/EuropassSchema_V2.0.xsd'); $children = array('docinfo', 'prefs', 'identification', 'application', 'workexperiencelist', 'educationlist', 'languagelist', 'skilllist', 'misclist'); foreach ($children as $child) { $childRoot = $xmlDoc->getElementsByTagName('europass:learnerinfo')->item(0); $childElement = $xmlDoc->createElement($child); $childElement->nodeValue = null; $childRoot->appendChild($childElement); } // ======================= // Dinamically set docinfo // ======================= // Dinamically set issuedate $childRoot = $xmlDoc->getElementsByTagName('docinfo')->item(0); $childElement = $xmlDoc->createElement('issuedate'); $childElement->nodeValue = date('Y-m-d\\TH:i:sP'); $childRoot->appendChild($childElement); // Dinamically set xsdversion $childRoot = $xmlDoc->getElementsByTagName('docinfo')->item(0); $childElement = $xmlDoc->createElement('xsdversion'); $childElement->nodeValue = 'V2.0'; $childRoot->appendChild($childElement); // Dinamically set comment $childRoot = $xmlDoc->getElementsByTagName('docinfo')->item(0); $childElement = $xmlDoc->createElement('comment'); $childElement->nodeValue = 'Automatically generated Europass CV from Mahara e-portfolio data'; $childRoot->appendChild($childElement); // ======================================== // Dinamically set prefs and identification // ======================================== // Dinamically set first and last name $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step1.lastName'); $childElement->setAttribute('before', 'step1.firstName'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('identification')->item(0); $childElement = $xmlDoc->createElement('firstname'); $childElement->nodeValue = valid_xml_string($contactinfo['firstname']); $childRoot->appendChild($childElement); $childElement = $xmlDoc->createElement('lastname'); $childElement->nodeValue = valid_xml_string($contactinfo['lastname']); $childRoot->appendChild($childElement); // --------------------------- // Dinamically set contactinfo // --------------------------- $childRoot = $xmlDoc->getElementsByTagName('identification')->item(0); $childElement = $xmlDoc->createElement('contactinfo'); $childRoot->appendChild($childElement); // Dinamically set address $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step1.addressInfo'); $childElement->setAttribute('keep', 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('contactinfo')->item(0); $childElement = $xmlDoc->createElement('address'); $childRoot->appendChild($childElement); // Dinamically set addressLine, municipality, postalCode $childRoot = $xmlDoc->getElementsByTagName('address')->item(0); $childElement = $xmlDoc->createElement('addressLine'); $childElement->nodeValue = valid_xml_string($contactinfo['address']); $childRoot->appendChild($childElement); $childElement = $xmlDoc->createElement('municipality'); $childElement->nodeValue = valid_xml_string($contactinfo['city']); $childRoot->appendChild($childElement); //$childElement = $xmlDoc->createElement('postalCode'); //$childElement->nodeValue = valid_xml_string($postalCode); //$childRoot->appendChild($childElement); $childElement = $xmlDoc->createElement('country'); $childRoot->appendChild($childElement); // Dinamically set country $childRoot = $xmlDoc->getElementsByTagName('country')->item(0); $childElement = $xmlDoc->createElement('code'); $childElement->nodeValue = strtoupper($contactinfo['country']); $childRoot->appendChild($childElement); $childElement = $xmlDoc->createElement('label'); $childElement->nodeValue = get_string_from_file('country.' . $contactinfo['country'], get_config('docroot') . 'artefact/europass/lang/' . get_lang_from_locale($locale) . '/artefact.europass.php'); $childRoot->appendChild($childElement); // Dinamically set telephone, fax, mobile, email and web page $contactinfo = array('telephone' => $contactinfo['homenumber'], 'fax' => $contactinfo['faxnumber'], 'mobile' => $contactinfo['mobilenumber'], 'email' => $contactinfo['email']); foreach ($contactinfo as $field => $value) { $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step1.' . $field); $childElement->setAttribute('keep', $value == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('contactinfo')->item(0); $childElement = $xmlDoc->createElement($field); $childElement->nodeValue = valid_xml_string($value); $childRoot->appendChild($childElement); } // ---------------------------- // Dinamically set demographics // ---------------------------- $childRoot = $xmlDoc->getElementsByTagName('identification')->item(0); $childElement = $xmlDoc->createElement('demographics'); $childRoot->appendChild($childElement); // Dinamically set birthDate and gender if ($demographics != null) { $demographics = array('birthDate' => strftime('%Y-%m-%d', $demographics->get_composite('dateofbirth') + 3600), 'gender' => $demographics->get_composite('gender') == 'male' ? 'M' : 'F'); foreach ($demographics as $field => $value) { $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step1.' . $field); $childElement->setAttribute('keep', $value == null ? 'false' : 'true'); if ($field == 'birthDate') { $childElement->setAttribute('format', $externaldateformat); } $childElement->nodeValue = null; $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('demographics')->item(0); $childElement = $xmlDoc->createElement(strtolower($field)); // strtolower - to convert birthDate to birthdate! $childElement->nodeValue = valid_xml_string($value); $childRoot->appendChild($childElement); } } // Dinamically set nationality or nationalities $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step1.nationality'); $childElement->setAttribute('keep', $nationalities_list == array() ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); $n = 0; foreach ($nationalities_list as $nationality) { // Dinamically set each nationality $childRoot = $xmlDoc->getElementsByTagName('demographics')->item(0); $childElement = $xmlDoc->createElement('nationality'); $childRoot->appendChild($childElement); $children = array('code', 'label'); foreach ($children as $child) { $childRoot = $xmlDoc->getElementsByTagName('nationality')->item($n); $childElement = $xmlDoc->createElement($child); if ($child == 'code') { $childElement->nodeValue = strtoupper($nationality); } if ($child == 'label') { $childElement->nodeValue = get_string_from_file('nationality.' . $nationality, get_config('docroot') . 'artefact/europass/lang/' . get_lang_from_locale($locale) . '/artefact.europass.php'); } $childRoot->appendChild($childElement); } $n++; } // Dinamically set photograph $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step1.photo'); $childElement->setAttribute('keep', $photograph == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('identification')->item(0); $childElement = $xmlDoc->createElement('photo'); $childElement->setAttribute('type', 'JPEG'); $childElement->nodeValue = $photograph; $childRoot->appendChild($childElement); // ===================================== // Dinamically set prefs and application // ===================================== $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step1.application.label'); $childElement->setAttribute('keep', $application_data == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('application')->item(0); $childElement = $xmlDoc->createElement('code'); $childElement->nodeValue = valid_xml_string($application_data['code']); $childRoot->appendChild($childElement); $childElement = $xmlDoc->createElement('label'); $childElement->nodeValue = valid_xml_string($application_data['label']); $childRoot->appendChild($childElement); // ============================================= // Dinamically set prefs and workexperience list // ============================================= $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step3List'); $childElement->setAttribute('keep', 'true'); $childElement->setAttribute('before', 'step4List'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // ----------------------------------- // Dinamically set each workexperience // ----------------------------------- $i = 0; if (!empty($workexperience_list)) { foreach ($workexperience_list as $workexperience) { $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); // Set workexperience period $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step3List[' . $i . '].period'); $childElement->setAttribute('format', $externaldateformat); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // Set workexperience position $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step3List[' . $i . '].position.label'); $childElement->setAttribute('keep', $workexperience->jobtitle == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // Set workexperience activites $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step3List[' . $i . '].activities'); $childElement->setAttribute('keep', $workexperience->positiondescription == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // Set workexperience company name $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step3List[' . $i . '].company.name'); $childElement->setAttribute('keep', $workexperience->employer == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // Set workexperience company address $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step3List[' . $i . '].company.addressInfo'); $childElement->setAttribute('keep', $workexperience->employeraddress == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // Set workexperience company sector - FALSE (because we do not have this data in Mahara)! $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step3List[' . $i . '].company.sector.label'); $childElement->setAttribute('keep', 'false'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // Dinamically set data for each workexperience $childRoot = $xmlDoc->getElementsByTagName('workexperiencelist')->item(0); $childElement = $xmlDoc->createElement('workexperience'); $childRoot->appendChild($childElement); $children = array('period', 'position', 'activities', 'employer'); foreach ($children as $child) { $childRoot = $xmlDoc->getElementsByTagName('workexperience')->item($i); $childElement = $xmlDoc->createElement($child); if ($child == 'activities') { $childElement->nodeValue = $showHTML ? replacehtmlchars(nl2br($workexperience->positiondescription)) : valid_xml_string($workexperience->positiondescription); } //$childElement->nodeValue = null; $childRoot->appendChild($childElement); } // workexperience - period $parentRoot = $xmlDoc->getElementsByTagName('workexperience')->item($i); $childRoot = $parentRoot->firstChild; $childElement = $xmlDoc->createElement('from'); $childRoot->appendChild($childElement); $grandchildRoot = $childRoot->firstChild; if ($workexperience->startdate != null) { $workstartdate = europass_date($workexperience->startdate, $internaldateformat); if ($workstartdate['year'] != '') { $grandchildElement = $xmlDoc->createElement('year'); $grandchildElement->nodeValue = $workstartdate['year']; $grandchildRoot->appendChild($grandchildElement); } if ($workstartdate['month'] != '--00') { $grandchildElement = $xmlDoc->createElement('month'); $grandchildElement->nodeValue = $workstartdate['month']; $grandchildRoot->appendChild($grandchildElement); } if ($workstartdate['day'] != '---00') { $grandchildElement = $xmlDoc->createElement('day'); $grandchildElement->nodeValue = $workstartdate['day']; $grandchildRoot->appendChild($grandchildElement); } } $childElement = $xmlDoc->createElement('to'); $childRoot->appendChild($childElement); $grandchildRoot = $childRoot->firstChild->nextSibling; if ($workexperience->enddate != null) { $workenddate = europass_date($workexperience->enddate, $internaldateformat); if ($workenddate['year'] != '') { $grandchildElement = $xmlDoc->createElement('year'); $grandchildElement->nodeValue = $workenddate['year']; $grandchildRoot->appendChild($grandchildElement); } if ($workenddate['month'] != '--00') { $grandchildElement = $xmlDoc->createElement('month'); $grandchildElement->nodeValue = $workenddate['month']; $grandchildRoot->appendChild($grandchildElement); } if ($workenddate['day'] != '---00') { $grandchildElement = $xmlDoc->createElement('day'); $grandchildElement->nodeValue = $workenddate['day']; $grandchildRoot->appendChild($grandchildElement); } } // position - label $childRoot = $xmlDoc->getElementsByTagName('position')->item($i); $childElement = $xmlDoc->createElement('label'); $childElement->nodeValue = valid_xml_string($workexperience->jobtitle); $childRoot->appendChild($childElement); // employer $childRoot = $xmlDoc->getElementsByTagName('employer')->item($i); $childElement = $xmlDoc->createElement('name'); $childElement->nodeValue = valid_xml_string($workexperience->employer); $childRoot->appendChild($childElement); $childElement = $xmlDoc->createElement('address'); $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('address')->item($i + 1); // $i+1 because, we already have one address element! $childElement = $xmlDoc->createElement('addressLine'); $childElement->nodeValue = valid_xml_string($workexperience->employeraddress); $childRoot->appendChild($childElement); // create empty node for company sector $childRoot = $xmlDoc->getElementsByTagName('employer')->item($i); $childElement = $xmlDoc->createElement('sector'); $childRoot->appendChild($childElement); $i++; } } // ======================================== // Dinamically set prefs and education list // ======================================== $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step4List'); $childElement->setAttribute('keep', 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // ------------------------------ // Dinamically set each education // ------------------------------ $j = 0; if (!empty($education_list)) { foreach ($education_list as $education) { $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); // Set education period $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step4List[' . $j . '].period'); $childElement->setAttribute('format', $externaldateformat); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // Set education title $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step4List[' . $j . '].title'); $childElement->setAttribute('keep', $education->qualname == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // Set education skills $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step4List[' . $j . '].skills'); $childElement->setAttribute('keep', $education->qualdescription == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // Set education institution name $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step4List[' . $j . '].educationalOrg.name'); $childElement->setAttribute('keep', $education->institution == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // Set education institution address $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step4List[' . $j . '].educationalOrg.addressInfo'); $childElement->setAttribute('keep', $education->institutionaddress == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // Set education level $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step4List[' . $j . '].level.label'); $childElement->setAttribute('keep', $education->qualtype == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // Dinamically set data for each education $childRoot = $xmlDoc->getElementsByTagName('educationlist')->item(0); $childElement = $xmlDoc->createElement('education'); $childRoot->appendChild($childElement); $children = array('period', 'title', 'skills', 'organisation', 'level', 'educationalfield'); foreach ($children as $child) { $childRoot = $xmlDoc->getElementsByTagName('education')->item($j); $childElement = $xmlDoc->createElement($child); if ($child == 'title') { $childElement->nodeValue = valid_xml_string($education->qualname); } if ($child == 'skills') { $childElement->nodeValue = valid_xml_string($education->qualdescription); } $childRoot->appendChild($childElement); } // education - period $parentRoot = $xmlDoc->getElementsByTagName('education')->item($j); $childRoot = $parentRoot->firstChild; $childElement = $xmlDoc->createElement('from'); $childRoot->appendChild($childElement); $grandchildRoot = $childRoot->firstChild; if ($education->startdate != null) { $learnstartdate = europass_date($education->startdate, $internaldateformat); if ($learnstartdate['year'] != '') { $grandchildElement = $xmlDoc->createElement('year'); $grandchildElement->nodeValue = $learnstartdate['year']; $grandchildRoot->appendChild($grandchildElement); } if ($learnstartdate['month'] != '--00') { $grandchildElement = $xmlDoc->createElement('month'); $grandchildElement->nodeValue = $learnstartdate['month']; $grandchildRoot->appendChild($grandchildElement); } if ($learnstartdate['day'] != '---00') { $grandchildElement = $xmlDoc->createElement('day'); $grandchildElement->nodeValue = $learnstartdate['day']; $grandchildRoot->appendChild($grandchildElement); } } $childElement = $xmlDoc->createElement('to'); $childRoot->appendChild($childElement); $grandchildRoot = $childRoot->firstChild->nextSibling; if ($education->enddate != null) { $learnenddate = europass_date($education->enddate, $internaldateformat); if ($learnenddate['year'] != '') { $grandchildElement = $xmlDoc->createElement('year'); $grandchildElement->nodeValue = $learnenddate['year']; $grandchildRoot->appendChild($grandchildElement); } if ($learnenddate['month'] != '--00') { $grandchildElement = $xmlDoc->createElement('month'); $grandchildElement->nodeValue = $learnenddate['month']; $grandchildRoot->appendChild($grandchildElement); } if ($learnenddate['day'] != '---00') { $grandchildElement = $xmlDoc->createElement('day'); $grandchildElement->nodeValue = $learnenddate['day']; $grandchildRoot->appendChild($grandchildElement); } } // organisation $childRoot = $xmlDoc->getElementsByTagName('organisation')->item($j); $childElement = $xmlDoc->createElement('name'); $childElement->nodeValue = valid_xml_string($education->institution); $childRoot->appendChild($childElement); $childElement = $xmlDoc->createElement('address'); $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('address')->item($j + $i + 1); // $j+$i+1 because, we already have $i+1 previous address elements! $childElement = $xmlDoc->createElement('addressLine'); $childElement->nodeValue = valid_xml_string($education->institutionaddress); $childRoot->appendChild($childElement); // level - label $childRoot = $xmlDoc->getElementsByTagName('level')->item($j); $childElement = $xmlDoc->createElement('label'); $childElement->nodeValue = valid_xml_string($education->qualtype); $childRoot->appendChild($childElement); // create empty node for organisation type $childRoot = $xmlDoc->getElementsByTagName('organisation')->item($j); $childElement = $xmlDoc->createElement('type'); $childRoot->appendChild($childElement); $j++; } } // ======================================= // Dinamically set prefs and language list // ======================================= // Dinamically add mother tongue(s) $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step5.motherLanguages'); $childElement->setAttribute('keep', count($mothertongue_list) > 0 ? 'true' : 'false'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('languagelist')->item(0); $childElement = $xmlDoc->createElement('language'); $childElement->setAttribute('xsi:type', 'europass:mother'); $childRoot->appendChild($childElement); $language_label = null; if (!empty($mothertongue_list)) { foreach ($mothertongue_list as $mothertongue) { $language_label .= get_string_from_file('language.' . $mothertongue->language, get_config('docroot') . 'artefact/europass/lang/' . get_lang_from_locale($locale) . '/artefact.europass.php') . ', '; } $language_label = substr($language_label, 0, -2); // omitt last comma and whitespace from $language_label $childRoot = $xmlDoc->getElementsByTagName('language')->item(0); if (count($mothertongue_list) == 1) { $childElement = $xmlDoc->createElement('code'); $childElement->nodeValue = $mothertongue->language; $childRoot->appendChild($childElement); } $childElement = $xmlDoc->createElement('label'); $childElement->nodeValue = $language_label; $childRoot->appendChild($childElement); } //Dinamically add foreign language(s) $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step5.foreignLanguageList'); $childElement->setAttribute('keep', count($otherlanguage_list) > 0 ? 'true' : 'false'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); $l = 0; if (!empty($otherlanguage_list)) { foreach ($otherlanguage_list as $otherlanguage) { $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step5.foreignLanguageList[' . $l . ']'); $childElement->setAttribute('keep', 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('languagelist')->item(0); $childElement = $xmlDoc->createElement('language'); $childElement->setAttribute('xsi:type', 'europass:foreign'); $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('language')->item($l + 1); // Because mothertongue has index 0... $childElement = $xmlDoc->createElement('code'); $childElement->nodeValue = $otherlanguage->language; $childRoot->appendChild($childElement); $childElement = $xmlDoc->createElement('label'); $childElement->nodeValue = get_string_from_file('language.' . $otherlanguage->language, get_config('docroot') . 'artefact/europass/lang/' . get_lang_from_locale($locale) . '/artefact.europass.php'); $childRoot->appendChild($childElement); $childElement = $xmlDoc->createElement('level'); $childRoot->appendChild($childElement); $grandchildRoot = $childRoot->lastChild; $levels = array('listening' => $otherlanguage->listening, 'reading' => $otherlanguage->reading, 'spokeninteraction' => $otherlanguage->spokeninteraction, 'spokenproduction' => $otherlanguage->spokenproduction, 'writing' => $otherlanguage->writing); foreach ($levels as $field => $value) { $grandchildElement = $xmlDoc->createElement($field); $grandchildElement->nodeValue = strtolower($value); $grandchildRoot->appendChild($grandchildElement); } $l++; } } // ==================================== // Dinamically set prefs and skill list // ==================================== $skills = array('social' => $skills['socialskill'], 'organisational' => $skills['organisationalskill'], 'technical' => $skills['technicalskill'], 'computer' => $skills['computerskill'], 'artistic' => $skills['artisticskill'], 'other' => $skills['otherskill']); foreach ($skills as $field => $value) { $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step6.' . $field . 'Skills'); $childElement->setAttribute('keep', $value == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('skilllist')->item(0); $childElement = $xmlDoc->createElement('skill'); $childElement->setAttribute('type', $field); $childElement->nodeValue = $showHTML ? replacehtmlchars($value) : valid_xml_string($value); $childRoot->appendChild($childElement); } // Dinamically set driving licence(s) $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step6.drivingLicences'); $childElement->setAttribute('keep', $drivinglicence == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('skilllist')->item(0); $childElement = $xmlDoc->createElement('structured-skill'); $childElement->setAttribute('xsi:type', 'europass:driving'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); if (!empty($drivinglicence)) { // Which driving licences are allowed. // NOTE: Driving licence AM is currently not allowed... but it will be in 2013. $allowedfields = array('A', 'A1', 'B', 'B1', 'BE', 'C', 'C1', 'CE', 'C1E', 'D', 'D1', 'DE', 'D1E'); foreach ($drivinglicence as $field => $value) { $childRoot = $xmlDoc->getElementsByTagName('structured-skill')->item(0); // Set drivinglicence if it exists... if ($value != null && in_array($field, $allowedfields)) { $childElement = $xmlDoc->createElement('drivinglicence'); $childElement->nodeValue = valid_xml_string($field); $childRoot->appendChild($childElement); } } } // =================================== // Dinamically set prefs and misc list // =================================== $misc = array('additional' => $misc['additionalinfo'], 'annexes' => $misc['annexes']); foreach ($misc as $field => $value) { $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'step7.' . $field . ($field == 'additional' ? 'Info' : '')); $childElement->setAttribute('keep', $value == null ? 'false' : 'true'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); $childRoot = $xmlDoc->getElementsByTagName('misclist')->item(0); $childElement = $xmlDoc->createElement('misc'); $childElement->setAttribute('type', $field); $childElement->nodeValue = $showHTML ? replacehtmlchars($value) : valid_xml_string($value); $childRoot->appendChild($childElement); } // =================================== // Dinamically set prefs (grid option) // =================================== $childRoot = $xmlDoc->getElementsByTagName('prefs')->item(0); $childElement = $xmlDoc->createElement('field'); $childElement->setAttribute('name', 'grid'); $childElement->setAttribute('keep', 'false'); $childElement->nodeValue = null; $childRoot->appendChild($childElement); // ================================ // Return dinamically generated XML // ================================ return $xmlDoc->saveXML(); }
function importeuropassform_submit(Pieform $form, $values) { global $SESSION, $USER; $userid = $USER->get('id'); $dbnow = db_format_timestamp(time()); // Get locked fields of the institution that the user belongs to... $lockedfields = array(); $records = get_records_sql_array(' SELECT ilpf.profilefield FROM {usr} u INNER JOIN {auth_instance} ai ON u.authinstance = ai.id JOIN {institution_locked_profile_field} ilpf ON ai.institution = ilpf.name WHERE u.id = ? ORDER BY ilpf.profilefield', array($userid)); if ($records) { foreach ($records as $record) { $lockedfields[] = $record->profilefield; } } $filename = $values['file']['tmp_name']; if ($filename != null) { $xmlDoc = new DOMDocument('1.0', 'UTF-8'); //$xmlDoc->load($filename); // Upper line not working, so try another approach... // SEE: http://php.net/manual/en/function.dom-import-simplexml.php //$simplexmlDoc = simplexml_load_file($filename); // not working... $contents = file_get_contents($filename); $simplexmlDoc = simplexml_load_string($contents); $xmlNode = dom_import_simplexml($simplexmlDoc); $xmlNode = $xmlDoc->importNode($xmlNode, true); $xmlDoc->appendChild($xmlNode); // ====================================== // Step 1: Import personal information... // ====================================== // These are only fields that can be locked! if (!empty($values['identification']) && is_object($xmlDoc->getElementsByTagName('identification')->item(0))) { $SESSION->add_info_msg(get_string('fieldnotimported', 'artefact.europass', 'firstname')); $SESSION->add_info_msg(get_string('fieldnotimported', 'artefact.europass', 'lastname')); // Import address info... if (!in_array('address', $lockedfields)) { // Check if object exists - it only exists in Europass CV XML if (is_object($xmlDoc->getElementsByTagName('addressLine')->item(0))) { $address = $xmlDoc->getElementsByTagName('addressLine')->item(0)->nodeValue; if ($address != null) { $id = get_field('artefact', 'id', 'artefacttype', 'address', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => $address, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'address', 'owner' => $userid, 'author' => $userid, 'title' => $address, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } } } else { $SESSION->add_info_msg(get_string('lockedfieldnotimported', 'artefact.europass', 'address')); } // Import municipality/city... if (!in_array('city', $lockedfields)) { // Check if object exists - it only exists in Europass CV XML if (is_object($xmlDoc->getElementsByTagName('municipality')->item(0))) { $municipality = $xmlDoc->getElementsByTagName('municipality')->item(0)->nodeValue; if ($municipality != null) { $id = get_field('artefact', 'id', 'artefacttype', 'city', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => $municipality, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'city', 'owner' => $userid, 'author' => $userid, 'title' => $municipality, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } } } else { $SESSION->add_info_msg(get_string('lockedfieldnotimported', 'artefact.europass', 'municipality')); } // Import (home) telephone number... if (!in_array('homenumber', $lockedfields)) { // Check if object exists - it only exists in Europass CV XML if (is_object($xmlDoc->getElementsByTagName('telephone')->item(0))) { $telephone = $xmlDoc->getElementsByTagName('telephone')->item(0)->nodeValue; if ($telephone != null) { $id = get_field('artefact', 'id', 'artefacttype', 'homenumber', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => $telephone, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'homenumber', 'owner' => $userid, 'author' => $userid, 'title' => $telephone, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } } } else { $SESSION->add_info_msg(get_string('lockedfieldnotimported', 'artefact.europass', 'telephone')); } // Import mobile number... if (!in_array('mobilenumber', $lockedfields)) { // Check if object exists - it only exists in Europass CV XML if (is_object($xmlDoc->getElementsByTagName('mobile')->item(0))) { $mobile = $xmlDoc->getElementsByTagName('mobile')->item(0)->nodeValue; if ($mobile != null) { $id = get_field('artefact', 'id', 'artefacttype', 'mobilenumber', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => $mobile, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'mobilenumber', 'owner' => $userid, 'author' => $userid, 'title' => $mobile, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } } } else { $SESSION->add_info_msg(get_string('lockedfieldnotimported', 'artefact.europass', 'mobile')); } // Import fax number... if (!in_array('faxnumber', $lockedfields)) { // Check if object exists - it only exists in Europass CV XML if (is_object($xmlDoc->getElementsByTagName('fax')->item(0))) { $fax = $xmlDoc->getElementsByTagName('fax')->item(0)->nodeValue; if ($fax != null) { $id = get_field('artefact', 'id', 'artefacttype', 'faxnumber', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => $fax, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'faxnumber', 'owner' => $userid, 'author' => $userid, 'title' => $fax, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } } } else { $SESSION->add_info_msg(get_string('lockedfieldnotimported', 'artefact.europass', 'fax')); } // Import country... if (!in_array('country', $lockedfields) && is_object($xmlDoc->getElementsByTagName('country')->item(0))) { $parent = $xmlDoc->getElementsByTagName('country')->item(0); $clone = $parent->cloneNode(true); // Check if object exists - it only exists in Europass CV XML if (is_object($clone->getElementsByTagName('code')->item(0))) { $country = strtolower($clone->getElementsByTagName('code')->item(0)->nodeValue); if ($country != null) { $id = get_field('artefact', 'id', 'artefacttype', 'country', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => $country, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'country', 'owner' => $userid, 'author' => $userid, 'title' => $country, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } } } else { $SESSION->add_info_msg(get_string('lockedfieldnotimported', 'artefact.europass', 'fax')); } // ------------------- // Import demographics // ------------------- // No locked fields from here on... $personalinfo = get_record('artefact', 'artefacttype', 'personalinformation', 'owner', $userid); if (!$personalinfo) { $artefactid = insert_record('artefact', array('artefacttype' => 'personalinformation', 'owner' => $userid, 'title' => get_string('identification', 'artefact.europass'), 'author' => $userid, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow), 'id', true); insert_record('artefact_resume_personal_information', array('artefact' => $artefactid)); } else { $artefactid = $personalinfo->id; } // Get birthdate... $birthdate = null; if (is_object($xmlDoc->getElementsByTagName('birthdate')->item(0))) { $birthdate = $xmlDoc->getElementsByTagName('birthdate')->item(0)->nodeValue; $birthdate = strftime('%Y-%m-%d %H:%M:%S', strtotime($birthdate)); } // Get gender... $gender = null; if (is_object($xmlDoc->getElementsByTagName('gender')->item(0))) { $gendervalue = $xmlDoc->getElementsByTagName('gender')->item(0)->nodeValue; switch ($gendervalue) { case 'M': $gender = 'male'; break; case 'F': $gender = 'female'; break; default: $gender = null; // When NA option is set. } } // Get nationality... $citizenship = null; if (is_object($xmlDoc->getElementsByTagName('nationality'))) { $nationalities = $xmlDoc->getElementsByTagName('nationality'); foreach ($nationalities as $nationality) { $citizenship .= $nationality->getElementsByTagName('label')->item(0)->nodeValue . ', '; } $citizenship = substr($citizenship, 0, -2); // Remove ', ' at the end of string. } // Import demographics... $demographics = array(); if ($birthdate != null) { $demographics = array_merge($demographics, array('dateofbirth' => $birthdate)); } if ($gender != null) { $demographics = array_merge($demographics, array('gender' => $gender)); } if ($citizenship != null) { $demographics = array_merge($demographics, array('citizenship' => $citizenship)); } $id = get_field('artefact_resume_personal_information', 'artefact', 'artefact', $artefactid); if ($id != false) { if (!empty($demographics)) { update_record('artefact_resume_personal_information', $demographics, array('artefact' => $artefactid)); update_record('artefact', array('mtime' => $dbnow, 'atime' => $dbnow), array('id' => $artefactid)); } } else { insert_record('artefact_resume_personal_information', array_merge($demographics, array('artefact' => $artefactid))); update_record('artefact', array('mtime' => $dbnow, 'atime' => $dbnow), array('id' => $artefactid)); } } // ============================= // Step 2: Import application... // ============================= // Check if object exists - it only exists in Europass CV XML if (!empty($values['application']) && is_object($xmlDoc->getElementsByTagName('application')->item(0))) { // Import application code... $parent = $xmlDoc->getElementsByTagName('application')->item(0); $clone = $parent->cloneNode(true); if (is_object($clone->getElementsByTagName('code')->item(0))) { $application = $clone->getElementsByTagName('code')->item(0)->nodeValue; if ($application != null) { $id = get_field('artefact', 'id', 'artefacttype', 'application', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => get_string('application', 'artefact.europass'), 'description' => 'i' . $application, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'application', 'owner' => $userid, 'author' => $userid, 'title' => get_string('application', 'artefact.europass'), 'description' => 'i' . $application, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } } } // ================================= // Step 3: Import work experience... // ================================= // Check if object exists - it only exists in Europass CV XML if (!empty($values['workexperience']) && is_object($xmlDoc->getElementsByTagName('workexperiencelist')->item(0))) { $employment = get_record('artefact', 'artefacttype', 'employmenthistory', 'owner', $userid); if (!$employment) { $artefactid = insert_record('artefact', array('artefacttype' => 'employmenthistory', 'owner' => $userid, 'title' => get_string('employmenthistory', 'artefact.resume'), 'author' => $userid, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow), 'id', true); } else { $artefactid = $employment->id; } // ----------------------- // Import work experiences // ----------------------- $workexperiences = $xmlDoc->getElementsByTagName('workexperience'); $getgender = $xmlDoc->getElementsByTagName('gender')->item(0)->nodeValue; switch ($getgender) { case 'F': $gender = 'female'; break; case 'M': $gender = 'male'; break; default: $gender = null; } foreach ($workexperiences as $workexperience) { // Get startdate... $startdate = null; if ($workexperience->getElementsByTagName('from')->item(0)->hasChildNodes()) { $parent = $workexperience->getElementsByTagName('from')->item(0); $clone = $parent->cloneNode(true); $start = array('year' => 0, 'month' => 0, 'day' => 0); // Get year, if it exists... if (is_object($clone->getElementsByTagName('year')->item(0))) { $start['year'] = trim($clone->getElementsByTagName('year')->item(0)->nodeValue); } // Get month, if it exists... if (is_object($clone->getElementsByTagName('month')->item(0))) { $start['month'] = ltrim(trim($clone->getElementsByTagName('month')->item(0)->nodeValue), '-'); } // Get day, if it exists... if (is_object($clone->getElementsByTagName('day')->item(0))) { $start['day'] = ltrim(trim($clone->getElementsByTagName('day')->item(0)->nodeValue), '-'); } $startdate = mahara_date($start, $values['internaldate']); } // Get enddate... $enddate = null; if ($workexperience->getElementsByTagName('to')->item(0)->hasChildNodes()) { $parent = $workexperience->getElementsByTagName('to')->item(0); $clone = $parent->cloneNode(true); $end = array('year' => 0, 'month' => 0, 'day' => 0); // Get year, if it exists... if (is_object($clone->getElementsByTagName('year')->item(0))) { $end['year'] = trim($clone->getElementsByTagName('year')->item(0)->nodeValue); } // Get month, if it exists... if (is_object($clone->getElementsByTagName('month')->item(0))) { $end['month'] = ltrim(trim($clone->getElementsByTagName('month')->item(0)->nodeValue), '-'); } // Get day, if it exists... if (is_object($clone->getElementsByTagName('day')->item(0))) { $end['day'] = ltrim(trim($clone->getElementsByTagName('day')->item(0)->nodeValue), '-'); } $enddate = mahara_date($end, $values['internaldate']); } // Get employer (name & address)... $employer = null; $employeraddress = null; if ($workexperience->getElementsByTagName('employer')->item(0)->hasChildNodes()) { $parent = $workexperience->getElementsByTagName('employer')->item(0); $clone = $parent->cloneNode(true); // Get employer's name... if (is_object($clone->getElementsByTagName('name')->item(0))) { $employer = $clone->getElementsByTagName('name')->item(0)->nodeValue; } // Get employer's address... if (is_object($clone->getElementsByTagName('addressLine')->item(0))) { $employeraddress = $clone->getElementsByTagName('addressLine')->item(0)->nodeValue; } if (is_object($clone->getElementsByTagName('postalCode')->item(0))) { $employeraddress .= ', ' . $clone->getElementsByTagName('postalCode')->item(0)->nodeValue; } if (is_object($clone->getElementsByTagName('municipality')->item(0))) { $employeraddress .= ' ' . $clone->getElementsByTagName('municipality')->item(0)->nodeValue; } if ($clone->getElementsByTagName('country')->item(0)->hasChildNodes()) { $country = $clone->getElementsByTagName('country')->item(0)->cloneNode(true); if (is_object($country->getElementsByTagName('code')->item(0))) { $countrycode = strtolower($country->getElementsByTagName('code')->item(0)->nodeValue); $countryname = get_string_from_file('country.' . $countrycode, get_config('docroot') . 'artefact/europass/lang/' . get_config('lang') . '/artefact.europass.php'); $employeraddress .= ', ' . $countryname; } else { if (is_object($country->getElementsByTagName('label')->item(0))) { $employeraddress .= ', ' . $country->getElementsByTagName('label')->item(0)->nodeValue; } } } } // Get jobtitle... $jobtitle = null; if ($workexperience->getElementsByTagName('position')->item(0)->hasChildNodes()) { $parent = $workexperience->getElementsByTagName('position')->item(0); $clone = $parent->cloneNode(true); // Get position code if it exists, else get label if (is_object($clone->getElementsByTagName('code')->item(0))) { $code = 'i' . $clone->getElementsByTagName('code')->item(0)->nodeValue; $occupation = get_occupation($code, set_default_locale(get_config('lang')), $gender); $jobtitle = $occupation['label']; } elseif (is_object($clone->getElementsByTagName('label')->item(0))) { $jobtitle = $clone->getElementsByTagName('label')->item(0)->nodeValue; } } // Get positiondescription... $positiondescription = null; if (is_object($workexperience->getElementsByTagName('activities')->item(0))) { $positiondescription = $workexperience->getElementsByTagName('activities')->item(0)->nodeValue; } // Import employment history... $employmentdata = array('artefact' => $artefactid, 'startdate' => $startdate, 'employer' => $employer); if ($enddate != null) { $employmentdata = array_merge($employmentdata, array('enddate' => $enddate)); } if ($employeraddress != null) { $employmentdata = array_merge($employmentdata, array('employeraddress' => $employeraddress)); } if ($jobtitle != null) { $employmentdata = array_merge($employmentdata, array('jobtitle' => $jobtitle)); } if ($positiondescription != null) { $employmentdata = array_merge($employmentdata, array('positiondescription' => $positiondescription)); } $id = get_field('artefact_resume_employmenthistory', 'id', 'artefact', $artefactid, 'startdate', $startdate, 'employer', $employer); if ($id != false) { update_record('artefact_resume_employmenthistory', $employmentdata, array('id' => $id)); } else { insert_record('artefact_resume_employmenthistory', $employmentdata); } } update_record('artefact', array('mtime' => $dbnow, 'atime' => $dbnow), array('id' => $artefactid)); } // =========================== // Step 4: Import education... // =========================== // Check if object exists - it only exists in Europass CV XML if (!empty($values['education']) && is_object($xmlDoc->getElementsByTagName('educationlist')->item(0))) { $education = get_record('artefact', 'artefacttype', 'educationhistory', 'owner', $userid); if (!$education) { $artefactid = insert_record('artefact', array('artefacttype' => 'educationhistory', 'owner' => $userid, 'title' => get_string('educationhistory', 'artefact.resume'), 'author' => $userid, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow), 'id', true); } else { $artefactid = $education->id; } // ---------------- // Import education // ---------------- $educationlist = $xmlDoc->getElementsByTagName('education'); foreach ($educationlist as $education) { // Get startdate... $startdate = null; if ($education->getElementsByTagName('from')->item(0)->hasChildNodes()) { $parent = $education->getElementsByTagName('from')->item(0); $clone = $parent->cloneNode(true); $start = array('year' => 0, 'month' => 0, 'day' => 0); // Get year, if it exists... if (is_object($clone->getElementsByTagName('year')->item(0))) { $start['year'] = trim($clone->getElementsByTagName('year')->item(0)->nodeValue); } // Get month, if it exists... if (is_object($clone->getElementsByTagName('month')->item(0))) { $start['month'] = ltrim(trim($clone->getElementsByTagName('month')->item(0)->nodeValue), '-'); } // Get day, if it exists... if (is_object($clone->getElementsByTagName('day')->item(0))) { $start['day'] = ltrim(trim($clone->getElementsByTagName('day')->item(0)->nodeValue), '-'); } $startdate = mahara_date($start, $values['internaldate']); } // Get enddate... $enddate = null; if ($education->getElementsByTagName('to')->item(0)->hasChildNodes()) { $parent = $education->getElementsByTagName('to')->item(0); $clone = $parent->cloneNode(true); $end = array('year' => 0, 'month' => 0, 'day' => 0); // Get year, if it exists... if (is_object($clone->getElementsByTagName('year')->item(0))) { $end['year'] = trim($clone->getElementsByTagName('year')->item(0)->nodeValue); } // Get month, if it exists... if (is_object($clone->getElementsByTagName('month')->item(0))) { $end['month'] = ltrim(trim($clone->getElementsByTagName('month')->item(0)->nodeValue), '-'); } // Get day, if it exists... if (is_object($clone->getElementsByTagName('day')->item(0))) { $end['day'] = ltrim(trim($clone->getElementsByTagName('day')->item(0)->nodeValue), '-'); } $enddate = mahara_date($end, $values['internaldate']); } // Get qualification type... $qualtype = null; if ($education->getElementsByTagName('level')->item(0)->hasChildNodes()) { $parent = $education->getElementsByTagName('level')->item(0); $clone = $parent->cloneNode(true); // Get employer's name... if (is_object($clone->getElementsByTagName('label')->item(0))) { $qualtype = $clone->getElementsByTagName('label')->item(0)->nodeValue; } } // Get qualification name... $qualname = null; if (is_object($education->getElementsByTagName('title')->item(0))) { $qualname = $education->getElementsByTagName('title')->item(0)->nodeValue; } // Get qualification description... $qualdescription = null; if (is_object($education->getElementsByTagName('skills')->item(0))) { $qualdescription = $education->getElementsByTagName('skills')->item(0)->nodeValue; } // Get insitution (name & address)... $institution = null; $institutionaddress = null; if ($education->getElementsByTagName('organisation')->item(0)->hasChildNodes()) { $parent = $education->getElementsByTagName('organisation')->item(0); $clone = $parent->cloneNode(true); // Get institution's name... if (is_object($clone->getElementsByTagName('name')->item(0))) { $institution = $clone->getElementsByTagName('name')->item(0)->nodeValue; } // Get institution's address... if (is_object($clone->getElementsByTagName('addressLine')->item(0))) { $institutionaddress = $clone->getElementsByTagName('addressLine')->item(0)->nodeValue; } if (is_object($clone->getElementsByTagName('postalCode')->item(0))) { $institutionaddress .= ', ' . $clone->getElementsByTagName('postalCode')->item(0)->nodeValue; } if (is_object($clone->getElementsByTagName('municipality')->item(0))) { $institutionaddress .= ' ' . $clone->getElementsByTagName('municipality')->item(0)->nodeValue; } if ($clone->getElementsByTagName('country')->item(0)->hasChildNodes()) { $country = $clone->getElementsByTagName('country')->item(0)->cloneNode(true); if (is_object($country->getElementsByTagName('code')->item(0))) { $countrycode = strtolower($country->getElementsByTagName('code')->item(0)->nodeValue); $countryname = get_string_from_file('country.' . $countrycode, get_config('docroot') . 'artefact/europass/lang/' . get_config('lang') . '/artefact.europass.php'); $institutionaddress .= ', ' . $countryname; } else { if (is_object($country->getElementsByTagName('label')->item(0))) { $institutionaddress .= ', ' . $country->getElementsByTagName('label')->item(0)->nodeValue; } } } } // Import education history... $educationdata = array('artefact' => $artefactid, 'startdate' => $startdate, 'institution' => $institution); if ($enddate != null) { $educationdata = array_merge($educationdata, array('enddate' => $enddate)); } if ($qualtype != null) { $educationdata = array_merge($educationdata, array('qualtype' => $qualtype)); } if ($qualname != null) { $educationdata = array_merge($educationdata, array('qualname' => $qualname)); } if ($institutionaddress != null) { $educationdata = array_merge($educationdata, array('institutionaddress' => $institutionaddress)); } if ($qualdescription != null) { $educationdata = array_merge($educationdata, array('qualdescription' => $qualdescription)); } $id = get_field('artefact_resume_educationhistory', 'id', 'artefact', $artefactid, 'startdate', $startdate, 'institution', $institution); if ($id != false) { update_record('artefact_resume_educationhistory', $educationdata, array('id' => $id)); } else { insert_record('artefact_resume_educationhistory', $educationdata); } } update_record('artefact', array('mtime' => $dbnow, 'atime' => $dbnow), array('id' => $artefactid)); } // =========================== // Step 5: Import languages... // =========================== if (!empty($values['languages']) && is_object($xmlDoc->getElementsByTagName('languagelist')->item(0))) { $mothertongue = get_record('artefact', 'artefacttype', 'mothertongue', 'owner', $userid); if (!$mothertongue) { $mothertongueid = insert_record('artefact', array('artefacttype' => 'mothertongue', 'owner' => $userid, 'title' => get_string('mothertongue', 'artefact.europass'), 'author' => $userid, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow), 'id', true); } else { $mothertongueid = $mothertongue->id; } $otherlanguage = get_record('artefact', 'artefacttype', 'otherlanguage', 'owner', $userid); if (!$otherlanguage) { $otherlanguageid = insert_record('artefact', array('artefacttype' => 'otherlanguage', 'owner' => $userid, 'title' => get_string('otherlanguage', 'artefact.europass'), 'author' => $userid, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow), 'id', true); } else { $otherlanguageid = $otherlanguage->id; } $parent = $xmlDoc->getElementsByTagName('languagelist')->item(0); $clone = $parent->cloneNode(true); $children = $clone->getElementsByTagName('language'); foreach ($children as $child) { // -------------------- // Import mother tongue // -------------------- if ($child->getAttribute('xsi:type') == 'europass:mother' && $child->hasChildNodes()) { if (is_object($child->getElementsByTagName('code')->item(0))) { $languagecode = strtolower($child->getElementsByTagName('code')->item(0)->nodeValue); $id = get_field('artefact_europass_mothertongue', 'id', 'artefact', $mothertongueid, 'language', $languagecode); if ($id != false) { update_record('artefact_europass_mothertongue', array('artefact' => $mothertongueid, 'language' => $languagecode), array('id' => $id)); } else { insert_record('artefact_europass_mothertongue', array('artefact' => $mothertongueid, 'language' => $languagecode)); } update_record('artefact', array('mtime' => $dbnow, 'atime' => $dbnow), array('id' => $mothertongueid)); } else { if (is_object($child->getElementsByTagName('label')->item(0))) { $SESSION->add_info_msg(get_string('languagecodemissing', 'artefact.europass', 'mothertongue')); } } } // -------------------------- // Import foreign language(s) // -------------------------- if ($child->getAttribute('xsi:type') == 'europass:foreign' && $child->hasChildNodes()) { $language = $child->cloneNode(true); if (is_object($language->getElementsByTagName('code')->item(0))) { $languagecode = strtolower($language->getElementsByTagName('code')->item(0)->nodeValue); $level = array(); $level['listening'] = strtoupper($language->getElementsByTagName('listening')->item(0)->nodeValue); $level['reading'] = strtoupper($language->getElementsByTagName('reading')->item(0)->nodeValue); $level['spokeninteraction'] = strtoupper($language->getElementsByTagName('spokeninteraction')->item(0)->nodeValue); $level['spokenproduction'] = strtoupper($language->getElementsByTagName('spokenproduction')->item(0)->nodeValue); $level['writing'] = strtoupper($language->getElementsByTagName('writing')->item(0)->nodeValue); $languagedata = array('artefact' => $otherlanguageid, 'language' => $languagecode, 'listening' => $level['listening'], 'reading' => $level['reading'], 'spokeninteraction' => $level['spokeninteraction'], 'spokenproduction' => $level['spokenproduction'], 'writing' => $level['writing']); $languageid = get_field('artefact_europass_otherlanguage', 'id', 'artefact', $otherlanguageid, 'language', $languagecode); if ($languageid != false) { update_record('artefact_europass_otherlanguage', $languagedata, array('id' => $languageid)); } else { $languageid = insert_record('artefact_europass_otherlanguage', $languagedata, 'id', true); } // Import language diploma(s) // -------------------------- $diplomalist = $language->getElementsByTagName('diploma'); foreach ($diplomalist as $diploma) { // Get certificate (title)... $certificate = null; if (is_object($diploma->getElementsByTagName('title')->item(0))) { $certificate = $diploma->getElementsByTagName('title')->item(0)->nodeValue; } // Get awarding body... $awardingbody = null; if (is_object($diploma->getElementsByTagName('awardingBody')->item(0))) { $awardingbody = $diploma->getElementsByTagName('awardingBody')->item(0)->nodeValue; } // Get certificate date... $certificatedate = null; if ($diploma->getElementsByTagName('date')->item(0)->hasChildNodes()) { $parent = $diploma->getElementsByTagName('date')->item(0); $clone = $parent->cloneNode(true); $certdate = array('year' => 0, 'month' => 0, 'day' => 0); // Get year, if it exists... if (is_object($clone->getElementsByTagName('year')->item(0))) { $certdate['year'] = trim($clone->getElementsByTagName('year')->item(0)->nodeValue); } // Get month, if it exists... if (is_object($clone->getElementsByTagName('month')->item(0))) { $certdate['month'] = ltrim(trim($clone->getElementsByTagName('month')->item(0)->nodeValue), '-'); } // Get day, if it exists... if (is_object($clone->getElementsByTagName('day')->item(0))) { $certdate['day'] = ltrim(trim($clone->getElementsByTagName('day')->item(0)->nodeValue), '-'); } $certificatedate = mahara_date($certdate, $values['internaldate']); } // Get european level... $europeanlevel = null; if (is_object($diploma->getElementsByTagName('level')->item(0))) { $europeanlevel = strtoupper($diploma->getElementsByTagName('level')->item(0)->nodeValue); } // Import language diploma... $artefact = get_field('artefact', 'id', 'artefacttype', 'languagediploma', 'owner', $userid); if (!$artefact) { $artefact = insert_record('artefact', array('artefacttype' => 'languagediploma', 'owner' => $userid, 'title' => get_string('languagediploma', 'artefact.europass'), 'author' => $userid, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow), 'id', true); } $diplomadata = array('artefact' => $artefact, 'languageid' => $languageid, 'certificate' => $certificate, 'awardingbody' => $awardingbody, 'certificatedate' => $certificatedate); if ($europeanlevel != null) { $diplomadata = array_merge($diplomadata, array('europeanlevel' => $europeanlevel)); } $id = get_field('artefact_europass_languagediploma', 'id', 'artefact', $otherlanguageid, 'languageid', $languageid); if ($id != false) { update_record('artefact_europass_languagediploma', $diplomadata, array('id' => $id)); } else { insert_record('artefact_europass_languagediploma', $diplomadata); } } // Import linguistic experience(s) // ------------------------------- $experiencelist = $language->getElementsByTagName('experience'); foreach ($experiencelist as $experience) { // Get startdate... $startdate = null; if ($experience->getElementsByTagName('from')->item(0)->hasChildNodes()) { $parent = $experience->getElementsByTagName('from')->item(0); $clone = $parent->cloneNode(true); $start = array('year' => 0, 'month' => 0, 'day' => 0); // Get year, if it exists... if (is_object($clone->getElementsByTagName('year')->item(0))) { $start['year'] = trim($clone->getElementsByTagName('year')->item(0)->nodeValue); } // Get month, if it exists... if (is_object($clone->getElementsByTagName('month')->item(0))) { $start['month'] = ltrim(trim($clone->getElementsByTagName('month')->item(0)->nodeValue), '-'); } // Get day, if it exists... if (is_object($clone->getElementsByTagName('day')->item(0))) { $start['day'] = ltrim(trim($clone->getElementsByTagName('day')->item(0)->nodeValue), '-'); } $startdate = mahara_date($start, $values['internaldate']); } // Get enddate... $enddate = null; if ($experience->getElementsByTagName('to')->item(0)->hasChildNodes()) { $parent = $experience->getElementsByTagName('to')->item(0); $clone = $parent->cloneNode(true); $end = array('year' => 0, 'month' => 0, 'day' => 0); // Get year, if it exists... if (is_object($clone->getElementsByTagName('year')->item(0))) { $end['year'] = trim($clone->getElementsByTagName('year')->item(0)->nodeValue); } // Get month, if it exists... if (is_object($clone->getElementsByTagName('month')->item(0))) { $end['month'] = ltrim(trim($clone->getElementsByTagName('month')->item(0)->nodeValue), '-'); } // Get day, if it exists... if (is_object($clone->getElementsByTagName('day')->item(0))) { $end['day'] = ltrim(trim($clone->getElementsByTagName('day')->item(0)->nodeValue), '-'); } $enddate = mahara_date($end, $values['internaldate']); } // Get qualification name... $description = null; if (is_object($experience->getElementsByTagName('description')->item(0))) { $description = $experience->getElementsByTagName('description')->item(0)->nodeValue; } // Import linguistic experience... $artefact = get_field('artefact', 'id', 'artefacttype', 'languageexperience', 'owner', $userid); if (!$artefact) { $artefact = insert_record('artefact', array('artefacttype' => 'languageexperience', 'owner' => $userid, 'title' => get_string('languageexperience', 'artefact.europass'), 'author' => $userid, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow), 'id', true); } $experiencedata = array('artefact' => $artefact, 'languageid' => $languageid, 'startdate' => $startdate, 'description' => $description); if ($enddate != null) { $experiencedata = array_merge($experiencedata, array('enddate' => $enddate)); } $id = get_field('artefact_europass_languageexperience', 'id', 'artefact', $otherlanguageid, 'languageid', $languageid); if ($id != false) { update_record('artefact_europass_languageexperience', $experiencedata, array('id' => $id)); } else { insert_record('artefact_europass_languageexperience', $experiencedata); } } update_record('artefact', array('mtime' => $dbnow, 'atime' => $dbnow), array('id' => $otherlanguageid)); } else { if (is_object($child->getElementsByTagName('label')->item(0))) { $SESSION->add_info_msg(get_string('languagecodemissing', 'artefact.europass', 'otherlanguage')); } } } } } // ======================================== // Step 6: Import skills and competences... // ======================================== // Check if object exists - it only exists in Europass CV XML if (!empty($values['skills']) && is_object($xmlDoc->getElementsByTagName('skilllist')->item(0))) { $parent = $xmlDoc->getElementsByTagName('skilllist')->item(0); $clone = $parent->cloneNode(true); $children = $clone->getElementsByTagName('skill'); foreach ($children as $child) { // Import social skills... if ($child->getAttribute('type') == 'social' && $child->nodeValue != null) { $id = get_field('artefact', 'id', 'artefacttype', 'socialskill', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => get_string('socialskill', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'socialskill', 'owner' => $userid, 'author' => $userid, 'title' => get_string('socialskill', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } // Import organisatonal skills... if ($child->getAttribute('type') == 'organisational' && $child->nodeValue != null) { $id = get_field('artefact', 'id', 'artefacttype', 'organisationalskill', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => get_string('organisationalskill', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'organisationalskill', 'owner' => $userid, 'author' => $userid, 'title' => get_string('organisationalskill', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } // Import technical skills... if ($child->getAttribute('type') == 'technical' && $child->nodeValue != null) { $id = get_field('artefact', 'id', 'artefacttype', 'technicalskill', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => get_string('technicalskill', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'technicalskill', 'owner' => $userid, 'author' => $userid, 'title' => get_string('technicalskill', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } // Import computer skills... if ($child->getAttribute('type') == 'computer' && $child->nodeValue != null) { $id = get_field('artefact', 'id', 'artefacttype', 'computerskill', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => get_string('computerskill', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'computerskill', 'owner' => $userid, 'author' => $userid, 'title' => get_string('computerskill', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } // Import artistic skills... if ($child->getAttribute('type') == 'artistic' && $child->nodeValue != null) { $id = get_field('artefact', 'id', 'artefacttype', 'artisticskill', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => get_string('artisticskill', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'artisticskill', 'owner' => $userid, 'author' => $userid, 'title' => get_string('artisticskill', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } // Import other skills... if ($child->getAttribute('type') == 'other' && $child->nodeValue != null) { $id = get_field('artefact', 'id', 'artefacttype', 'otherskill', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => get_string('otherskill', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'otherskill', 'owner' => $userid, 'author' => $userid, 'title' => get_string('otherskill', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } } // Import driving licences... $drivinglicence = array('AM' => false, 'A1' => false, 'A' => false, 'B' => false, 'BE' => false, 'B1' => false, 'C' => false, 'CE' => false, 'C1' => false, 'C1E' => false, 'D' => false, 'DE' => false, 'D1' => false, 'D1E' => false); $licences = $clone->getElementsByTagName('drivinglicence'); foreach ($licences as $licence) { $drivinglicence[$licence->nodeValue] = true; } $drivinglicence = serialize($drivinglicence); $id = get_field('artefact', 'id', 'artefacttype', 'drivinglicence', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => get_string('drivinglicence', 'artefact.europass'), 'description' => $drivinglicence, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'drivinglicence', 'owner' => $userid, 'author' => $userid, 'title' => get_string('drivinglicence', 'artefact.europass'), 'description' => $drivinglicence, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } // ======================================== // Step 7: Import additional information... // ======================================== // Check if object exists - it only exists in Europass CV XML if (!empty($values['additionalinfo']) && is_object($xmlDoc->getElementsByTagName('misclist')->item(0))) { $parent = $xmlDoc->getElementsByTagName('misclist')->item(0); $clone = $parent->cloneNode(true); $children = $clone->getElementsByTagName('misc'); foreach ($children as $child) { // Import additional information... if ($child->getAttribute('type') == 'additional' && $child->nodeValue != null) { $id = get_field('artefact', 'id', 'artefacttype', 'additionalinfo', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => get_string('additionalinfo', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'additionalinfo', 'owner' => $userid, 'author' => $userid, 'title' => get_string('additionalinfo', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } // Import annexes... if ($child->getAttribute('type') == 'annexes' && $child->nodeValue != null) { $id = get_field('artefact', 'id', 'artefacttype', 'annexes', 'owner', $userid); if ($id != false) { update_record('artefact', array('title' => get_string('annexes', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow), array('id' => $id)); } else { insert_record('artefact', array('artefacttype' => 'annexes', 'owner' => $userid, 'author' => $userid, 'title' => get_string('annexes', 'artefact.europass'), 'description' => $child->nodeValue, 'mtime' => $dbnow, 'atime' => $dbnow, 'ctime' => $dbnow)); } } } } } $SESSION->add_ok_msg(get_string('europassimportexecuted', 'artefact.europass')); redirect('/artefact/europass/'); }