use an array of profiles rather than a looping cursor for profile lists
This commit is contained in:
parent
01fd24ce6a
commit
f81c1f7554
@ -98,7 +98,7 @@ class Profile extends Managed_DataObject
|
||||
return $this->_user;
|
||||
}
|
||||
|
||||
protected $_avatars = array();
|
||||
protected $_avatars;
|
||||
|
||||
function getAvatar($width, $height=null)
|
||||
{
|
||||
@ -106,6 +106,10 @@ class Profile extends Managed_DataObject
|
||||
$height = $width;
|
||||
}
|
||||
|
||||
if (!isset($this->_avatars)) {
|
||||
$this->_avatars = array();
|
||||
}
|
||||
|
||||
if (array_key_exists($width, $this->_avatars)) {
|
||||
return $this->_avatars[$width];
|
||||
}
|
||||
|
@ -85,14 +85,14 @@ class ProfileList extends Widget
|
||||
|
||||
function showProfiles()
|
||||
{
|
||||
$cnt = 0;
|
||||
$profiles = $this->profile->fetchAll();
|
||||
|
||||
while ($this->profile->fetch()) {
|
||||
$cnt++;
|
||||
if($cnt > PROFILES_PER_PAGE) {
|
||||
break;
|
||||
}
|
||||
$pli = $this->newListItem($this->profile);
|
||||
$cnt = count($profiles);
|
||||
|
||||
$max = min($cnt, $this->maxProfiles());
|
||||
|
||||
for ($i = 0; $i < $max; $i++) {
|
||||
$pli = $this->newListItem($profiles[$i]);
|
||||
$pli->show();
|
||||
}
|
||||
|
||||
@ -101,7 +101,17 @@ class ProfileList extends Widget
|
||||
|
||||
function newListItem($profile)
|
||||
{
|
||||
return new ProfileListItem($this->profile, $this->action);
|
||||
return new ProfileListItem($profile, $this->action);
|
||||
}
|
||||
|
||||
function maxProfiles()
|
||||
{
|
||||
return PROFILES_PER_PAGE;
|
||||
}
|
||||
|
||||
function avatarSize()
|
||||
{
|
||||
return AVATAR_STREAM_SIZE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -186,7 +196,7 @@ class ProfileListItem extends Widget
|
||||
$avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE);
|
||||
$aAttrs = $this->linkAttributes();
|
||||
$this->out->elementStart('a', $aAttrs);
|
||||
$this->out->element('img', array('src' => ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_STREAM_SIZE),
|
||||
$this->out->element('img', array('src' => (!empty($avatar)) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_STREAM_SIZE),
|
||||
'class' => 'photo avatar',
|
||||
'width' => AVATAR_STREAM_SIZE,
|
||||
'height' => AVATAR_STREAM_SIZE,
|
||||
|
@ -58,22 +58,15 @@ class ProfileMiniList extends ProfileList
|
||||
return new ProfileMiniListItem($profile, $this->action);
|
||||
}
|
||||
|
||||
function showProfiles()
|
||||
function maxProfiles()
|
||||
{
|
||||
$cnt = 0;
|
||||
|
||||
while ($this->profile->fetch()) {
|
||||
$cnt++;
|
||||
if ($cnt > PROFILES_PER_MINILIST) {
|
||||
break;
|
||||
}
|
||||
$pli = $this->newListItem($this->profile);
|
||||
$pli->show();
|
||||
}
|
||||
|
||||
return $cnt;
|
||||
return PROFILES_PER_MINILIST;
|
||||
}
|
||||
|
||||
function avatarSize()
|
||||
{
|
||||
return AVATAR_MINI_SIZE;
|
||||
}
|
||||
}
|
||||
|
||||
class ProfileMiniListItem extends ProfileListItem
|
||||
|
@ -130,17 +130,15 @@ class SortableSubscriptionList extends SubscriptionList
|
||||
|
||||
function showProfiles()
|
||||
{
|
||||
$cnt = 0;
|
||||
$profiles = $this->profile->fetchAll();
|
||||
|
||||
while ($this->profile->fetch()) {
|
||||
$cnt++;
|
||||
if($cnt > PROFILES_PER_PAGE) {
|
||||
break;
|
||||
}
|
||||
$cnt = count($profiles);
|
||||
|
||||
$odd = ($cnt % 2 == 0); // for zebra striping
|
||||
$max = min($cnt, $this->maxProfiles());
|
||||
|
||||
$pli = $this->newListItem($this->profile, $odd);
|
||||
for ($i = 0; $i < $max; $i++) {
|
||||
$odd = ($i % 2 == 0); // for zebra striping
|
||||
$pli = $this->newListItem($profiles[$i], $odd);
|
||||
$pli->show();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user