/** * Removes instructors and waitlisted users, and adds permission limits, if applicable. * * @param array $filters An array of requested filter data. Formatted like [filtername]=>[data]. * @return array An array consisting of the SQL WHERE clause, and the parameters for the SQL. */ protected function get_filter_sql(array $filters) { list($filtersql, $filterparams) = parent::get_filter_sql($filters); $additionalfilters = array('(SELECT id FROM {local_elisprogram_cls_nstrct} WHERE classid = ' . $this->classid . ' AND userid=element.id) IS NULL', '(SELECT id FROM {local_elisprogram_waitlist} WHERE classid = ' . $this->classid . ' AND userid=element.id) IS NULL'); // Permissions. list($permadditionalfilters, $permadditionalparams) = $this->get_filter_sql_permissions(); $additionalfilters = array_merge($additionalfilters, $permadditionalfilters); $filterparams = array_merge($filterparams, $permadditionalparams); // Add our additional filters. if (!empty($additionalfilters)) { $filtersql = !empty($filtersql) ? $filtersql . ' AND ' . implode(' AND ', $additionalfilters) : 'WHERE ' . implode(' AND ', $additionalfilters); } return array($filtersql, $filterparams); }
/** * Limits results according to permissions. * @param array $filters An array of requested filter data. Formatted like [filtername]=>[data]. * @return array An array consisting of the SQL WHERE clause, and the parameters for the SQL. */ protected function get_filter_sql(array $filters) { global $USER; list($filtersql, $filterparams) = parent::get_filter_sql($filters); $additionalfilters = array(); // Permissions. list($permadditionalfilters, $permadditionalparams) = $this->get_filter_sql_permissions(); $additionalfilters = array_merge($additionalfilters, $permadditionalfilters); $filterparams = array_merge($filterparams, $permadditionalparams); // Add our additional filters. $filtersql = !empty($filtersql) ? $filtersql . ' AND ' . implode(' AND ', $additionalfilters) : 'WHERE ' . implode(' AND ', $additionalfilters); return array($filtersql, $filterparams); }