use an array of profiles rather than a looping cursor for profile lists

This commit is contained in:
Evan Prodromou
2011-08-27 12:53:15 -04:00
parent 01fd24ce6a
commit f81c1f7554
4 changed files with 36 additions and 31 deletions

View File

@@ -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,