Index: /branches/version-2_12-dev/html/install/sql/insert_data.sql
===================================================================
--- /branches/version-2_12-dev/html/install/sql/insert_data.sql	(revision 21460)
+++ /branches/version-2_12-dev/html/install/sql/insert_data.sql	(revision 21467)
@@ -1214,4 +1214,5 @@
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('NOSTOCK_HIDDEN', 'false', 291, '在庫無し商品の非表示(true:非表示、false:表示)');
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('USE_MULTIPLE_SHIPPING', 'true', 293, '複数配送先指定機能を利用するか(true:利用する、false:利用しない)');
+INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('SLTEXT_LEN', '500', 294, '短文の文字数');
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('DEFAULT_TEMPLATE_NAME', '"default"', 300, 'デフォルトテンプレート名(PC)');
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('MOBILE_DEFAULT_TEMPLATE_NAME', '"mobile"', 301, 'デフォルトテンプレート名(モバイル)');
@@ -1257,4 +1258,5 @@
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('DOWNLOADS_TEMP_DIR', 'DATA_REALDIR . "downloads/tmp/"', 609, 'アップロード一時ディレクトリ');
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('PLUGIN_HTML_URL', 'USER_URL . PLUGIN_DIR', 610, 'プラグイン 外部ファイルURL');
+INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('PLUGIN_EXTENSION', '"tar,tar.gz"', 611, 'プラグインファイル登録可能拡張子(カンマ区切り)');
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('DOWNLOAD_DAYS_LEN', '3', 700, '日数桁数');
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('DOWNLOAD_EXTENSION', '"zip,lzh,jpg,jpeg,gif,png,mp3,pdf,csv"', 701, 'ダウンロードファイル登録可能拡張子(カンマ区切り)"');
Index: /branches/version-2_12-dev/data/Smarty/templates/admin/system/plugin.tpl
===================================================================
--- /branches/version-2_12-dev/data/Smarty/templates/admin/system/plugin.tpl	(revision 21458)
+++ /branches/version-2_12-dev/data/Smarty/templates/admin/system/plugin.tpl	(revision 21467)
@@ -92,5 +92,5 @@
     <h2>プラグイン一覧</h2>
     <!--{if count($plugins) > 0}-->
-        <span class="attention"><!--{$arrErr.plugin_error}--><!--{$arrErr.update_plugin_file}--></span>
+        <span class="attention"><!--{$arrErr.plugin_error}--></span>
         <table class="system-plugin" width="900">
             <col width="10%" />
@@ -102,11 +102,12 @@
             </tr>
             <!--{section name=data loop=$plugins}-->
-            <tr <!--{if $plugins[data].enable == $smarty.const.PLUGIN_ENABLE_FALSE}--> style="background:#C9C9C9;" <!--{/if}-->>
+            <!--{assign var=plugin value=$plugins[data]}-->
+            <tr <!--{if $plugin.enable == $smarty.const.PLUGIN_ENABLE_FALSE}--> style="background:#C9C9C9;" <!--{/if}-->>
                 <!--ロゴ-->
                 <td class="center plugin_img">
-                    <!--{if $plugins[data].plugin_site_url != '' }-->
-                        <a href="?" onclick="win03('<!--{$plugins[data].plugin_site_url|h}-->','plugin_site_url','620','760'); return false;"><img src="<!--{$smarty.const.ROOT_URLPATH}-->plugin/<!--{$plugins[data].plugin_code}-->/logo.png"/></a>&nbsp;
+                    <!--{if $plugin.plugin_site_url != '' }-->
+                        <a href="?" onclick="win03('<!--{$plugin.plugin_site_url|h}-->','plugin_site_url','620','760'); return false;"><img src="<!--{$smarty.const.ROOT_URLPATH}-->plugin/<!--{$plugin.plugin_code}-->/logo.png"width="65" height="65"/></a>&nbsp;
                     <!--{else}-->
-                        <img src="<!--{$smarty.const.ROOT_URLPATH}-->plugin/<!--{$plugins[data].plugin_code}-->/logo.png"/>
+                        <img src="<!--{$smarty.const.ROOT_URLPATH}-->plugin/<!--{$plugin.plugin_code}-->/logo.png"/>
                     <!--{/if}-->
 
