listTableFields($table); if (in_array('priority', $arrCols)) { $objQuery->setOrder('priority DESC, plugin_id ASC'); } $arrRet = $objQuery->select($col,$table,$where); // プラグインフックポイントを取得. $max = count($arrRet); for ($i = 0; $i < $max; $i++) { $plugin_id = $arrRet[$i]['plugin_id']; $arrHookPoint = SC_Plugin_Util::getPluginHookPoint($plugin_id); $arrRet[$i]['plugin_hook_point'] = $arrHookPoint; } return $arrRet; } /** * インストールされているプラグインを取得する。 * * @return array $arrRet インストールされているプラグイン. */ function getAllPlugin() { $objQuery =& SC_Query_Ex::getSingletonInstance(); $col = '*'; $table = 'dtb_plugin'; // XXX 2.11.0 互換のため $arrCols = $objQuery->listTableFields($table); if (in_array('priority', $arrCols)) { $objQuery->setOrder('plugin_id ASC'); } $arrRet = $objQuery->select($col,$table); return $arrRet; } /** * プラグインIDをキーにプラグインを取得する。 * * @param int $plugin_id プラグインID. * @return array プラグインの基本情報. */ function getPluginByPluginId($plugin_id) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $col = '*'; $table = 'dtb_plugin'; $where = 'plugin_id = ?'; $plugin = $objQuery->getRow($col, $table, $where, array($plugin_id)); return $plugin; } /** * プラグインコードをキーにプラグインを取得する。 * * @param string $plugin_code プラグインコード. * @return array プラグインの基本情報. */ function getPluginByPluginCode($plugin_code) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $col = '*'; $table = 'dtb_plugin'; $where = 'plugin_code = ?'; $plugin = $objQuery->getRow($col, $table, $where, array($plugin_code)); return $plugin; } /** * プラグインIDをキーにプラグインを削除する。 * * @param string $plugin_id プラグインID. * @return array プラグインの基本情報. */ function deletePluginByPluginId($plugin_id) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $where = 'plugin_id = ?'; $objQuery->delete('dtb_plugin', $where, array($plugin_id)); $objQuery->delete('dtb_plugin_hookpoint', $where, array($plugin_id)); } /** * プラグインディレクトリの取得 * * @return array $arrPluginDirectory */ function getPluginDirectory() { $arrPluginDirectory = array(); if (is_dir(PLUGIN_UPLOAD_REALDIR)) { if ($dh = opendir(PLUGIN_UPLOAD_REALDIR)) { while (($pluginDirectory = readdir($dh)) !== false) { $arrPluginDirectory[] = $pluginDirectory; } closedir($dh); } } return $arrPluginDirectory; } /** * プラグインIDをキーに, プラグインフックポイントを取得する. * * @param integer $plugin_id * @return array フックポイントの一覧 */ function getPluginHookPoint($plugin_id) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $cols = '*'; $from = 'dtb_plugin_hookpoint'; $where = 'plugin_id = ? AND use_flg = true'; return $objQuery->select($cols, $from, $where, array($plugin_id)); } function getPluginHookPointList() { $objQuery =& SC_Query_Ex::getSingletonInstance(); $objQuery->setOrder('hook_point ASC, priority DESC'); $cols = 'dtb_plugin_hookpoint.*, dtb_plugin.priority, dtb_plugin.plugin_name'; $from = 'dtb_plugin_hookpoint LEFT JOIN dtb_plugin USING(plugin_id)'; $where = 'enable = 1'; $arrRet = $objQuery->select($cols, $from, $where); $arrList = array(); foreach ($arrRet AS $key=>$val) { $arrList[$val['hook_point']][$val['plugin_id']] = $val; } return $arrList; } /** * プラグイン利用に必須のモジュールチェック * * @param string $key エラー情報を格納するキー * @return array $arrErr エラー情報を格納した連想配列. */ function checkExtension($key) { // プラグイン利用に必須のモジュール // 'EC-CUBEバージョン' => array('モジュール名') $arrRequireExtension = array( '2.12.0' => array('dom'), '2.12.1' => array('dom'), '2.12.2' => array('dom') ); // 必須拡張モジュールのチェック $arrErr = array(); if (is_array($arrRequireExtension[ECCUBE_VERSION])) { foreach ($arrRequireExtension[ECCUBE_VERSION] AS $val) { if (!extension_loaded($val)) { $arrErr[$key] .= "※ プラグインを利用するには、拡張モジュール「${val}」が必要です。
"; } } } return $arrErr; } /** * フックポイントのON/OFF変更 * * @param intger $plugin_hookpoint_id フックポイントID * @return bolean $use_flg:ture=ON、false=OFF */ function setPluginHookPointChangeUse($plugin_hookpoint_id, $use_flg = false) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $sqlval['use_flg'] = $use_flg; $objQuery->update('dtb_plugin_hookpoint', $sqlval, 'plugin_hookpoint_id = ?', array($plugin_hookpoint_id)); } }