X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Fpage.inc.php;h=3117b29ec2a5f2c661cdc9f59c26226bdf1d4909;hb=66c4bdaf7813c6dd607a275ab9a2ef163d8b0a51;hp=8c17a05ea638eb6dddbd1a68c933992f2667dba0;hpb=3c696b26901e971c2a0f20dbdee3e7af49a576b6;p=platal.git diff --git a/modules/profile/page.inc.php b/modules/profile/page.inc.php index 8c17a05..3117b29 100644 --- a/modules/profile/page.inc.php +++ b/modules/profile/page.inc.php @@ -100,124 +100,37 @@ class ProfileSettingNumber extends ProfileNoSave } } - -class ProfileSettingTel extends ProfileNoSave -{ - public function value(ProfilePage &$page, $field, $value, &$success) - { - if (is_null($value)) { - return isset($page->values[$field]) ? $page->values[$field] : S::v($field); - } - require_once('profil.func.inc.php'); - $value = format_phone_number($value); - if($value == '') { - $success = true; - return $value; - } - $value = format_display_number($value,$error); - $success = !$error; - if (!$success) { - Platal::page()->trigError('Le préfixe international du numéro de téléphone est inconnu. '); - } - return $value; - } -} - class ProfileSettingPhones implements ProfileSetting { - private $tel; - private $pub; - protected $link_type; - protected $link_id; - - public function __construct($type, $link_id) - { - $this->tel = new ProfileSettingTel(); - $this->pub = new ProfileSettingPub(); - $this->link_type = $type; - $this->link_id = $link_id; - } - public function value(ProfilePage &$page, $field, $value, &$success) { $success = true; - if (is_null($value)) { - $value = array(); - $res = XDB::iterator('SELECT display_tel AS tel, tel_type AS type, pub, comment - FROM profile_phones - WHERE pid = {?} AND link_type = {?} - ORDER BY tel_id', - $page->pid(), $this->link_type); - if ($res->numRows() > 0) { - $value = $res->fetchAllAssoc(); - } else { - $value = array( - 0 => array( - 'type' => 'fixed', - 'tel' => '', - 'pub' => 'private', - 'comment' => '', - ) - ); - } - } + $phones = array(); - foreach ($value as $key=>&$phone) { - $phone['pub'] = $this->pub->value($page, 'pub', $phone['pub'], $s); - $phone['tel'] = $this->tel->value($page, 'tel', $phone['tel'], $s); - if(!isset($phone['type']) || ($phone['type'] != 'fixed' && $phone['type'] != 'mobile' && $phone['type'] != 'fax')) { - $phone['type'] = 'fixed'; - $s = false; - } - if (!$s) { - $phone['error'] = true; - $success = false; + if (is_null($value)) { + $it = Phone::iterate(array($page->pid()), array(Phone::LINK_PROFILE), array(0)); + while ($phone = $it->next()) { + $success = ($phone->format() && $success); + $phones[] = $phone->toFormArray(); } - if (!isset($phone['comment'])) { - $phone['comment'] = ''; + if (count($phones) == 0) { + $phone = new Phone(); + $phones[] = $phone->toFormArray(); } + return $phones; } - return $value; - } - - private function saveTel($pid, $telid, array &$phone) - { - if ($phone['tel'] != '') { - XDB::execute("INSERT INTO profile_phones (pid, link_type, link_id, tel_id, tel_type, - search_tel, display_tel, pub, comment) - VALUES ({?}, {?}, {?}, {?}, {?}, - {?}, {?}, {?}, {?})", - $pid, $this->link_type, $this->link_id, $telid, $phone['type'], - format_phone_number($phone['tel']), $phone['tel'], $phone['pub'], $phone['comment']); - } + return Phone::formatFormArray($value, $success); } public function save(ProfilePage &$page, $field, $value) { - XDB::execute("DELETE FROM profile_phones - WHERE pid = {?} AND link_type = {?} AND link_id = {?}", - $page->pid(), $this->link_type, $this->link_id); - $this->saveTels($page->pid(), $field, $value); - } - - //Only saves phones without a delete operation - public function saveTels($pid, $field, $value) - { - foreach ($value as $telid=>&$phone) { - $this->saveTel($pid, $telid, $phone); - } + Phone::deletePhones($page->pid(), Phone::LINK_PROFILE); + Phone::savePhones($value, $page->pid(), Phone::LINK_PROFILE); } public function getText($value) { - $phones = array(); - foreach ($value as $phone) { - if ($phone['tel'] != '') { - $phones[] = 'type : ' . $phone['type'] .', numéro : ' . $phone['tel'] - . ', commentaire : « ' . $phone['comment'] . ' », affichage : ' . $phone['pub']; - } - } - return implode(' ; ' , $phones); + return Phone::formArrayToString($value); } } @@ -279,38 +192,6 @@ class ProfileSettingDate extends ProfileNoSave } } -abstract class ProfileSettingGeocoding implements ProfileSetting -{ - protected function geocodeAddress(array &$address, &$success) - { - require_once 'geocoding.inc.php'; - $success = true; - if (isset($address['changed']) && $address['changed'] == 1) { - $gmapsGeocoder = new GMapsGeocoder(); - $address = $gmapsGeocoder->getGeocodedAddress($address); - if (isset($address['geoloc'])) { - $success = false; - } - } elseif (@$address['changed'] && !@$address['text']) { - $address = empty_address(); - $address['pub'] = 'private'; - } - if (isset($address['geoloc_choice']) && ($address['geoloc_choice'] == 0)) { - $mailer = new PlMailer('geoloc/geoloc.mail.tpl'); - $mailer->assign('text', $address['text']); - $mailer->assign('geoloc', $address['geoloc']); - $mailer->send(); - $gmapsGeocoder = new GMapsGeocoder(); - $address = $gmapsGeocoder->stripGeocodingFromAddress($address); - } - } - - public function getText($value) { - return $value; - } -} - - abstract class ProfilePage implements PlWizardPage { protected $wizard;