%PDF- %PDF-
Direktori : /home/lightco1/www/lightingrepublic.com.au/plugins/vmpayment/klarna/klarna/api/ |
Current File : /home/lightco1/www/lightingrepublic.com.au/plugins/vmpayment/klarna/klarna/api/klarnaconfig.php |
<?php defined('_JEXEC') or die('Restricted access'); /** * Copyright 2010 KLARNA AB. All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY KLARNA AB "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KLARNA AB OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of KLARNA AB. * * @package KlarnaAPI */ /** * Configuration class for the Klarna instance. * * KlarnaConfig stores added fields in JSON, it also prepends.<br> * Loads/saves specified file, or default file, if {@link KlarnaConfig::$store} is set to true.<br> * * You add settings using the ArrayAccess:<br> * $arr['field'] = $val or $arr->offsetSet('field', $val);<br> * * Available settings are:<br> * eid - Merchant ID (int) * secret - Shared secret (string) * country - Country constant or code (int|string) * language - Language constant or code (int|string) * currency - Currency constant or code (int|string) * mode - Klarna::BETA or Klarna::LIVE * ssl - Use HTTPS or HTTP. (bool) * candice - Status reporting to Klarna, to detect erroneous integrations, etc. (bool) * pcStorage - Storage module, e.g. 'json' * pcURI - URI to where the PClasses are stored, e.g. '/srv/shop/pclasses.json' * xmlrpcDebug - XMLRPC debugging (bool) * debug - Normal debugging (bool) * * @package KlarnaAPI * @version 2.1.3 * @since 2011-10-10 * @link http://integration.klarna.com/ * @copyright Copyright (c) 2010 Klarna AB (http://klarna.com) */ class KlarnaConfig implements ArrayAccess { /** * An array containing all the options for this config. * * @ignore Do not show in PHPDoc. * @var array */ protected $options; /** * If set to true, saves the config. * * @var bool */ public static $store = true; /** * URI to the config file. * * @ignore Do not show in PHPDoc. * @var string */ protected $file; /** * Class constructor * * Loads specified file, or default file, if {@link KlarnaConfig::$store} is set to true. * * @param string $file URI to config file, e.g. ./config.json */ public function __construct($file = null) { $this->options = array(); if($file) { $this->file = $file; if(is_readable($this->file)) { $this->options = json_decode(file_get_contents($this->file), true); } } } /** * Clears the config. * * @return void */ public function clear() { $this->options = array(); } /** * Class destructor * * Saves specified file, or default file, if {@link KlarnaConfig::$store} is set to true. */ public function __destruct() { if(self::$store && $this->file) { if((!file_exists($this->file) && is_writable(dirname($this->file))) || is_writable($this->file)) { file_put_contents($this->file, json_encode($this->options)); } } } /** * Returns true whether the field exists. * * @param mixed $offset * @return bool */ public function offsetExists($offset) { if(isset($this->options[$offset])) { return true; } return false; } /** * Used to get the value of a field. * * @param mixed $offset * @return mixed */ public function offsetGet($offset) { if(!$this->offsetExists($offset)) { return null; } return $this->options[$offset]; } /** * Used to set a value to a field. * * @param mixed $field * @param mixed $value * @return void */ public function offsetSet($offset, $value) { $this->options[$offset] = $value; } /** * Removes the specified field. * * @param mixed $offset * @return void */ public function offsetUnset($offset) { unset($this->options[$offset]); } }