aboutsummaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
Diffstat (limited to 'classes')
-rw-r--r--classes/Cinisis.php (renamed from classes/CinisisDb.php)4
-rw-r--r--classes/IsisAudit.php38
-rw-r--r--classes/IsisConnector.php6
-rw-r--r--classes/IsisFinder.php103
-rw-r--r--classes/backends/BiblioIsisDb.php (renamed from classes/BiblioIsisDb.php)8
-rw-r--r--classes/backends/IsisDb.php (renamed from classes/IsisDb.php)0
-rw-r--r--classes/backends/MaleteDb.php (renamed from classes/MaleteDb.php)0
-rw-r--r--classes/backends/PhpIsisDb.php (renamed from classes/PhpIsisDb.php)2
-rw-r--r--classes/backends/SchemaDb.php (renamed from classes/SchemaDb.php)0
-rw-r--r--classes/helpers/CinisisDisplayHelper.php2
10 files changed, 152 insertions, 11 deletions
diff --git a/classes/CinisisDb.php b/classes/Cinisis.php
index a016528..8771b21 100644
--- a/classes/CinisisDb.php
+++ b/classes/Cinisis.php
@@ -1,9 +1,9 @@
<?php
/**
- * CinisisDb main class.
+ * Cinisis main class.
*/
-class CinisisDb {
+class Cinisis {
/**
* @var $db
* Database resource.
diff --git a/classes/IsisAudit.php b/classes/IsisAudit.php
new file mode 100644
index 0000000..79cbe26
--- /dev/null
+++ b/classes/IsisAudit.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * Methods for auditing an Isis database.
+ */
+class IsisAudit extends IsisFinder {
+ /**
+ * Run a standard audit procedure.
+ *
+ * @todo
+ * Test.
+ */
+ public function run() {
+ foreach ($this->format['fields'] as $field) {
+ $field_name = $this->getFieldName($field);
+ $repetition = $this->nextRepetition(null, $field_name);
+
+ // Check for repetitions.
+ if ($field['repeat'] && !$repetition)
+ {
+ echo "Field $field_name is configured for repetitions but no repetitions found.\n";
+ }
+ elseif (!$field['repeat'] && $repetition) {
+ echo "Field $field_name is not configured for repetitions but a repetition was found.\n";
+ }
+
+ // Check for subfields.
+ foreach ($field['subfields'] as $subfield) {
+ $subfield_name = $this->getSubfieldName($field, $subfield);
+ $next_subfield = $isis->nextSubfield(null, $field_name, $subfield_name);
+
+ if (!$next_subfield) {
+ echo "No occurrences found for field $field_name and subfield $subfield_name\n";
+ }
+ }
+ }
+ }
+}
diff --git a/classes/IsisConnector.php b/classes/IsisConnector.php
index c8d8234..e0c87c2 100644
--- a/classes/IsisConnector.php
+++ b/classes/IsisConnector.php
@@ -19,7 +19,7 @@ class IsisConnector {
* Config file or array.
*/
public function open($config) {
- $this->isis = new CinisisDb($config);
+ $this->isis = new Cinisis($config);
if ($this->isis->db) {
$this->entries = $this->isis->db->entries();
@@ -59,7 +59,7 @@ class IsisConnector {
*/
public function getMainItemName($field) {
$key = $this->getFieldKey($field);
- return CinisisDb::main_field_name($this->format, $key);
+ return Cinisis::main_field_name($this->format, $key);
}
/**
@@ -69,7 +69,7 @@ class IsisConnector {
* Boolean.
*/
public function joinSubfields() {
- if (CinisisDb::join_subfields($this->format)) {
+ if (Cinisis::join_subfields($this->format)) {
return TRUE;
}
diff --git a/classes/IsisFinder.php b/classes/IsisFinder.php
new file mode 100644
index 0000000..36732b5
--- /dev/null
+++ b/classes/IsisFinder.php
@@ -0,0 +1,103 @@
+<?php
+
+/**
+ * Provides Isis Database search methods.
+ */
+class IsisFinder extends IsisConnector {
+ /**
+ * Find the next repetition of a field.
+ *
+ * @param $entry
+ * Start entry number to begin the search.
+ *
+ * @param $field
+ * Field name.
+ *
+ * @return
+ * Next repetition.
+ */
+ public function nextRepetition($entry = 1, $field) {
+ $entry--;
+
+ // Query database.
+ do {
+ $result = $this->read(++$entry);
+ if ($entry == $entries) {
+ break;
+ }
+ } while (!isset($result[$field]) || count($result[$field]) < 2);
+
+ if (!isset($result[$field]) || count($result[$field]) < 2) {
+ return FALSE;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Find the next occurrence of a field.
+ *
+ * @param $entry
+ * Start entry number to begin the search.
+ *
+ * @param $field
+ * Field name.
+ *
+ * @return
+ * Next occurrence.
+ */
+ public function nextField($entry = 1, $field) {
+ $entry--;
+
+ // Query database.
+ do {
+ $result = $this->read(++$entry);
+ if ($entry == $entries) {
+ break;
+ }
+ } while (!isset($result[$field]));
+
+ if (!isset($result[$field])) {
+ return FALSE;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Find the next occurrence of a subfield.
+ *
+ * @param $entry
+ * Start entry number to begin the search.
+ *
+ * @param $field
+ * Field name.
+ *
+ * @param $subfield
+ * Subfield name.
+ *
+ * @return
+ * Next occurrence.
+ *
+ * @todo
+ * The subfield might be in any now and not just
+ * in the first one.
+ */
+ public function nextSubfield($entry = 1, $field, $subfield) {
+ $entry--;
+
+ // Query database.
+ do {
+ $result = $this->read(++$entry);
+ if ($entry == $entries) {
+ break;
+ }
+ } while (!isset($result[$field][0][$subfield]));
+
+ if (!isset($result[$field][0][$subfield])) {
+ return FALSE;
+ }
+
+ return $result;
+ }
+}
diff --git a/classes/BiblioIsisDb.php b/classes/backends/BiblioIsisDb.php
index 9db0145..bb7f9f5 100644
--- a/classes/BiblioIsisDb.php
+++ b/classes/backends/BiblioIsisDb.php
@@ -70,7 +70,7 @@ class BiblioIsisDb implements IsisDb {
function backend($method = 'count', $args = NULL) {
// Setup the database.
$name = $this->format['db']['name'];
- $db = CinisisDb::file("$name/$name", 'db');
+ $db = Cinisis::file("$name/$name", 'db');
// Setup arguments.
if ($args != NULL) {
@@ -258,7 +258,7 @@ class BiblioIsisDb implements IsisDb {
}
else {
foreach ($name as $value) {
- $data[] = array(CinisisDb::main_field_name($this->format, $key) => $value);
+ $data[] = array(Cinisis::main_field_name($this->format, $key) => $value);
}
}
@@ -337,14 +337,14 @@ class BiblioIsisDb implements IsisDb {
}
// Join subfields and main field if needed.
- if (CinisisDb::join_subfields($this->format)) {
+ if (Cinisis::join_subfields($this->format)) {
if (isset($data[$entry]['subfields'])) {
$data[$entry] = $data[$entry]['subfields'];
}
if (isset($field)) {
unset($data[$entry]['field']);
- $data[$entry][CinisisDb::main_field_name($this->format, $key)] = $field;
+ $data[$entry][Cinisis::main_field_name($this->format, $key)] = $field;
}
}
}
diff --git a/classes/IsisDb.php b/classes/backends/IsisDb.php
index 4a2218a..4a2218a 100644
--- a/classes/IsisDb.php
+++ b/classes/backends/IsisDb.php
diff --git a/classes/MaleteDb.php b/classes/backends/MaleteDb.php
index 114995b..114995b 100644
--- a/classes/MaleteDb.php
+++ b/classes/backends/MaleteDb.php
diff --git a/classes/PhpIsisDb.php b/classes/backends/PhpIsisDb.php
index 41319cc..e69898e 100644
--- a/classes/PhpIsisDb.php
+++ b/classes/backends/PhpIsisDb.php
@@ -43,7 +43,7 @@ class PhpIsisDb implements IsisDb {
// Open the database.
$name = $schema['db']['name'];
- $this->db = isis_open(CinisisDb::file("$name/$name", 'db'));
+ $this->db = isis_open(Cinisis::file("$name/$name", 'db'));
}
/**
diff --git a/classes/SchemaDb.php b/classes/backends/SchemaDb.php
index db9ca30..db9ca30 100644
--- a/classes/SchemaDb.php
+++ b/classes/backends/SchemaDb.php
diff --git a/classes/helpers/CinisisDisplayHelper.php b/classes/helpers/CinisisDisplayHelper.php
index 325595d..48db6ea 100644
--- a/classes/helpers/CinisisDisplayHelper.php
+++ b/classes/helpers/CinisisDisplayHelper.php
@@ -188,7 +188,7 @@ class CinisisDisplayHelper {
/**
* Draws a line break element.
*/
- static function h3($text) {
+ static function br($text) {
echo "<br />";
}