Introduces search names, modifies name edition in the profile and adapts it to be...
[platal.git] / modules / profile / page.inc.php
index 7b9de17..79a8664 100644 (file)
@@ -53,9 +53,8 @@ class ProfileWeb extends ProfileNoSave
         $value = trim($value);
         $success = empty($value) || preg_match("{^(https?|ftp)://[a-zA-Z0-9._%#+/?=&~-]+$}i", $value);
         if (!$success) {
-            global $page;
-            $page->trigError('URL Incorrecte : une url doit commencer par http:// ou https:// ou ftp://'
-                      . ' et ne pas contenir de caractères interdits');
+            Platal::page()->trigError('URL Incorrecte : une url doit commencer par http:// ou https:// ou ftp://'
+                                    . ' et ne pas contenir de caractères interdits');
         }
         return $value;
     }
@@ -69,11 +68,9 @@ class ProfileEmail extends ProfileNoSave
             return isset($page->values[$field]) ? $page->values[$field] : S::v($field);
         }
         $value = trim($value);
-        require_once 'xorg.misc.inc.php';
         $success = empty($value) || isvalid_email($value);
         if (!$success) {
-            global $page;
-            $page->trigError('Adresse Email invalide');
+            Platal::page()->trigError('Adresse Email invalide');
         }
         return $value;
     }
@@ -89,8 +86,7 @@ class ProfileNumber extends ProfileNoSave
         $value = trim($value);
         $success = empty($value) || is_numeric($value);
         if (!$success) {
-            global $page;
-            $page->trigError('Numéro invalide');
+            Platal::page()->trigError('Numéro invalide');
         }
         return $value;
     }
@@ -113,8 +109,7 @@ class ProfileTel extends ProfileNoSave
         $value = format_display_number($value,$error);
         $success = !$error;
         if (!$success) {
-            global $page;
-            $page->trigError('Le préfixe international du numéro de téléphone est inconnu. ');
+            Platal::page()->trigError('Le préfixe international du numéro de téléphone est inconnu. ');
         }
         return $value;
     }
@@ -124,30 +119,40 @@ class ProfilePhones implements ProfileSetting
 {
     private $tel;
     private $pub;
+    protected $id;
     protected $link_type;
     protected $link_id;
 
-    public function __construct($type, $id)
+    public function __construct($type, $link_id, $id = 0)
     {
+        if ($id != 0) {
+            $this->id = $id;
+        } else {
+            $this->id = S::i('uid');
+        }
         $this->tel = new ProfileTel();
         $this->pub = new ProfilePub();
         $this->link_type = $type;
-        $this->link_id = $id;
+        $this->link_id   = $link_id;
     }
 
     public function value(ProfilePage &$page, $field, $value, &$success)
     {
         $success = true;
-        if (is_null($value)) {
-            $value = isset($page->values[$field]) ? $page->values[$field] : array();
-        }
-        if (!is_array($value)) {
+        if (is_null($value) || !is_array($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();
         }
         foreach ($value as $key=>&$phone) {
             if (@$phone['removed']) {
                 unset($value[$key]);
             } else {
+                unset($phone['removed']);
                 $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')) {
@@ -173,8 +178,8 @@ class ProfilePhones implements ProfileSetting
                                        search_tel, display_tel, pub, comment)
                                VALUES  ({?}, {?}, {?}, {?}, {?},
                                        {?}, {?}, {?}, {?})",
-                         S::i('uid'), $this->link_type, $this->link_id, $telid, $phone['type'],
-                        format_phone_number($phone['tel']), $phone['tel'], $phone['pub'], $phone['comment']);
+                         $this->id, $this->link_type, $this->link_id, $telid, $phone['type'],
+                         format_phone_number($phone['tel']), $phone['tel'], $phone['pub'], $phone['comment']);
         }
     }
 
@@ -182,7 +187,7 @@ class ProfilePhones implements ProfileSetting
     {
         XDB::execute("DELETE FROM  profile_phones
                             WHERE  uid = {?} AND link_type = {?} AND link_id = {?}",
-                            S::i('uid'), $this->link_type, $this->link_id);
+                            $this->id, $this->link_type, $this->link_id);
         $this->saveTels($field, $value);
     }
 
@@ -234,16 +239,14 @@ class ProfileDate extends ProfileNoSave
         } else {
             $success = preg_match('@(\d{2})/(\d{2})/(\d{4})@', $value, $matches);
             if (!$success) {
-                global $page;
-                $page->trigError("Les dates doivent être au format jj/mm/aaaa");
+                Platal::page()->trigError("Les dates doivent être au format jj/mm/aaaa");
            } else {
                 $day   = (int)$matches[1];
                 $month = (int)$matches[2];
                 $year  = (int)$matches[3];
                 $success = ($day > 0 && $day <= 31) && ($month > 0 && $month <= 12) && ($year > 1900 && $year <= 2020);
                 if (!$success) {
-                    global $page;
-                    $page->trigError("La date n'a pas une valeur valide");
+                    Platal::page()->trigError("La date n'a pas une valeur valide");
                 }
             }
         }
@@ -358,8 +361,7 @@ abstract class ProfilePage implements PlWizardPage
             register_watch_op(S::i('uid'), WATCH_FICHE);
         }
         global $platal;
-        $log =& $_SESSION['log'];
-        $log->log('profil', $platal->pl_self(1));
+        S::logger()->log('profil', $platal->pl_self(1));
     }
 
     protected function checkChanges()
@@ -389,11 +391,11 @@ abstract class ProfilePage implements PlWizardPage
         return 'profile/base.tpl';
     }
 
-    protected function _prepare(PlatalPage &$page, $id)
+    protected function _prepare(PlPage &$page, $id)
     {
     }
 
-    public function prepare(PlatalPage &$page, $id)
+    public function prepare(PlPage &$page, $id)
     {
         if (count($this->values) == 0) {
             $this->fetchData();
@@ -428,9 +430,8 @@ abstract class ProfilePage implements PlWizardPage
             }
             return Post::has('next_page') ? PlWizard::NEXT_PAGE : PlWizard::CURRENT_PAGE;
         }
-        global $page;
-        $page->trigError("Certains champs n'ont pas pu être validés, merci de corriger les informations "
-                  . "de ton profil et de revalider ta demande");
+        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");
         return PlWizard::CURRENT_PAGE;
     }
 }