@@ -117,47 +118,48 @@
                             <!-- ▼plugin_site_urlが設定されている場合はリンクとして表示 -->
                             <span class="plugin_name">
-                            <!--{if $plugins[data].plugin_site_url != '' }-->
-                                <a href="?" onclick="win03('<!--{$plugins[data].plugin_site_url|h}-->','plugin_site_url','620','760'); return false;"><!--{$plugins[data].plugin_name|default:$plugins[data].plugin_code|h}--></a>&nbsp;
+                            <!--{if $plugin.plugin_site_url != '' }-->
+                                <a href="?" onclick="win03('<!--{$plugin.plugin_site_url|h}-->','plugin_site_url','620','760'); return false;"><!--{$plugin.plugin_name|default:$plugin.plugin_code|h}--></a>&nbsp;
                             <!--{else}-->
-                                <sapn><!--{$plugins[data].plugin_name|default:$plugins[data].plugin_code|h}-->&nbsp;</sapn>
+                                <sapn><!--{$plugin.plugin_name|default:$plugin.plugin_code|h}-->&nbsp;</sapn>
                             <!--{/if}-->
                             </span>
                         <!-- プラグインバージョン -->
-                            <!--{if $plugins[data].plugin_version != ''}--><!--{$plugins[data].plugin_version|h}--><!--{/if}-->&nbsp;
+                            <!--{if $plugin.plugin_version != ''}--><!--{$plugin.plugin_version|h}--><!--{/if}-->&nbsp;
                         <!-- 作者 -->
-                            <!--{if $plugins[data].author != ''}-->
+                            <!--{if $plugin.author != ''}-->
                                 <!-- ▼author_site_urlが設定されている場合はリンクとして表示 -->
-                                <!--{if $plugins[data].author_site_url != '' }-->
-                                    <span>(by <a href="?" onclick="win03('<!--{$plugins[data].author_site_url|h}-->','author_site_url','620','760'); return false;"><!--{$plugins[data].author|default:'-'|h}--></a>)</span>
+                                <!--{if $plugin.author_site_url != '' }-->
+                                    <span>(by <a href="?" onclick="win03('<!--{$plugin.author_site_url|h}-->','author_site_url','620','760'); return false;"><!--{$plugin.author|default:'-'|h}--></a>)</span>
                                 <!--{else}-->
-                                    <span>(by <!--{$plugins[data].author|default:'-'|h}-->)</span>
+                                    <span>(by <!--{$plugin.author|default:'-'|h}-->)</span>
                                 <!--{/if}-->
                             <!--{/if}-->
                         <br />
                         <!-- 説明 -->
-                            <p class="description"><!--{$plugins[data].plugin_description|default:'-'|h}--></p>
+                            <p class="description"><!--{$plugin.plugin_description|default:'-'|h}--></p>
                         <div>
-                            <span class="ec_cube_version">対応EC-CUBEバージョン ：<!--{$plugins[data].compliant_version|default:'-'|h}--></span><br/>
+                            <span class="ec_cube_version">対応EC-CUBEバージョン ：<!--{$plugin.compliant_version|default:'-'|h}--></span><br/>
+                            <span class="attention"><!--{$arrErr[$plugin.plugin_code]}--></span>
                             <!-- 設定 -->
-                                <!--{if $plugins[data].config_flg == true && $plugins[data].status != $smarty.const.PLUGIN_STATUS_UPLOADED}-->
-                                    <a href="?" onclick="win03('<!--{$smarty.const.ROOT_URLPATH}-->plugin/<!--{$plugins[data].plugin_code}-->/config.php','plugin_setting','620','760'); return false;">プラグイン設定</a>&nbsp;|&nbsp;
+                                <!--{if $plugin.config_flg == true && $plugin.status != $smarty.const.PLUGIN_STATUS_UPLOADED}-->
+                                    <a href="?" onclick="win03('<!--{$smarty.const.ROOT_URLPATH}-->plugin/<!--{$plugin.plugin_code}-->/config.php','plugin_setting','620','760'); return false;">プラグイン設定</a>&nbsp;|&nbsp;
                                 <!--{else}-->
                                     <span>プラグイン設定&nbsp;|&nbsp;</span>
                                 <!--{/if}-->
                             <!-- アップデート -->
