X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fadmin.php;h=e18a4093aaafec36ed44aa9042fbc25c8affadda;hb=3cd815ca837659beb6daae9d5516ea51f3b246df;hp=032d02a94e4ef21772cbe9309b9e0fa0da7f12fb;hpb=4d336f59bad0da6714bc69fd71aa94056bc455c1;p=platal.git diff --git a/modules/admin.php b/modules/admin.php index 032d02a..e18a409 100644 --- a/modules/admin.php +++ b/modules/admin.php @@ -573,6 +573,12 @@ class AdminModule extends PLModule user_reindex($user->id()); $new_fields = XDB::query($watch_query, $user->id())->fetchOneAssoc(); + // Redacts the password in the notification, to avoid transmitting + // sensitive information by email. + $new_fields['password'] = ($old_fields['password'] != $new_fields['password'] ? 'new' : 'old'); + $old_fields['password'] = 'old'; + + // Notifies the admins of the profile update. $mailer = new PlMailer("admin/useredit.mail.tpl"); $mailer->assign("admin", S::user()->login()); $mailer->assign("user", $user->login()); @@ -688,13 +694,14 @@ class AdminModule extends PLModule $page->assign('bans', $bans); } - function getHruid($line, $key) + function getHruid($line, $partial_result, $key) { - var_dump($line); - if (!isset($line['nom']) || !isset($line['prenom']) || !isset($line['promo'])) { + if (!isset($partial_result['nom']) || + !isset($partial_result['prenom']) || + !isset($partial_result['promo'])) { return null; } - return make_forlife($line['prenom'], $line['nom'], $line['promo']); + return make_forlife($partial_result['prenom'], $partial_result['nom'], $partial_result['promo']); } function getMatricule($line, $key) @@ -735,9 +742,11 @@ class AdminModule extends PLModule $fields = array('hruid', 'nom', 'nom_ini', 'prenom', 'naissance_ini', 'prenom_ini', 'promo', 'promo_sortie', 'flags', 'matricule', 'matricule_ax', 'perms'); - $importer->forceValue('hruid', array($this, 'getHruid')); $importer->forceValue('promo', $promo); $importer->forceValue('promo_sortie', $promo + 3); + // The hruid generation callback is set last, so that it is called once 'promo' + // has already been computed for that line. + $importer->forceValue('hruid', array($this, 'getHruid')); break; case 'ax': $fields = array('matricule', 'matricule_ax'); @@ -1277,20 +1286,41 @@ class AdminModule extends PLModule } if (Env::has('edit')) { + // TODO: use address and phone classes to update profile_job_enum and profile_phones once they are done. + S::assert_xsrf_token(); $selectedJob = Env::has('selectedJob'); + XDB::execute("DELETE FROM profile_phones + WHERE uid = {?} AND link_type = 'hq'", + $id); + XDB::execute("DELETE FROM profile_addresses + WHERE jobid = {?} AND type = 'hq'", + $id); + XDB::execute('DELETE FROM profile_job_enum + WHERE id = {?}', + $id); + if (Env::has('change')) { XDB::execute('UPDATE profile_job SET jobid = {?} WHERE jobid = {?}', Env::i('newJobId'), $id); - XDB::execute('DELETE FROM profile_job_enum - WHERE id = {?}', - $id); $page->trigSuccess("L'entreprise a bien été remplacée."); } else { + require_once 'profil.func.inc.php'; + require_once 'geocoding.inc.php'; + + $display_tel = format_display_number(Env::v('tel'), $error_tel); + $display_fax = format_display_number(Env::v('fax'), $error_fax); + $gmapsGeocoder = new GMapsGeocoder(); + $address = array('text' => Env::t('address')); + $address = $gmapsGeocoder->getGeocodedAddress($address); + Geocoder::getAreaId($address, 'administrativeArea'); + Geocoder::getAreaId($address, 'subAdministrativeArea'); + Geocoder::getAreaId($address, 'locality'); + XDB::execute('UPDATE profile_job_enum SET name = {?}, acronym = {?}, url = {?}, email = {?}, NAF_code = {?}, AX_code = {?}, holdingid = {?} @@ -1298,16 +1328,41 @@ class AdminModule extends PLModule Env::t('name'), Env::t('acronym'), Env::t('url'), Env::t('email'), Env::t('NAF_code'), Env::i('AX_code'), Env::i('holdingId'), $id); + XDB::execute("INSERT INTO profile_phones (uid, link_type, link_id, tel_id, tel_type, + search_tel, display_tel, pub) + VALUES ({?}, 'hq', 0, 0, 'fixed', {?}, {?}, 'public'), + ({?}, 'hq', 0, 1, 'fax', {?}, {?}, 'public')", + $id, format_phone_number(Env::v('tel')), $display_tel, + $id, format_phone_number(Env::v('fax')), $display_fax); + + XDB::execute("INSERT INTO profile_addresses (jobid, type, id, accuracy, + text, postalText, postalCode, localityId, + subAdministrativeAreaId, administrativeAreaId, + countryId, latitude, longitude, updateTime, + north, south, east, west) + VALUES ({?}, 'hq', 0, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, + {?}, {?}, FROM_UNIXTIME({?}), {?}, {?}, {?}, {?})", + $id, $address['accuracy'], $address['text'], $address['postalText'], + $address['postalCode'], $address['localityId'], + $address['subAdministrativeAreaId'], $address['administrativeAreaId'], + $address['countryId'], $address['latitude'], $address['longitude'], + $address['updateTime'], $address['north'], $address['south'], + $address['east'], $address['west']); + $page->trigSuccess("L'entreprise a bien été mise à jour."); } } if (!Env::has('change') && $id != -1) { - $res = XDB::query('SELECT e.id, e.name, e.acronym, e.url, e.email, e.NAF_code, e.AX_code, - h.id AS holdingId, h.name AS holdingName, h.acronym AS holdingAcronym - FROM profile_job_enum AS e - LEFT JOIN profile_job_enum AS h ON (e.holdingid = h.id) - WHERE e.id = {?}', + $res = XDB::query("SELECT e.id, e.name, e.acronym, e.url, e.email, e.NAF_code, e.AX_code, + h.id AS holdingId, h.name AS holdingName, h.acronym AS holdingAcronym, + t.display_tel AS tel, f.display_tel AS fax, a.text AS address + FROM profile_job_enum AS e + LEFT JOIN profile_job_enum AS h ON (e.holdingid = h.id) + LEFT JOIN profile_phones AS t ON (t.uid = e.id AND link_type = 'hq' AND tel_id = 0) + LEFT JOIN profile_phones AS f ON (f.uid = e.id AND link_type = 'hq' AND tel_id = 1) + LEFT JOIN profile_addresses AS a ON (a.jobid = e.id AND a.type = 'hq') + WHERE e.id = {?}", $id); if ($res->numRows() == 0) {