From f62f7d8f8edb2d63cc4294fe65a8077e1284848b Mon Sep 17 00:00:00 2001 From: thepurpleblob Date: Tue, 24 Mar 2009 10:52:50 +0000 Subject: [PATCH] MDL-18542: Reverting various checkins related to this bug. PLUS... proper 1 line fix included (merged from STABLE19) --- mod/data/edit.php | 85 ++++++++++++------------- mod/data/field/checkbox/field.class.php | 1 + mod/data/field/date/field.class.php | 11 +--- mod/data/field/file/field.class.php | 6 -- mod/data/field/latlong/field.class.php | 6 -- mod/data/field/textarea/field.class.php | 6 -- mod/data/lib.php | 20 +----- 7 files changed, 44 insertions(+), 91 deletions(-) diff --git a/mod/data/edit.php b/mod/data/edit.php index d7646a1676..84609ff288 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,17 @@ } include('tabs.php'); + /// Process incoming data for adding/updating records if ($datarecord = data_submitted() and confirm_sesskey()) { + $ignorenames = array('MAX_FILE_SIZE','sesskey','d','rid','saveandview','cancel'); // strings to be ignored in input data + + $ignorenames = array('MAX_FILE_SIZE','sesskey','d','rid','saveandview','cancel'); // strings to be ignored in input data + + $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 +165,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 +200,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 +228,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); - } - if ($field) { - $field->update_content($recordid, $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($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 +251,6 @@ } } // End of form processing - - /// Print the browsing interface $patterns = array(); //tags to replace @@ -271,9 +274,6 @@ if ($data->addtemplate){ $possiblefields = $DB->get_records('data_fields', array('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 +281,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 +298,6 @@ } echo ''; print_simple_box_end(); - - // add list of fields to form (MDL-18542) - foreach ($data->fieldids as $fieldid) { - echo "\n"; - } - echo ''; @@ -328,7 +321,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/checkbox/field.class.php b/mod/data/field/checkbox/field.class.php index fb49d84584..a58fa80f2f 100755 --- a/mod/data/field/checkbox/field.class.php +++ b/mod/data/field/checkbox/field.class.php @@ -45,6 +45,7 @@ class data_field_checkbox extends data_field_base { if ($checkbox === '') { continue; // skip empty lines } + $str .= ''; $str .= '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; @@ -89,9 +82,11 @@ class data_field_date extends data_field_base { $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 8711872d0a..bb58c0c799 100755 --- a/mod/data/field/file/field.class.php +++ b/mod/data/field/file/field.class.php @@ -67,12 +67,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 81c047c5f8..87ed62a7d4 100755 --- a/mod/data/field/latlong/field.class.php +++ b/mod/data/field/latlong/field.class.php @@ -65,12 +65,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, $DB; $lats = $DB->get_records_sql_menu('SELECT id, content FROM {data_content} WHERE fieldid=? GROUP BY content ORDER BY content', array($this->field->id)); diff --git a/mod/data/field/textarea/field.class.php b/mod/data/field/textarea/field.class.php index dbd10c9f40..a2a11d6a73 100755 --- a/mod/data/field/textarea/field.class.php +++ b/mod/data/field/textarea/field.class.php @@ -63,12 +63,6 @@ class data_field_textarea extends data_field_base { $str .= ''; return $str; } - - function list_add_field(&$fields) { - $fields[] = $this->field->id; - $fields[] = $this->field->id.'_content1'; - return true; - } function display_search_field($value = '') { diff --git a/mod/data/lib.php b/mod/data/lib.php index c875b8c9f5..eb7835e789 100755 --- a/mod/data/lib.php +++ b/mod/data/lib.php @@ -193,11 +193,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 .= '
'; @@ -205,14 +200,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() { @@ -384,11 +371,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 = $DB->get_records('data_fields', array('dataid'=>$data->id), 'id')) { @@ -415,7 +397,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.']]'; } -- 2.39.5