/**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_POST);
     $objFormParam->convParam();
     $arrForm = array();
     switch ($this->getMode()) {
         case 'edit':
             $arrForm = $objFormParam->getHashArray();
             $this->arrErr = $objFormParam->checkError();
             // エラーなしの場合にはデータを更新
             if (count($this->arrErr) == 0) {
                 // データ更新
                 $this->arrErr = $this->updateData($arrForm);
                 if (count($this->arrErr) == 0) {
                     // コンパイルファイルのクリア処理
                     SC_Utils_Ex::clearCompliedTemplate();
                     $this->tpl_onload = "alert('登録が完了しました。');";
                 }
             }
             break;
         default:
             // プラグイン情報を取得.
             $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode("AddProduct");
             $arrForm['ssl'] = $plugin['free_field1'];
             break;
     }
     $this->arrForm = $arrForm;
     $this->setTemplate($this->tpl_mainpage);
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_POST);
     $objFormParam->convParam();
     $arrForm = array();
     switch ($this->getMode()) {
         case 'edit':
             $arrForm = $objFormParam->getHashArray();
             $this->arrErr = $objFormParam->checkError();
             // エラーなしの場合にはデータを更新
             if (count($this->arrErr) == 0) {
                 // データ更新
                 $this->arrErr = $this->save($arrForm);
                 if (count($this->arrErr) == 0) {
                     $this->tpl_onload = "alert('登録が完了しました。');";
                     $this->tpl_onload .= 'window.close();';
                 }
             }
             break;
         default:
             // プラグイン情報を取得.
             $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode("BreadcrumbList");
             $arrForm['css_data'] = $plugin['free_field1'];
             break;
     }
     $this->arrForm = $arrForm;
     $this->setTemplate($this->tpl_mainpage);
 }
 protected function checkErrorExtended($arrParam)
 {
     $arrErr = array();
     // プラグインが有効化されている事を確認
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $enable = $objQuery->getOne("SELECT enable FROM dtb_plugin WHERE plugin_code = 'AddProduct'");
     if ($enable != PLUGIN_ENABLE_TRUE) {
         $arrErr['access_token'] = '※ プラグインが有効化されていません。';
         return $arrErr;
     }
     // アクセストークンをチェック
     if (!$this->isValidToken($arrParam['access_token'])) {
         $arrErr['access_token'] = '※ 有効なアクセストークンではありません。';
         return $arrErr;
     }
     // プラグイン設定(SSL)を取得
     $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode("AddProduct");
     if ($plugin['free_field1'] === 'Only') {
         if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
             // SSLアクセス
         } else {
             $arrErr['not ssl'] = '※ 必ずSSLでアクセスしてください。';
             return $arrErr;
         }
     }
     return $arrErr;
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_POST);
     $objFormParam->convParam();
     $this->arrErr = $this->lfCheckError($objFormParam);
     $arrForm = array();
     switch ($this->getMode()) {
         case 'edit':
             $arrForm = $objFormParam->getHashArray();
             $this->arrErr = $objFormParam->checkError();
             // エラーなしの場合にはデータを更新
             if (count($this->arrErr) == 0) {
                 // データ更新
                 $this->arrErr = $this->updateData($arrForm);
                 if (count($this->arrErr) == 0) {
                     $this->tpl_onload = "alert('登録が完了しました。');";
                     $this->tpl_onload .= 'window.close();';
                 }
             }
             break;
         default:
             // プラグイン情報を取得.
             $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode("VideoPlayer");
             $arrForm['product_id'] = $plugin['product_id'];
             $arrForm['video_url'] = $plugin['video_url'];
             $arrForm['disp_width'] = $plugin['disp_width'];
             $arrForm['disp_height'] = $plugin['disp_height'];
             break;
     }
     $this->arrForm = $arrForm;
     $this->setTemplate($this->tpl_mainpage);
 }
 static function saveConfig($value = array(), $key = "free_field1", $plugin_code = "KisekaeTouch")
 {
     $objPlugin = new SC_Plugin_Util_Ex();
     $arrPlugin = $objPlugin->getPluginByPluginCode($plugin_code);
     if (!SC_Utils_Ex::isBlank($value) && is_array($value)) {
         $objQuery =& SC_Query_Ex::getSingletonInstance();
         $table = 'dtb_plugin';
         $where = 'plugin_code = ?';
         $objQuery->update($table, array($key => serialize($value)), $where, array("KisekaeTouch"));
     }
     $config = unserialize($arrPlugin[$key]);
     return $config;
 }
 /**
  * Page のアクション.
  *
  * @return void
  */
 function action()
 {
     $objFormParam = new SC_FormParam_Ex();
     $this->lfInitParam($objFormParam);
     $objFormParam->setParam($_POST);
     $objFormParam->convParam();
     $arrForm = array();
     switch ($this->getMode()) {
         case 'edit':
             $arrForm = $objFormParam->getHashArray();
             $this->arrErr = $objFormParam->checkError();
             // エラーなしの場合にはデータを更新
             if (count($this->arrErr) == 0) {
                 // データ更新
                 $this->arrErr = $this->updateData($arrForm);
                 if (count($this->arrErr) == 0) {
                     $this->tpl_onload = "alert('登録が完了しました。');";
                     $this->tpl_onload .= 'window.close();';
                 }
             }
             break;
         default:
             // プラグイン情報を取得.
             $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode("VideoPlayer");
             $arrForm['disp_rule'] = $plugin['free_field1'];
             if ($plugin['free_field2']) {
                 $arrForm['disp_count'] = unserialize($plugin['free_field2']);
                 $arrForm['disp_count_pc'] = $arrForm['disp_count'][10];
                 $arrForm['disp_count_mb'] = $arrForm['disp_count'][1];
                 $arrForm['disp_count_sp'] = $arrForm['disp_count'][2];
             }
             if ($plugin['free_field3']) {
                 $arrForm['product_status'] = unserialize($plugin['free_field3']);
             }
             break;
     }
     $this->arrForm = $arrForm;
     $this->setTemplate($this->tpl_mainpage);
 }
 /**
  * プラグインをインストールします.
  *
  * @param  string $archive_file_name アーカイブファイル名.
  * @param  string $key               キー.
  * @return array  エラー情報を格納した連想配列.
  */
 public function installPlugin($archive_file_name, $key)
 {
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objQuery->begin();
     // 一時展開ディレクトリにファイルがある場合は事前に削除.
     $arrFileHash = SC_Helper_FileManager_Ex::sfGetFileList(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
     if (count($arrFileHash) > 0) {
         SC_Helper_FileManager_Ex::deleteFile(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, false);
     }
     //シンタックスエラーがあるtar.gzをアップ後、削除するとたまにディレクトリが消えるので追加
     $this->makeDir(PLUGIN_UPLOAD_REALDIR);
     $arrErr = array();
     // 必須拡張モジュールのチェック
     $arrErr = SC_Plugin_Util_Ex::checkExtension($key);
     if ($this->isError($arrErr) === true) {
         return $arrErr;
     }
     // ファイルをチェックし一時展開用ディレクトリに展開します.
     $arrErr = $this->unpackPluginFile($archive_file_name, DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, $key);
     if ($this->isError($arrErr) === true) {
         return $arrErr;
     }
     // plugin_infoを読み込み.
     $arrErr = $this->requirePluginFile(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR . 'plugin_info.php', $key);
     if ($this->isError($arrErr) === true) {
         $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
         return $arrErr;
     }
     // リフレクションオブジェクトを生成.
     $objReflection = new ReflectionClass('plugin_info');
     $arrPluginInfo = $this->getPluginInfo($objReflection);
     // プラグインクラスに必須となるパラメータが正常に定義されているかチェックします.
     $arrErr = $this->checkPluginConstants($objReflection, DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
     if ($this->isError($arrErr) === true) {
         $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
         return $arrErr;
     }
     // 既にインストールされていないかを判定.
     if ($this->isInstalledPlugin($arrPluginInfo['PLUGIN_CODE']) === true) {
         $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
         $arrErr['plugin_file'] = '※ ' . $arrPluginInfo['PLUGIN_NAME'] . 'は既にインストールされています。<br/>';
         return $arrErr;
     }
     // プラグイン情報をDB登録
     if ($this->registerData($arrPluginInfo) === false) {
         $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
         $arrErr['plugin_file'] = '※ DB登録に失敗しました。<br/>';
         return $arrErr;
     }
     // プラグイン保存ディレクトリを作成し、一時展開用ディレクトリから移動します.
     $plugin_dir_path = $this->getPluginDir($arrPluginInfo['PLUGIN_CODE']);
     $this->makeDir($plugin_dir_path);
     SC_Utils_Ex::copyDirectory(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, $plugin_dir_path);
     // プラグイン情報を取得
     $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode($arrPluginInfo['PLUGIN_CODE']);
     // クラスファイルを読み込み.
     $plugin_class_file_path = $this->getPluginFilePath($plugin['plugin_code'], $plugin['class_name']);
     $arrErr = $this->requirePluginFile($plugin_class_file_path, $key);
     if ($this->isError($arrErr) === true) {
         $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, $plugin['plugin_id']);
         return $arrErr;
     }
     // プラグインhtmlディレクトリ作成
     $plugin_html_dir_path = $this->getHtmlPluginDir($plugin['plugin_code']);
     $this->makeDir($plugin_html_dir_path);
     $arrErr = $this->execPlugin($plugin, $plugin['class_name'], 'install');
     if ($this->isError($arrErr) === true) {
         // エラー時, transactionがabortしてるのでロールバック
         $objQuery->rollback();
         $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, $plugin['plugin_id'], $plugin_html_dir_path);
         return $arrErr;
     }
     $objQuery->commit();
     // 不要なファイルの削除
     SC_Helper_FileManager_Ex::deleteFile(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, false);
     return $arrErr;
 }
 /**
  * 新着商品の情報を取得
  *
  * @return array
  * @setcookie array
  */
 function lfGetVideoPlayer()
 {
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     $objProduct = new SC_Product_Ex();
     // プラグイン情報を取得.
     $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode("VideoPlayer");
     //表示条件
     $disp_rule = is_numeric($plugin['free_field1']) ? $plugin['free_field1'] : 0;
     //表示件数
     $disp_count = unserialize($plugin['free_field2']);
     //表示ステータス
     $product_status = $plugin['free_field3'];
     //デバイスフラグ
     $disp_device == SC_Display_Ex::detectDevice();
     // 新着商品情報取得
     $col = 'product_id';
     $table = 'dtb_products';
     $where = 'status = 1 and del_flg = 0';
     if ($product_status) {
         $arrStatus = unserialize($product_status);
         if (is_array($arrStatus)) {
             $strstatus = '';
             foreach ($arrStatus as $status) {
                 if ($strstatus) {
                     $strstatus .= ',';
                 }
                 $strstatus .= $status;
             }
             $where .= ' ' . 'AND product_id IN (' . '    SELECT product_id FROM dtb_product_status WHERE product_status_id IN (' . $strstatus . ')' . ')';
         }
     }
     switch ($disp_rule) {
         case 1:
             //登録日順
             $objQuery->setOrder('create_date desc');
             break;
         case 2:
             //更新日順
             $objQuery->setOrder('update_date desc');
             break;
     }
     if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_PC) {
         $objQuery->setLimit($disp_count[10]);
     } elseif (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) {
         $objQuery->setLimit($disp_count[1]);
     } elseif (SC_Display_Ex::detectDevice() == DEVICE_TYPE_SMARTPHONE) {
         $objQuery->setLimit($disp_count[2]);
     }
     $arrProducts = $objQuery->select($col, $table, $where);
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     if (count($arrProducts) > 0) {
         $arrProductId = array();
         foreach ($arrProducts as $key => $val) {
             $arrProductId[] = $val['product_id'];
         }
         // 商品詳細情報取得
         $arrTmp = $objProduct->getListByProductIds($objQuery, $arrProductId);
         foreach ($arrTmp as $key => $arrRow) {
             $_row = $arrRow;
             $arrProductList[] = $_row;
         }
     }
     return $arrProductList;
 }
 /**
  * プラグインをインストールします.
  *
  * @param string $plugin_code プラグインコード.
  * @param string $key キー.
  * @return array エラー情報を格納した連想配列.
  */
 function installPlugin($upload_file_file_name, $key)
 {
     // インストール前に不要なファイルを消しておきます.
     SC_Helper_FileManager_Ex::deleteFile(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, false);
     //シンタックスエラーがあるtar.gzをアップ後、削除するとたまにディレクトリが消えるので追加
     $this->makeDir(PLUGIN_UPLOAD_REALDIR);
     $arrErr = array();
     // 必須拡張モジュールのチェック
     $arrErr = SC_Plugin_Util_Ex::checkExtension($key);
     if ($this->isError($arrErr) === true) {
         return $arrErr;
     }
     // ファイルをチェックし一時展開用ディレクトリに展開します.
     $arrErr = $this->unpackPluginFile($upload_file_file_name, DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, $key);
     if ($this->isError($arrErr) === true) {
         return $arrErr;
     }
     // plugin_infoを読み込み.
     $arrErr = $this->requirePluginFile(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR . 'plugin_info.php', $key);
     if ($this->isError($arrErr) === true) {
         $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
         return $arrErr;
     }
     // リフレクションオブジェクトを生成.
     $objReflection = new ReflectionClass('plugin_info');
     $arrPluginInfo = $this->getPluginInfo($objReflection);
     // プラグインクラスに必須となるパラメータが正常に定義されているかチェックします.
     $arrErr = $this->checkPluginConstants($objReflection, DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
     if ($this->isError($arrErr) === true) {
         $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
         return $arrErr;
     }
     // プラグインコード
     $plugin_code = $arrPluginInfo['PLUGIN_CODE'];
     // プラグイン名
     $plugin_name = $arrPluginInfo['PLUGIN_NAME'];
     // 既にインストールされていないかを判定.
     if ($this->isInstalledPlugin($plugin_code) === true) {
         $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
         $arrErr['plugin_file'] = '※ ' . $plugin_name . 'は既にインストールされています。<br/>';
         return $arrErr;
     }
     // プラグイン情報をDB登録
     if ($this->registerData($arrPluginInfo) === false) {
         $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
         $arrErr['plugin_file'] = '※ DB登録に失敗しました。<br/>';
         return $arrErr;
     }
     // プラグイン保存ディレクトリを作成し、一時展開用ディレクトリから移動します.
     $plugin_dir_path = PLUGIN_UPLOAD_REALDIR . $plugin_code . '/';
     $this->makeDir($plugin_dir_path);
     SC_Utils_Ex::copyDirectory(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, $plugin_dir_path);
     // プラグイン情報を取得
     $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode($plugin_code);
     // クラスファイルを読み込み.
     $plugin_class_file_path = $plugin_dir_path . $plugin['class_name'] . '.php';
     $arrErr = $this->requirePluginFile($plugin_class_file_path, $key);
     if ($this->isError($arrErr) === true) {
         $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, $plugin['plugin_id']);
         return $arrErr;
     }
     // プラグインhtmlディレクトリ作成
     $plugin_html_dir = PLUGIN_HTML_REALDIR . $plugin_code;
     $this->makeDir($plugin_html_dir);
     $arrErr = $this->execPlugin($plugin, $plugin['class_name'], 'install');
     if ($this->isError($arrErr) === true) {
         $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, $plugin['plugin_id'], $plugin_html_dir);
         return $arrErr;
     }
     // 不要なファイルの削除
     SC_Helper_FileManager_Ex::deleteFile(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, false);
     return $arrErr;
 }
 function loadData()
 {
     $arrRet = array();
     $arrData = SC_Plugin_Util_Ex::getPluginByPluginCode("BreadcrumbList");
     if (!SC_Utils_Ex::isBlank($arrData['free_field1'])) {
         $arrRet['css_data'] = $arrData['free_field1'];
     }
     return $arrRet;
 }