Changeset 668

Show
Ignore:
Timestamp:
2008-07-04 23:33:47 (2 months ago)
Author:
arthus
Message:

Implemented paging functionality

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • plugins/lifestream/trunk/lifestream.plugin.php

    r667 r668  
    6161        $rules[] = new RewriteRule(array( 
    6262            'name' => 'lifestream', 
    63             'parse_regex' => '/^' . Options::get('lifestream__lifeurl') . '[\/]{0,1}$/i', 
    64             'build_str' => Options::get('lifestream__lifeurl'), 
     63            'parse_regex' => '%^' . Options::get('lifestream__lifeurl') . '(/type/(?P<type>[^/]*))?(?:/page/(?P<page>\d+))?/?$%i', 
     64            'build_str' => Options::get('lifestream__lifeurl') . '(/{$type})(/page/{$page})', 
    6565            'handler' => 'LifeStreamHandler', 
    6666            'action' => 'display_lifestream', 
     
    121121                $rewritebase->add_validator('validate_required'); 
    122122                 
     123                // Add a text control for the entries per page 
     124                $perpage= $ui->append('text', 'perpage', 'lifestream__perpage', _t('Items Per Page')); 
     125                // Mark the field as required 
     126                $perpage->add_validator('validate_required'); 
     127                 
    123128                $submit= $ui->append( 'submit', 'submit', _t('Save') ); 
    124129 
     
    136141    } 
    137142 
    138     public function get_entries($type = 'any', $offset = 0, $number = 20) { 
     143    public function get_entries($type = 'any', $offset = 0, $number = 20, $format = 'object') { 
    139144        $query= ''; 
    140145        $query.= 'SELECT * FROM ' . DB::table('l_data'); 
     
    147152        $query.= ' LIMIT ' . $offset . ', ' . $number; 
    148153        $results = DB::get_results( $query ); 
    149          
    150         return $results; 
     154 
     155        if($format == 'object') { 
     156            return $results; 
     157        } elseif($format == 'array') { 
     158            $return = array(); 
     159            foreach($results as $result) { 
     160                $return[] = $result->to_array(); 
     161            } 
     162            return $return; 
     163        } else { 
     164            return $results; 
     165        } 
     166         
     167    } 
     168     
     169    public function json_entries($type = 'any', $offset = 0, $number = 20) { 
     170        return json_encode($this->get_entries($type, $offset, $number, 'array')); 
    151171    } 
    152172     
     
    157177    private $stream_contents; 
    158178    private $config; 
     179    private $streams; 
    159180    private $theme= null; 
    160181     
     
    165186     
    166187    public function act_display_lifestream() { 
    167          
    168         $this->fetch_fields(); 
    169          
    170         $this->theme->assign( 'lifestream', LifeStream::get_entries() ); 
     188        $vars = Controller::get_handler_vars(); 
     189                 
     190        if(!isset($vars['type'])) { 
     191            $vars['type'] = 'any'; 
     192        } 
     193         
     194        if(!isset($vars['page'])) { 
     195            $vars['page'] = 0; 
     196        } 
     197         
     198        $offset = $vars['page'] * Options::get('lifestream__perpage'); 
     199         
     200        $this->theme->assign( 'lifestream', LifeStream::get_entries($vars['type'], $offset, Options::get('lifestream__perpage')) ); 
    171201        $this->theme->assign( 'title', 'Lifestream - ' . Options::get( 'title' ) ); 
    172202        $this->theme->assign( 'streams', $this->config->stream ); 
    173203        $this->theme->display( 'lifestream' ); 
    174204    } 
    175      
    176  
    177205     
    178206    public function fetch_feeds() {