-                                <a class="update_link" href="#" name="<!--{$plugins[data].plugin_id}-->">アップデート</a>&nbsp;|&nbsp;
+                                <a class="update_link" href="#" name="<!--{$plugin.plugin_id}-->">アップデート</a>&nbsp;|&nbsp;
                             <!-- 削除 -->
-                                <a  href="javascript:;" name="uninstall" onclick="fnSetFormValue('plugin_id', '<!--{$plugins[data].plugin_id}-->'); fnModeSubmit('uninstall','plugin_code','<!--{$plugins[data].plugin_code}-->'); return false;">削除</a>&nbsp;|&nbsp;
+                                <a  href="javascript:;" name="uninstall" onclick="fnSetFormValue('plugin_id', '<!--{$plugin.plugin_id}-->'); fnModeSubmit('uninstall','plugin_code','<!--{$plugin.plugin_code}-->'); return false;">削除</a>&nbsp;|&nbsp;
                             <!-- 有効/無効 -->
-                                <!--{if $plugins[data].enable == $smarty.const.PLUGIN_ENABLE_TRUE}-->
-                                    <input id="plugin_enable" type="checkbox" name="disable" value="<!--{$plugins[data].plugin_id}-->" id="login_memory" checked="checked">有効</input><br/>
+                                <!--{if $plugin.enable == $smarty.const.PLUGIN_ENABLE_TRUE}-->
+                                    <input id="plugin_enable" type="checkbox" name="disable" value="<!--{$plugin.plugin_id}-->" id="login_memory" checked="checked">有効</input><br/>
                                 <!--{else}-->
-                                    <input id="plugin_enable" type="checkbox" name="enable" value="<!--{$plugins[data].plugin_id}-->" id="login_memory" onclick="fnSetFormValue('plugin_id', '<!--{$plugins[data].plugin_id}-->'); return false;">有効にする</input><br/>
+                                    <input id="plugin_enable" type="checkbox" name="enable" value="<!--{$plugin.plugin_id}-->" id="login_memory" onclick="fnSetFormValue('plugin_id', '<!--{$plugin.plugin_id}-->'); return false;">有効にする</input><br/>
                                 <!--{/if}-->
 
                                 <!-- アップデートリンク押下時に表示する. -->
-                                <div id="plugin_update_<!--{$plugins[data].plugin_id}-->" style="display: none">                                
-                                    <input id="update_file_<!--{$plugins[data].plugin_id}-->" name="update_plugin_file" type="file" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" class="box30" size="30" <!--{if $arrErr[$key]}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}--> />
-                                    <a class="btn-action" href="javascript:;" onclick="removeUpdateFile('update_file_<!--{$plugins[data].plugin_id}-->'); fnSetFormValue('plugin_id', '<!--{$plugins[data].plugin_id}-->'); fnModeSubmit('update','plugin_code','<!--{$plugins[data].plugin_code}-->');return false;"><span class="btn-next">アップデート</span></a>
+                                <div id="plugin_update_<!--{$plugin.plugin_id}-->" style="display: none">                                
+                                    <input id="update_file_<!--{$plugin.plugin_id}-->" name="<!--{$plugin.plugin_code}-->" type="file" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" class="box30" size="30" <!--{if $arrErr[$key]}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}--> />
+                                    <a class="btn-action" href="javascript:;" onclick="removeUpdateFile('update_file_<!--{$plugin.plugin_id}-->'); fnSetFormValue('plugin_id', '<!--{$plugin.plugin_id}-->'); fnModeSubmit('update','plugin_code','<!--{$plugin.plugin_code}-->');return false;"><span class="btn-next">アップデート</span></a>
                                 </div>
                         </div>
@@ -166,12 +168,12 @@
                 <!--{assign var=key value="rank"}-->
                 <td class="center">
