X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FUser.php;h=bf13e1e34c170e2c4447b739090d2294081bc42c;hb=fe77b3445c5721f81e99b292f06f4ff3ab823022;hp=76f7da989f0eac0cf9b7a2ff133ad187eed5c8c6;hpb=0036795582aa3fca078e744ae1bd96a9e417d361;p=quix0rs-gnu-social.git diff --git a/classes/User.php b/classes/User.php index 76f7da989f..bf13e1e34c 100644 --- a/classes/User.php +++ b/classes/User.php @@ -1,9 +1,28 @@ . + */ + +if (!defined('LACONICA')) { exit(1); } /** * Table Definition for user */ require_once 'DB/DataObject.php'; +require_once 'Validate.php'; class User extends DB_DataObject { @@ -12,8 +31,18 @@ class User extends DB_DataObject public $__table = 'user'; // table name public $id; // int(4) primary_key not_null + public $nickname; // varchar(64) unique_key public $password; // varchar(255) public $email; // varchar(255) unique_key + public $emailnotifysub; // tinyint(1) default_1 + public $jabber; // varchar(255) unique_key + public $jabbernotify; // tinyint(1) + public $jabberreplies; // tinyint(1) + public $updatefrompresence; // tinyint(1) + public $sms; // varchar(64) unique_key + public $carrier; // int(4) + public $smsnotify; // tinyint(1) + public $uri; // varchar(255) unique_key public $created; // datetime() not_null public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP @@ -22,11 +51,17 @@ class User extends DB_DataObject /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE - + function getProfile() { - return Profile::staticGet($this->$id); + $profile = DB_DataObject::factory('profile'); + $profile->id = $this->id; + if ($profile->find()) { + $profile->fetch(); + return $profile; + } + return NULL; } - + function isSubscribed($other) { assert(!is_null($other)); $sub = DB_DataObject::factory('subscription'); @@ -34,4 +69,40 @@ class User extends DB_DataObject $sub->subscribed = $other->id; return $sub->find(); } + + # 'update' won't write key columns, so we have to do it ourselves. + + function updateKeys(&$orig) { + $parts = array(); + foreach (array('nickname', 'email', 'jabber', 'sms', 'carrier') as $k) { + if (strcmp($this->$k, $orig->$k) != 0) { + $parts[] = $k . ' = ' . $this->_quote($this->$k); + } + } + if (count($parts) == 0) { + # No changes + return true; + } + $toupdate = implode(', ', $parts); + $qry = 'UPDATE ' . $this->tableName() . ' SET ' . $toupdate . + ' WHERE id = ' . $this->id; + return $this->query($qry); + } + + function allowed_nickname($nickname) { + # XXX: should already be validated for size, content, etc. + static $blacklist = array('rss', 'xrds', 'doc', 'main', + 'settings', 'notice', 'user', + 'search', 'avatar'); + $merged = array_merge($blacklist, common_config('nickname', 'blacklist')); + return !in_array($nickname, $merged); + } + + function getCurrentNotice($dt=NULL) { + $profile = $this->getProfile(); + if (!$profile) { + return NULL; + } + return $profile->getCurrentNotice($dt); + } }