From: Stéphane Jacob Date: Fri, 15 Oct 2010 11:22:51 +0000 (+0200) Subject: Merge X-Git-Tag: xorg/1.0.1~47 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=6b9e01357fa94ad2e5f830047bbcb8b945b683c1;p=platal.git Merge Signed-off-by: Stéphane Jacob --- diff --git a/upgrade/1.0.1/README b/upgrade/1.0.1/README index 80846c3..1dd917e 100644 --- a/upgrade/1.0.1/README +++ b/upgrade/1.0.1/README @@ -1 +1,2 @@ 99_jobs.sql must be run after php scripts. +merge.php must not be run during the release. This script is only for merge purpose. diff --git a/upgrade/1.0.1/merge.php b/upgrade/1.0.1/merge.php new file mode 100755 index 0000000..80286dd --- /dev/null +++ b/upgrade/1.0.1/merge.php @@ -0,0 +1,293 @@ +#!/usr/bin/php5 +debug = 0; // Do not store backtraces. + +/* Drops temporary tables and views used to checked if the merge was possible. */ +XDB::rawExecute('DROP VIEW IF EXISTS fusionax_xorg_anciens'); +XDB::rawExecute('DROP VIEW IF EXISTS fusionax_deceased'); +XDB::rawExecute('DROP VIEW IF EXISTS fusionax_promo'); +XDB::rawExecute('DROP TABLE IF EXISTS fusionax_import'); + +/* Includes entreprises we do not have into profile_job_enum. */ +XDB::rawExecute('INSERT INTO profile_job_enum (name, acronym, AX_code) + SELECT f.Raison_sociale, f.Sigle, f.Code_etab + FROM fusionax_entreprises AS f + WHERE NOT EXISTS (SELECT * + FROM profile_job_enum AS j + WHERE j.name = f.Raison_sociale OR j.name = f.Sigle OR f.Code_etab = j.AX_code)'); +XDB::rawExecute('DROP TABLE IF EXISTS fusionax_entreprises'); + +/* Includes jobs we do not have into profile_job_enum. */ +$jobsAX = XDB::rawIterator('SELECT p.pid, pje.name, pje.id, IF(f.Annuaire = 1, \'ax\', \'private\') AS pub, p.ax_id, + IF(f.Raison_sociale, CONCAT(f.Raison_sociale, CONCAT(\' \', f.Libelle_fonctio), f.Libelle_fonctio) AS description + FROM fusionax_activities AS f + INNER JOIN profile_job_enum AS pje ON (pje.AX_code = f.Code_etab) + INNER JOIN profiles AS p ON (f.id_ancien = p.ax_id) + ORDER BY p.pid'); +$jobsXorg = XDB::rawIterator('SELECT p.pid, pj.id, pje.name, pje.acronym + FROM profile_job AS pj + INNER JOIN profile_job_enum AS pje ON (pje.id = pj.jobid) + INNER JOIN profiles AS p ON (p.pid = pj.pid) + INNER JOIN fusionax_activities AS f ON (f.id_ancien = p.ax_id) + ORDER BY p.pid, pj.id'); +$jobXorg = $jobsXorg->next(); +while ($jobAX = $jobsAX->next()) { + $already = false; + $id = 0; + while ($jobXorg['pid'] == $jobAX['pid']) { + if ($jobXorg['name'] == $jobAX['name'] || $jobXorg['acronym'] == $jobAX['name']) { + $jobXorg = $jobsXorg->next(); + $jobAX = $jobsAX->next(); + $already = true; + } + list($pid, $id, $name, $acronym) = $jobXorg; + } + if (!$already) { + ++$id; + XDB::execute('INSERT INTO profile_job (id, pid, jobid, description, pub) + VALUES {?}, {?}, {?}, {?}', + $id, $jobsAX['pid'], $jobsAX['id'], $jobsAX['description'], $jobsAX['pub']); + $res = XDB::query("SELECT CONCAT(Ligne1, IF(Ligne2 != '', CONCAT('\n', Ligne2), ''), + IF(Ligne3 != '', CONCAT('\n', Ligne3), ''), + '\n', IF(code_postal, code_postal, zip_cedex), ' ', zip_cedex) AS address, + tel, fax + FROM fusionax_adresses + WHERE Type_adr = 'E' and id_ancien = {?}", $jobsAX['ax_id']); + $res = $res->fetchOneRow(); + $phone = new Phone(array('display' => $res['tel'], 'link_id' => $id, 'pid' => $jobsAX['pid'], 'type' => 'fixed', 'link_type' => Phone::LINK_JOB, 'pub' => $jobsAX['pub'])); + $fax = new Phone(array('display' => $res['fax'], 'link_id' => $id, 'pid' => $jobsAX['pid'], 'type' => 'fax', 'link_type' => Phone::LINK_JOB, 'pub' => $jobsAX['pub'])); + $address = new Address(array('type' => Address:LINK_JOB, 'text' => $res['address'], 'pid' => $jobsAX['pid'], 'id' => $id)); + $phone->save(); + $fax->save(); + $address->save(); + if ($id > 1) { + XDB::execute("UPDATE profile_merge_issues + SET issues = IF(issues, CONCAT(issues, ',', 'job'), 'job') + WHERE pid = {?}", $jobsAX['pid']); + } + } +} +XDB::rawExecute('DROP TABLE IF EXISTS fusionax_activities'); +XDB::rawExecute('DELETE FROM fusionax_adresses WHERE Type_adr = \'E\''); + +/* Retrieves information from fusionax_anciens: promo, nationality, corps, email, phone, deathdate */ +/* Updates uncertain promotions, but when we are we are right. */ +XDB::rawExecute("UPDATE profile_merge_issues + SET issues = IF(issues, CONCAT(issues, ',', 'promo'), 'promo'), entry_year_ax = f.promotion_etude + WHERE EXISTS (SELECT * + FROM profiles AS p + INNER JOIN profile_display AS pd ON (p.pid = pd.pid) + INNER JOIN profile_education AS pe ON (p.pid = pe.pid) + INNER JOIN fusionax_anciens AS f ON (p.ax_id = f.ax_id) + WHERE pd.promo != CONCAT('X', f.promotion_etude) + AND !(f.promotion_etude = pe.entry_year + 1 AND pe.grad_year = pe.entry_year + 4)) + AND pid NOT IN (18399,21099,40616)"); + +/* Updates nationality. */ +XDB::rawExecute('ALTER TABLE geoloc_pays ADD INDEX (license_plate);'); +XDB::rawExecute('UPDATE profiles AS p + INNER JOIN fusionax_anciens AS f ON (p.ax_id = f.ax_id) + INNER JOIN geoloc_countries AS g ON (g.licensePlate = f.Code_nationalite) + SET p.nationality1 = g.a2 + WHERE p.nationality1 IS NULL;'); +XDB::rawExecute('UPDATE profiles AS p + INNER JOIN fusionax_anciens AS f ON (p.ax_id = f.ax_id) + INNER JOIN geoloc_countries AS g ON (g.licensePlate = f.Code_nationalite) + SET p.nationality2 = g.a2 + WHERE p.nationality1 != g.a2 AND p.nationality2 IS NULL;'); +XDB::rawExecute('UPDATE profiles AS p + INNER JOIN fusionax_anciens AS f ON (p.ax_id = f.ax_id) + INNER JOIN geoloc_countries AS g ON (g.licensePlate = f.Code_nationalite) + SET p.nationality3 = g.a2 + WHERE p.nationality1 != g.a2 AND p.nationality2 != g.a2 AND p.nationality3 IS NULL;'); +XDB::rawExecute('ALTER TABLE geoloc_pays DROP INDEX (license_plate)'); + +/* Updates corps. */ +XDB::rawExecute('REPLACE IGNORE INTO profile_corps (pid, original_corpsid, current_corpsid, rankid, corps_pub) + SELECT p.pid, c.id, c.id, r.id, \'ax\' + FROM profiles AS p + INNER JOIN fusionax_anciens AS f ON (p.ax_id = f.ax_id) + INNER JOIN profile_corps_enum AS c ON (f.corps_sortie = c.abbreviation) + INNER JOIN profile_corps_rank_enum AS r ON (f.grade = r.abbreviation) + WHERE NOT EXISTS (SELECT * + FROM profile_corps AS pc + WHERE p.pid = pc.pid AND pc.original_corpsid != 1)'); +XDB::rawExecute("UPDATE profile_corps AS c + INNER JOIN profile_corps_enum AS e ON (c.original_corpsid = e.id) + LEFT JOIN profile_corps_enum AS a ON (a.name = 'Aucun (anc. démissionnaire)') + SET c.original_corpsid = a.id + WHERE e.name = 'Ancien élève étranger'"); +XDB::rawExecute("UPDATE profile_corps_enum + SET name = 'Aucun' + WHERE name = 'Aucun (anc. démissionnaire)'"); +XDB::rawExecute("DELETE FROM profile_corps_enum + WHERE name = 'Ancien élève étranger'"); + +/* Updates email_directory. */ +XDB::rawExecute("INSERT IGNORE INTO profile_directory (pid, email_directory) + SELECT p.pid, f.Mel_usage + FROM fusionax_anciens AS f + INNER JOIN profiles AS p ON (p.ax_id = f.ax_id) + WHERE f.Mel_publiable != '0' AND f.Mel_usage != ''"); +XDB::rawExecute("INSERT IGNORE INTO register_marketing (uid, email, type) + SELECT ap.uid, f.Mel_usage, 'ax' + FROM fusionax_anciens AS f + INNER JOIN profiles AS p ON (p.ax_id = f.ax_id) + INNER JOIN account_profiles AS ap ON (ap.pid = p.pid AND FIND_IN_SET('owner', perms)) + LEFT JOIN emails AS e ON (e.uid = ap.uid AND e.flags = 'active') + WHERE f.Mel_usage != '' AND f.Mel_usage NOT LIKE '%@polytechnique.edu' + AND f.Mel_usage NOT LIKE '%@polytechnique.org' AND f.Mel_usage NOT LIKE '%@m4x.org' + AND f.Mel_usage NOT LIKE '%@melix.%' AND e.email IS NULL"); + +/* Updates phone. */ +$phonesXorg = Phone::iterate(array(), array('user')); +$phonesAX = XDB::rawIterator("SELECT p.pid, f.tel_mobile AS display, 'user' AS link_type, 'mobile' AS type, 'ax' AS pub + FROM fusionax_anciens AS f + INNER JOIN profiles AS p ON (f.ax_id = p.ax_id) + WHERE f.tel_mobile IS NOT NULL + ORDER BY p.pid"); +$phoneXorg = $phonesXorg->next(); +while ($phoneAX = new Phone($phonesAX->next())) { + $already = false; + $id = 0; + $phoneAX->format(); + while ($phoneXorg->pid() == $phoneAX->pid()) { + if ($phoneXorg->display == $phoneAX->display) { + $already = true; + } + ++$id; + $phoneXorg = $phonesXorg->next(); + } + if (!$already) { + $phoneAX->setId($id); + $phoneAX->save(); + if ($id > 0) { + XDB::execute("UPDATE profile_merge_issues + SET issues = IF(issues, CONCAT(issues, ',', 'phone'), 'phone') + WHERE pid = {?}", $phoneAX->pid()); + } + } +} + +/* Retrieves different deathdates. */ +XDB::rawExecute("UPDATE profile_merge_issues AS pi + SET issues = IF(issues, CONCAT(issues, ',', 'deathdate'), 'deathdate'), deathdate_ax = f.Date_deces + INNER JOIN profiles AS p ON (pi.pid = p.pid) + INNER JOIN fusionax_anciens AS f ON (f.ax_id = p.ax_id) + WHERE p.deathdate != f.Date_deces"); +XDB::rawExecute('DROP TABLE IF EXISTS fusionax_anciens'); + +/* Retrieves addresses from AX database (one address per user maximum). */ +$addressesAX = XDB::rawIterator("SELECT CONCAT(Ligne1, IF(Ligne2 != '', CONCAT('\n', Ligne2), ''), + IF(Ligne3 != '', CONCAT('\n', Ligne3), ''), + '\n', IF(code_postal, code_postal, zip_cedex), ' ', zip_cedex) AS text, + f.tel, f.fax, p.pid, 'home' AS type, 'ax' AS pub + FROM fusionax_adresses AS f + INNER JOIN profiles AS p ON (f.id_ancien = p.ax_id) + WHERE f.Type_adr = 'E' and f.id_ancien = {?} AND Ligne1 != '' + ORDER BY p.pid"); +$addressesXorg = Address::iterate(array(), array('home')); +$addressXorg = $addressesXorg->next(); +while ($addressAX = new Address($addressesAX->next())) { + $already = false; + $id = 0; + $addressAX->format(); + $addressAX->phones[0] = array('display' => $addressAX->tel, 'type' => 'fixed'); + $addressAX->phones[1] = array('display' => $addressAX->fax, 'type' => 'fax'); + while ($addressXorg->pid == $addressAX->pid) { + if ($addressXorg->text == $addressAX->text) { + $already = true; + } + ++$id; + $addressXorg = $addressesXorg->next(); + } + if (!$already) { + $addressAX->setId($id); + $addressAX->save(); + if ($id > 0) { + XDB::execute("UPDATE profile_merge_issues + SET issues = IF(issues, CONCAT(issues, ',', 'address'), 'address') + WHERE pid = {?}", $addressAX->pid); + } + } +} +XDB::rawExecute('DROP TABLE IF EXISTS fusionax_adresses'); + +/* Retrieves education from AX database. This is the hardest part since AX only kept education as an unformated string. */ +// {{{ First, we need to build a few lists. +$degree_list = $level_list = $university_list = $field_list = array(); +$res = XDB::rawIterator('SELECT id, abbreviation AS name + FROM profile_education_degree_enum + ORDER BY id'); +while ($res as $item->next()) { + $degree_list[$item[1]] = $item[0]; +} +$res = XDB::rawIterator('SELECT level, abbreviation AS name + FROM profile_education_degree_enum + ORDER BY id'); +while ($res as $item->next()) { + $level_list[$item[1]] = $item[0]; +} +$res = XDB::rawIterator("SELECT id, IF(abbreviation = '', name, abbreviation) AS name + FROM profile_education_enum + ORDER BY id"); +while ($res as $item->next()) { + $university_list[$item[1]] = $item[0]; +} +$res = XDB::rawIterator('SELECT id, field AS name + FROM profile_education_field_enum + ORDER BY id'); +while ($res as $item->next()) { + $field_list[$item[1]] = $item[0]; +} +// }}} +$edusXorg = XDB::rawIterator("SELECT p.pid, d.abbreviation AS degree, IF(e.abbreviation = '', e.name, e.abbreviation) AS university, + pe.program, pe.id AS no + FROM profile_education AS pe + INNER JOIN profiles AS p ON (pe.pid = p.pid) + INNER JOIN fusionax_formations AS f ON (f.id_ancien = p.ax_id) + INNER JOIN profile_education_enum AS e ON (pe.eduid = e.id) + INNER JOIN profile_education_degree_enum AS d ON (pe.degreeid = d.id) + WHERE NOT FIND_IN_SET('primary', pe.flags) + ORDER BY p.pid, pe.id"); +$edusAX = XDB::rawIterator("SELECT p.pid, f.Intitule_diplome AS degree, f.Intitule_formation AS university, f.Descr_formation AS program + FROM fusionax_formations AS f + INNER JOIN profiles AS p ON (f.id_ancien = p.ax_id) + ORDER BY p.pid"); +$eduXorg = $edusXorg->next(); +while ($eduAX = $edusAX->next()) { + $id = 0; + while ($eduXorg['pid'] == $eduAX['pid']) { + if ($eduXorg['university'] == $eduAX['university'] && $level_list[$eduXorg['degree']] == $level_list[$eduAX['degree']]) { + $already = true; + } + ++$id; + $eduXorg = $edusXorg->next(); + } + if (isset($field_list[$eduAX['program']])) { + $fieldid = $field_list[$eduAX['program']]; + $program = null; + } else { + $fieldid = null; + $program = $eduAX['program']; + } + if (!$already) { + XDB::execute('INSERT INTO profile_education (pid, degreeid, eduid, program, fieldid, id) + VALUES {?}, {?}, {?}, {?}, {?}, {?}', + $eduAX['pid'], $degree_list[$eduAX['degree']], $university_list[$eduAX['university']], + $program, $fieldid, $id); + if ($id > 0) { + XDB::execute("UPDATE profile_merge_issues + SET issues = IF(issues, CONCAT(issues, ',', 'education'), 'education') + WHERE pid = {?}", $addressAX->pid); + } + } +} +XDB::rawExecute('DROP TABLE IF EXISTS fusionax_formations'); + +/* vim:set et sw=4 sts=4 ts=4: */ +?> diff --git a/upgrade/merge-0.0.1/01_emails.sql b/upgrade/merge-0.0.1/01_emails.sql deleted file mode 100644 index 55de747..0000000 --- a/upgrade/merge-0.0.1/01_emails.sql +++ /dev/null @@ -1,19 +0,0 @@ -INSERT INTO profile_directory (uid, email_directory) - SELECT user_id, Mel_usage - FROM fusionax_anciens AS ax - INNER JOIN auth_user_md5 AS u ON (ax.id_ancien = u.matricule_ax) - WHERE Mel_publiable != '0' AND Mel_usage != ''; - -INSERT IGNORE INTO register_marketing (uid, email, type) - SELECT user_id, Mel_usage, 'ax' - FROM fusionax_anciens AS ax - INNER JOIN auth_user_md5 AS u ON (ax.id_ancien = u.matricule_ax) - LEFT JOIN emails AS e ON (e.uid = u.user_id AND e.flags = 'active') - WHERE Mel_usage != '' AND - Mel_usage NOT LIKE '%@polytechnique.edu' AND - Mel_usage NOT LIKE '%@polytechnique.org' AND - Mel_usage NOT LIKE '%@m4x.org' AND - Mel_usage NOT LIKE '%@melix.%' AND - e.email IS NULL; - --- vim:set syntax=mysql: diff --git a/upgrade/merge-0.0.1/03_corps.sql b/upgrade/merge-0.0.1/03_corps.sql deleted file mode 100644 index 6b2ca09..0000000 --- a/upgrade/merge-0.0.1/03_corps.sql +++ /dev/null @@ -1,21 +0,0 @@ -INSERT IGNORE INTO profile_corps (uid, original_corpsid, current_corpsid, rankid, corps_pub) - SELECT u.user_id, c.id, c.id, r.id, 'ax' - FROM auth_user_md5 AS u - INNER JOIN fusionax_anciens AS f ON (u.matricule_ax = f.id_ancien) - INNER JOIN profile_corps_enum AS c ON (f.corps_sortie = c.abbreviation) - INNER JOIN profile_corps_rank_enum AS r ON (f.grade = r.abbreviation); - - UPDATE profile_corps AS c -INNER JOIN profile_corps_enum AS e ON (c.original_corpsid = e.id) - LEFT JOIN profile_corps_enum AS a ON (a.name = "Aucun (anc. démissionnaire)") - SET c.original_corpsid = a.id - WHERE e.name = "Ancien élève étranger"; - -UPDATE profile_corps_enum - SET name = "Aucun" - WHERE name = "Aucun (anc. démissionnaire)"; - -DELETE FROM profile_corps_enum - WHERE name = "Ancien élève étranger"; - --- vim:set syntax=mysql: diff --git a/upgrade/merge-0.0.1/06_merge_nationalities.sql b/upgrade/merge-0.0.1/06_merge_nationalities.sql deleted file mode 100644 index 52f7383..0000000 --- a/upgrade/merge-0.0.1/06_merge_nationalities.sql +++ /dev/null @@ -1,23 +0,0 @@ -ALTER TABLE geoloc_pays ADD INDEX (license_plate); - - UPDATE auth_user_md5 AS u -LEFT JOIN fusionax_anciens AS f ON (u.matricule_ax = f.id_ancien) -LEFT JOIN geoloc_pays AS g ON (g.license_plate = f.Code_nationalite) - SET u.nationalite = g.a2 - WHERE u.nationalite IS NULL; - - UPDATE auth_user_md5 AS u -LEFT JOIN fusionax_anciens AS f ON (u.matricule_ax = f.id_ancien) -LEFT JOIN geoloc_pays AS g ON (g.license_plate = f.Code_nationalite) - SET u.nationalite2 = g.a2 - WHERE u.nationalite != g.a2 AND u.nationalite2 IS NULL; - - UPDATE auth_user_md5 AS u -LEFT JOIN fusionax_anciens AS f ON (u.matricule_ax = f.id_ancien) -LEFT JOIN geoloc_pays AS g ON (g.license_plate = f.Code_nationalite) - SET u.nationalite3 = g.a2 - WHERE u.nationalite != g.a2 AND u.nationalite2 != g.a2 AND u.nationalite3 IS NULL; - -ALTER TABLE geoloc_pays DROP INDEX (license_plate); - --- vim:set syntax=mysql: diff --git a/upgrade/merge-0.0.1/07_education.php b/upgrade/merge-0.0.1/07_education.php deleted file mode 100755 index 6941b14..0000000 --- a/upgrade/merge-0.0.1/07_education.php +++ /dev/null @@ -1,163 +0,0 @@ -#!/usr/bin/php5 -debug = 0; //do not store backtraces - -// get degree list -$res = XDB::iterator("SELECT id, abbreviation AS name - FROM profile_education_degree_enum - ORDER BY id"); -foreach ($res as $item) { - $degree_list[$item[1]] = $item[0]; -} - -// get degree's level list -$res = XDB::iterator("SELECT id, level AS name - FROM profile_education_degree_enum - ORDER BY id"); -foreach ($res as $item) { - $level_list [$item[1]] = $item[0]; -} - -// get university list -$res = XDB::iterator("SELECT id, IF(abbreviation = '', name, abbreviation) AS name - FROM profile_education_enum - ORDER BY id"); -foreach ($res as $item) { - $university_list [$item[1]] = $item[0]; -} - -// get field list -$res = XDB::iterator("SELECT id, field AS name - FROM profile_education_field_enum - ORDER BY id"); -foreach ($res as $item) { - $field_list [$item[1]] = $item[0]; -} - -// get Xorg education data -$res = XDB::query("SELECT p.uid, d.abbreviation AS degree, IF(e.abbreviation = '', e.name, e.abbreviation) AS university, p.program, p.id AS no - FROM profile_education AS p - INNER JOIN profile_education_enum AS e ON (p.eduid = e.id) - INNER JOIN profile_education_degree_enum AS d ON (p.degreeid = d.id) - WHERE p.id != 100 - ORDER BY p.uid"); -$xorg_edu = $res->fetchAllAssoc(); - -// get AX education data -$res = XDB::iterator("SELECT u.user_id AS uid, f.Intitule_diplome AS degree, f.Intitule_formation AS university, - CONCAT(Descr_formation, ' ', tmp_1, ' ', tmp_2, ' ', tmp_3, ' ', tmp_4) AS program - FROM fusionax_formations AS f - INNER JOIN fusionax_xorg_anciens AS u ON (f.id_ancien = u.matricule_ax) - ORDER BY u.user_id"); -$ax_edu = $res->fetchAllAssoc(); - -// merge education data -$nb_merge_succes = 0; -$nb_total = 0; -$xorg = next($xorg_edu); -while ($ax = next($ax_edu)) { - array_walk($ax, 'trim'); - if (($ax['degree'] == '') && ($ax['university'] = '')) { - continue; - } - while ($xorg['uid'] && ($xorg['uid'] < $ax['uid'])) { - $xorg = next($xorg_edu); - } - - $no = 0; - if($xorg['uid'] == $ax['uid']) { - $uid = $xorg['uid']; - $i = 0; - - while (($xorg['uid'] == $uid) && (!merge($ax, $xorg))) { - $xorg = next($xorg_edu); - $i++; - $no++; - } - while ($xorg['uid'] == $uid) { - $xorg = next($xorg_edu); - $no++; - } - - if ($i > 0) { - $i = $no; - } else { - $i = $no - 1; - } - while ($i != 0) { - $xorg = prev($xorg_edu); - $i--; - } - if ($ax['no']) { - $no = $ax['no']; - $nb_merge_succes++; - } - } - adapt_ax($ax); - XDB::execute("REPLACE INTO profile_education (uid, degreeid, eduid, program, fieldid, id) - VALUES {?}, {?}, {?}, {?}, {?}, {?}", - $ax['uid'], $ax['degree'], $ax['university'], $ax['program'], $ax['field'], $no); - $nb_total++; - if (($nb_total % 1000) == 0) { - echo "."; - } -} - -echo "\n"; -echo "$nb_merge_succes educations were succesfully merged among $nb_total entries.\n"; - -// auxilliary functions - -// replaces AX data by corresponding id in Xorg database -function adapt_ax(&$ax) -{ - if ($field_list[$ax['program']]) { - $ax['field'] = $field_list[$ax['program']]; - $ax['program'] = null; - } - $ax['degree'] = $degree_list[$ax['degree']]; - $ax['university'] = $university_list[$ax['university']]; -} - -// tries to merge two educations into ax and returns 1 in case of merge -function merge(&$ax, $xorg) -{ - if ($ax['degree'] == '') { - if ($ax['university'] != $xorg['university']) { - return 0; - } - $ax['degree'] = $xorg['degree']; - $ax['university'] = $xorg['university']; - } else { - if ($ax['university'] == '') { - if (($level_list[$ax['degree']] == $level_list[$xorg['degree']]) || ($xorg['degree'] == "Dipl.") || ($ax['degree'] == "Dipl.")) { - if ($xorg['degree'] != "Dipl.") { - $ax['degree'] = $xorg['degree']; - } - $ax['university'] = $xorg['university']; - } else { - return 0; - } - } else { - if (($ax['university'] == $xorg['university']) && - (($level_list[$ax['degree']] == $level_list[$xorg['degree']]) || ($xorg['degree'] == "Dipl.") || ($ax['degree'] == "Dipl."))) { - if ($xorg['degree'] != "Dipl.") { - $ax['degree'] = $xorg['degree']; - } - } else { - return 0; - } - } - } - if ($xorg['program']) { - $ax['field'] = $field_list[$ax['program']]; - $ax['program'] = $xorg['program']; - } - $ax['no'] = $xorg['no']; - return 1; -} - -/* vim:set et sw=4 sts=4 ts=4: */ -?> diff --git a/upgrade/merge-0.0.1/connect.db.inc.php b/upgrade/merge-0.0.1/connect.db.inc.php deleted file mode 120000 index 442fab7..0000000 --- a/upgrade/merge-0.0.1/connect.db.inc.php +++ /dev/null @@ -1 +0,0 @@ -../../bin/connect.db.inc.php \ No newline at end of file