-                    <input type="text" name="priority[<!--{$plugins[data].plugin_id}-->]" value="<!--{$plugins[data].rank|h}-->" size="1" class="rank" /><br/>
+                    <input type="text" name="priority[<!--{$plugin.plugin_id}-->]" value="<!--{$plugin.rank|h}-->" size="1" class="rank" /><br/>
                 </td>
             </tr>
             <!--競合アラート-->
-            <!--{if $plugins[data].conflict_message != ""}-->
+            <!--{if $plugin.conflict_message != ""}-->
             <tr> 
                 <td class="attention_fookpoint" colspan="3">
-                    <p class="attention"><!--{$plugins[data].conflict_message}--></p>
+                    <p class="attention"><!--{$plugin.conflict_message}--></p>
                 </td>
             </tr>
@@ -182,5 +184,4 @@
         <span>登録されているプラグインはありません。</span>
     <!--{/if}-->
-
 </div>
 </form>
Index: /branches/version-2_12-dev/data/mtb_constants_init.php
===================================================================
--- /branches/version-2_12-dev/data/mtb_constants_init.php	(revision 21460)
+++ /branches/version-2_12-dev/data/mtb_constants_init.php	(revision 21467)
@@ -217,4 +217,6 @@
 /** 長い項目の文字数 (住所など) */
 define('MTEXT_LEN', 200);
+/** 短文の文字数 */
+define('SLTEXT_LEN', 500);
 /** 長中文の文字数 (問い合わせなど) */
 define('MLTEXT_LEN', 1000);
@@ -393,4 +395,6 @@
 /** プラグイン 外部ファイルURL */
 define('PLUGIN_HTML_URL', USER_URL . PLUGIN_DIR);
+/** プラグインファイル登録可能拡張子(カンマ区切り)" */
+define('PLUGIN_EXTENSION', "tar,tar.gz");
 /** 日数桁数 */
 define('DOWNLOAD_DAYS_LEN', 3);
Index: /branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php
===================================================================
--- /branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php	(revision 21458)
+++ /branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php	(revision 21467)
@@ -80,7 +80,7 @@
             case 'install':
                 $file_key = "plugin_file";
-                $plugin_file = $_FILES[$file_key];
-                $this->arrErr = $this->checkUploadFile($plugin_file, $file_key);
+                $this->arrErr = $this->checkUploadFile($file_key);
                 if($this->isError($this->arrErr) === false){
+                    $plugin_file = $_FILES[$file_key];
                     $plugin_file_name = $plugin_file['name'];
                     $plugin_code = $this->getPluginCode($plugin_file_name);
@@ -159,17 +159,15 @@
                 $this->arrErr = $objFormParam->checkError();
                 if($this->isError($this->arrErr) === false){
-                    $file_key = "update_plugin_file";
-                    $update_plugin_file = $_FILES[$file_key];
+                    $plugin_code = $objFormParam->getValue('plugin_code'); // アップデート対象のプラグインコード
+                    $this->arrErr = $this->checkUploadFile($plugin_code);
                     
-                    $this->arrErr = $this->checkUploadFile($update_plugin_file, $file_key);
                     if($this->isError($this->arrErr) === false){
+                        $update_plugin_file = $_FILES[$plugin_code];
                         $update_plugin_file_name = $update_plugin_file['name']; // アップデートファイルのファイル名.
                         $update_plugin_code = $this->getPluginCode($update_plugin_file_name); // アップデートファイルのプラグインコード.
-                        $plugin_code = $objFormParam->getValue('plugin_code'); // アップデート対象のプラグインコード
-                       
                         // インストールされているプラグインかを判定.
                         if($this->isInstalledPlugin($update_plugin_code) === true && $update_plugin_code === $plugin_code){
                             // インストール処理.
-                            $this->arrErr = $this->updatePlugin($plugin_code, $update_plugin_file_name, $file_key, $objFormParam->getValue('plugin_id'));
+                            $this->arrErr = $this->updatePlugin($plugin_code, $update_plugin_file_name, $plugin_code, $objFormParam->getValue('plugin_id'));
                             if($this->isError($this->arrErr) === false) {
                                 // テンプレート再生成.
@@ -178,9 +176,8 @@
                             }
                         } else {
-                            $this->arrErr[$file_key] = "※ プラグインファイルが不正です。<br/>";
-                        }
+                            $this->arrErr[$plugin_code] = "※ プラグインファイルが不正です。<br/>";
+                       }
                     }
                 }
