public function validation($data, $files) { $errors = parent::validation($data, $files); $question = $this->_customdata; // Inputs. $inputnames = array(); foreach ($question->inputs as $inputname => $notused) { $field = 'inputname_' . $inputname; $proposedname = $data[$field]; if (!stack_utils::is_valid_name($proposedname)) { $errors[$field] = stack_string('notavalidname'); } else { if (array_key_exists($proposedname, $inputnames)) { $errors[$field] = stack_string('namealreadyused'); } else { $inputnames[$proposedname] = $inputname; } } } // PRTs. $prtnames = array(); foreach ($question->prts as $prtname => $notused) { $field = 'prtname_' . $prtname; $proposedname = $data[$field]; if (!stack_utils::is_valid_name($proposedname)) { $errors[$field] = stack_string('notavalidname'); } else { if (array_key_exists($proposedname, $prtnames)) { $errors[$field] = stack_string('namealreadyused'); } else { $prtnames[$proposedname] = $prtname; } } } foreach ($question->prts as $prtname => $prt) { $nodenames = array(); $nodes = $prt->get_nodes_summary(); foreach ($nodes as $nodekey => $notused) { $field = 'nodename_' . $prtname . '_' . $nodekey; $proposedname = $data[$field]; if ($proposedname < 1) { $errors[$field] = stack_string('notavalidname'); } else { if (array_key_exists($proposedname, $nodenames)) { $errors[$field] = stack_string('namealreadyused'); } else { $nodenames[$proposedname] = $nodekey; } } } } return $errors; }