Imports job addresses (Closes #1149).
[platal.git] / classes / profile.php
index 740eeb3..9924eb4 100644 (file)
@@ -111,27 +111,40 @@ class Profile
             self::FIRSTNAME => array(self::VN_ORDINARY, self::VN_INI, self::VN_OTHER)
         );
 
-    const ADDRESS_MAIN       = 0x000001;
-    const ADDRESS_PERSO      = 0x000002;
-    const ADDRESS_PRO        = 0x000004;
-    const ADDRESS_ALL        = 0x000006;
-    const ADDRESS_POSTAL     = 0x000008;
-
-    const EDUCATION_MAIN     = 0x000010;
-    const EDUCATION_EXTRA    = 0x000020;
-    const EDUCATION_ALL      = 0x000040;
-    const EDUCATION_FINISHED = 0x000080;
-    const EDUCATION_CURRENT  = 0x000100;
-
-    const JOBS_MAIN          = 0x001000;
-    const JOBS_ALL           = 0x002000;
-    const JOBS_FINISHED      = 0x004000;
-    const JOBS_CURRENT       = 0x008000;
-
-    const NETWORKING_ALL     = 0x000000;
-    const NETWORKING_WEB     = 0x010000;
-    const NETWORKING_IM      = 0x020000;
-    const NETWORKING_SOCIAL  = 0x040000;
+    const ADDRESS_MAIN       = 0x00000001;
+    const ADDRESS_PERSO      = 0x00000002;
+    const ADDRESS_PRO        = 0x00000004;
+    const ADDRESS_ALL        = 0x00000006;
+    const ADDRESS_POSTAL     = 0x00000008;
+
+    const EDUCATION_MAIN     = 0x00000010;
+    const EDUCATION_EXTRA    = 0x00000020;
+    const EDUCATION_ALL      = 0x00000040;
+    const EDUCATION_FINISHED = 0x00000080;
+    const EDUCATION_CURRENT  = 0x00000100;
+
+    const JOBS_MAIN          = 0x00001000;
+    const JOBS_ALL           = 0x00002000;
+    const JOBS_FINISHED      = 0x00004000;
+    const JOBS_CURRENT       = 0x00008000;
+
+    const NETWORKING_ALL     = 0x00070000;
+    const NETWORKING_WEB     = 0x00010000;
+    const NETWORKING_IM      = 0x00020000;
+    const NETWORKING_SOCIAL  = 0x00040000;
+
+    const PHONE_LINK_JOB     = 0x00100000;
+    const PHONE_LINK_ADDRESS = 0x00200000;
+    const PHONE_LINK_PROFILE = 0x00400000;
+    const PHONE_LINK_COMPANY = 0x00800000;
+    const PHONE_LINK_ANY     = 0x00F00000;
+
+    const PHONE_TYPE_FAX     = 0x01000000;
+    const PHONE_TYPE_FIXED   = 0x02000000;
+    const PHONE_TYPE_MOBILE  = 0x04000000;
+    const PHONE_TYPE_ANY     = 0x07000000;
+
+    const PHONE_ANY          = 0x07F00000;
 
     const FETCH_ADDRESSES      = 0x000001;
     const FETCH_CORPS          = 0x000002;
@@ -503,14 +516,20 @@ class Profile
         $this->consolidateFields();
     }
 
-    public function getAddresses($flags, $limit = null)
+    private function fetchAddresses()
     {
         if ($this->addresses == null  && !$this->fetched(self::FETCH_ADDRESSES)) {
             $addr = $this->getProfileField(self::FETCH_ADDRESSES);
             if ($addr) {
                 $this->setAddresses($addr);
+                $this->fetchPhones();
             }
         }
+    }
+
+    public function getAddresses($flags, $limit = null)
+    {
+        $this->fetchAddresses();
 
         if ($this->addresses == null) {
             return array();
@@ -542,12 +561,16 @@ class Profile
         $this->consolidateFields();
     }
 
-    public function getPhones($flags, $limit = null)
+    private function fetchPhones()
     {
         if ($this->phones == null && !$this->fetched(self::FETCH_PHONES)) {
             $this->setPhones($this->getProfileField(self::FETCH_PHONES));
         }
+    }
 
+    public function getPhones($flags, $limit = null)
+    {
+        $this->fetchPhones();
         if ($this->phones == null) {
             return array();
         }
@@ -637,14 +660,20 @@ class Profile
         $this->consolidateFields();
     }
 
-    public function getJobs($flags, $limit = null)
+    private function fetchJobs()
     {
         if ($this->jobs == null && !$this->fetched(self::FETCH_JOBS)) {
             $jobs = $this->getProfileField(self::FETCH_JOBS);
             if ($jobs) {
                 $this->setJobs($jobs);
+                $this->fetchAddresses();
             }
         }
+    }
+
+    public function getJobs($flags, $limit = null)
+    {
+        $this->fetchJobs();
 
         if ($this->jobs == null) {
             return array();
@@ -783,8 +812,9 @@ class Profile
                                      p.nationality1, p.nationality2, p.nationality3,
                                      IF (p.freetext_pub IN {?}, p.freetext, NULL) AS freetext,
                                      pe.entry_year, pe.grad_year,
-                                     IF ({?} IN {?}, pse.text, NULL) AS section,
-                                     pn_f.name AS firstname, pn_l.name AS lastname, pn_n.name AS nickname,
+                                     IF ({?}, pse.text, NULL) AS section,
+                                     pn_f.name AS firstname, pn_l.name AS lastname,
+                                     IF( {?}, pn_n.name, NULL) AS nickname,
                                      IF(pn_uf.name IS NULL, pn_f.name, pn_uf.name) AS firstname_ordinary,
                                      IF(pn_ul.name IS NULL, pn_l.name, pn_ul.name) AS lastname_ordinary,
                                      pd.yourself, pd.promo, pd.short_name, pd.directory_name AS full_name,
@@ -816,8 +846,10 @@ class Profile
                            GROUP BY  p.pid
                                      ' . $order,
                            $visibility->levels(),
-                           ProfileVisibility::VIS_PRIVATE, $visibility->levels(),
-                           $visibility->levels(), $visibility->levels(),
+                           $visibility->isVisible(ProfileVisibility::VIS_PRIVATE),
+                           $visibility->isVisible(ProfileVisibility::VIS_PRIVATE),
+                           $visibility->levels(),
+                           $visibility->levels(),
                            $pids
                        );
         return new ProfileIterator($it, $pids, $fields, $visibility);