File: /virtual/nagasaki/public_html/ec/app/Plugin/GmoEpsilon/Util/PluginUtil.php
<?php
namespace Plugin\GmoEpsilon\Util;
/**
* 決済モジュール基本クラス
*/
class PluginUtil
{
private $app;
public function __construct(\Eccube\Application $app)
{
$this->app = $app;
}
/** サブデータを保持する変数 */
var $subData = null;
/** モジュール情報 */
var $pluginInfo = array(
'pluginName' => 'イプシロン決済プラグイン',
'pluginCode' => 'GmoEpsilon',
);
/**
* Enter description here...
*
* @var unknown_type
*/
var $updateFile = array();
/**
* GmoPaymentGateway:install()を呼んだ際にdtb_moduleのsub_dataカラムへ登録される値
* シリアライズされて保存される.
*
* master_settings => 初期データなど
* user_settings => 設定情報など、ユーザの入力によるデータ
*/
var $installSubData = array(
// 初期データなどを保持する
'master_settings' => array(),
// 設定情報など、ユーザの入力によるデータを保持する
'user_settings' => array(),
);
private $pluginCode;
/**
* PG_MULPAYのインスタンスを取得する
*
* @return PluginUtil
*/
static function &getInstance($app)
{
static $paymentUtil;
if (empty($paymentUtil)) {
$paymentUtil = new PluginUtil($app);
}
$paymentUtil->init();
return $paymentUtil;
}
/**
* 初期化処理.
*/
function init()
{
foreach ($this->pluginInfo as $k => $v) {
$this->$k = $v;
}
}
/**
* 終了処理.
*/
function destroy()
{
}
/**
* モジュール表示用名称を取得する
*
* @return string
*/
function getName()
{
return $this->pluginName;
}
/**
* モジュールコードを取得する
*
* @param boolean $toLower trueの場合は小文字へ変換する.デフォルトはfalse.
* @return string
*/
function getCode($toLower = false)
{
$pluginCode = $this->pluginCode;
return $pluginCode;
}
/**
* サブデータを取得する.
*
* @return mixed|null
*/
function getSubData($key = null)
{
if (isset($this->subData)) {
if (is_null($key)) {
return $this->subData;
} else {
return $this->subData['user_settings'][$key];
}
}
$pluginCode = $this->getCode(true);
$ret = $this->app['orm.em']->getRepository('Plugin\GmoEpsilon\Entity\GmoEpsilonPlugin')
->getSubData('GmoEpsilon');
if (isset($ret)) {
$this->subData = unserialize($ret);
if (is_null($key)) {
return $this->subData;
} else {
return $this->subData['user_settings'][$key];
}
}
return null;
}
/**
* サブデータをDBへ登録する
* $keyがnullの時は全データを上書きする
*
* @param mixed $data
* @param string $key
*/
function registerSubData($data, $key = null)
{
$subData = $this->getSubData();
if (is_null($key)) {
$subData = $data;
} else {
$subData[$key] = $data;
}
$subDataSer = serialize($subData);
$pluginCode = $this->getCode(true);
$GmoPlugin = $this->app['eccube.plugin.epsilon.repository.epsilon_plugin']->findOneBy(array('code' => $pluginCode));
if (!is_null($GmoPlugin)) {
$GmoPlugin->setSubData($subDataSer);
$this->app['orm.em']->persist($GmoPlugin);
$this->app['orm.em']->flush();
}
$this->subData = $subData;
}
function getUserSettings($key = null)
{
$subData = $this->getSubData();
$returnData = null;
if (is_null($key)) {
$returnData = isset($subData['user_settings'])
? $subData['user_settings']
: null;
} else {
$returnData = isset($subData['user_settings'][$key])
? $subData['user_settings'][$key]
: null;
}
return $returnData;
}
function registerUserSettings($data)
{
$this->registerSubData($data, 'user_settings');
}
/**
* インストール処理
*
* @param boolean $force true時、上書き登録を行う
*/
function install($force = false)
{
$subData = $this->getSubData();
if (is_null($subData) || $force) {
$this->registerSubdata(
$this->installSubData['master_settings'],
'master_settings'
);
}
}
}