/** * Overrides the postSubmit function to add in additional metadata and data values. */ protected function postSubmit($isInsert) { require_once DOCROOT . 'client_helpers/helper_base.php'; $result = true; if (isset($this->submission['metaFields'])) { $currentRule = data_cleaner::get_rule($this->test_type); if (isset($this->submission['metaFields']['metadata']['value'])) { $metadata = helper_base::explode_lines_key_value_pairs($this->submission['metaFields']['metadata']['value']); $this->save_verification_rule_metadata($currentRule, $metadata); $data = data_cleaner::parse_test_file($this->submission['metaFields']['data']['value']); $this->save_verification_rule_data($currentRule, $data); $this->postProcessRule($currentRule); } } return true; }
/** * Process the content of a verification rule file. */ private function read_rule_content($rulesettings, $filename, $source_url) { if (!isset($rulesettings['metadata'])) { throw new exception("Missing Metadata section in {$filename}"); } if (!isset($rulesettings['metadata']['testtype'])) { throw new exception("Missing Metadata TestType value in {$filename}"); } require_once MODPATH . 'data_cleaner/plugins/data_cleaner.php'; $currentRule = data_cleaner::get_rule($rulesettings['metadata']['testtype']); // Ensure that the required key/value pairs for this rule type are all present. foreach ($currentRule['required'] as $category => $keys) { $category = strtolower($category); foreach ($keys as $key) { // every key must exist. A * key means that anything is accepted. if ($key = '*') { if (!isset($rulesettings[$category])) { throw new exception("Missing content for {$category} section in {$filename}. " . print_r($rulesettings, true)); } } elseif (!isset($rulesettings[$category][$key])) { throw new exception("Missing {$category} {$key} value in {$filename}"); } } } $this->model->save_verification_rule($source_url, $filename, $rulesettings['metadata']); $this->model->save_verification_rule_metadata($currentRule, $rulesettings['metadata']); unset($rulesettings['metadata']); if (!empty($rulesettings)) { $this->model->save_verification_rule_data($currentRule, $rulesettings); } $this->model->postProcessRule($currentRule); }