MDL-41126 mod_data: optimised data entry generator
authorDevang Gaur <devang.only@gmail.com>
Wed, 10 Aug 2016 02:28:12 +0000 (07:58 +0530)
committerDevang Gaur <devang.only@gmail.com>
Wed, 10 Aug 2016 02:28:12 +0000 (07:58 +0530)
mod/data/tests/generator/lib.php

index 75c714d..86480c9 100644 (file)
@@ -214,7 +214,7 @@ class mod_data_generator extends testing_module_generator {
 
         // Validating whether required field are filled.
         foreach ($fields as $field) {
 
         // Validating whether required field are filled.
         foreach ($fields as $field) {
-            $fieldhascontent = false;
+            $fieldhascontent = true;
 
             if (in_array($field->type, $this->ignoredfieldtypes)) {
                 continue;
 
             if (in_array($field->type, $this->ignoredfieldtypes)) {
                 continue;
@@ -229,13 +229,21 @@ class mod_data_generator extends testing_module_generator {
 
                 $temp = explode('-', $contents[$fieldid], 3);
 
 
                 $temp = explode('-', $contents[$fieldid], 3);
 
-                $values['field_' . $fieldid . '_day'] = $temp[0];
-                $values['field_' . $fieldid . '_month'] = $temp[1];
-                $values['field_' . $fieldid . '_year'] = $temp[2];
+                $values['field_' . $fieldid . '_day'] = (int)trim($temp[0]);
+                $values['field_' . $fieldid . '_month'] = (int)trim($temp[1]);
+                $values['field_' . $fieldid . '_year'] = (int)trim($temp[2]);
+
+                // Year should be less than 2038, so it can be handled by 32 bit windows.
+                if ($values['field_' . $fieldid . '_year'] > 2038) {
+                    throw new coding_exception('DateTime::getTimestamp resturns false on 32 bit win for year beyond ' .
+                        '2038. Please use year less than 2038.');
+                }
+
+                $contents[$fieldid] = $values;
 
                 foreach ($values as $fieldname => $value) {
 
                 foreach ($values as $fieldname => $value) {
-                    if ($field->notemptyfield($value, $fieldname)) {
-                        continue 2;
+                    if (!$field->notemptyfield($value, $fieldname)) {
+                        $fieldhascontent = false;
                     }
                 }
             } else if ($field->type === 'textarea') {
                     }
                 }
             } else if ($field->type === 'textarea') {
@@ -244,9 +252,11 @@ class mod_data_generator extends testing_module_generator {
                 $values['field_' . $fieldid] = $contents[$fieldid];
                 $values['field_' . $fieldid . '_content1'] = 1;
 
                 $values['field_' . $fieldid] = $contents[$fieldid];
                 $values['field_' . $fieldid . '_content1'] = 1;
 
+                $contents[$fieldid] = $values;
+
                 foreach ($values as $fieldname => $value) {
                 foreach ($values as $fieldname => $value) {
-                    if ($field->notemptyfield($value, $fieldname)) {
-                        continue 2;
+                    if (!$field->notemptyfield($value, $fieldname)) {
+                        $fieldhascontent = false;
                     }
                 }
             } else if ($field->type === 'url') {
                     }
                 }
             } else if ($field->type === 'url') {
@@ -260,12 +270,13 @@ class mod_data_generator extends testing_module_generator {
                     $values['field_' . $fieldid . '_0'] = $contents[$fieldid];
                 }
 
                     $values['field_' . $fieldid . '_0'] = $contents[$fieldid];
                 }
 
+                $contents[$fieldid] = $values;
+
                 foreach ($values as $fieldname => $value) {
                 foreach ($values as $fieldname => $value) {
-                    if ($field->notemptyfield($value, $fieldname)) {
-                        continue 2;
+                    if (!$field->notemptyfield($value, $fieldname)) {
+                        $fieldhascontent = false;
                     }
                 }
                     }
                 }
-
             } else {
                 if ($field->notemptyfield($contents[$fieldid], 'field_' . $fieldid . '_0')) {
                     continue;
             } else {
                 if ($field->notemptyfield($contents[$fieldid], 'field_' . $fieldid . '_0')) {
                     continue;
@@ -278,68 +289,17 @@ class mod_data_generator extends testing_module_generator {
         }
 
         foreach ($contents as $fieldid => $content) {
         }
 
         foreach ($contents as $fieldid => $content) {
+            $field = data_get_field_from_id($fieldid, $data);
 
 
-            $field = $DB->get_record('data_fields', array('id' => $fieldid));
-            $field = data_get_field($field, $data);
-
-            if (in_array($field->field->type, $this->ignoredfieldtypes)) {
-                continue;
-            }
-
-            if ($field->type === 'date') {
-                $values = array();
-
-                $temp = explode('-', $content, 3);
-
-                $values['field_' . $fieldid . '_day'] = (int)trim($temp[0]);
-                $values['field_' . $fieldid . '_month'] = (int)trim($temp[1]);
-                $values['field_' . $fieldid . '_year'] = (int)trim($temp[2]);
-
-                // Year should be less than 2038, so it can be handled by 32 bit windows.
-                if ($values['field_' . $fieldid . '_year'] > 2038) {
-                    throw new coding_exception('DateTime::getTimestamp resturns false on 32 bit win for year beyond ' .
-                        '2038. Please use year less than 2038.');
-                }
-
-                foreach ($values as $fieldname => $value) {
-                    $field->update_content($recordid, $value, $fieldname);
-                }
-
-                continue;
-            }
-
-            if ($field->type === 'textarea') {
-                $values = array();
-
-                $values['field_' . $fieldid] = $content;
-                $values['field_' . $fieldid . '_content1'] = 1;
-
-                foreach ($values as $fieldname => $value) {
-                    $field->update_content($recordid, $value, $fieldname);
-                }
-
-                continue;
-            }
-
-            if ($field->type === 'url') {
-                $values = array();
+            if (is_array($content)) {
 
 
-                if (is_array($content)) {
-                    foreach ($content as $key => $value) {
-                        $values['field_' . $fieldid . '_' . $key] = $value;
-                    }
-                } else {
-                    $values['field_' . $fieldid . '_0'] = $content;
-                }
-
-                foreach ($values as $fieldname => $value) {
+                foreach ($content as $fieldname => $value) {
                     $field->update_content($recordid, $value, $fieldname);
                 }
 
                     $field->update_content($recordid, $value, $fieldname);
                 }
 
-                continue;
+            } else {
+                $field->update_content($recordid, $content);
             }
             }
-
-            $field->update_content($recordid, $contents[$fieldid]);
         }
 
         return $recordid;
         }
 
         return $recordid;