예제 #1
0
 /**
  * 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;
 }