/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk

« back to all changes in this revision

Viewing changes to codeigniter/system/libraries/Pagination.php

  • Committer: Gustav Hatvigsson
  • Date: 2013-05-30 12:02:31 UTC
  • mfrom: (85.1.28 lenasys)
  • Revision ID: gustav.hartvigsson@gmail.com-20130530120231-ttqgqjqw2w8enn7g
Merged Ohlsons changes:
added function to get ssn and name for the registrationspages in the user model.
added the registrationpage for students.
edited the registration page for instructors
edited the css for both the registrationpages
minor fix to registration css

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
2
/**
 
3
 * CodeIgniter
 
4
 *
 
5
 * An open source application development framework for PHP 5.1.6 or newer
 
6
 *
 
7
 * @package             CodeIgniter
 
8
 * @author              ExpressionEngine Dev Team
 
9
 * @copyright   Copyright (c) 2008 - 2011, EllisLab, Inc.
 
10
 * @license             http://codeigniter.com/user_guide/license.html
 
11
 * @link                http://codeigniter.com
 
12
 * @since               Version 1.0
 
13
 * @filesource
 
14
 */
 
15
 
 
16
// ------------------------------------------------------------------------
 
17
 
 
18
/**
 
19
 * Pagination Class
 
20
 *
 
21
 * @package             CodeIgniter
 
22
 * @subpackage  Libraries
 
23
 * @category    Pagination
 
24
 * @author              ExpressionEngine Dev Team
 
25
 * @link                http://codeigniter.com/user_guide/libraries/pagination.html
 
26
 */
 
