public static function buildPaging($page, $num) { $range = array('limit' => 10, 'offset' => 0); if (isset($page['limit']) && $page['limit'] !== null) { $range['limit'] = $page['limit']; } if (isset($page['offset']) && $page['offset'] !== null) { $range['offset'] = $page['offset']; } $icons = array('first' => array('name' => 'Navigation/First', 'enabled' => true), 'previous' => array('name' => 'Navigation/Previous', 'enabled' => true), 'last' => array('name' => 'Navigation/Last', 'enabled' => true), 'next' => array('name' => 'Navigation/Next', 'enabled' => true)); if ($num < $range['limit']) { $range['offset'] = 0; } if ($range['offset'] == 0) { $icons['first']['enabled'] = false; $icons['previous']['enabled'] = false; } if ($range['offset'] + $range['limit'] >= $num) { $icons['next']['enabled'] = false; $icons['last']['enabled'] = false; } $xmlOutput = DataCenterXml::open('div', array('class' => 'paging', 'align' => 'center')); foreach ($icons as $icon => $options) { $attributes = array('class' => 'icon' . (!$options['enabled'] ? '-disabled' : '')); $attributes['class'] .= ' ' . $icon; $iconRange = array('limit' => $range['limit']); if ($options['enabled']) { switch ($icon) { case 'first': $iconRange['offset'] = 0; break; case 'previous': $iconRange['offset'] = max($range['offset'] - $range['limit'], 0); break; case 'next': $iconRange['offset'] = min($range['offset'] + $range['limit'], $num - 1); break; case 'last': $iconRange['offset'] = $num - $range['limit']; break; } $attributes = array_merge($attributes, DataCenterXml::buildLink(array_merge($page, $iconRange))); } $xmlOutput .= DataCenterXml::icon($options['name'], $options['enabled'], $attributes); } $xmlOutput .= DataCenterXml::div(array('class' => 'label'), DataCenterUI::message('label', 'range', $num)); $xmlOutput .= DataCenterXml::close('div'); return $xmlOutput; }