function getProfile()
{
if (is_int($this->_profile) && $this->_profile == -1) {
- $this->_profile = Profile::staticGet('id', $this->profile_id);
+ $this->_setProfile(Profile::staticGet('id', $this->profile_id));
if (empty($this->_profile)) {
// TRANS: Server exception thrown when a user profile for a notice cannot be found.
return $this->_profile;
}
+
+ function _setProfile($profile)
+ {
+ $this->_profile = $profile;
+ }
function delete()
{
return $scope;
}
+ static function fillProfiles($notices)
+ {
+ $authors = array();
+
+ foreach ($notices as $notice) {
+ if (array_key_exists($notice->profile_id, $authors)) {
+ $authors[$notice->profile_id][] = $notice;
+ } else {
+ $authors[$notice->profile_id] = array($notice);
+ }
+ }
+
+ $profile = Profile::multiGet('id', array_keys($authors));
+
+ $profiles = $profile->fetchAll();
+
+ foreach ($profiles as $p) {
+ foreach ($authors[$p->id] as $notice) {
+ $notice->_setProfile($p);
+ }
+ }
+ }
}
return Memcached_DataObject::staticGet('Profile',$k,$v);
}
+ function multiGet($keyCol, $keyVals, $skipNulls=true)
+ {
+ return parent::multiGet('Profile', $keyCol, $keyVals, $skipNulls);
+ }
+
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
static function getStreamByIds($ids)
{
- return Notice::multiGet('id', $ids);
+ $notices = Notice::multiGet('id', $ids);
+ // Prefill the profiles
+ Notice::fillProfiles($notices->fetchAll());
+ return $notices;
}
}