]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/User.php
Fix whitescreen on recoverpassword with unknown user
[quix0rs-gnu-social.git] / classes / User.php
index 2d1253b7f7ad19f362bee8b2f22c007e4c74fe9c..726a7e5c30d7954b52449e69fbebe6148d98f18c 100644 (file)
@@ -28,7 +28,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
 require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
 require_once 'Validate.php';
 
-class User extends Memcached_DataObject
+class User extends Managed_DataObject
 {
     const SUBSCRIBE_POLICY_OPEN = 0;
     const SUBSCRIBE_POLICY_MODERATE = 1;
@@ -61,8 +61,6 @@ class User extends Memcached_DataObject
     public $subscribe_policy;                // tinyint(1)
     public $urlshorteningservice;            // varchar(50)   default_ur1.ca
     public $inboxed;                         // tinyint(1)
-    public $design_id;                       // int(4)
-    public $viewdesigns;                     // tinyint(1)   default_1
     public $private_stream;                  // tinyint(1)   default_0
     public $created;                         // datetime()   not_null
     public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
@@ -73,6 +71,58 @@ class User extends Memcached_DataObject
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
 
+    public static function schemaDef()
+    {
+        return array(
+            'description' => 'local users',
+            'fields' => array(
+                'id' => array('type' => 'int', 'not null' => true, 'description' => 'foreign key to profile table'),
+                'nickname' => array('type' => 'varchar', 'length' => 64, 'description' => 'nickname or username, duped in profile'),
+                'password' => array('type' => 'varchar', 'length' => 255, 'description' => 'salted password, can be null for OpenID users'),
+                'email' => array('type' => 'varchar', 'length' => 255, 'description' => 'email address for password recovery etc.'),
+                'incomingemail' => array('type' => 'varchar', 'length' => 255, 'description' => 'email address for post-by-email'),
+                'emailnotifysub' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'Notify by email of subscriptions'),
+                'emailnotifyfav' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'Notify by email of favorites'),
+                'emailnotifynudge' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'Notify by email of nudges'),
+                'emailnotifymsg' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'Notify by email of direct messages'),
+                'emailnotifyattn' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'Notify by email of @-replies'),
+                'emailmicroid' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'whether to publish email microid'),
+                'language' => array('type' => 'varchar', 'length' => 50, 'description' => 'preferred language'),
+                'timezone' => array('type' => 'varchar', 'length' => 50, 'description' => 'timezone'),
+                'emailpost' => array('type' => 'int', 'size' => 'tiny', 'default' => 1, 'description' => 'Post by email'),
+                'sms' => array('type' => 'varchar', 'length' => 64, 'description' => 'sms phone number'),
+                'carrier' => array('type' => 'int', 'description' => 'foreign key to sms_carrier'),
+                'smsnotify' => array('type' => 'int', 'size' => 'tiny', 'default' => 0, 'description' => 'whether to send notices to SMS'),
+                'smsreplies' => array('type' => 'int', 'size' => 'tiny', 'default' => 0, 'description' => 'whether to send notices to SMS on replies'),
+                'smsemail' => array('type' => 'varchar', 'length' => 255, 'description' => 'built from sms and carrier'),
+                'uri' => array('type' => 'varchar', 'length' => 255, 'description' => 'universally unique identifier, usually a tag URI'),
+                'autosubscribe' => array('type' => 'int', 'size' => 'tiny', 'default' => 0, 'description' => 'automatically subscribe to users who subscribe to us'),
+                'subscribe_policy' => array('type' => 'int', 'size' => 'tiny', 'default' => 0, 'description' => '0 = anybody can subscribe; 1 = require approval'),
+                'urlshorteningservice' => array('type' => 'varchar', 'length' => 50, 'default' => 'internal', 'description' => 'service to use for auto-shortening URLs'),
+                'inboxed' => array('type' => 'int', 'size' => 'tiny', 'default' => 0, 'description' => 'has an inbox been created for this user?'),
+                'private_stream' => array('type' => 'int', 'size' => 'tiny', 'default' => 0, 'description' => 'whether to limit all notices to followers only'),
+
+                'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'),
+                'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'),
+            ),
+            'primary key' => array('id'),
+            'unique keys' => array(
+                'user_nickname_key' => array('nickname'),
+                'user_email_key' => array('email'),
+                'user_incomingemail_key' => array('incomingemail'),
+                'user_sms_key' => array('sms'),
+                'user_uri_key' => array('uri'),
+            ),
+            'foreign keys' => array(
+                'user_id_fkey' => array('profile', array('id' => 'id')),
+                'user_carrier_fkey' => array('sms_carrier', array('carrier' => 'id')),
+            ),
+            'indexes' => array(
+                'user_smsemail_idx' => array('smsemail'),
+            ),
+        );
+    }
+
     protected $_profile = -1;
 
     /**
@@ -293,7 +343,6 @@ class User extends Memcached_DataObject
         $user->emailmicroid = 1;
         $user->emailpost = 1;
         $user->jabbermicroid = 1;
-        $user->viewdesigns = 1;
 
         $user->created = common_sql_now();
 
@@ -714,11 +763,6 @@ class User extends Memcached_DataObject
         return $profile;
     }
 
-    function getDesign()
-    {
-        return Design::staticGet('id', $this->design_id);
-    }
-
     function hasRight($right)
     {
         $profile = $this->getProfile();
@@ -937,7 +981,7 @@ class User extends Memcached_DataObject
             return $user->nickname;
         } catch (Exception $e) {
             if (common_config('singleuser', 'enabled') && common_config('singleuser', 'nickname')) {
-                common_log(LOG_WARN, "Warning: code attempting to pull single-user nickname when the account does not exist. If this is not setup time, this is probably a bug.");
+                common_log(LOG_WARNING, "Warning: code attempting to pull single-user nickname when the account does not exist. If this is not setup time, this is probably a bug.");
                 return common_config('singleuser', 'nickname');
             }
             throw $e;
@@ -1042,7 +1086,7 @@ class User extends Memcached_DataObject
 
         if (!$user) {
             // TRANS: Information on password recovery form if no known username or e-mail address was specified.
-            throw new ClientError(_('No user with that email address or username.'));
+            throw new ClientException(_('No user with that email address or username.'));
             return;
         }
 
@@ -1101,4 +1145,39 @@ class User extends Memcached_DataObject
         // TRANS: Subject for password recovery e-mail.
         mail_to_user($user, _('Password recovery requested'), $body, $headers, $confirm->address);
     }
+
+    function streamModeOnly()
+    {
+        if (common_config('oldschool', 'enabled')) {
+            $osp = Old_school_prefs::staticGet('user_id', $this->id);
+            if (!empty($osp)) {
+                return $osp->stream_mode_only;
+            } 
+        }
+
+        return false;
+    }
+
+    function conversationTree()
+    {
+        if (common_config('oldschool', 'enabled')) {
+            $osp = Old_school_prefs::staticGet('user_id', $this->id);
+            if (!empty($osp)) {
+                return $osp->conversation_tree;
+            }
+        }
+
+        return false;
+    }
+
+    function streamNicknames()
+    {
+        if (common_config('oldschool', 'enabled')) {
+            $osp = Old_school_prefs::staticGet('user_id', $this->id);
+            if (!empty($osp)) {
+                return $osp->stream_nicknames;
+            }
+        }
+        return false;
+    }
 }