1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
\hyperlink{classCinisis}{Cinisis} is a \href{https://secure.wikimedia.org/wikipedia/en/wiki/CDS/ISIS}{\tt CDS/ISIS} database reading library written in PHP. It's intended for integrating or migrating existing ISIS databases into other applications. It is a wrapper around other ISIS libraries and tools, providing an uniform interface and iterators for easily fetching data without bothering with internals.
\hyperlink{classCinisis}{Cinisis} works with the following ISIS backend libraries:
\begin{DoxyItemize}
\item \href{http://search.cpan.org/~dpavlin/Biblio-Isis-0.24/lib/Biblio/Isis.pm}{\tt Biblio::Isis} through \href{http://pecl.php.net/package/perl}{\tt Perl PECL extension}, which is the recommended choice.
\item \href{http://malete.org}{\tt GNI's Malete}.
\item \href{http://pecl.php.net/package/isis}{\tt Openisis}.
\end{DoxyItemize}
Both Malete and Openisis support is outdated in favour os Biblio::Isis as it has proven to be simpler and more functional.
\subsection*{Installation and usage}
\begin{DoxyVerbInclude}
Cinisis database reader
=======================
Installation
------------
### Getting Cinisis
Cinisis source code can be obtained via git:
git clone http://git.devlet.com.br/cinisis.git
This documentation covers just installation with Biblio::Isis library
and assumes a Debian like operating system.
### Installing BiblioIsis
The Biblio:Isis can be installed directly from package together with
development files for perl:
apt-get install libbiblio-isis-perl libperl-dev
### Installing pecl-perl
Then download and build pecl-perl:
pecl install perl
Due to a bug (see http://pecl.php.net/bugs/bug.php?id=16807), you might
prefer to install it directly from source:
svn checkout http://svn.php.net/repository/pecl/perl/trunk pecl-perl
cd pecl-perl
phpize
./configure
make install
You will still need to enable the extension in your php.ini depending on
how your system is configured.
### Getting spyc
Cinisis config files are written in YAML. You'll need to download Spyc
library from https://code.google.com/p/spyc/ and put the files at
the contrib/ folder.
Configuration
-------------
- Put your databases into the db folder, one folder per database.
- Optionally edit config/config.yaml to set the default database.
Naming conventions
------------------
The following naming conventions are used through Cinisis aiming to help
iterating over all the data from a ISIS database.
- Database: an ISIS database.
- Entry: a given MFN in the database.
- Value: all the data from a given entry in the database.
- Field: a numbered set of values from a given entry.
- Row: a single value from a given field.
- Main item: the data in a row without a qualifier.
- Subfield: every data in a row within a qualifier.
- Item: either a main item or subfield withing a row.
Example:
MFN 1 with entry
10: First row of field 10^aWith a subfield^bAnd another one
10: Second row of field 10^bJust with the second subfield
20: This is the main item^yAnd this is another item
For that entry we have fields 10 and 20, where field 10 has two rows (i.e, two
repetitions). The main field is the data wich is has no qualifier (^) and a
subfield is the data with qualifiers (like subfields a and b from above).
\end{DoxyVerbInclude}
\subsection*{Example}
The following exemple shows how to read a database entry using two different ISIS backends:
\begin{DoxyCodeInclude}
<?php
// Import requisites.
require_once '../index.php';
// Draw the document.
$display = new CinisisDisplayHelper('Isis Reader');
$display->open_table();
$configs = array(
0 => array(
'implementation' => 'PhpIsis',
'database' => 'dbname',
),
1 => array(
'implementation' => 'BiblioIsis',
'database' => 'dbname',
),
);
foreach ($configs as $config) {
// Get a db instance.
$isis = new Cinisis($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>';
}
}
$display->close_table();
$display->footer();
\end{DoxyCodeInclude}
|