Fixes medal grades (table was missing).
[platal.git] / include / profilefields.inc.php
index 9af88ff..4f83389 100644 (file)
@@ -295,6 +295,9 @@ class Address
 
     public function hasFlag($flag)
     {
+        if (!$this->flags instanceof PlFlagSet) {
+            $this->flags = new PlFlagSet($this->flags);
+        }
         return $this->flags->hasFlag($flag);
     }
 }
@@ -409,10 +412,11 @@ class ProfileMedals extends ProfileField
 
     public static function fetchData(array $pids, ProfileVisibility $visibility)
     {
-        $data = XDB::iterator('SELECT  pm.pid, pm.mid, pm.gid, pme.text, pme.img
+        $data = XDB::iterator('SELECT  pm.pid, pm.mid, pm.gid, pme.text, pme.img, pmge.text AS grade
                                  FROM  profile_medals AS pm
                             LEFT JOIN  profiles AS p ON (pm.pid = p.pid)
                             LEFT JOIN  profile_medal_enum AS pme ON (pme.id = pm.mid)
+                            LEFT JOIN  profile_medal_grade_enum AS pmge ON (pmge.mid = pm.mid AND pmge.gid = pm.gid)
                                 WHERE  pm.pid IN {?} AND p.medals_pub IN {?}
                              ORDER BY  ' . XDB::formatCustomOrder('pm.pid', $pids),
                                 $pids, $visibility->levels());
@@ -452,9 +456,9 @@ class ProfileNetworking extends ProfileField
         foreach ($this->networks as $id => $nw) {
             // XXX hardcoded reference to web site index
             if (
-                (($flags & self::NETWORKING_WEB) && $nw['network_type'] == 0)
+                (($flags & Profile::NETWORKING_WEB) && $nw['network_type'] == 0)
                 ||
-                (! ($flags & self::NETWORKING_WEB))
+                (! ($flags & Profile::NETWORKING_WEB))
             ) {
                 $nws[$id] = $nw;
                 ++$nb;
@@ -672,7 +676,7 @@ class ProfilePhones extends ProfileField
 
     public static function fetchData(array $pids, ProfileVisibility $visibility)
     {
-        $data = XDB::iterator('SELECT  tel_type AS type, search_tel AS search, display_tel AS display, link_type, comment
+        $data = XDB::iterator('SELECT  tel_type AS type, search_tel AS search, display_tel AS display, link_type, comment, pid
                                  FROM  profile_phones
                                 WHERE  pid IN {?} AND pub IN {?}
                              ORDER BY  ' . XDB::formatCustomOrder('pid', $pids),
@@ -736,7 +740,7 @@ class ProfileJobs extends ProfileField
         }
     }
 
-    public static function addAddresses(ProfileAddresses $addresses)
+    public function addAddresses(ProfileAddresses $addresses)
     {
         $a = $addresses->get(Profile::ADDRESS_PRO);
         foreach ($a as $address) {
@@ -746,11 +750,10 @@ class ProfileJobs extends ProfileField
         }
     }
 
-    public static function addCompanies(array $companies)
+    public function addCompanies(array $companies)
     {
-        foreach ($this->jobs as $job)
-        {
-            $job->company = $companies[$job->jobid];
+        foreach ($this->jobs as $job) {
+            $this->company = $companies[$job->jobid];
         }
     }
 }