From 0791d2fbb5955d1b1989ee464025ca03943bbf95 Mon Sep 17 00:00:00 2001 From: thepurpleblob Date: Mon, 23 Mar 2009 21:22:52 +0000 Subject: [PATCH] Reverting changes in MDL-18542 (some more to do in fields, but this should un-break it). Checkbox error still extant. --- mod/data/edit.php | 81 +++++++++++--------------- mod/data/field/date/field.class.php | 12 ++-- mod/data/field/file/field.class.php | 6 -- mod/data/field/latlong/field.class.php | 6 -- mod/data/lib.php | 24 +------- 5 files changed, 42 insertions(+), 87 deletions(-) diff --git a/mod/data/edit.php b/mod/data/edit.php index 65ac035d8d4..215f9a3508b 100755 --- a/mod/data/edit.php +++ b/mod/data/edit.php @@ -31,7 +31,6 @@ $rid = optional_param('rid', 0, PARAM_INT); //record id $import = optional_param('import', 0, PARAM_INT); // show import form $cancel = optional_param('cancel', ''); // cancel an add - $fieldids = optional_param('fieldids',''); // ids of fields being edited $mode ='addtemplate'; //define the mode for this page, only 1 mode available if ($id) { @@ -139,10 +138,13 @@ } include('tabs.php'); + /// Process incoming data for adding/updating records if ($datarecord = data_submitted($CFG->wwwroot.'/mod/data/edit.php') and confirm_sesskey()) { + $ignorenames = array('MAX_FILE_SIZE','sesskey','d','rid','saveandview','cancel'); // strings to be ignored in input data + if ($rid) { /// Update some records /// All student edits are marked unapproved by default @@ -159,16 +161,15 @@ /// Update all content $field = NULL; - foreach ($fieldids as $fieldid) { - $bits = explode('_',$fieldid); - $justid = $bits[0]; - $name = "field_$fieldid"; - $value = optional_param( $name,'' ); - if (empty($field->field) || ($justid != $field->field->id)) { // Try to reuse classes - $field = data_get_field_from_id($fieldid, $data); - } - if ($field) { - $field->update_content($rid, $value, $name); + foreach ($datarecord as $name => $value) { + if (!in_array($name, $ignorenames)) { + $namearr = explode('_',$name); // Second one is the field id + if (empty($field->field) || ($namearr[1] != $field->field->id)) { // Try to reuse classes + $field = data_get_field_from_id($namearr[1], $data); + } + if ($field) { + $field->update_content($rid, $value, $name); + } } } @@ -195,19 +196,19 @@ $emptyform = true; // assume the worst - foreach ($fieldids as $fieldid) { - $bits = explode('_',$fieldid); - $justid = $bits[0]; - $name = "field_$fieldid"; - $value = optional_param( $name,'' ); - if (empty($field->field) || ($justid != $field->field->id)) { // Try to reuse classes - $field = data_get_field_from_id($fieldid, $data); - } - if ($field->notemptyfield($value, $name)) { - $emptyform = false; - break; // if anything has content, this form is not empty, so stop now! + foreach ($datarecord as $name => $value) { + if (!in_array($name, $ignorenames)) { + $namearr = explode('_', $name); // Second one is the field id + if (empty($field->field) || ($namearr[1] != $field->field->id)) { // Try to reuse classes + $field = data_get_field_from_id($namearr[1], $data); + } + if ($field->notemptyfield($value, $name)) { + $emptyform = false; + break; // if anything has content, this form is not empty, so stop now! + } } } + if ($emptyform){ //nothing gets written to database notify(get_string('emptyaddform','data')); } @@ -223,18 +224,18 @@ } //for each field in the add form, add it to the data_content. - foreach ($fieldids as $fieldid) { - $bits = explode('_',$fieldid); - $justid = $bits[0]; - $name = "field_$fieldid"; - $value = optional_param( $name,'' ); - if (empty($field->field) || ($justid != $field->field->id)) { // Try to reuse classes - $field = data_get_field_from_id($fieldid, $data); + foreach ($datarecord as $name => $value){ + if (!in_array($name, $ignorenames)) { + $namearr = explode('_', $name); // Second one is the field id + if (empty($field->field) || ($namearr[1] != $field->field->id)) { // Try to reuse classes + $field = data_get_field_from_id($namearr[1], $data); + } + if ($field) { + $field->update_content($recordid, $value, $name); + } } - if ($field) { - $field->update_content($recordid, $value, $name); - } - } + } + add_to_log($course->id, 'data', 'add', "view.php?d=$data->id&rid=$recordid", $data->id, $cm->id); notify(get_string('entrysaved','data')); @@ -246,8 +247,6 @@ } } // End of form processing - - /// Print the browsing interface $patterns = array(); //tags to replace @@ -271,9 +270,6 @@ if ($data->addtemplate){ $possiblefields = get_records('data_fields','dataid',$data->id,'id'); - // keep a record of the fields used on the form - $data->fieldids = array(); - ///then we generate strings to replace foreach ($possiblefields as $eachfield){ $field = data_get_field($eachfield, $data); @@ -281,7 +277,6 @@ $replacements[] = $field->display_add_field($rid); $patterns[]="[[".$field->field->name."#id]]"; $replacements[] = 'field_'.$field->field->id; - $field->list_add_field( $data->fieldids ); } $newtext = str_ireplace($patterns, $replacements, $data->{$mode}); @@ -299,12 +294,6 @@ } echo ''; print_simple_box_end(); - - // add list of fields to form (MDL-18542) - foreach ($data->fieldids as $fieldid) { - echo "\n"; - } - echo ''; @@ -328,7 +317,7 @@ helpbutton('importcsv', get_string('csvimport', 'data'), 'data', true, false); echo ''; echo ''.get_string('fielddelimiter', 'data').':'; - echo ''; + echo ''; echo get_string('defaultfielddelimiter', 'data').''; echo ''; echo ''.get_string('fieldenclosure', 'data').':'; diff --git a/mod/data/field/date/field.class.php b/mod/data/field/date/field.class.php index 4db137239dc..2bf672251c3 100755 --- a/mod/data/field/date/field.class.php +++ b/mod/data/field/date/field.class.php @@ -53,14 +53,7 @@ class data_field_date extends data_field_base { return $str; } - - function list_add_field(&$fields) { - $fields[] = $this->field->id.'_day'; - $fields[] = $this->field->id.'_month'; - $fields[] = $this->field->id.'_year'; - return true; - } - + //Enable the following three functions once core API issues have been addressed. function display_search_field($value=0) { return false; @@ -88,11 +81,14 @@ class data_field_date extends data_field_base { } function update_content($recordid, $value, $name='') { + $names = explode('_',$name); $name = $names[2]; // day month or year + $this->$name = $value; if ($this->day and $this->month and $this->year) { // All of them have been collected now + $content = new object; $content->fieldid = $this->field->id; $content->recordid = $recordid; diff --git a/mod/data/field/file/field.class.php b/mod/data/field/file/field.class.php index 8bc496489ea..8d98ec5cd21 100755 --- a/mod/data/field/file/field.class.php +++ b/mod/data/field/file/field.class.php @@ -70,12 +70,6 @@ class data_field_file extends data_field_base { return $str; } - function list_add_field(&$fields) { - $fields[] = $this->field->id.'_filename'; - $fields[] = $this->field->id.'_file'; - return true; - } - function display_search_field($value = '') { return ''; } diff --git a/mod/data/field/latlong/field.class.php b/mod/data/field/latlong/field.class.php index b2d9557849e..c5ef25a62ea 100755 --- a/mod/data/field/latlong/field.class.php +++ b/mod/data/field/latlong/field.class.php @@ -68,12 +68,6 @@ class data_field_latlong extends data_field_base { return $str; } - function list_add_field( &$fields ) { - $fields[] = $this->field->id.'_0'; - $fields[] = $this->field->id.'_1'; - return true; - } - function display_search_field($value = '') { global $CFG; $lats = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content'); diff --git a/mod/data/lib.php b/mod/data/lib.php index 01672d67626..3e157e9cf49 100755 --- a/mod/data/lib.php +++ b/mod/data/lib.php @@ -166,11 +166,6 @@ class data_field_base { // Base class for Database Field Types (see field/*/ $content = ''; } - // beware get_field returns false for new, empty records MDL-18567 - if ($content===false) { - $content=''; - } - $str = '
'; $str .= ''; $str .= '
'; @@ -178,14 +173,6 @@ class data_field_base { // Base class for Database Field Types (see field/*/ return $str; } - -// add the field ids to an existing array to track added form fields -// override if anything with multiple fields (e.g. date) - function list_add_field( &$fields ) { - $fields[] = $this->field->id; - return true; - } - // Print the relevant form element to define the attributes for this field // viewable by teachers only. function display_edit_field() { @@ -355,11 +342,6 @@ function data_generate_default_template(&$data, $template, $recordid=0, $form=fa return ''; } - // store generated field ids (if form) - if ($form) { - $data->fieldids = array(); - } - // get all the fields for that database if ($fields = get_records('data_fields', 'dataid', $data->id, 'id')) { @@ -386,7 +368,7 @@ function data_generate_default_template(&$data, $template, $recordid=0, $form=fa if ($form) { // Print forms instead of data $fieldobj = data_get_field($field, $data); $str .= $fieldobj->display_add_field($recordid); - $fieldobj->list_add_field( $data->fieldids ); + } else { // Just print the tag $str .= '[['.$field->name.']]'; } @@ -1336,7 +1318,7 @@ function data_print_comments($data, $record, $page=0, $mform=false) { $editor = optional_param('addcomment', 0, PARAM_BOOL); if (!$mform and !$editor) { echo '
'; - echo ''.get_string('addcomment', 'data').''; + echo ''.get_string('addcomment', 'data').''; echo '
'; } else { if (!$mform) { @@ -1853,7 +1835,7 @@ class PresetImporter { } else if (empty($newfields)) { error("New preset has no defined fields!"); } - echo '
'; }