Merge commit 'origin/fusionax' into account
[platal.git] / classes / user.php
index 8d1bb08..d048e5a 100644 (file)
@@ -163,11 +163,15 @@ class User extends PlUser
                                       a.email_format, a.is_admin, a.state, a.type, a.skin,
                                       FIND_IN_SET(\'watch\', a.flags) AS watch, a.comment,
                                       a.weak_password IS NOT NULL AS weak_access,
-                                      a.token IS NOT NULL AS token_access ' . $fields . '
+                                      a.token IS NOT NULL AS token_access,
+                                      (e.email IS NULL AND NOT FIND_IN_SET(\'googleapps\', eo.storage)) AND a.state != \'pending\' AS lost
+                                      ' . $fields . '
                                 FROM  accounts AS a
                           INNER JOIN  account_types AS at ON (at.type = a.type)
                            LEFT JOIN  aliases AS af ON (af.id = a.uid AND af.type = \'a_vie\')
                            LEFT JOIN  aliases AS ab ON (ab.id = a.uid AND FIND_IN_SET(\'bestalias\', ab.flags))
+                           LEFT JOIN  emails AS e ON (e.uid = a.uid AND e.flags = \'active\')
+                           LEFT JOIN  email_options AS eo ON (eo.uid = a.uid)
                                    ' . $joins . '
                                WHERE  a.uid IN (' . implode(', ', $uids) . ')
                             GROUP BY  a.uid');
@@ -451,7 +455,7 @@ class User extends PlUser
     private $contacts = null;
     public function isContact(PlUser &$user)
     {
-        if ($this->contacts) {
+        if (is_null($this->contacts)) {
             $this->contacts = XDB::fetchAllAssoc('contact', 'SELECT  *
                                                                FROM  contacts
                                                               WHERE  uid = {?}',
@@ -510,7 +514,7 @@ class User extends PlUser
     }
 
     // Fetch a set of users from a list of UIDs
-    public static function getBulkUsersWithUIDs(array $data, $orig = null, $dest = null)
+    public static function getBulkUsersWithUIDs(array $data, $orig = null, $dest = null, $fetchProfile = true)
     {
         // Fetch the list of uids
         if (is_null($orig)) {
@@ -533,8 +537,19 @@ class User extends PlUser
         }
         $fields = self::loadMainFieldsFromUIDs($uids);
         $table = array();
+        if ($fetchProfile) {
+            $profiles = Profile::getBulkProfilesWithUIDS($uids);
+        }
         while (($list = $fields->next())) {
-            $table[$list['uid']] = User::getSilentWithValues(null, $list);
+            $uid  = $list['uid'];
+            $user = User::getSilentWithValues(null, $list);
+            if ($fetchProfile) {
+                if (isset($profiles[$uid])) {
+                    $user->_profile = $profiles[$uid];
+                }
+                $user->_profile_fetched = true;
+            }
+            $table[$list['uid']] = $user;
         }
 
         // Build the result with respect to input order.
@@ -555,11 +570,11 @@ class User extends PlUser
         }
     }
 
-    public static function getBulkUsersFromDB()
+    public static function getBulkUsersFromDB($fetchProfile = true)
     {
         $args = func_get_args();
         $uids = call_user_func_array(array('XDB', 'fetchColumn'), $args);
-        return self::getBulkUsersWithUIDs($uids);
+        return self::getBulkUsersWithUIDs($uids, null, null, $fetchProfile);
     }
 }