diff --git a/lib/tablelib.php b/lib/tablelib.php index 618a9052f78..6d7bfa9ebad 100644 --- a/lib/tablelib.php +++ b/lib/tablelib.php @@ -1,5 +1,12 @@ uniqueid = $uniqueid; + $this->request = array( + TABLE_VAR_SORT => 'tsort', + TABLE_VAR_HIDE => 'thide', + TABLE_VAR_SHOW => 'tshow', + TABLE_VAR_IFIRST => 'tifirst', + TABLE_VAR_ILAST => 'tilast', + TABLE_VAR_PAGE => 'page' + ); } function sortable($bool) { @@ -49,6 +65,14 @@ class flexible_table { $this->use_pages = true; } + function set_control_variables($variables) { + foreach($variables as $what => $variable) { + if(isset($this->request[$what])) { + $this->request[$what] = $variable; + } + } + } + function set_attribute($attribute, $value) { $this->attributes[$attribute] = $value; } @@ -153,15 +177,15 @@ class flexible_table { $this->sess = &$SESSION->flextable[$this->uniqueid]; - if(!empty($_GET['tshow']) && isset($this->columns[$_GET['tshow']])) { + if(!empty($_GET[$this->request[TABLE_VAR_SHOW]]) && isset($this->columns[$_GET[$this->request[TABLE_VAR_SHOW]]])) { // Show this column - $this->sess->collapse[$_GET['tshow']] = false; + $this->sess->collapse[$_GET[$this->request[TABLE_VAR_SHOW]]] = false; } - else if(!empty($_GET['thide']) && isset($this->columns[$_GET['thide']])) { + else if(!empty($_GET[$this->request[TABLE_VAR_HIDE]]) && isset($this->columns[$_GET[$this->request[TABLE_VAR_HIDE]]])) { // Hide this column - $this->sess->collapse[$_GET['thide']] = true; - if(array_key_exists($_GET['thide'], $this->sess->sortby)) { - unset($this->sess->sortby[$_GET['thide']]); + $this->sess->collapse[$_GET[$this->request[TABLE_VAR_HIDE]]] = true; + if(array_key_exists($_GET[$this->request[TABLE_VAR_HIDE]], $this->sess->sortby)) { + unset($this->sess->sortby[$_GET[$this->request[TABLE_VAR_HIDE]]]); } } @@ -173,21 +197,21 @@ class flexible_table { } if( - !empty($_GET['tsort']) && - (isset($this->columns[$_GET['tsort']]) || - (($_GET['tsort'] == 'firstname' || $_GET['tsort'] == 'lastname') && isset($this->columns['fullname'])) + !empty($_GET[$this->request[TABLE_VAR_SORT]]) && + (isset($this->columns[$_GET[$this->request[TABLE_VAR_SORT]]]) || + (($_GET[$this->request[TABLE_VAR_SORT]] == 'firstname' || $_GET[$this->request[TABLE_VAR_SORT]] == 'lastname') && isset($this->columns['fullname'])) )) { - if(empty($this->sess->collapse[$_GET['tsort']])) { - if(array_key_exists($_GET['tsort'], $this->sess->sortby)) { + if(empty($this->sess->collapse[$_GET[$this->request[TABLE_VAR_SORT]]])) { + if(array_key_exists($_GET[$this->request[TABLE_VAR_SORT]], $this->sess->sortby)) { // This key already exists somewhere. Change its sortorder and bring it to the top. - $sortorder = $this->sess->sortby[$_GET['tsort']] == SORT_ASC ? SORT_DESC : SORT_ASC; - unset($this->sess->sortby[$_GET['tsort']]); - $this->sess->sortby = array_merge(array($_GET['tsort'] => $sortorder), $this->sess->sortby); + $sortorder = $this->sess->sortby[$_GET[$this->request[TABLE_VAR_SORT]]] == SORT_ASC ? SORT_DESC : SORT_ASC; + unset($this->sess->sortby[$_GET[$this->request[TABLE_VAR_SORT]]]); + $this->sess->sortby = array_merge(array($_GET[$this->request[TABLE_VAR_SORT]] => $sortorder), $this->sess->sortby); } else { // Key doesn't exist, so just add it to the beginning of the array, ascending order - $this->sess->sortby = array_merge(array($_GET['tsort'] => SORT_ASC), $this->sess->sortby); + $this->sess->sortby = array_merge(array($_GET[$this->request[TABLE_VAR_SORT]] => SORT_ASC), $this->sess->sortby); } // Finally, make sure that no more than $this->maxsortkeys are present into the array if(!empty($this->maxsortkeys) && ($sortkeys = count($this->sess->sortby)) > $this->maxsortkeys) { @@ -198,26 +222,26 @@ class flexible_table { } } - if(isset($_GET['tilast'])) { - if(empty($_GET['tilast']) || is_numeric(strpos(get_string('alphabet'), $_GET['tilast']))) { - $this->sess->i_last = $_GET['tilast']; + if(isset($_GET[$this->request[TABLE_VAR_ILAST]])) { + if(empty($_GET[$this->request[TABLE_VAR_ILAST]]) || is_numeric(strpos(get_string('alphabet'), $_GET[$this->request[TABLE_VAR_ILAST]]))) { + $this->sess->i_last = $_GET[$this->request[TABLE_VAR_ILAST]]; } } - if(isset($_GET['tifirst'])) { - if(empty($_GET['tifirst']) || is_numeric(strpos(get_string('alphabet'), $_GET['tifirst']))) { - $this->sess->i_first = $_GET['tifirst']; + if(isset($_GET[$this->request[TABLE_VAR_IFIRST]])) { + if(empty($_GET[$this->request[TABLE_VAR_IFIRST]]) || is_numeric(strpos(get_string('alphabet'), $_GET[$this->request[TABLE_VAR_IFIRST]]))) { + $this->sess->i_first = $_GET[$this->request[TABLE_VAR_IFIRST]]; } } if(empty($this->baseurl)) { $getcopy = $_GET; - unset($getcopy['tshow']); - unset($getcopy['thide']); - unset($getcopy['tsort']); - unset($getcopy['tifirst']); - unset($getcopy['tilast']); - unset($getcopy['page']); + unset($getcopy[$this->request[TABLE_VAR_SHOW]]); + unset($getcopy[$this->request[TABLE_VAR_HIDE]]); + unset($getcopy[$this->request[TABLE_VAR_SORT]]); + unset($getcopy[$this->request[TABLE_VAR_IFIRST]]); + unset($getcopy[$this->request[TABLE_VAR_ILAST]]); + unset($getcopy[$this->request[TABLE_VAR_PAGE]]); $strippedurl = strip_querystring(qualified_me()); @@ -250,7 +274,7 @@ class flexible_table { $this->sess->i_last = ''; } - $this->currpage = optional_param('page', 0); + $this->currpage = optional_param($this->request[TABLE_VAR_PAGE], 0); $this->setup = true; } @@ -324,7 +348,7 @@ class flexible_table { echo '
'.get_string('firstname').' : '; if(!empty($this->sess->i_first)) { - echo ''.$strall.''; + echo ''.$strall.''; } else { echo ''.$strall.''; } @@ -332,7 +356,7 @@ class flexible_table { if ($letter == $this->sess->i_first) { echo ' '.$letter.''; } else { - echo ' '.$letter.''; + echo ' '.$letter.''; } } echo '
'; @@ -341,7 +365,7 @@ class flexible_table { echo '
'.get_string('lastname').' : '; if(!empty($this->sess->i_last)) { - echo ''.$strall.''; + echo ''.$strall.''; } else { echo ''.$strall.''; } @@ -349,7 +373,7 @@ class flexible_table { if ($letter == $this->sess->i_last) { echo ' '.$letter.''; } else { - echo ' '.$letter.''; + echo ' '.$letter.''; } } echo '
'; @@ -360,7 +384,7 @@ class flexible_table { // Paging bar if($this->use_pages) { - print_paging_bar($this->totalrows, $this->currpage, $this->pagesize, $this->baseurl); + print_paging_bar($this->totalrows, $this->currpage, $this->pagesize, $this->baseurl, $this->request[TABLE_VAR_PAGE]); } if (empty($this->data)) { @@ -382,10 +406,10 @@ class flexible_table { if($this->is_collapsible) { if(!empty($this->sess->collapse[$column])) { - $icon_hide = ' '; + $icon_hide = ' '; } else if($this->headers[$index] !== NULL) { - $icon_hide = ' '; + $icon_hide = ' '; } } @@ -417,8 +441,8 @@ class flexible_table { $icon_sort_last = ' '; } } - $this->headers[$index] = ''.get_string('firstname').' '.$icon_sort_first.' / '. - ''.get_string('lastname').' '.$icon_sort_last; + $this->headers[$index] = ''.get_string('firstname').' '.$icon_sort_first.' / '. + ''.get_string('lastname').' '.$icon_sort_last; } break; @@ -432,7 +456,7 @@ class flexible_table { $icon_sort = ' '; } } - $this->headers[$index] = ''.$this->headers[$index].''; + $this->headers[$index] = ''.$this->headers[$index].''; } } @@ -492,7 +516,7 @@ class flexible_table { // Paging bar if($this->use_pages) { - print_paging_bar($this->totalrows, $this->currpage, $this->pagesize, $this->baseurl); + print_paging_bar($this->totalrows, $this->currpage, $this->pagesize, $this->baseurl, $this->request[TABLE_VAR_PAGE]); } }