aboutsummaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/csv.php124
-rw-r--r--apps/field.php51
-rw-r--r--apps/index.php42
-rw-r--r--apps/malete.php181
-rw-r--r--apps/phpisis.php29
-rw-r--r--apps/read.php51
-rw-r--r--apps/repetition.php51
-rw-r--r--apps/subfield.php56
-rw-r--r--apps/test.php28
9 files changed, 613 insertions, 0 deletions
diff --git a/apps/csv.php b/apps/csv.php
new file mode 100644
index 0000000..e50249b
--- /dev/null
+++ b/apps/csv.php
@@ -0,0 +1,124 @@
+<?php
+/**
+ * Cinisis - Isis db reading tool.
+ *
+ * @TODO: check what happens if theres a field and subfields with repetition.
+ */
+
+/**
+ * Format a value for CSV output.
+ *
+ * @param $field
+ * Field entry.
+ *
+ * @return
+ * Formatted CSV field.
+ */
+function csv($field = NULL) {
+ return '"'. preg_replace('/"/', '""', $field) .'",';
+}
+
+/**
+ * Apply filters into the result.
+ *
+ * @param $field
+ * Field entry.
+ */
+function filter(&$field = NULL) {
+ // Remove brackets from field content.
+ $field = str_replace('<', '', $field);
+ $field = str_replace('>', '', $field);
+}
+
+/**
+ * Merge fields in a single cel.
+ *
+ * @param $data
+ * Array with field data.
+ *
+ * @param $field
+ * Field name.
+ *
+ * @return
+ * Cel with merged fields.
+ */
+function merge_fields($data, $field) {
+ $cel = '';
+ $sep = (count($data) > 1) ? '; ': '';
+ foreach ($data as $subkey => $subvalue) {
+ $cel = $cel . $data[$subkey][$field] . $sep;
+ }
+
+ return $cel;
+}
+
+// Import Cinisis Library.
+require_once '../index.php';
+
+// Get a db instance.
+$isis = new CinisisDb();
+
+// Test connection.
+if ($isis->db) {
+ // Get format and number of entries.
+ $entries = $isis->db->entries();
+ $format = $isis->db->format;
+
+ // Prepare output.
+ header("Content-type: application/text/x-csv");
+ header("Content-Disposition: attachment; filename=export.csv");
+ header("Pragma: no-cache");
+ header("Expires: 0");
+
+ // Format fields.
+ foreach ($format['fields'] as $field) {
+ echo csv($field['name']);
+ if (is_array($field['subfields'])) {
+ foreach ($field['subfields'] as $key => $value) {
+ echo csv($field['name'] .': '. $value);
+ }
+ }
+ }
+
+ // New roll.
+ echo "\n";
+
+ // Format output.
+ for ($n = 1; $n <= $entries; $n++) {
+ $result = $isis->db->read($n);
+
+ if ($result) {
+ // Filter results.
+ array_walk_recursive($result, 'filter');
+
+ foreach ($format['fields'] as $field) {
+ if (is_array($result[$field['name']])) {
+ // Print main field if needed.
+ if (is_array($result[$field['name']][0])) {
+ echo csv();
+ }
+ else {
+ echo csv($result[$field['name']][0]);
+ }
+ }
+ else {
+ echo csv($result[$field['name']]);
+ }
+ if (is_array($field['subfields'])) {
+ foreach ($field['subfields'] as $key => $value) {
+ // Deals with subfield repetition.
+ if (isset($result[$field['name']][0][$value])) {
+ echo csv(merge_fields($result[$field['name']], $value));
+ }
+ else {
+ echo csv($result[$field['name']][$value]);
+ }
+ }
+ }
+ }
+
+ // New roll.
+ echo "\n";
+ }
+ }
+}
diff --git a/apps/field.php b/apps/field.php
new file mode 100644
index 0000000..b9f9c3a
--- /dev/null
+++ b/apps/field.php
@@ -0,0 +1,51 @@
+<?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');
+
+// Draw the document.
+$display = new CinisisDisplayHelper('Field finder');
+$form = $display->form_input_text('entry', $entry);
+$form .= $display->form_input_text('field', $field);
+$display->form($form, 'field.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'];
+ $entries = $isis->db->entries();
+ $entry--;
+
+ // Query database.
+ do {
+ $result = $isis->db->read(++$entry);
+ if ($entry == $entries) {
+ break;
+ }
+ } while (!isset($result[$field_name]));
+
+ // Navigation bar.
+ $display->navbar($entry, $entries, $repetition, '&field='. $field);
+
+ // Format output.
+ echo "<pre>\n";
+ echo "Selected field: $field: $field_name.\n";
+ echo "Showing entry ". $display->entry_link($entry) ." from $entries total entries.\n";
+ echo "Repetitions found: ". count($result[$field_name]) .".\n";
+ echo "\n";
+ print_r($result[$field_name]);
+ echo '</pre>';
+}
+
+$display->footer();
+?>
diff --git a/apps/index.php b/apps/index.php
new file mode 100644
index 0000000..b395b80
--- /dev/null
+++ b/apps/index.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Cinisis - Isis db reading tool.
+ */
+
+// Import requisites.
+require_once '../index.php';
+
+// Get entry number.
+$entry = CinisisHttpHelper::get_numeric_arg('entry');
+
+// Draw the document.
+$display = new CinisisDisplayHelper('Isis Navigator');
+$display->form($display->form_input_text('entry', $entry));
+
+// Get a db instance.
+$isis = new CinisisDb();
+
+// Setup database and entry number.
+if ($isis->db) {
+ // Get the number of entries.
+ $entries = $isis->db->entries();
+
+ // Input sanitization.
+ if ($entries < $entry) {
+ $entry = 1;
+ }
+
+ // Query database.
+ $result = $isis->db->read($entry);
+ $display->navbar($entry, $entries);
+
+ // Format output.
+ echo "<pre>\n";
+ echo "Showing entry $entry from $entries total entries.\n";
+ echo "\n";
+ print_r($result);
+ echo '</pre>';
+}
+
+$display->footer();
+?>
diff --git a/apps/malete.php b/apps/malete.php
new file mode 100644
index 0000000..03451f2
--- /dev/null
+++ b/apps/malete.php
@@ -0,0 +1,181 @@
+<?php
+/**
+ * Test query script.
+ */
+
+// Import Malete Library
+require 'contrib/malete/php/Isis.php';
+
+?>
+
+<html><head><title>Query</title></head><body>
+
+<?php
+
+ // Create a db with field list ("fdt")
+ $fdt_anu10 = array(
+ 'Periodico' => 1,
+ 'Data' => 2,
+ 'Titulo' => 3,
+ 'Autor' => 4,
+ 'Assuntos primarios' => 5,
+ 'Assuntos secundarios' => 6,
+ 'Ilustrado' => 7,
+ 'Caderno' => 8,
+ 'Pagina' => 9,
+ 'Arquivo digital' => 10,
+ 'Forma documento' => 11,
+ 'Local de publicacao' => 12,
+ 'Observacoes' => 13,
+ 'Descritores imagem' => 14,
+ 'Termo geografico' => 16,
+ 'Coluna' => 17,
+ 'Recorte' => 19,
+ 'Alimentador' => 20,
+ 'Tema Anuario' => 21,
+ );
+
+ $fdt_tupi = array(
+ 'cod.titulo' => 1,
+ 'postopo' => 2,
+ 'num.entrada' => 3,
+ 'num.tombo' => 4,
+ 'datain' => 5,
+ 'dataex' => 6,
+ 'acervo (DIF ou PRE)' => 7,
+ 'cadarq' => 10,
+ 'caddep' => 11,
+ 'cadddl' => 12,
+ 'outarq' => 13,
+ 'categorias' => 15,
+ 'presok' => 16,
+ 'roteiro de locução' => 17,
+ 'mat.acervo' => 18,
+ 'mat.orig' => 19,
+ 'titulo' => 20,
+ 'outros titulos' => 22,
+ 'data/série' => 24,
+ 'conteudo/sinopse' => 25,
+ 'descritores' => 26,
+ 'descritores secundários' => 27,
+ 'identidades' => 28,
+ 'ndxlib' => 29,
+ 'materiais' => 40,
+ 'materiais' => 41,
+ 'materiais' => 42,
+ 'materiais' => 43,
+ 'materiais' => 44,
+ 'materiais' => 45,
+ 'mat' => 46,
+ 'mat' => 47,
+ 'mat' => 48,
+ 'mat' => 49,
+ 'mat' => 50,
+ 'mat' => 51,
+ 'mat' => 52,
+ 'mat' => 53,
+ 'mat' => 54,
+ 'mat' => 55,
+ 'evol.estado tec.' => 56,
+ 'movimentacao' => 57,
+ 'movimentacao' => 58,
+ 'obsmat' => 59,
+ 'producao*' => 60,
+ 'dir.arte*' => 61,
+ 'fotografia*' => 62,
+ 'musica*' => 63,
+ 'som*' => 64,
+ 'montagem*' => 65,
+ 'direcao*' => 66,
+ 'arg/roteiro*' => 67,
+ 'distribuicao*' => 68,
+ 'colab./outros' => 69,
+ 'producao1' => 70,
+ 'dir.arte1' => 71,
+ 'fotografia1' => 72,
+ 'musica1' => 73,
+ 'som1' => 74,
+ 'montagem1' => 75,
+ 'producao2(res.p/expandir)' => 80,
+ 'dir.arte2(res.p/expandir)' => 81,
+ 'fotografia2(res.p/expandir)' => 82,
+ 'musica2(res.p/expandir)' => 83,
+ 'som2(res.p/expandir)' => 84,
+ 'loc.prod.lan' => 85,
+ 'dat.prod.lan' => 86,
+ 'lab/est/locacoes' => 87,
+ 'premios' => 88,
+ 'fontes' => 89,
+ 'certificados' => 95,
+ 'examinador' => 98,
+ 'observações' => 99,
+ 'termos geográficos' => 165,
+ 'quicktime' => 900,
+ 'revisão' => 901,
+ 'vídeo' => 902,
+ );
+
+ //$db = 'tupi';
+ $db = 'anu10';
+ $fdt = ${'fdt_'. $db};
+?>
+
+<h2>server</h2>
+
+<?php
+ $db = new Isis_Db($fdt, $db, new Isis_Server());
+ if (!$db->srv->sock) {
+ echo "could not contact server\n";
+ }
+ else {
+ //print_r($db);
+?>
+
+<h3>number of records...</h3>
+
+<?php
+ $query = 'HORA';
+ $recs = $db->num_recs($query);
+ echo "got ",count($recs), " terms for '$query'</br>\n";
+?>
+
+<h3>terms beginning with...</h3>
+
+<?php
+ $query = 'Hora';
+ $terms = $db->terms(strtoupper($query));
+ echo "got ",count($terms), " terms for '$query'</br>\n";
+ foreach ($terms as $t) {
+ list($cnt, $term) = explode("\t", $t);
+ echo "'$term'($cnt) ";
+ }
+ echo "</br>\n";
+?>
+
+<h3>query reading records</h3>
+
+<?php
+ $query = 'Corumbiara';
+ $recs = $db->query(strtoupper($query));
+ echo "got ",count($recs), " records for '$query'</br>\n";
+ foreach ($recs as $r) {
+ echo "<pre>---\n", $r->toString(), "---\n</pre>\n";
+ }
+?>
+
+<h3>query reading a record</h3>
+
+<?php
+ $r = $db->read(6);
+ echo "<pre>---\n", $r->toString(), "---\n</pre><br>\n";
+ echo '<pre>';
+ //print_r($r);
+ //print_r($r->val[8]);
+ //print_r(preg_split('/\t/', $r->val[7]));
+ //print_r(array_flip($fdt_anu10));
+ echo '</pre>';
+ } // end else could contact server
+
+?>
+
+</body></html>
diff --git a/apps/phpisis.php b/apps/phpisis.php
new file mode 100644
index 0000000..75326f1
--- /dev/null
+++ b/apps/phpisis.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Test query script.
+ */
+?>
+
+<h3>Testing pecl-isis</h3>
+<?php
+
+ $db = isis_open('db/dbname/dbname');
+ print_r(isis_last_mfn($db));
+
+ echo '<table>';
+
+ $result = isis_search('$', $db);
+ while ($record = isis_fetch_flat_array($result) ) {
+ print (" <tr><td colspan=\"2\">MFN: $record[mfn]</td></tr>\n");
+ for ($i=0; $i<count($record)-1; ++$i) { //-1 porque el mfn es +1
+ list ($tag, $value) = $record[$i];
+ print (" <tr>\n".
+ " <td>$tag</td>\n".
+ " <td>".htmlspecialchars($value)."</td>\n".
+ " </tr>\n");
+ }
+ }
+ echo '</table>';
+?>
+
+</body></html>
diff --git a/apps/read.php b/apps/read.php
new file mode 100644
index 0000000..835ae60
--- /dev/null
+++ b/apps/read.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Cinisis - Isis db reading tool.
+ */
+
+// Import requisites.
+require_once '../index.php';
+
+// Draw the document.
+$display = new CinisisDisplayHelper('Isis Reader');
+?>
+
+<table><tr>
+
+<?php
+
+$configs = array(
+ 0 => array(
+ 'implementation' => 'PhpIsis',
+ 'database' => 'dbname',
+ ),
+ 1 => array(
+ 'implementation' => 'BiblioIsis',
+ 'database' => 'dbname',
+ ),
+);
+
+foreach ($configs as $config) {
+ // Get a db instance.
+ $isis = new CinisisDb($config);
+
+ // Test connection.
+ if ($isis->db) {
+ $result = $isis->db->read(1);
+ $entries = $isis->db->entries();
+
+ // Format output.
+ echo '<td>';
+ echo '<pre>';
+ echo 'Implementation: '. $config['implementation'] ."\n";
+ echo "Rows: $entries\n";
+ print_r($result);
+ echo '</pre>';
+ echo '</td>';
+ }
+}
+
+?>
+
+</tr></table>
+</body>
diff --git a/apps/repetition.php b/apps/repetition.php
new file mode 100644
index 0000000..37d0889
--- /dev/null
+++ b/apps/repetition.php
@@ -0,0 +1,51 @@
+<?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');
+
+// Draw the document.
+$display = new CinisisDisplayHelper('Repetition finder');
+$form = $display->form_input_text('entry', $entry);
+$form .= $display->form_input_text('field', $field);
+$display->form($form, 'repetition.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'];
+ $entries = $isis->db->entries();
+ $entry--;
+
+ // Query database.
+ do {
+ $result = $isis->db->read(++$entry);
+ if ($entry == $entries) {
+ break;
+ }
+ } while (!isset($result[$field_name]) || count($result[$field_name]) < 2);
+
+ // Navigation bar.
+ $display->navbar($entry, $entries, $repetition, '&field='. $field);
+
+ // Format output.
+ echo "<pre>\n";
+ echo "Selected field: $field: $field_name.\n";
+ echo "Showing entry ". $display->entry_link($entry) ." from $entries total entries.\n";
+ echo "Repetitions found: ". count($result[$field_name]) .".\n";
+ echo "\n";
+ print_r($result[$field_name]);
+ echo '</pre>';
+}
+
+$display->footer();
+?>
diff --git a/apps/subfield.php b/apps/subfield.php
new file mode 100644
index 0000000..117b8ce
--- /dev/null
+++ b/apps/subfield.php
@@ -0,0 +1,56 @@
+<?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.
+ $link = $display->entry_link($entry);
+ echo "<pre>\n";
+ echo "Selected field: $field: $field_name.\n";
+ echo "Selected subfield: $subfield: $subfield_name.\n";
+ echo "Showing entry ". $display->entry_link($entry) ." from $entries total entries.\n";
+ echo "Repetitions found: ". count($result[$field]) .".\n";
+ echo "\n";
+ print_r($result[$field_name]);
+ echo '</pre>';
+}
+
+$display->footer();
+?>
diff --git a/apps/test.php b/apps/test.php
new file mode 100644
index 0000000..2b1fe5c
--- /dev/null
+++ b/apps/test.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Cinisis - Isis db reading tool.
+ */
+
+// Import requisites.
+require_once '../index.php';
+
+// Draw the document.
+$display = new CinisisDisplayHelper('Isis Test');
+
+// Get a db instance.
+$isis = new CinisisDb();
+
+// Test connection.
+if ($isis->db) {
+ $result = $isis->db->read(1);
+ $entries = $isis->db->entries();
+
+ // Format output.
+ echo '<pre>';
+ echo "Connection test:\n";
+ echo "Rows: $entries\n";
+ print_r($result);
+ echo '</pre>';
+}
+
+$display->footer();