forked from GNUsocial/gnu-social
Dangerous non-dynamic profile fetching in Notice
For a Notice object with multiple results, ->getProfile() would ALWAYS return the first profile in the list. For example our "popular notices" stream ended up believing all notices were made by the same profile.
This commit is contained in:
parent
c99d4eddb1
commit
629cbedee2
@ -141,14 +141,14 @@ class Notice extends Managed_DataObject
|
||||
const GROUP_SCOPE = 4;
|
||||
const FOLLOWER_SCOPE = 8;
|
||||
|
||||
protected $_profile = -1;
|
||||
protected $_profile = array();
|
||||
|
||||
public function getProfile()
|
||||
{
|
||||
if ($this->_profile === -1) {
|
||||
if (!isset($this->_profile[$this->profile_id])) {
|
||||
$this->_setProfile(Profile::getKV('id', $this->profile_id));
|
||||
}
|
||||
return $this->_profile;
|
||||
return $this->_profile[$this->profile_id];
|
||||
}
|
||||
|
||||
public function _setProfile(Profile $profile=null)
|
||||
@ -156,7 +156,7 @@ class Notice extends Managed_DataObject
|
||||
if (!$profile instanceof Profile) {
|
||||
throw new NoProfileException($this->profile_id);
|
||||
}
|
||||
$this->_profile = $profile;
|
||||
$this->_profile[$this->profile_id] = $profile;
|
||||
}
|
||||
|
||||
function delete($useWhere=false)
|
||||
|
Loading…
Reference in New Issue
Block a user