*/
require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
-class Profile extends Memcached_DataObject
+class Profile extends Managed_DataObject
{
###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */
return Memcached_DataObject::staticGet('Profile',$k,$v);
}
+ public static function schemaDef()
+ {
+ return array(
+ 'description' => 'local and remote users have profiles',
+ 'fields' => array(
+ 'id' => array('type' => 'serial', 'not null' => true, 'description' => 'unique identifier'),
+ 'nickname' => array('type' => 'varchar', 'length' => 64, 'not null' => true, 'description' => 'nickname or username', 'collate' => 'utf8_general_ci'),
+ 'fullname' => array('type' => 'varchar', 'length' => 255, 'description' => 'display name', 'collate' => 'utf8_general_ci'),
+ 'profileurl' => array('type' => 'varchar', 'length' => 255, 'description' => 'URL, cached so we dont regenerate'),
+ 'homepage' => array('type' => 'varchar', 'length' => 255, 'description' => 'identifying URL', 'collate' => 'utf8_general_ci'),
+ 'bio' => array('type' => 'text', 'description' => 'descriptive biography', 'collate' => 'utf8_general_ci'),
+ 'location' => array('type' => 'varchar', 'length' => 255, 'description' => 'physical location', 'collate' => 'utf8_general_ci'),
+ 'lat' => array('type' => 'numeric', 'precision' => 10, 'scale' => 7, 'description' => 'latitude'),
+ 'lon' => array('type' => 'numeric', 'precision' => 10, 'scale' => 7, 'description' => 'longitude'),
+ 'location_id' => array('type' => 'int', 'description' => 'location id if possible'),
+ 'location_ns' => array('type' => 'int', 'description' => 'namespace for location'),
+
+ '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'),
+ 'indexes' => array(
+ 'profile_nickname_idx' => array('nickname'),
+ )
+ );
+ }
+
function multiGet($keyCol, $keyVals, $skipNulls=true)
{
return parent::multiGet('Profile', $keyCol, $keyVals, $skipNulls);
return $this->_user;
}
- protected $_avatars = array();
+ protected $_avatars;
function getAvatar($width, $height=null)
{
$height = $width;
}
+ if (!isset($this->_avatars)) {
+ $this->_avatars = array();
+ }
+
if (array_key_exists($width, $this->_avatars)) {
return $this->_avatars[$width];
}
$tags->tagged = $this->id;
$lists->joinAdd($tags);
+
#@fixme: postgres (round(date_part('epoch', my_date)))
$lists->selectAdd('unix_timestamp(profile_tag.modified) as "cursor"');
$lists = new Profile_list();
$subs = new Profile_tag_subscription();
- $lists->joinAdd($subs);
+ $lists->joinAdd('id', 'profile_tag_subscription:profile_tag_id');
+
#@fixme: postgres (round(date_part('epoch', my_date)))
$lists->selectAdd('unix_timestamp(profile_tag_subscription.created) as "cursor"');
$faves = new Fave();
$faves->user_id = $this->id;
- $cnt = (int) $faves->count('distinct notice_id');
+ $cnt = (int) $faves->count('notice_id');
if (!empty($c)) {
$c->set(Cache::key('profile:fave_count:'.$this->id), $cnt);