aboutsummaryrefslogtreecommitdiff
path: root/app/class/Flywheel
diff options
context:
space:
mode:
Diffstat (limited to 'app/class/Flywheel')
-rw-r--r--app/class/Flywheel/Formatter/JSON.php21
-rw-r--r--app/class/Flywheel/Predicate.php11
-rw-r--r--app/class/Flywheel/Query.php16
-rw-r--r--app/class/Flywheel/Repository.php30
4 files changed, 78 insertions, 0 deletions
diff --git a/app/class/Flywheel/Formatter/JSON.php b/app/class/Flywheel/Formatter/JSON.php
new file mode 100644
index 0000000..9659fcb
--- /dev/null
+++ b/app/class/Flywheel/Formatter/JSON.php
@@ -0,0 +1,21 @@
+<?php
+namespace Wcms\Flywheel\Formatter;
+
+class JSON implements \JamesMoss\Flywheel\Formatter\FormatInterface
+{
+ public function getFileExtension()
+ {
+ return 'json';
+ }
+ public function encode(array $data)
+ {
+ $options = defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : null;
+ $options .= JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE;
+ return json_encode($data, $options);
+ }
+ public function decode($data)
+ {
+ $options = defined('JSON_OBJECT_AS_ARRAY') ? JSON_OBJECT_AS_ARRAY : null;
+ return json_decode($data, $options);
+ }
+} \ No newline at end of file
diff --git a/app/class/Flywheel/Predicate.php b/app/class/Flywheel/Predicate.php
new file mode 100644
index 0000000..2922c8d
--- /dev/null
+++ b/app/class/Flywheel/Predicate.php
@@ -0,0 +1,11 @@
+<?php
+namespace Wcms\Flywheel;
+
+class Predicate extends \JamesMoss\Flywheel\Predicate
+{
+ public function __construct() {
+ $this->operators = array(
+ '>', '>=', '<', '<=', '==', '===', '!=', '!==', 'IN'
+ );
+ }
+}
diff --git a/app/class/Flywheel/Query.php b/app/class/Flywheel/Query.php
new file mode 100644
index 0000000..f002080
--- /dev/null
+++ b/app/class/Flywheel/Query.php
@@ -0,0 +1,16 @@
+<?php
+namespace Wcms\Flywheel;
+
+class Query extends \JamesMoss\Flywheel\Query
+{
+ /**
+ * Constructor
+ *
+ * @param Repository $repository The repo this query will run against.
+ */
+ public function __construct(Repository $repository)
+ {
+ parent::__construct($repository);
+ $this->predicate = new Predicate();
+ }
+}
diff --git a/app/class/Flywheel/Repository.php b/app/class/Flywheel/Repository.php
new file mode 100644
index 0000000..d0b68eb
--- /dev/null
+++ b/app/class/Flywheel/Repository.php
@@ -0,0 +1,30 @@
+<?php
+namespace Wcms\Flywheel;
+
+class Repository extends \JamesMoss\Flywheel\Repository
+{
+ /**
+ * Get an array containing the path of all files in this repository
+ *
+ * @return array An array, item is a file
+ */
+ public function getAllFiles()
+ {
+ $ext = $this->formatter->getFileExtension();
+ $files = glob($this->path . DIRECTORY_SEPARATOR . '*.' . $ext);
+ return $files;
+ }
+
+ /**
+ * Get an array containing the id of all files in this repository
+ *
+ * @return array An array, item is a id
+ */
+ public function getAllIds()
+ {
+ $ext = $this->formatter->getFileExtension();
+ return array_map(function($path) use ($ext) {
+ return $this->getIdFromPath($path, $ext);
+ }, $this->getAllFiles());
+ }
+}