aboutsummaryrefslogtreecommitdiff
path: root/doc/html/index.html
blob: 4d42964465930b9c3e83b9d46f4c90937a851044 (plain)
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Cinisis Database Reader: Cinisis Database Reader</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.7.1 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs">
    <ul class="tablist">
      <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="headertitle">
<h1><a class="el" href="classCinisis.html">Cinisis</a> Database Reader </h1>  </div>
</div>
<div class="contents">
<p><a class="el" href="classCinisis.html">Cinisis</a> is a <a href="https://secure.wikimedia.org/wikipedia/en/wiki/CDS/ISIS">CDS/ISIS</a> 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.</p>
<p><a class="el" href="classCinisis.html">Cinisis</a> works with the following ISIS backend libraries:</p>
<ul>
<li><a href="http://search.cpan.org/~dpavlin/Biblio-Isis-0.24/lib/Biblio/Isis.pm">Biblio::Isis</a> through <a href="http://pecl.php.net/package/perl">Perl PECL extension</a>, which is the recommended choice.</li>
<li><a href="http://malete.org">GNI's Malete</a>.</li>
<li><a href="http://pecl.php.net/package/isis">Openisis</a>.</li>
</ul>
<p>Both Malete and Openisis support is outdated in favour os Biblio::Isis as it has proven to be simpler and more functional.</p>
<h2>Installation and usage</h2>
<div class="fragment"><pre class="fragment">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).
</pre></div><h2>Example</h2>
<p>The following exemple shows how to read a database entry using two different ISIS backends:</p>
<div class="fragment"><pre class="fragment">&lt;?php
<span class="comment">// Import requisites.</span>
require_once <span class="stringliteral">&#39;../index.php&#39;</span>;

<span class="comment">// Draw the document.</span>
$display = <span class="keyword">new</span> <a class="code" href="classCinisisDisplayHelper.html">CinisisDisplayHelper</a>(<span class="stringliteral">&#39;Isis Reader&#39;</span>);
$display-&gt;open_table();

$configs = array(
  0 =&gt; array(
    <span class="stringliteral">&#39;implementation&#39;</span> =&gt; <span class="stringliteral">&#39;PhpIsis&#39;</span>,
    <span class="stringliteral">&#39;database&#39;</span>       =&gt; <span class="stringliteral">&#39;dbname&#39;</span>,
  ),
  1 =&gt; array(
    <span class="stringliteral">&#39;implementation&#39;</span> =&gt; <span class="stringliteral">&#39;BiblioIsis&#39;</span>,
    <span class="stringliteral">&#39;database&#39;</span>       =&gt; <span class="stringliteral">&#39;dbname&#39;</span>,
  ),
);

<span class="keywordflow">foreach</span> ($configs as $config) {
  <span class="comment">// Get a db instance.</span>
  $isis = <span class="keyword">new</span> <a class="code" href="classCinisis.html">Cinisis</a>($config);

  <span class="comment">// Test connection.</span>
  <span class="keywordflow">if</span> ($isis-&gt;db) {
    $result  = $isis-&gt;db-&gt;read(1);
    $entries = $isis-&gt;db-&gt;entries();

    <span class="comment">// Format output.</span>
    echo <span class="stringliteral">&#39;&lt;td&gt;&#39;</span>;
    echo <span class="stringliteral">&#39;&lt;pre&gt;&#39;</span>;
    echo <span class="stringliteral">&#39;Implementation: &#39;</span>. $config[<span class="stringliteral">&#39;implementation&#39;</span>] .<span class="stringliteral">&quot;\n&quot;</span>;
    echo <span class="stringliteral">&quot;Rows: $entries\n&quot;</span>;
    print_r($result);
    echo <span class="stringliteral">&#39;&lt;/pre&gt;&#39;</span>;
    echo <span class="stringliteral">&#39;&lt;/td&gt;&#39;</span>;
  }
}

$display-&gt;close_table();
$display-&gt;footer();
</pre></div> </div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Variables</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address class="footer"><small>Generated on Wed Feb 23 2011 11:44:08 for Cinisis Database Reader by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
</body>
</html>