/** * 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; }