Merge branch 'master' into fusionax
[platal.git] / modules / profile / page.inc.php
index 27e1958..a23b1e2 100644 (file)
@@ -139,17 +139,28 @@ class ProfilePhones implements ProfileSetting
     public function value(ProfilePage &$page, $field, $value, &$success)
     {
         $success = true;
-        if (is_null($value) || !is_array($value)) {
+        if (is_null($value)) {
             $value = array();
             $res = XDB::iterator("SELECT  t.display_tel AS tel, t.tel_type AS type, t.pub, t.comment
                                     FROM  profile_phones AS t
                                    WHERE  t.uid = {?} AND t.link_type = {?}
                                 ORDER BY  t.tel_id",
                                  $this->id, $this->link_type);
-            $value = $res->fetchAllAssoc();
+            if ($res->numRows() > 0) {
+                $value = $res->fetchAllAssoc();
+            } else {
+                $value = array(
+                        0 => array(
+                            'type'    => 'fixed',
+                            'tel'     => '',
+                            'pub'     => 'private',
+                            'comment' => '',
+                            )
+                        );
+            }
         }
         foreach ($value as $key=>&$phone) {
-            if (@$phone['removed']) {
+            if (isset($phone['removed']) && $phone['removed']) {
                 unset($value[$key]);
             } else {
                 unset($phone['removed']);
@@ -254,26 +265,26 @@ class ProfileDate extends ProfileNoSave
     }
 }
 
-abstract class ProfileGeoloc implements ProfileSetting
+abstract class ProfileGeocoding implements ProfileSetting
 {
-    protected function geolocAddress(array &$address, &$success)
+    protected function geocodeAddress(array &$address, &$success)
     {
         require_once 'geocoding.inc.php';
         $success = true;
-        if ($address['changed'] == 1) {
+        if (isset($address['changed']) && $address['changed'] == 1) {
             $gmapsGeocoder = new GMapsGeocoder();
             $address = $gmapsGeocoder->getGeocodedAddress($address);
             if (isset($address['geoloc'])) {
                 $success = false;
             }
         }
-        if (isset($address['geoloc_choice']) && $address['geoloc_choice'] == 0) {
+        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();
-        } elseif (isset($address['geoloc_choice'])) {
-            unset($address['geoloc'], $address['geoloc_choice']);
+            $gmapsGeocoder = new GMapsGeocoder();
+            $address = $gmapsGeocoder->stripGeocodingFromAddress($address);
         }
     }
 }
@@ -391,7 +402,7 @@ abstract class ProfilePage implements PlWizardPage
         $page->assign('errors', $this->errors);
     }
 
-    public function process()
+    public function process(&$global_success)
     {
         $global_success = true;
         $this->fetchData();
@@ -414,9 +425,14 @@ abstract class ProfilePage implements PlWizardPage
             return Post::has('next_page') ? PlWizard::NEXT_PAGE : PlWizard::CURRENT_PAGE;
         }
         Platal::page()->trigError("Certains champs n'ont pas pu être validés, merci de corriger les informations "
-                                . "de ton profil et de revalider ta demande");
+                                . "de ton profil et de revalider ta demande.");
         return PlWizard::CURRENT_PAGE;
     }
+
+    public function success()
+    {
+        return 'Ton profil a bien été mis à jour.';
+    }
 }
 
 require_once dirname(__FILE__) . '/general.inc.php';