aboutsummaryrefslogtreecommitdiff
path: root/classes/MaleteDb.php
diff options
context:
space:
mode:
Diffstat (limited to 'classes/MaleteDb.php')
-rw-r--r--classes/MaleteDb.php161
1 files changed, 0 insertions, 161 deletions
diff --git a/classes/MaleteDb.php b/classes/MaleteDb.php
deleted file mode 100644
index 114995b..0000000
--- a/classes/MaleteDb.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-/**
- * Malete implementation of IsisDb.
- *
- * @warning
- * This implementation is currently outdated and lacks
- * basic functionalities such as subfield handling and
- * therefore it's use is not recommended.
- */
-class MaleteDb implements IsisDb {
- /**
- * @var $fdt
- * Field description table.
- */
- var $fdt;
-
- /**
- * @var $db
- * Database resource.
- */
- var $db;
-
- /**
- * @var $format
- * Database format, derived from $schema.
- */
- var $format;
-
- /**
- * @var $log
- * Class action log.
- */
- var $log;
-
- /**
- * Constructor.
- *
- * @see IsisDb::__construct()
- */
- public function __construct($schema) {
- // Save db schema.
- $this->format = $schema;
-
- // Setup $fdt used by malete.
- foreach ($schema['fields'] as $field => $info) {
- $this->fdt[$field] = $info['name'];
- }
-
- // Open a database connection.
- $this->db = new Isis_Db($this->fdt, $schema['db']['name'], new Isis_Server());
- if (!$this->db->srv->sock) {
- return FALSE;
- }
- }
-
- /**
- * Read an entry.
- *
- * @see IsisDb::read()
- *
- * @todo
- * Subfield handling.
- */
- public function read($id) {
- if (!is_numeric($id)) {
- return FALSE;
- }
- if ($results !== FALSE) {
- $results = $this->db->read($id);
- return $this->tag($results);
- }
- else {
- return FALSE;
- }
- }
-
- /**
- * Return number of entries in the database.
- *
- * The Malete API doen't implement such feature so we
- * have to emulate it by iterating over all entries
- * until MaleteDb::read() returns FALSE.
- *
- * @see IsisDb::entries()
- */
- public function entries() {
- // The first entry in a malete database has id 1 and
- // not 0, therefore $id's initial value should be 1.
- $id = 1;
- while($this->db->read($id)) {
- $id++;
- }
- return $id - 1;
- }
-
- /**
- * Return an example schema.
- *
- * @see IsisDb::example()
- */
- public function example() {
- return SchemaDb::example();
- }
-
- /**
- * Check configuration.
- *
- * @see IsisDb::check()
- */
- public function check($schema, $section = NULL) {
- // Check API availability.
- if (!class_exists('Isis_Db')) {
- throw new Exception('Could not find Isis_Db class. Please check your malete installation.');
- return FALSE;
- }
-
- // Check schema configuration.
- return SchemaDb::check($schema, $section);
- }
-
- /**
- * Tag results of a db query.
- *
- * This function converts the keys of query result from field numbers
- * to names and and also puts repetition fields into place as Malete
- * deals with field repetition by using a 'tag' property in the resulting
- * query object.
- *
- * @param $results
- * Database query results.
- *
- * @return
- * Tagged database result.
- */
- function tag($results) {
- foreach ($results->val as $key => $value) {
- $field = $results->tag[$key];
- $name = $this->format['fields'][$field]['name'];
-
- // Handles field repetition.
- if ($this->format['fields'][$field]['repeat']) {
- $data[$name][] = $value;
- }
- else {
- $data[$name] = $value;
- }
- }
- return $data;
- }
-
- /**
- * Class logger.
- *
- * @param $message
- * Log message.
- */
- function logger($message) {
- $this->log[] = $message;
- }
-}