aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/helpers/CinisisHttpHelper.php37
-rw-r--r--tests/subfield.php55
2 files changed, 88 insertions, 4 deletions
diff --git a/classes/helpers/CinisisHttpHelper.php b/classes/helpers/CinisisHttpHelper.php
index eae8a8d..5ff8984 100644
--- a/classes/helpers/CinisisHttpHelper.php
+++ b/classes/helpers/CinisisHttpHelper.php
@@ -5,23 +5,52 @@
*/
class CinisisHttpHelper {
/**
- * Get a numeric argument.
+ * Get an argument.
*
* @param $name
* Argument name.
*
+ * @param $mixed
+ * Default value.
+ *
* @return
* Argument value.
*/
- static function get_numeric_arg($name) {
+ static function get_arg($name, $default = 1) {
// Get the query parameter.
if (isset($_GET[$name]) && ! empty($_GET[$name])) {
- $arg = (int) $_GET[$name];
+ $arg = $_GET[$name];
}
else {
- $arg = 1;
+ $arg = $default;
}
return $arg;
}
+
+ /**
+ * Get a numeric argument.
+ *
+ * @param $name
+ * Argument name.
+ *
+ * @return
+ * Argument value.
+ */
+ static function get_numeric_arg($name) {
+ return (int) self::get_arg($name, 1);
+ }
+
+ /**
+ * Get a string argument.
+ *
+ * @param $name
+ * Argument name.
+ *
+ * @return
+ * Argument value.
+ */
+ static function get_textual_arg($name) {
+ return (string) self::get_arg($name, 'a');
+ }
}
diff --git a/tests/subfield.php b/tests/subfield.php
new file mode 100644
index 0000000..892f2b5
--- /dev/null
+++ b/tests/subfield.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Cinisis - Isis db reading tool.
+ */
+
+// Import requisites.
+require_once '../index.php';
+
+// Get input data.
+$entry = CinisisHttpHelper::get_numeric_arg('entry');
+$field = CinisisHttpHelper::get_numeric_arg('field');
+$subfield = CinisisHttpHelper::get_textual_arg('subfield');
+
+// Draw the document.
+$display = new CinisisDisplayHelper('Subfield finder');
+$form = $display->form_input_text('entry', $entry);
+$form .= $display->form_input_text('field', $field);
+$form .= $display->form_input_text('subfield', $subfield);
+$display->form($form, 'subfield.php');
+
+// Get a db instance.
+$isis = new CinisisDb();
+
+// Setup database and entry number.
+if ($isis->db) {
+ // Get the number of entries.
+ $field_name = $isis->db->format['fields'][$field]['name'];
+ $subfield_name = $isis->db->format['fields'][$field]['subfields'][$subfield];
+ $entries = $isis->db->entries();
+ $entry--;
+
+ // Query database.
+ do {
+ $result = $isis->db->read(++$entry);
+ if ($entry == $entries) {
+ break;
+ }
+ } while (!isset($result[$field_name][0][$subfield_name]));
+
+ // Navigation bar.
+ $display->navbar($entry, $entries, $repetition, '&field='. $field . '&subfield='. $subfield);
+
+ // Format output.
+ echo "<pre>\n";
+ echo "Selected field: $field: $field_name.\n";
+ echo "Selected subfield: $subfield: $subfield_name.\n";
+ echo "Showing entry $entry from $entries total entries.\n";
+ echo "Repetitions found: ". count($result[$field]) .".\n";
+ echo "\n";
+ print_r($result[$field_name]);
+ echo '</pre>';
+}
+
+$display->footer();
+?>