diff -Nrup moodle_2.6de_search_conditions/question/editlib.php moodle/question/editlib.php --- moodle_2.6de_search_conditions/question/editlib.php 2013-08-13 08:35:34.657340759 -0500 +++ moodle/question/editlib.php 2013-08-20 10:46:42.934348470 -0500 @@ -966,15 +966,48 @@ class question_bank_view { } protected function wanted_columns() { - $columns = array('checkbox', 'qtype', 'questionname', 'editaction', - 'previewaction', 'moveaction', 'deleteaction', 'creatorname', - 'modifiername'); + global $CFG; + if (empty($CFG->questionbankcolumns)) { + $CFG->questionbankcolumns = 'checkbox,qtype,questionname,editaction,previewaction,moveaction,deleteaction,creatorname,modifiername'; + } + foreach ( preg_split('/,/', $CFG->questionbankcolumns) as $fullname ) { + $column = self::get_column_type($fullname); + if ($column) { + $columns[] = $column; + } + } if (optional_param('qbshowtext', false, PARAM_BOOL)) { $columns[] = 'questiontext'; } return $columns; } + protected function get_column_type($column_franken) { + if ( ! empty($this->knowncolumntypes[$column_franken]) ) { + return $this->knowncolumntypes[$column_franken]; + } + list($plugintype, $pluginname_column) = core_component::normalize_component($column_franken); + list($pluginname, $columnname) = explode('|', $pluginname_column); + if ($plugintype == 'core' and is_null($pluginname)) { + $component = 'core'; + } else { + $component = $plugintype.'_'.$pluginname; + } + + if ( empty($knowncolumntypes[$component]) ) { + require_once(core_component::get_plugin_directory($plugintype, $pluginname) . '/lib.php'); + $function = $component.'_question_bank_column_types'; + if (function_exists($function)) { + $this->knowncolumntypes[$component] = $function($this); + } else { + $errstrings = (object)array('franken'=>$column_franken, 'component'=>$column_franken, 'function'=>$component.'_question_bank_column_types'); + print_error('columntypesundefined', 'question', null, $errstrings); + } + } + return $this->knowncolumntypes[$component][$columnname]; + } + + /** * Specify the column heading * @@ -1015,15 +1048,14 @@ class question_bank_view { protected function init_columns($wanted, $heading = '') { $this->visiblecolumns = array(); $this->extrarows = array(); - foreach ($wanted as $colname) { - if (!isset($this->knowncolumntypes[$colname])) { - throw new coding_exception('Unknown column type ' . $colname . ' requested in init columns.'); + foreach ($wanted as $column) { + if (!self::get_column_type($column->get_name())) { + throw new coding_exception('Unknown column type ' . $column->get_name() . ' requested in init columns.'); } - $column = $this->knowncolumntypes[$colname]; if ($column->is_extra_row()) { - $this->extrarows[$colname] = $column; + $this->extrarows[$column->get_name()] = $column; } else { - $this->visiblecolumns[$colname] = $column; + $this->visiblecolumns[$column->get_name()] = $column; } } $this->requiredcolumns = array_merge($this->visiblecolumns, $this->extrarows);