Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 34
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
CargoDeferredFormat
0.00% covered (danger)
0.00%
0 / 34
0.00% covered (danger)
0.00%
0 / 2
132
0.00% covered (danger)
0.00%
0 / 1
 isDeferred
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 sqlQueriesToQueryParams
0.00% covered (danger)
0.00%
0 / 33
0.00% covered (danger)
0.00%
0 / 1
110
 queryAndDisplay
n/a
0 / 0
n/a
0 / 0
0
1<?php
2/**
3 * @author Yaron Koren
4 * @ingroup Cargo
5 *
6 * Abstract class for formats that run the query or queries themselves,
7 * instead of getting the results passed in to them.
8 */
9
10abstract class CargoDeferredFormat extends CargoDisplayFormat {
11    public static function isDeferred() {
12        return true;
13    }
14
15    /**
16     * Turns one or more Cargo SQL query objects into a set of URL
17     * query string parameters.
18     *
19     * @param array $sqlQueries
20     * @return array|null
21     */
22    public function sqlQueriesToQueryParams( $sqlQueries ) {
23        $queryParams = [
24            'tables' => [],
25            'join on' => [],
26            'fields' => [],
27            'where' => [],
28        ];
29        if ( count( $sqlQueries ) == 0 ) {
30            return null;
31        } elseif ( count( $sqlQueries ) == 1 ) {
32            $sqlQuery = $sqlQueries[0];
33            $queryParams['tables'] = $sqlQuery->mTablesStr;
34            if ( $sqlQuery->mJoinOnStr != '' ) {
35                $queryParams['join on'] = $sqlQuery->mJoinOnStr;
36            }
37            if ( $sqlQuery->mFieldsStr != '' ) {
38                $queryParams['fields'] = $sqlQuery->mFieldsStr;
39            }
40            if ( $sqlQuery->mWhereStr != '' ) {
41                $queryParams['where'] = $sqlQuery->mOrigWhereStr;
42            }
43            if ( $sqlQuery->mGroupByStr != '' ) {
44                $queryParams['group by'] = $sqlQuery->mOrigGroupByStr;
45            }
46            if ( $sqlQuery->mHavingStr != '' ) {
47                $queryParams['having'] = $sqlQuery->mHavingStr;
48            }
49            $queryParams['order by'] = $sqlQuery->mOrigOrderBy;
50            if ( $sqlQuery->mQueryLimit != '' ) {
51                $queryParams['limit'] = $sqlQuery->mQueryLimit;
52            }
53        } else {
54            foreach ( $sqlQueries as $sqlQuery ) {
55                $queryParams['tables'][] = $sqlQuery->mTablesStr;
56                $queryParams['join on'][] = $sqlQuery->mJoinOnStr;
57                $queryParams['fields'][] = $sqlQuery->mFieldsStr;
58                $queryParams['where'][] = $sqlQuery->mOrigWhereStr;
59                $queryParams['group by'][] = $sqlQuery->mOrigGroupByStr;
60                $queryParams['order by'][] = $sqlQuery->mOrigOrderBy;
61                $queryParams['limit'][] = $sqlQuery->mQueryLimit;
62            }
63        }
64
65        return $queryParams;
66    }
67
68    /**
69     * Must be defined for any class that inherits from this one.
70     */
71    abstract public function queryAndDisplay( $sqlQueries, $displayParams, $querySpecificParams = null );
72
73}