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;
|
return $this->_user;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected $_avatars = array();
|
protected $_avatars;
|
||||||
|
|
||||||
function getAvatar($width, $height=null)
|
function getAvatar($width, $height=null)
|
||||||
{
|
{
|
||||||
@ -106,6 +106,10 @@ class Profile extends Managed_DataObject
|
|||||||
$height = $width;
|
$height = $width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!isset($this->_avatars)) {
|
||||||
|
$this->_avatars = array();
|
||||||
|
}
|
||||||
|
|
||||||
if (array_key_exists($width, $this->_avatars)) {
|
if (array_key_exists($width, $this->_avatars)) {
|
||||||
return $this->_avatars[$width];
|
return $this->_avatars[$width];
|
||||||
}
|
}
|
||||||
|
@ -85,14 +85,14 @@ class ProfileList extends Widget
|
|||||||
|
|
||||||
function showProfiles()
|
function showProfiles()
|
||||||
{
|
{
|
||||||
$cnt = 0;
|
$profiles = $this->profile->fetchAll();
|
||||||
|
|
||||||
while ($this->profile->fetch()) {
|
$cnt = count($profiles);
|
||||||
$cnt++;
|
|
||||||
if($cnt > PROFILES_PER_PAGE) {
|
$max = min($cnt, $this->maxProfiles());
|
||||||
break;
|
|
||||||
}
|
for ($i = 0; $i < $max; $i++) {
|
||||||
$pli = $this->newListItem($this->profile);
|
$pli = $this->newListItem($profiles[$i]);
|
||||||
$pli->show();
|
$pli->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,7 +101,17 @@ class ProfileList extends Widget
|
|||||||
|
|
||||||
function newListItem($profile)
|
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);
|
$avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE);
|
||||||
$aAttrs = $this->linkAttributes();
|
$aAttrs = $this->linkAttributes();
|
||||||
$this->out->elementStart('a', $aAttrs);
|
$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',
|
'class' => 'photo avatar',
|
||||||
'width' => AVATAR_STREAM_SIZE,
|
'width' => AVATAR_STREAM_SIZE,
|
||||||
'height' => AVATAR_STREAM_SIZE,
|
'height' => AVATAR_STREAM_SIZE,
|
||||||
|
@ -58,22 +58,15 @@ class ProfileMiniList extends ProfileList
|
|||||||
return new ProfileMiniListItem($profile, $this->action);
|
return new ProfileMiniListItem($profile, $this->action);
|
||||||
}
|
}
|
||||||
|
|
||||||
function showProfiles()
|
function maxProfiles()
|
||||||
{
|
{
|
||||||
$cnt = 0;
|
return PROFILES_PER_MINILIST;
|
||||||
|
|
||||||
while ($this->profile->fetch()) {
|
|
||||||
$cnt++;
|
|
||||||
if ($cnt > PROFILES_PER_MINILIST) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$pli = $this->newListItem($this->profile);
|
|
||||||
$pli->show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $cnt;
|
function avatarSize()
|
||||||
|
{
|
||||||
|
return AVATAR_MINI_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class ProfileMiniListItem extends ProfileListItem
|
class ProfileMiniListItem extends ProfileListItem
|
||||||
|
@ -130,17 +130,15 @@ class SortableSubscriptionList extends SubscriptionList
|
|||||||
|
|
||||||
function showProfiles()
|
function showProfiles()
|
||||||
{
|
{
|
||||||
$cnt = 0;
|
$profiles = $this->profile->fetchAll();
|
||||||
|
|
||||||
while ($this->profile->fetch()) {
|
$cnt = count($profiles);
|
||||||
$cnt++;
|
|
||||||
if($cnt > PROFILES_PER_PAGE) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
$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();
|
$pli->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user