Query helper

Rather than using MVC "Models", we use Query and Record helpers.

The query objects are nothing more than classes created in:

/app/library/query/

And are loaded with the function call:

$item_query = query_get('item');
$item_query = query_get('item', $config);

The object then exposes methods that relate to that thing, typically returning an array.

For example:

/app/library/query/user.php

<?php

    class user_query extends query {

        protected function setup($config) {
            $this->config = $config;
        }

        public function trainers_get() { // Might be based on license records.

            $db = db_get();

            $trainers = [];

            $sql = 'SELECT
                        u.id,
                        CONCAT(u.name_last, ", ", u.name_first) AS name
                    FROM
                        ' . DB_PREFIX . 'user AS u
                    WHERE
                        u.type = "trainer" AND
                        u.deleted = "0000-00-00 00:00:00"
                    ORDER BY
                        name';

            foreach ($db->fetch_all($sql) as $row) {
                $trainers[$row['id']] = $row['name'];
            }

            return $trainers;

        }

        public function search($config) {

            $config = array_merge(array(
                    'rules' => [], // licenses, courses, organisations, etc.
                    'rule_match' => 'all', // or 'any'
                    'fields' => array('id', 'name_first', 'name_last'),
                    'paginate' => false,
                    'order_sql' => NULL,
                    'limit_offset' => 0,
                    'limit_count' => NULL,
                ), $config);

            $db = db_get();

            // Processing

            return array(
                    'results' => $db->fetch_all($sql),
                    'paginator' => $paginator,
                );

        }

    }

?>