%PDF- %PDF-
Direktori : /home1/lightco1/public_html/plugins/vmpayment/klarna/klarna/api/pclasses/ |
Current File : //home1/lightco1/public_html/plugins/vmpayment/klarna/klarna/api/pclasses/jsonstorage.class.php |
<?php defined ('_JEXEC') or die(); /** * JsonStorage * * PHP Version 5.3 * * @category Payment * @package KlarnaAPI * @author MS Dev <ms.modules@klarna.com> * @copyright 2012 Klarna AB (http://klarna.com) * @license http://opensource.org/licenses/BSD-2-Clause BSD-2 * @link http://integration.klarna.com/ */ /** * Include the {@link PCStorage} interface. */ require_once 'storage.intf.php'; /** * JSON storage class for KlarnaPClass * * This class is an JSON implementation of the PCStorage interface. * * @category Payment * @package KlarnaAPI * @author MS Dev <ms.modules@klarna.com> * @copyright 2012 Klarna AB (http://klarna.com) * @license http://opensource.org/licenses/BSD-2-Clause BSD-2 * @link http://integration.klarna.com/ */ class JSONStorage extends PCStorage { /** * return the name of the storage type * * @return string */ public function getName() { return "json"; } /** * Checks if the file is writeable, readable or if the directory is. * * @param string $jsonFile json file that holds the pclasses * * @throws error * @return void */ protected function checkURI($jsonFile) { //If file doesn't exist, check the directory. if (!file_exists($jsonFile)) { $jsonFile = dirname($jsonFile); } if (!is_writable($jsonFile)) { throw new Klarna_FileNotWritableException($jsonFile); } if (!is_readable($jsonFile)) { throw new Klarna_FileNotReadableException($jsonFile); } } /** * Clear the pclasses * * @param string $uri uri to file to clear * * @throws KlarnaException * @return void */ public function clear($uri) { $this->checkURI($uri); unset($this->pclasses); if (file_exists($uri)) { unlink($uri); } } /** * Load pclasses from file * * @param string $uri uri to file to load * * @throws KlarnaException * @return void */ public function load($uri) { $this->checkURI($uri); if (!file_exists($uri)) { //Do not fail, if file doesn't exist. return; } $arr = json_decode(file_get_contents($uri), true); if (count($arr) == 0) { return; } foreach ($arr as $pclasses) { if (count($pclasses) == 0) { continue; } foreach ($pclasses as $pclass) { $this->addPClass(new KlarnaPClass($pclass)); } } } /** * Save pclasses to file * * @param string $uri uri to file to save * * @throws KlarnaException * @return void */ public function save($uri) { try { $this->checkURI($uri); $output = array(); foreach ($this->pclasses as $eid => $pclasses) { foreach ($pclasses as $pclass) { if (!isset($output[$eid])) { $output[$eid] = array(); } $output[$eid][] = $pclass->toArray(); } } if (count($this->pclasses) > 0) { file_put_contents($uri, json_encode($output)); } else { file_put_contents($uri, ""); } } catch(Exception $e) { throw new KlarnaException($e->getMessage()); } } }