27
class CI_Pagination {
 
28
 
 
29
        var $base_url                   = ''; // The page we are linking to
 
30
        var $prefix                             = ''; // A custom prefix added to the path.
 
31
        var $suffix                             = ''; // A custom suffix added to the path.
 
32
 
 
33
        var $total_rows                 =  0; // Total number of items (database results)
 
34
        var $per_page                   = 10; // Max number of items you want shown per page
 
35
        var $num_links                  =  2; // Number of "digit" links to show before/after the currently viewed page
 
36
        var $cur_page                   =  0; // The current page being viewed
 
37
        var $use_page_numbers   = FALSE; // Use page number for segment instead of offset
 
38
        var $first_link                 = '&lsaquo; First';
 
39
        var $next_link                  = '&gt;';
 
40
        var $prev_link                  = '&lt;';
 
41
        var $last_link                  = 'Last &rsaquo;';
 
42
        var $uri_segment                = 3;
 
43
        var $full_tag_open              = '';
 
44
        var $full_tag_close             = '';
 
45
        var $first_tag_open             = '';
 
46
        var $first_tag_close    = '&nbsp;';
 
47
        var $last_tag_open              = '&nbsp;';
 
48
        var $last_tag_close             = '';
 
49
        var $first_url                  = ''; // Alternative URL for the First Page.
 
50
        var $cur_tag_open               = '&nbsp;<strong>';
 
51
        var $cur_tag_close              = '</strong>';
 
52
        var $next_tag_open              = '&nbsp;';
 
53
        var $next_tag_close             = '&nbsp;';
 
54
        var $prev_tag_open              = '&nbsp;';
 
55
        var $prev_tag_close             = '';
 
56
        var $num_tag_open               = '&nbsp;';
 
57
        var $num_tag_close              = '';
 
58
        var $page_query_string  = FALSE;
 
59
        var $query_string_segment = 'per_page';
 
60
        var $display_pages              = TRUE;
 
61
        var $anchor_class               = '';
 
62
 
 
63
        /**
 
64
         * Constructor
 
65
         *
 
66
         * @access      public
 
67
         * @param       array   initialization parameters
 
68
         */
 
69
        public function __construct($params = array())
 
70
        {
 
71
                if (count($params) > 0)
 
72
                {
 
73
                        $this->initialize($params);
 
74
                }
 
75
 
 
76
                if ($this->anchor_class != '')
 
77
                {
 
78
                        $this->anchor_class = 'class="'.$this->anchor_class.'" ';
 
79
                }
 
80
 
 
81
                log_message('debug', "Pagination Class Initialized");
 
82
        }
 
83
 
 
84
        // --------------------------------------------------------------------
 
85
 
 
86
        /**
 
87
         * Initialize Preferences
 
88
         *
 
89
         * @access      public
 
90
         * @param       array   initialization parameters
 
91
         * @return      void
 
92
         */
 
93
        function initialize($params = array())
 
94
        {
 
95
                if (count($params) > 0)
 
96
                {
 
97
                        foreach ($params as $key => $val)
 
98
                        {
 
99
                                if (isset($this->$key))
 
100
                                {
 
101
                                        $this->$key = $val;
 
102
                                }
 
103
                        }
 
104
                }
 
105
        }
 
106
 
 
107
        // --------------------------------------------------------------------
 
108
 
 
109
        /**
 
110
         * Generate the pagination links
 
111
         *
 
112
         * @access      public
 
113
         * @return      string
 
114
         */
 
115
        function create_links()
 
116
        {
 
117
                // If our item count or per-page total is zero there is no need to continue.
 
118
                if ($this->total_rows == 0 OR $this->per_page == 0)
 
119
                {
 
120
                        return '';
 
121
                }
 
122
 
 
123
                // Calculate the total number of pages
 
124
                $num_pages = ceil($this->total_rows / $this->per_page);
 
125
 
 
126
                // Is there only one page? Hm... nothing more to do here then.
 
127
                if ($num_pages == 1)
 
128
                {
 
129
                        return '';
 
130
                }
 
131
 
 
132
                // Set the base page index for starting page number
 
133
                if ($this->use_page_numbers)
 
134
                {
 
135
                        $base_page = 1;
 
136
                }
 
137
                else
 
138
                {
 
139
                        $base_page = 0;
 
140
                }
 
141
 
 
142
                // Determine the current page number.
 
143
                $CI =& get_instance();
 
144
 
 
145
                if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE)
 
146
                {
 
147
                        if ($CI->input->get($this->query_string_segment) != $base_page)
 
148
                        {
 
149
                                $this->cur_page = $CI->input->get($this->query_string_segment);
 
150
 
 
151
                                // Prep the current page - no funny business!
 
152
                                $this->cur_page = (int) $this->cur_page;
 
153
                        }
 
154
                }
 
155
                else
 
156
                {
 
157
                        if ($CI->uri->segment($this->uri_segment) != $base_page)
 
158
                        {
 
159
                                $this->cur_page = $CI->uri->segment($this->uri_segment);
 
160
 
 
161
                                // Prep the current page - no funny business!
 
162
                                $this->cur_page = (int) $this->cur_page;
 
163
                        }
 
164
                }
 
165
                
 
166
                // Set current page to 1 if using page numbers instead of offset
 
167
                if ($this->use_page_numbers AND $this->cur_page == 0)
 
168
                {
 
169
                        $this->cur_page = $base_page;
 
170
                }
 
171
 
 
172
                $this->num_links = (int)$this->num_links;
 
173
 
 
174
                if ($this->num_links < 1)
 
175
                {
 
176
                        show_error('Your number of links must be a positive number.');
 
177
                }
 
178
 
 
179
                if ( ! is_numeric($this->cur_page))
 
180
                {
 
181
                        $this->cur_page = $base_page;
 
182
                }
 
183
 
 
184
                // Is the page number beyond the result range?
 
185
                // If so we show the last page
 
186
                if ($this->use_page_numbers)
 
187
                {
 
188
                        if ($this->cur_page > $num_pages)
 
189
                        {
 
190
                                $this->cur_page = $num_pages;
 
191
                        }
 
192
                }
 
193
                else
 
194
                {
 
195
                        if ($this->cur_page > $this->total_rows)
 
196
                        {
 
197
                                $this->cur_page = ($num_pages - 1) * $this->per_page;
 
198
                        }
 
199
                }
 
200
 
 
201
                $uri_page_number = $this->cur_page;
 
202
                
 
203
                if ( ! $this->use_page_numbers)
 
204
                {
 
205
                        $this->cur_page = floor(($this->cur_page/$this->per_page) + 1);
 
206
                }
 
207
 
 
208
                // Calculate the start and end numbers. These determine
 
209
                // which number to start and end the digit links with
 
210
                $start = (($this->cur_page - $this->num_links) > 0) ? $this->cur_page - ($this->num_links - 1) : 1;
 
211
                $end   = (($this->cur_page + $this->num_links) < $num_pages) ? $this->cur_page + $this->num_links : $num_pages;
 
212
 
 
213
                // Is pagination being used over GET or POST?  If get, add a per_page query
 
214
                // string. If post, add a trailing slash to the base URL if needed
 
215
                if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE)
 
216
                {
 
217
                        $this->base_url = rtrim($this->base_url).'&amp;'.$this->query_string_segment.'=';
 
218
                }
 
219
                else
 
220
                {
 
221
                        $this->base_url = rtrim($this->base_url, '/') .'/';
 
222
                }
 
223
 
 
224
                // And here we go...
 
225
                $output = '';
 
226
 
 
227
                // Render the "First" link
 
228
                if  ($this->first_link !== FALSE AND $this->cur_page > ($this->num_links + 1))
 