-
                 break;
             // 優先度.
@@ -246,5 +243,5 @@
      */
     function lfInitUploadFile(&$objUpFile, $key) {
-        $objUpFile->addFile("プラグインファイル", $key, array('tar', 'tar.gz'), FILE_SIZE, true, 0, 0, false);
+        $objUpFile->addFile("プラグインファイル", $key, explode(",", PLUGIN_EXTENSION), FILE_SIZE, true, 0, 0, false);
     }
 
@@ -256,11 +253,14 @@
      * @return array エラー情報を格納した連想配列.
      */
-    function checkUploadFile($file, $file_key) {
-        $arrErr = array();
-        
-        if ($file['size'] <= 0) {
-            $arrErr[$file_key] = '※ ファイルがアップロードされていません';
-        }
-        return $arrErr;
+    function checkUploadFile($file_key) {
+        $objErr = new SC_CheckError_Ex();
+        // 拡張子チェック
+        $objErr->doFunc(array('プラグインファイル', $file_key, explode(",", PLUGIN_EXTENSION)), array("FILE_EXT_CHECK"));
+        // ファイルサイズチェック
+        $objErr->doFunc(array('プラグインファイル', $file_key, FILE_SIZE), array("FILE_SIZE_CHECK"));
+        // ファイル名チェック
+        $objErr->doFunc(array('プラグインファイル', $file_key), array("FILE_NAME_CHECK"));
+        
+        return $objErr->arrErr;
     }
     
@@ -308,12 +308,19 @@
 
     /**
-     * プラグインコードを取得する.
-     * 
-     * @param string $upload_file_name アップロードファイル名
-     * @return string プラグインコード.
-     */
-    function getPluginCode($upload_file_name) {
-        $array_ext = explode(".", $upload_file_name);
-        return $array_ext[0];
+     * ファイル名からプラグインコードを取得する.
+     * 
+     * ファイル名を「.」で配列に分解.
+     * 配列内から拡張子として格納される可能性のある「tar」「gz」を除外すし、再度結合する.
+     * 
+     * @param string $file_name ファイル名
+     * @return string $plugin_code プラグインコード.
+     */
+    function getPluginCode($file_name) {
+        // 分解
+        $array_ext = explode(".", $file_name);
+        $array_file_name = array_diff($array_ext, array('tar','gz'));
+        // 結合
+        $plugin_code = implode( '.', $array_file_name );
+        return $plugin_code;
     }
 
@@ -374,13 +381,25 @@
         $arrErr = $this->requirePluginFile($plugin_class_file_path, "plugin_file");
         if ($this->isError($arrErr) === true) {
-            return $arrErr;
-        }
-
+            SC_Utils_Ex::deleteFile($plugin_dir);
+            return $arrErr;
+        }
+        
+        // リフレクションオブジェクトを生成.
+        $objReflection = new ReflectionClass($plugin_code);
+        
+        // プラグインクラスに必須となるパラメータが定義されているかチェック.
+        $arrErr = $this->checkPluginConstants($objReflection);
+        if ($this->isError($arrErr) === true) {
+            SC_Utils_Ex::deleteFile($plugin_dir);
+            return $arrErr;
+        }
+        
         // プラグイン情報をDB登録
-        if ($this->registerData($plugin_code) === false) {
+        if ($this->registerData($objReflection) === false) {
+            SC_Utils_Ex::deleteFile($plugin_dir);
             $arrErr['plugin_file'] = "※ DB登録に失敗しました。<br/>";
             return $arrErr;
         }
-
+        
         // プラグインhtmlディレクトリ作成
         $plugin_html_dir = PLUGIN_HTML_REALDIR . $plugin_code;
@@ -390,4 +409,56 @@
         $arrErr = $this->execPlugin($plugin['plugin_id'], $plugin_code, "install");
 
+        return $arrErr;
+    }
+    
+    /**
+     * プラグインクラス内の定数をチェックします.
+     * 
+     * @param ReflectionClass $objReflection リフレクションオブジェクト 
+     * @return array エラー情報を格納した連想配列.
+     */
+    function checkPluginConstants(ReflectionClass $objReflection) {
+        $arrErr = array();
+        
+        if($objReflection->getConstant("PLUGIN_NAME") === false){
+            $arrErr['plugin_file'] = "※ PLUGIN_NAMEが定義されていません。<br/>";
+            return $arrErr;
+        }
+        if($objReflection->getConstant("PLUGIN_VERSION") === false){
+            $arrErr['plugin_file'] = "※ PLUGIN_VERSIONが定義されていません。<br/>";
+            return $arrErr;
+        }
+        if($objReflection->getConstant("COMPLIANT_VERSION") === false){
+            $arrErr['plugin_file'] = "※ COMPLIANT_VERSIONが定義されていません。<br/>";
+            return $arrErr;
+        }
+        if($objReflection->getConstant("AUTHOR") === false){
+            $arrErr['plugin_file'] = "※ AUTHORが定義されていません。<br/>";
+            return $arrErr;
+        }
+        if($objReflection->getConstant("DESCRIPTION") === false){
+            $arrErr['plugin_file'] = "※ DESCRIPTIONが定義されていません。<br/>";
+            return $arrErr;
+        }
+        
+        $objErr = new SC_CheckError_Ex($objReflection->getConstants());
+        $objErr->doFunc(array('PLUGIN_NAME', 'PLUGIN_NAME', STEXT_LEN), array("MAX_LENGTH_CHECK", ));
+        $objErr->doFunc(array('PLUGIN_VERSION', 'PLUGIN_VERSION', STEXT_LEN), array("MAX_LENGTH_CHECK"));
+        $objErr->doFunc(array('COMPLIANT_VERSION', 'COMPLIANT_VERSION', STEXT_LEN), array("MAX_LENGTH_CHECK"));
+        $objErr->doFunc(array('AUTHOR', 'AUTHOR', STEXT_LEN), array("MAX_LENGTH_CHECK"));
+        $objErr->doFunc(array('DESCRIPTION', 'DESCRIPTION', SLTEXT_LEN), array("MAX_LENGTH_CHECK"));
+        if($objReflection->getConstant("PLUGIN_SITE_URL") !== false){
+            $objErr->doFunc(array('PLUGIN_SITE_URL', 'PLUGIN_SITE_URL', URL_LEN), array("MAX_LENGTH_CHECK","GRAPH_CHECK"));
+        }
+        if($objReflection->getConstant("AUTHOR_SITE_URL") !== false){
+            $objErr->doFunc(array('AUTHOR_SITE_URL', 'AUTHOR_SITE_URL', URL_LEN), array("MAX_LENGTH_CHECK","GRAPH_CHECK"));
+        }
+        // エラー内容を出力用の配列にセットします.
+        if($this->isError($objErr->arrErr)){
+            $arrErr['plugin_file'] = "";
+            foreach ($objErr->arrErr as $error){
+                    $arrErr['plugin_file'] .= $error;
+            }
+        }
         return $arrErr;
     }
@@ -410,5 +481,5 @@
         
         // ファイルをチェックし展開します.
-        $arrErr = $this->unpackPluginFile($plugin_file_name, $temp_plugin_dir, $plugin_code, $file_key);
+        $arrErr = $this->unpackPluginFile($plugin_file_name, $temp_plugin_dir, $plugin_code, $plugin_code);
         if ($this->isError($arrErr) === true) {
             return $arrErr;
@@ -558,11 +629,10 @@
      * プラグイン情報をDB登録.
      *
-     * @param string $plugin_code プラグインコード.
-     * @return array エラー情報を格納した連想配列.
-     */
-    function registerData($plugin_code) {
-        
+     * @param ReflectionClass $objReflection リフレクションオブジェクト 
+     * @return array エラー情報を格納した連想配列.
+     */
+    function registerData(ReflectionClass $objReflection) {
+
         // プラグイン情報をDB登録.
-        // TODO：エラーチェック.
         $objQuery =& SC_Query_Ex::getSingletonInstance();
         $objQuery->begin();
@@ -570,11 +640,16 @@
         $plugin_id = $objQuery->nextVal('dtb_plugin_plugin_id');
         $arr_sqlval_plugin['plugin_id'] = $plugin_id;
-        $arr_sqlval_plugin['plugin_name'] = $plugin_code::PLUGIN_NAME;
-        $arr_sqlval_plugin['plugin_code'] = $plugin_code;
-        $arr_sqlval_plugin['author'] = $plugin_code::AUTHOR;
-        $arr_sqlval_plugin['plugin_site_url'] = $plugin_code::PLUGIN_SITE_URL;
-        $arr_sqlval_plugin['plugin_version'] = $plugin_code::PLUGIN_VERSION;
-        $arr_sqlval_plugin['compliant_version'] = $plugin_code::COMPLIANT_VERSION;
-        $arr_sqlval_plugin['plugin_description'] = $plugin_code::DESCRIPTION;
+        $arr_sqlval_plugin['plugin_name'] = $objReflection->getConstant("PLUGIN_NAME");
+        $arr_sqlval_plugin['plugin_code'] = $objReflection->getName();
+        $arr_sqlval_plugin['author'] = $objReflection->getConstant("AUTHOR");
+        // AUTHOR_SITE_URLが定義されているか判定.
+        $author_site_url = $objReflection->getConstant("AUTHOR_SITE_URL");
+        if($author_site_url !== false) $arr_sqlval_plugin['author_site_url'] = $author_site_url;
+        // PLUGIN_SITE_URLが定義されているか判定.
+        $plugin_site_url = $objReflection->getConstant("PLUGIN_SITE_URL");
+        if($plugin_site_url !== false) $arr_sqlval_plugin['plugin_site_url'] = $plugin_site_url;
+        $arr_sqlval_plugin['plugin_version'] = $objReflection->getConstant("PLUGIN_VERSION");
+        $arr_sqlval_plugin['compliant_version'] = $objReflection->getConstant("COMPLIANT_VERSION");
+        $arr_sqlval_plugin['plugin_description'] = $objReflection->getConstant("DESCRIPTION");
         $arr_sqlval_plugin['rank'] = 1 + $objQuery->max('rank', 'dtb_plugin');
         $arr_sqlval_plugin['enable'] = PLUGIN_ENABLE_FALSE;
@@ -583,14 +658,17 @@
 
         // フックポイントをDB登録.
-        $array_hook_point = explode(",", $plugin_code::HOOK_POINTS);
-        if(is_array($array_hook_point)){
-            foreach ($array_hook_point as $hook_point) {
-                $arr_sqlval_plugin_hookpoint = array();
-                $id = $objQuery->nextVal('dtb_plugin_hookpoint_id');
-                $arr_sqlval_plugin_hookpoint['id'] = $id;
-                $arr_sqlval_plugin_hookpoint['plugin_id'] = $plugin_id;
-                $arr_sqlval_plugin_hookpoint['hook_point'] = $hook_point;
-                $arr_sqlval_plugin_hookpoint['update_date'] = 'CURRENT_TIMESTAMP';
-                $objQuery->insert('dtb_plugin_hookpoint', $arr_sqlval_plugin_hookpoint);
+        $hook_point = $objReflection->getConstant("HOOK_POINTS");
+        if($hook_point !== false){
+            $array_hook_point = explode(",", $hook_point);
+            if(is_array($array_hook_point)){
+                foreach ($array_hook_point as $hook_point) {
+                    $arr_sqlval_plugin_hookpoint = array();
+                    $id = $objQuery->nextVal('dtb_plugin_hookpoint_id');
+                    $arr_sqlval_plugin_hookpoint['id'] = $id;
+                    $arr_sqlval_plugin_hookpoint['plugin_id'] = $plugin_id;
+                    $arr_sqlval_plugin_hookpoint['hook_point'] = $hook_point;
+                    $arr_sqlval_plugin_hookpoint['update_date'] = 'CURRENT_TIMESTAMP';
+                    $objQuery->insert('dtb_plugin_hookpoint', $arr_sqlval_plugin_hookpoint);
+                }
             }
         }
