summaryrefslogtreecommitdiffstats
path: root/management-interface/lib/db/jig.php
diff options
context:
space:
mode:
Diffstat (limited to 'management-interface/lib/db/jig.php')
-rw-r--r--management-interface/lib/db/jig.php133
1 files changed, 133 insertions, 0 deletions
diff --git a/management-interface/lib/db/jig.php b/management-interface/lib/db/jig.php
new file mode 100644
index 0000000..16f2255
--- /dev/null
+++ b/management-interface/lib/db/jig.php
@@ -0,0 +1,133 @@
+<?php
+
+/*
+ Copyright (c) 2009-2014 F3::Factory/Bong Cosca, All rights reserved.
+
+ This file is part of the Fat-Free Framework (http://fatfree.sf.net).
+
+ THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF
+ ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
+ PURPOSE.
+
+ Please see the license.txt file for more information.
+*/
+
+namespace DB;
+
+//! Flat-file DB wrapper
+class Jig {
+
+ //@{ Storage formats
+ const
+ FORMAT_JSON=0,
+ FORMAT_Serialized=1;
+ //@}
+
+ protected
+ //! UUID
+ $uuid,
+ //! Storage location
+ $dir,
+ //! Current storage format
+ $format,
+ //! Jig log
+ $log;
+
+ /**
+ * Read data from file
+ * @return array
+ * @param $file string
+ **/
+ function read($file) {
+ $fw=\Base::instance();
+ if (!is_file($dst=$this->dir.$file))
+ return array();
+ $raw=$fw->read($dst);
+ switch ($this->format) {
+ case self::FORMAT_JSON:
+ $data=json_decode($raw,TRUE);
+ break;
+ case self::FORMAT_Serialized:
+ $data=$fw->unserialize($raw);
+ break;
+ }
+ return $data;
+ }
+
+ /**
+ * Write data to file
+ * @return int
+ * @param $file string
+ * @param $data array
+ **/
+ function write($file,array $data=NULL) {
+ $fw=\Base::instance();
+ switch ($this->format) {
+ case self::FORMAT_JSON:
+ $out=json_encode($data,@constant('JSON_PRETTY_PRINT'));
+ break;
+ case self::FORMAT_Serialized:
+ $out=$fw->serialize($data);
+ break;
+ }
+ return $fw->write($this->dir.$file,$out);
+ }
+
+ /**
+ * Return directory
+ * @return string
+ **/
+ function dir() {
+ return $this->dir;
+ }
+
+ /**
+ * Return UUID
+ * @return string
+ **/
+ function uuid() {
+ return $this->uuid;
+ }
+
+ /**
+ * Return SQL profiler results
+ * @return string
+ **/
+ function log() {
+ return $this->log;
+ }
+
+ /**
+ * Jot down log entry
+ * @return NULL
+ * @param $frame string
+ **/
+ function jot($frame) {
+ if ($frame)
+ $this->log.=date('r').' '.$frame.PHP_EOL;
+ }
+
+ /**
+ * Clean storage
+ * @return NULL
+ **/
+ function drop() {
+ if ($glob=@glob($this->dir.'/*',GLOB_NOSORT))
+ foreach ($glob as $file)
+ @unlink($file);
+ }
+
+ /**
+ * Instantiate class
+ * @param $dir string
+ * @param $format int
+ **/
+ function __construct($dir,$format=self::FORMAT_JSON) {
+ if (!is_dir($dir))
+ mkdir($dir,\Base::MODE,TRUE);
+ $this->uuid=\Base::instance()->hash($this->dir=$dir);
+ $this->format=$format;
+ }
+
+}