/** * Adds the custom field tables, if necessary, to the JOIN sql. * * @param array $filters An array of active filters to use to determne join sql. * @return array An array of JOIN sql fragments. */ protected function get_join_sql(array $filters = array()) { $joinsql = parent::get_join_sql($filters); $joinsql[] = 'JOIN {' . curriculum::TABLE . '} pgm ON pgm.id = element.curid'; $activecustomfields = array_intersect_key($this->custom_fields, $filters); if (!empty($activecustomfields)) { $joinsql[] = 'JOIN {context} ctx ON ctx.instanceid = element.id AND ctx.contextlevel=' . CONTEXT_ELIS_TRACK; foreach ($activecustomfields as $fieldname => $field) { $customfieldjoin = 'LEFT JOIN {local_eliscore_fld_data_' . $field->datatype . '} ' . $fieldname . ' ON '; $customfieldjoin .= $fieldname . '.contextid = ctx.id AND ' . $fieldname . '.fieldid=' . $field->id; $joinsql[] = $customfieldjoin; } } return $joinsql; }