229
                {
 
230
                        $first_url = ($this->first_url == '') ? $this->base_url : $this->first_url;
 
231
                        $output .= $this->first_tag_open.'<a '.$this->anchor_class.'href="'.$first_url.'">'.$this->first_link.'</a>'.$this->first_tag_close;
 
232
                }
 
233
 
 
234
                // Render the "previous" link
 
235
                if  ($this->prev_link !== FALSE AND $this->cur_page != 1)
 
236
                {
 
237
                        if ($this->use_page_numbers)
 
238
                        {
 
239
                                $i = $uri_page_number - 1;
 
240
                        }
 
241
                        else
 
242
                        {
 
243
                                $i = $uri_page_number - $this->per_page;
 
244
                        }
 
245
 
 
246
                        if ($i == 0 && $this->first_url != '')
 
247
                        {
 
248
                                $output .= $this->prev_tag_open.'<a '.$this->anchor_class.'href="'.$this->first_url.'">'.$this->prev_link.'</a>'.$this->prev_tag_close;
 
249
                        }
 
250
                        else
 
251
                        {
 
252
                                $i = ($i == 0) ? '' : $this->prefix.$i.$this->suffix;
 
253
                                $output .= $this->prev_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$i.'">'.$this->prev_link.'</a>'.$this->prev_tag_close;
 
254
                        }
 
255
 
 
256
                }
 
257
 
 
258
                // Render the pages
 
259
                if ($this->display_pages !== FALSE)
 
260
                {
 
261
                        // Write the digit links
 
262
                        for ($loop = $start -1; $loop <= $end; $loop++)
 
263
                        {
 
264
                                if ($this->use_page_numbers)
 
265
                                {
 
266
                                        $i = $loop;
 
267
                                }
 
268
                                else
 
269
                                {
 
270
                                        $i = ($loop * $this->per_page) - $this->per_page;
 
271
                                }
 
272
 
 
273
                                if ($i >= $base_page)
 
274
                                {
 
275
                                        if ($this->cur_page == $loop)
 
276
                                        {
 
277
                                                $output .= $this->cur_tag_open.$loop.$this->cur_tag_close; // Current page
 
278
                                        }
 
279
                                        else
 
280
                                        {
 
281
                                                $n = ($i == $base_page) ? '' : $i;
 
282
 
 
283
                                                if ($n == '' && $this->first_url != '')
 
284
                                                {
 
285
                                                        $output .= $this->num_tag_open.'<a '.$this->anchor_class.'href="'.$this->first_url.'">'.$loop.'</a>'.$this->num_tag_close;
 
286
                                                }
 
287
                                                else
 
288
                                                {
 
289
                                                        $n = ($n == '') ? '' : $this->prefix.$n.$this->suffix;
 
290
 
 
291
                                                        $output .= $this->num_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$n.'">'.$loop.'</a>'.$this->num_tag_close;
 
292
                                                }
 
293
                                        }
 
294
                                }
 
295
                        }
 
296
                }
 
297
 
 
298
                // Render the "next" link
 
299
                if ($this->next_link !== FALSE AND $this->cur_page < $num_pages)
 
300
                {
 
301
                        if ($this->use_page_numbers)
 
302
                        {
 
303
                                $i = $this->cur_page + 1;
 
304
                        }
 
305
                        else
 
306
                        {
 
307
                                $i = ($this->cur_page * $this->per_page);
 
308
                        }
 
309
 
 
310
                        $output .= $this->next_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$this->prefix.$i.$this->suffix.'">'.$this->next_link.'</a>'.$this->next_tag_close;
 
311
                }
 
312
 
 
313
                // Render the "Last" link
 
314
                if ($this->last_link !== FALSE AND ($this->cur_page + $this->num_links) < $num_pages)
 
315
                {
 
316
                        if ($this->use_page_numbers)
 
317
                        {
 
318
                                $i = $num_pages;
 
319
                        }
 
320
                        else
 
321
                        {
 
322
                                $i = (($num_pages * $this->per_page) - $this->per_page);
 
323
                        }
 
324
                        $output .= $this->last_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$this->prefix.$i.$this->suffix.'">'.$this->last_link.'</a>'.$this->last_tag_close;
 
325
                }
 
326
 
 
327
                // Kill double slashes.  Note: Sometimes we can end up with a double slash
 
328
                // in the penultimate link so we'll kill all double slashes.
 
329
                $output = preg_replace("#([^:])//+#", "\\1/", $output);
 
330
 
 
331
                // Add the wrapper HTML if exists
 
332
                $output = $this->full_tag_open.$output.$this->full_tag_close;
 
333
 
 
334
                return $output;
 
335
        }
 
336
}
 
337
// END Pagination Class
 
338
 
 
339
/* End of file Pagination.php */
 
340
/* Location: ./system/libraries/Pagination.php */
 
 
b'\\ No newline at end of file'