Class: Results
Source Location: /blogs/inc/_core/ui/results/_results.class.php
Class Results
| Child Class | Description |
|---|---|
| ArchiveList | Archive List Class |
| ResultSel | ResultSel class: displays Results and provides Selection capabilities |
| DataObjectList | Data Object List Base Class |
| FilteredResults |
| Inherited Properties | Inherited Methods | Inherited Constants |
|---|---|---|
|
Inherited From Table Inherited From Widget |
Inherited From Table
Inherited From Widget
|
| DataObjectCache | $Cache | Cache to use to instantiate an object and cache it for each line of results. |
| mixed | $cols | Definitions for each column: |
| boolean | $col_headers | Do we want to display column headers? |
| array | $current_group_ID | Current group identifier (by level/depth) |
| integer | $current_idx | Current object idx in $rows array |
| mixed | $current_Obj | This will hold the object instantiated by the Cache for the current line. |
| mixed | $functions_area | Parameters for the functions area (to display functions at the end of results array): |
| integer | $global_idx | idx relative to whole list (range: 0 to total_rows-1) |
| mixed | $global_is_first | Is this gobally the 1st item in the list? (NOT just the 1st in current page) |
| mixed | $global_is_last | Is this gobally the last item in the list? (NOT just the last in current page) |
| mixed | $group_by | DB fieldname to group on. |
| mixed | $group_by_obj_prop | Object property/properties to group on. |
| mixed | $grp_cols | Definitions for each GROUP column: |
| string | $ID_col | Fieldname to detect empty data rows. |
| mixed | $limit | Number of lines per page |
| mixed | $nofollow_pagenav | Should there be nofollows on page navigation |
| array | $order_callbacks | List of sortable columns by callback ("order_objects_callback" and "order_rows_callback") |
| mixed | $order_field_list | List of sortable fields |
| mixed | $order_param | |
| mixed | $page | Current page |
| mixed | $page_ID_array | Array of IDs for current page. |
| mixed | $page_ID_list | List of IDs for current page. |
| mixed | $page_param | URL param names |
| mixed | $result_num_rows | Number of rows in result set for current page. |
| mixed | $rows | Array of DB rows for current page. |
| mixed | $sql | SQL query |
| mixed | $total_rows | Total number of rows (if > $limit, it will result in multiple pages) |
| Results | Results() | Constructor |
| integer | callback_group_by_obj_prop() | Callback, to sort Result::$rows according to Result::$group_by_obj_prop. |
| void | count_total_rows() | Count the total number of rows of the SQL result (all pages) |
| int | display() | Display paged list/table based on object parameters |
| void | display_body() | Display list/table body. |
| void | display_first() | returns the link to the first page, if necessary |
| void | display_functions() | Display the functions |
| boolean | display_if_empty() | Template function: display message if list is empty |
| void | display_init() | Initialize things in order to be ready for displaying. |
| void | display_last() | returns the link to the last page, if necessary |
| void | display_nav() | Display navigation text, based on template. |
| void | display_next() | returns a link to next pages, if necessary |
| void | display_prev() | returns a link to previous pages, if necessary |
| void | display_totals() | Display totals line if set. |
| void | first() | Returns the first page number to be displayed in the list |
| array | get_col_sort_values() | Returns values needed to make sort links for a given column |
| integer | get_num_rows() | Get number of rows available for display |
| string | get_order_field_list() | Returns order field list add to SQL query: |
| void | get_page_ID_array() | Get an array of IDs for current page |
| void | get_page_ID_list() | Get a list of IDs for current page |
| void | instantiate_page_to_Cache() | Note: this function might actually not be very useful. |
| void | last() | returns the last page number to be displayed in the list |
| void | mergesort() | Merge sort. This is required to not re-order items when sorting for e.g. grouping at the end. |
| void | move_icons() | |
| void | next_idx() | Increment and update all necessary counters before processing a new line in result set |
| integer | order_callback_wrapper_objects() | Wrapper method to http://www.php.net/usort, which instantiates objects and passed them on to the order callback. |
| integer | order_callback_wrapper_rows() | Wrapper method to http://www.php.net/usort, which passes the rows to the order callback. |
| void | page_list() | Returns the page link list under the table |
| void | page_scroll_list() | |
| void | parse_col_content() | Handle variable subtitutions for column contents. |
| void | query() | Run the query now! |
| string | replace_callback() | Widget callback for template vars. |
| void | reset() | Reset the query -- EXPERIMENTAL |
| void | restart() | Rewind resultset |
Cache to use to instantiate an object and cache it for each line of results.
For this to work, all columns of the related table must be selected in the query
Definitions for each column:
- th
- td
- order: SQL column name(s) to sort by (delimited by comma)
- order_objects_callback: a PHP callback function (can be array($Object, $method)). This gets three params: $a, $b, $desc. $a and $b are instantiated objects from Results::$Cache $desc is either 'ASC' or 'DESC'. The function has to return -1, 0 or 1, according to if the $a < $b, $a == $b or $a > $b.
- order_rows_callback: a PHP callback function (can be array($Object, $method)). This gets three params: $a, $b, $desc. $a and $b are DB row objects $desc is either 'ASC' or 'DESC'. The function has to return -1, 0 or 1, according to if the $a < $b, $a == $b or $a > $b.
- td_class
This will hold the object instantiated by the Cache for the current line.
Parameters for the functions area (to display functions at the end of results array):
Is this gobally the 1st item in the list? (NOT just the 1st in current page)
Is this gobally the last item in the list? (NOT just the last in current page)
DB fieldname to group on.
Leave empty if you don't want to group.
NOTE: you have to use ORDER BY goup_column in your query for this to work correctly.
Object property/properties to group on.
Objects get instantiated and grouped by the given property/member value.
NOTE: this requires Result::$Cache to be set and is probably only useful, if you do not use Result::$limit, because grouping appears after the relevant data has been pulled from DB.
Definitions for each GROUP column:
-td -td_start. A column with no def will de displayed using the default defs from Results::$params, that is to say, one of these:
- $this->params['grp_col_start_first'];
- $this->params['grp_col_start_last'];
- $this->params['grp_col_start'];
Fieldname to detect empty data rows.
Empty data rows can happen when left joining on groups. Leave empty if you don't want to detect empty datarows.
API Tags:| Usedby: | Results::get_page_ID_array() |
| Usedby: | Results::get_page_ID_list() |
| Usedby: | Results::$page_ID_array |
| Usedby: | Results::$page_ID_list |
List of sortable columns by callback ("order_objects_callback" and "order_rows_callback")
Array of IDs for current page.
API Tags:| Uses: | Results::$ID_col |
List of IDs for current page.
API Tags:| Uses: | Results::$ID_col |
|
Constructor
Parameters:| string|integer | 6: |
SQL query used to count the total # of rows
|
| string | $sql: | SQL query |
| string | $param_prefix: | prefix to differentiate page/order params when multiple Results appear one same page |
| string | $default_order: | default ordering of columns (special syntax) if not specified in the URL params example: -A-- will sort in ascending order on 2nd column example: ---D will sort in descending order on 4th column |
| integer | $limit: | number of lines displayed on one page (0 to disable paging; null to use $UserSettings/results_per_page) |
| string | $count_sql: | SQL to get the total count of results |
| boolean | $init_page: |
Information Tags:
| Todo: | we might not want to count total rows when not needed... |
| Todo: | fplanque: I am seriously considering putting $count_sql into 2nd or 3rd position. Any prefs? |
| Todo: | dh> We might just use "SELECT SQL_CALC_FOUND_ROWS ..." and "FOUND_ROWS()"..! - available since MySQL 4 - would save one query just for counting! |
|
Callback, to sort Result::$rows according to Result::$group_by_obj_prop.
Parameters:| array | $row_a: | DB row for object A |
| array | $row_b: | DB row for object B |
| integer | $depth: | Depth, used internally (you can group on a list of member properties) |
|
Count the total number of rows of the SQL result (all pages)
This is done by dynamically modifying the SQL query and forging a COUNT() into it.
Parameters:| $sql_count: |
Information Tags:
| Todo: | dh> This might get done using SQL_CALC_FOUND_ROWS (I noted this somewhere else already) fp> I have a vague memory about issues with SQL_CALC_FOUND_ROWS. Maybe it was not returned accurate counts. Or maybe it didn't work with GROUP BY. Sth like that. |
| Todo: | allow overriding? |
| Todo: | handle problem of empty groups! |
- ArchiveList::count_total_rows() : Count the number of rows of the SQL result
|
Display paged list/table based on object parameters
This is the meat of this class!
Parameters:| array|NULL | $display_params: | |
| array | $fadeout: | Fadeout settings array( 'key column' => array of values ) or 'session' |
API Tags:
| Return: | # of rows displayed |
|
Display list/table body.
This includes groups and data rows.
|
returns the link to the first page, if necessary
Parameters:| $page_url: |
|
Display the functions
- ResultSel::display_functions() : Display functions
|
Template function: display message if list is empty
Parameters:| $params: |
API Tags:
| Return: | true if empty |
- CommentList::display_if_empty() : Template function: display message if list is empty
|
Initialize things in order to be ready for displaying.
This is useful when manually displaying, i-e: not by using Results::display()
Parameters:| array | $display_params: | ***please document*** |
| array | $fadeout: | Fadeout settings array( 'key column' => array of values ) or 'session' |
- Table::display_init()
- Initialize things in order to be ready for displaying.
|
returns the link to the last page, if necessary
Parameters:| $page_url: |
|
Display navigation text, based on template.
Parameters:| string | $template: | template: 'header' or 'footer' |
|
returns a link to next pages, if necessary
Parameters:| $page_url: |
|
returns a link to previous pages, if necessary
Parameters:| $page_url: |
|
Returns values needed to make sort links for a given column
Returns an array containing the following values:
- current_order : 'ASC', 'DESC' or ''
- order_asc : url to order in ascending order
- order_desc
- order_toggle : url to toggle sort order
| integer | $col_idx: | column to sort |
- ItemList2::get_col_sort_values() : Returns values needed to make sort links for a given column
|
Returns order field list add to SQL query:
API Tags:
| Return: | May be empty |
|
Get an array of IDs for current page
API Tags:
| Uses: | Results::$ID_col |
|
Get a list of IDs for current page
API Tags:
| Uses: | Results::$ID_col |
|
Note: this function might actually not be very useful.
If you define ->Cache before display, all rows will be instantiated on the fly. No need to restart et go through the rows a second time here.
Parameters:| DataObjectCache | &$Cache: |
|
Merge sort. This is required to not re-order items when sorting for e.g. grouping at the end.
Parameters:| array | &$array: | List of items to sort |
| callback | $cmp_function: | Sort function/method |
API Tags:
| See: | 38827 |
|
Information Tags:
| Todo: | Support Results::$order_callbacks |
|
Increment and update all necessary counters before processing a new line in result set
|
Wrapper method to http://www.php.net/usort, which instantiates objects and passed them on to the order callback.
Parameters:| $row_a: | ||
| $row_b: |
|
Wrapper method to http://www.php.net/usort, which passes the rows to the order callback.
Parameters:| $row_a: | ||
| $row_b: |
|
Returns the page link list under the table
Parameters:| $min: | ||
| $max: | ||
| $page_url: |
|
Handle variable subtitutions for column contents.
This is one of the key functions to look at when you want to use the Results class.
- $var$
- £var£
- #var#
- {row}
- %func()%
- ¤func()¤
| $content: |
|
Run the query now!
Will only run if it has not executed before.
Parameters:| $create_default_cols_if_needed: | ||
| $append_limit: | ||
| $append_order_by: | ||
| $query_title: |
- ItemListLight::query() : Run Query: GET DATA ROWS *** LIGHT ***
- ItemList2::query() : Run Query: GET DATA ROWS *** HEAVY ***
|
Widget callback for template vars.
This allows to replace template vars, see Widget::replace_callback().
Parameters:| $matches: |
- Table::replace_callback()
- Widget callback for template vars.
|
Reset the query -- EXPERIMENTAL
Useful in derived classes such as ItemList to requery with a slighlty moidified filterset
- ItemListLight::reset() : Reset the query -- EXPERIMENTAL
|
Rewind resultset
- ArchiveList::restart() : Rewind resultset
