Fix fetching of jobs
authorRaphaël Barrois <raphael.barrois@polytechnique.org>
Fri, 19 Mar 2010 14:28:52 +0000 (15:28 +0100)
committerRaphaël Barrois <raphael.barrois@polytechnique.org>
Mon, 22 Mar 2010 12:49:29 +0000 (13:49 +0100)
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
include/profilefields.inc.php

index d8212b5..567f5e2 100644 (file)
@@ -179,15 +179,19 @@ class Job
     public $pid;
     public $id;
 
-    private $company = null;
+    public $company = null;
     private $phones = array();
     private $address = null;
 
-    public $company_id;
+    public $jobid;
 
     public $description;
-    public $url;
-    public $email;
+    public $user_site;
+    public $user_email;
+
+    public $sector;
+    public $subsector;
+    public $subsubsector;
 
     /** Fields are:
      * pid, id, company_id, description, url, email
@@ -197,7 +201,7 @@ class Job
         foreach ($data as $key => $val) {
             $this->$key = $val;
         }
-        $this->setCompany(CompanyList::get($this->jobid));
+        $this->company = CompanyList::get($this->jobid);
     }
 
     public function phones()
@@ -205,11 +209,6 @@ class Job
         return $this->phones;
     }
 
-    public function company()
-    {
-        return $this->company;
-    }
-
     public function addPhone(Phone &$phone)
     {
         if ($phone->link_type == Phone::LINK_JOB && $phone->link_id == $this->id && $phone->pid == $this->pid) {
@@ -223,11 +222,6 @@ class Job
             $this->address = $address;
         }
     }
-
-    public function setCompany(Company $company)
-    {
-        $this->company = $company;
-    }
 }
 // }}}
 // {{{ class Address
@@ -617,13 +611,17 @@ class ProfileJobs extends ProfileField
     public static function fetchData(array $pids, $visibility)
     {
         CompanyList::preload($pids);
-        $data = XDB::iterator('SELECT  id, pid, description, url,
-                                       jobid, sectorid, subsectorid, subsubsectorid,
-                                       IF(email_pub IN {?}, email, NULL) AS email
-                                 FROM  profile_job
-                                WHERE  pid IN {?} AND pub IN {?}
+        $data = XDB::iterator('SELECT  pj.id, pj.pid, pj.description, pj.url as user_site,
+                                       IF(pj.email_pub IN {?}, pj.email, NULL) AS user_email,
+                                       pj.jobid, pjse.name AS sector, pjsse.name AS subsector,
+                                       pjssse.name AS subsubsector
+                                 FROM  profile_job AS pj
+                            LEFT JOIN  profile_job_sector_enum AS pjse ON (pjse.id = pj.sectorid)
+                            LEFT JOIN  profile_job_subsector_enum AS pjsse ON (pjsse.id = pj.subsectorid)
+                            LEFT JOIN  profile_job_subsubsector_enum AS pjssse ON (pjssse.id = pj.subsubsectorid)
+                                WHERE  pj.pid IN {?} AND pj.pub IN {?}
                              ORDER BY  ' . XDB::formatCustomOrder('pid', $pids) . ',
-                                       id',
+                                       pj.id',
                                  $visibility, $pids, $visibility);
         return PlIteratorUtils::subIterator($data, PlIteratorUtils::arrayValueCallback('pid'));
     }
@@ -666,7 +664,7 @@ class ProfileJobs extends ProfileField
     {
         foreach ($this->jobs as $job)
         {
-            $job->setCompany($companies[$job->company_id]);
+            $job->company = $companies[$job->jobid];
         }
     }
 }