Changeset 22978 for branches/version-2_13-dev/data
- Timestamp:
- 2013/07/20 16:21:44 (11 years ago)
- Location:
- branches/version-2_13-dev/data
- Files:
-
- 5 edited
- 4 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_13-dev/data/Smarty/templates/admin/ownersstore/subnavi.tpl
r22206 r22978 26 26 <li id="navi-ownersstore-index" class="<!--{if $tpl_subno == 'index'}-->on<!--{/if}-->"> 27 27 <a href="<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->ownersstore/<!--{$smarty.const.DIR_INDEX_PATH}-->"><span>プラグイン管理</span></a></li> 28 <li id="navi-ownersstore-plugin-hookpoint-list" class="<!--{if $tpl_subno == 'plugin-hookpoint-list'}-->on<!--{/if}-->"> 29 <a href="<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->ownersstore/plugin_hookpoint_list.php"><span>プラグインフックポイント管理</span></a></li> 28 30 <li id="navi-ownersstore-module" class="<!--{if $tpl_subno == 'module'}-->on<!--{/if}-->"> 29 31 <a href="<!--{$smarty.const.ROOT_URLPATH}--><!--{$smarty.const.ADMIN_DIR}-->ownersstore/module.php"><span>モジュール管理</span></a></li> -
branches/version-2_13-dev/data/class/pages/admin/ownersstore/LC_Page_Admin_OwnersStore.php
r22926 r22978 201 201 if ($plugins[$key]['enable'] === PLUGIN_ENABLE_TRUE) { 202 202 // 競合するプラグインがあるかを判定. 203 $plugins[$key]['conflict_message']= $this->checkConflictPlugin($plugin['plugin_id']); 203 //$plugins[$key]['conflict_message']= $this->checkConflictPlugin($plugin['plugin_id']); 204 $plugins[$key]['conflict_message'] = SC_Plugin_Util_Ex::checkConflictPlugin($plugin['plugin_id']); 204 205 } 205 206 } … … 340 341 function installPlugin($archive_file_name, $key) 341 342 { 343 $objQuery =& SC_Query_Ex::getSingletonInstance(); 344 $objQuery->begin(); 345 342 346 // 一時展開ディレクトリにファイルがある場合は事前に削除. 343 347 $arrFileHash = SC_Helper_FileManager_Ex::sfGetFileList(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR); … … 412 416 $arrErr = $this->execPlugin($plugin, $plugin['class_name'], 'install'); 413 417 if ($this->isError($arrErr) === true) { 418 // エラー時, transactionがabortしてるのでロールバック 419 $objQuery->rollback(); 414 420 $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, $plugin['plugin_id'], $plugin_html_dir_path); 415 421 return $arrErr; 416 422 } 417 423 424 $objQuery->commit(); 425 418 426 // 不要なファイルの削除 419 427 SC_Helper_FileManager_Ex::deleteFile(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, false); … … 755 763 // プラグイン情報をDB登録. 756 764 $objQuery =& SC_Query_Ex::getSingletonInstance(); 757 $objQuery->begin();758 765 $arr_sqlval_plugin = array(); 759 766 $plugin_id = $objQuery->nextVal('dtb_plugin_plugin_id'); … … 847 854 function execPlugin($obj, $class_name, $exec_func) 848 855 { 856 $objPluginInstaller = new SC_Plugin_Installer($exec_func, $obj); 857 849 858 $arrErr = array(); 850 859 if (method_exists($class_name, $exec_func) === true) { 851 $ret = call_user_func(array($class_name, $exec_func), $obj); 860 $ret = call_user_func_array( 861 array($class_name, $exec_func), 862 array($obj, $objPluginInstaller)); 852 863 if (!(is_null($ret) || $ret === true)) { 853 864 $arrErr[$obj['plugin_code']] = $ret; 854 865 } 866 $arrInstallErr = $objPluginInstaller->execPlugin(); 867 if ($arrInstallErr) { 868 $arrErr['plugin_file'] = "プラグインのインストールにしっぱいしました.<br/>"; 869 } 855 870 } else { 856 $arrErr['plugin_ error'] = '※ ' . $class_name . '.php に' . $exec_func . 'が見つかりません。<br/>';857 } 858 871 $arrErr['plugin_file'] = '※ ' . $class_name . '.php に' . $exec_func . 'が見つかりません。<br/>'; 872 } 873 859 874 return $arrErr; 860 875 } -
branches/version-2_13-dev/data/class/pages/admin/system/LC_Page_Admin_System_Log.php
r22926 r22978 188 188 $this->arrLogList['DB'] = 'DBログファイル'; 189 189 } 190 if (defined('PLUGIN_LOG_REALFILE') && strlen(PLUGIN_LOG_REALFILE) >= 1) { 191 $this->arrLogList['PLUGIN'] = 'プラグインログファイル'; 192 } 190 193 } 191 194 } -
branches/version-2_13-dev/data/class/plugin/SC_Plugin_Base.php
r22857 r22978 53 53 * @return void 54 54 */ 55 abstract function install($arrPlugin); 55 function install($arrPlugin, $objPluginInstaller = null) { 56 57 } 56 58 57 59 /** … … 63 65 * @return void 64 66 */ 65 abstract function uninstall($arrPlugin); 67 function uninstall($arrPlugin, $objPluginInstaller = null) { 68 69 } 66 70 67 71 /** … … 73 77 * @return void 74 78 */ 75 abstract function enable($arrPlugin); 79 function enable($arrPlugin, $objPluginInstaller = null) { 80 81 } 76 82 77 83 /** … … 83 89 * @return void 84 90 */ 85 abstract function disable($arrPlugin); 91 function disable($arrPlugin, $objPluginInstaller = null) { 92 93 } 86 94 87 95 /** -
branches/version-2_13-dev/data/class/plugin/SC_Plugin_Util.php
r22856 r22978 144 144 * 145 145 * @param integer $plugin_id 146 * @param integer $use_type 1=有効のみ 2=無効のみ 3=全て 146 147 * @return array フックポイントの一覧 147 148 */ 148 function getPluginHookPoint($plugin_id )149 function getPluginHookPoint($plugin_id, $use_type = 1) 149 150 { 150 151 $objQuery =& SC_Query_Ex::getSingletonInstance(); … … 152 153 $from = 'dtb_plugin_hookpoint'; 153 154 $where = 'plugin_id = ?'; 154 155 switch ($use_type) { 156 case 1: 157 $where .= ' AND use_flg = true'; 158 break; 159 160 case 2: 161 $where .= ' AND use_flg = false'; 162 break; 163 164 case 3: 165 default: 166 break; 167 } 155 168 return $objQuery->select($cols, $from, $where, array($plugin_id)); 169 } 170 171 /** 172 * プラグインフックポイントを取得する. 173 * 174 * @param integer $use_type 1=有効のみ 2=無効のみ 3=全て 175 * @return array フックポイントの一覧 176 */ 177 function getPluginHookPointList($use_type = 3) 178 { 179 $objQuery =& SC_Query_Ex::getSingletonInstance(); 180 $objQuery->setOrder('hook_point ASC, priority DESC'); 181 $cols = 'dtb_plugin_hookpoint.*, dtb_plugin.priority, dtb_plugin.plugin_name'; 182 $from = 'dtb_plugin_hookpoint LEFT JOIN dtb_plugin USING(plugin_id)'; 183 switch ($use_type) { 184 case 1: 185 $where = 'enable = 1 AND use_flg = true'; 186 break; 187 188 case 2: 189 $where = 'enable = 1 AND use_flg = false'; 190 break; 191 192 case 3: 193 default: 194 $where = ''; 195 break; 196 } 197 return $objQuery->select($cols, $from, $where); 198 //$arrList = array(); 199 //foreach ($arrRet AS $key=>$val) { 200 // $arrList[$val['hook_point']][$val['plugin_id']] = $val; 201 //} 202 //return $arrList; 156 203 } 157 204 … … 183 230 return $arrErr; 184 231 } 232 233 /** 234 * フックポイントのON/OFF変更 235 * 236 * @param intger $plugin_hookpoint_id フックポイントID 237 * @return bolean $use_flg:ture=ON、false=OFF 238 */ 239 function setPluginHookPointChangeUse($plugin_hookpoint_id, $use_flg = false) { 240 $objQuery =& SC_Query_Ex::getSingletonInstance(); 241 $sqlval['use_flg'] = $use_flg; 242 $objQuery->update('dtb_plugin_hookpoint', $sqlval, 'plugin_hookpoint_id = ?', array($plugin_hookpoint_id)); 243 } 244 245 /** 246 * フックポイントで衝突する可能性のあるプラグインを判定.メッセージを返します. 247 * 248 * @param int $plugin_id プラグインID 249 * @return string $conflict_alert_message メッセージ 250 */ 251 function checkConflictPlugin($plugin_id = '') 252 { 253 // フックポイントを取得します. 254 $where = 'T1.hook_point = ? AND NOT T1.plugin_id = ? AND T2.enable = ?'; 255 if ($plugin_id > 0) { 256 $hookPoints = SC_Plugin_Util::getPluginHookPoint($plugin_id, ''); 257 } else { 258 $hookPoints = SC_Plugin_Util::getPluginHookPointList(1); 259 $where .= ' AND T1.use_flg = true'; 260 } 261 262 $conflict_alert_message = ''; 263 $arrConflictPluginName = array(); 264 $arrConflictHookPoint = array(); 265 $objQuery =& SC_Query_Ex::getSingletonInstance(); 266 $objQuery->setGroupBy('T1.hook_point, T1.plugin_id, T2.plugin_name'); 267 $table = 'dtb_plugin_hookpoint AS T1 LEFT JOIN dtb_plugin AS T2 ON T1.plugin_id = T2.plugin_id'; 268 foreach ($hookPoints as $hookPoint) { 269 // 競合するプラグインを取得する, 270 $conflictPlugins = $objQuery->select('T1.hook_point, T1.plugin_id, T2.plugin_name', $table, $where, array($hookPoint['hook_point'], $hookPoint['plugin_id'], PLUGIN_ENABLE_TRUE)); 271 272 // プラグイン名重複を削除する為、専用の配列に格納し直す. 273 foreach ($conflictPlugins as $conflictPlugin) { 274 // プラグイン名が見つからなければ配列に格納 275 if (!in_array($conflictPlugin['plugin_name'], $arrConflictPluginName)) { 276 $arrConflictPluginName[] = $conflictPlugin['plugin_name']; 277 } 278 // プラグイン名が見つからなければ配列に格納 279 if (!in_array($conflictPlugin['hook_point'], $arrConflictHookPoint)) { 280 $arrConflictHookPoint[] = $conflictPlugin['hook_point']; 281 } 282 } 283 } 284 285 if ($plugin_id > 0) { 286 // メッセージをセットします. 287 foreach ($arrConflictPluginName as $conflictPluginName) { 288 $conflict_alert_message .= '* ' . $conflictPluginName . 'と競合する可能性があります。<br/>'; 289 } 290 return $conflict_alert_message; 291 } else { 292 return $arrConflictHookPoint; 293 } 294 } 295 185 296 }
Note: See TracChangeset
for help on using the changeset viewer.