aboutsummaryrefslogtreecommitdiff
path: root/w/class/sleekdbw.php
diff options
context:
space:
mode:
authorvincent-peugnet <v.peugnet@free.fr>2018-11-11 17:19:26 +0100
committervincent-peugnet <v.peugnet@free.fr>2018-11-11 17:19:26 +0100
commitd7f3313ff4514e38c9f53439cd1a1287e56e45f7 (patch)
treeabff39ab11cb317f5fcd2db558da1c59bdae9239 /w/class/sleekdbw.php
parent2f363e8fa26ab849539e64ff7caa21bd164e8979 (diff)
downloadwcms-d7f3313ff4514e38c9f53439cd1a1287e56e45f7.tar.gz
wcms-d7f3313ff4514e38c9f53439cd1a1287e56e45f7.zip
reboot folder
Diffstat (limited to 'w/class/sleekdbw.php')
-rw-r--r--w/class/sleekdbw.php180
1 files changed, 0 insertions, 180 deletions
diff --git a/w/class/sleekdbw.php b/w/class/sleekdbw.php
deleted file mode 100644
index dd77752..0000000
--- a/w/class/sleekdbw.php
+++ /dev/null
@@ -1,180 +0,0 @@
-<?php
-
-use SleekDB\SleekDB;
-
-
-class SleekDBw extends SleekDB
-{
-
- public function getStoreIdList()
- {
- $listPath = $this->storePath . 'data/';
- $lengh = strlen($listPath);
- $list = [];
- foreach (glob($listPath . '*.json') as $filename) {
- $list[] = substr(substr($filename, $lengh), 0, -5);
- }
- return $list;
- }
-
- public function getbyid($id)
- {
- return $this->getStoreDocumentById($id);
- }
-
- public function updatebyid($id, $data)
- {
- foreach ($data as $key => $value) {
- // Do not update the _id reserved index of a store.
- if ($key != '_id') {
- $data[$key] = $value;
- }
- }
- $storePath = $this->storePath . 'data/' . $id . '.json';
- if (file_exists($storePath)) {
- // Wait until it's unlocked, then update data.
- file_put_contents($storePath, json_encode($data), LOCK_EX);
- }
- // Check do we need to wipe the cache for this store.
- if ($this->deleteCacheOnCreate === true) $this->_emptyAllCache();
- return true;
- }
-
-
-
-
-
-
- // Writes an object in a store.
- protected function writeInStore($storeData)
- {
- // Cast to array
- $storeData = (array)$storeData;
- // Check if it has _id key
- if (empty($storeData['_id'])) throw new \Exception('Lack of id in this object');
- if (in_array($storeData['_id'], $this->getStoreIdList())) throw new \Exception('Id already used');
- // Add the system ID with the store data array.
- $id = $storeData['_id'];
- // Prepare storable data
- $storableJSON = json_encode($storeData);
- if ($storableJSON === false) throw new \Exception('Unable to encode the data array, please provide a valid PHP associative array');
- // Define the store path
- $storePath = $this->storePath . 'data/' . $id . '.json';
- if (!file_put_contents($storePath, $storableJSON)) {
- throw new \Exception("Unable to write the object file! Please check if PHP has write permission.");
- }
- return $storeData;
- }
-
-
- // Find store objects with conditions, sorting order, skip and limits.
- protected function findStoreDocuments()
- {
- $found = [];
- $storeIdList = $this->getStoreIdList();
- $searchRank = [];
- // Start collecting and filtering data.
- foreach ($storeIdList as $id) {
- // Collect data of current iteration.
- $data = $this->getStoreDocumentById($id);
- if (!empty($data)) {
- // Filter data found.
- if (empty($this->conditions)) {
- // Append all data of this store.
- $found[] = $data;
- } else {
- // Append only passed data from this store.
- $storePassed = true;
- // Iterate each conditions.
- foreach ($this->conditions as $condition) {
- // Check for valid data from data source.
- $validData = true;
- $fieldValue = '';
- try {
- $fieldValue = $this->getNestedProperty($condition['fieldName'], $data);
- } catch (\Exception $e) {
- $validData = false;
- $storePassed = false;
- }
- if ($validData === true) {
- // Check the type of rule.
- if ($condition['condition'] === '=') {
- // Check equal.
- if ($fieldValue != $condition['value']) $storePassed = false;
- } else if ($condition['condition'] === '!=') {
- // Check not equal.
- if ($fieldValue == $condition['value']) $storePassed = false;
- } else if ($condition['condition'] === '>') {
- // Check greater than.
- if ($fieldValue <= $condition['value']) $storePassed = false;
- } else if ($condition['condition'] === '>=') {
- // Check greater equal.
- if ($fieldValue < $condition['value']) $storePassed = false;
- } else if ($condition['condition'] === '<') {
- // Check less than.
- if ($fieldValue >= $condition['value']) $storePassed = false;
- } else if ($condition['condition'] === '<=') {
- // Check less equal.
- if ($fieldValue > $condition['value']) $storePassed = false;
- }
- }
- }
- // Check if current store is updatable or not.
- if ($storePassed === true) {
- // Append data to the found array.
- $found[] = $data;
- }
- }
- }
- }
- if (count($found) > 0) {
- // Check do we need to sort the data.
- if ($this->orderBy['order'] !== false) {
- // Start sorting on all data.
- $found = $this->sortArray($this->orderBy['field'], $found, $this->orderBy['order']);
- }
- // If there was text search then we would also sort the result by search ranking.
- if (!empty($this->searchKeyword)) {
- $found = $this->performSerach($found);
- }
- // Skip data
- if ($this->skip > 0) $found = array_slice($found, $this->skip);
- // Limit data.
- if ($this->limit > 0) $found = array_slice($found, 0, $this->limit);
- }
- return $found;
- }
-
-
-
- // Method to boot a store.
- protected function bootStore()
- {
- $store = trim($this->storeName);
- // Validate the store name.
- if (!$store || empty($store)) throw new \Exception('Invalid store name was found');
- // Prepare store name.
- if (substr($store, -1) !== '/') $store = $store . '/';
- // Store directory path.
- $this->storePath = $this->dataDirectory . $store;
- // Check if the store exists.
- if (!file_exists($this->storePath)) {
- // The directory was not found, create one with cache directory.
- if (!mkdir($this->storePath, 0777, true)) throw new \Exception('Unable to create the store path at ' . $this->storePath);
- // Create the cache directory.
- if (!mkdir($this->storePath . 'cache', 0777, true)) throw new \Exception('Unable to create the store\'s cache directory at ' . $this->storePath . 'cache');
- // Create the data directory.
- if (!mkdir($this->storePath . 'data', 0777, true)) throw new \Exception('Unable to create the store\'s data directory at ' . $this->storePath . 'data');
- // Check if PHP has write permission in that directory.
- if (!is_writable($this->storePath)) throw new \Exception('Store path is not writable at "' . $this->storePath . '." Please change store path permission.');
- // Finally check if the directory is readable by PHP.
- if (!is_readable($this->storePath)) throw new \Exception('Store path is not readable at "' . $this->storePath . '." Please change store path permission.');
- }
- }
-
-
-
-
-}
-
-?> \ No newline at end of file