OSDN Git Service

FIX: Skin::update()においてイベント発生条件が不適切だったバグの修正
authorsakamocchi <o-takashi@sakamocchi.jp>
Sun, 27 May 2012 05:17:06 +0000 (14:17 +0900)
committersakamocchi <o-takashi@sakamocchi.jp>
Sun, 27 May 2012 05:17:06 +0000 (14:17 +0900)
4.0から新たに以下のイベントが追加されていた。
PreAAddSkinPart/PostAddSkinPart
PreUpdateSkinPart/PostUpdateSkinPart
PreDeleteSkinPart/PostDeleteSkinPart
(管理画面用スキンの場合はSkinをAdminSkinに読み替え)

元々は$contentとTRUEを関係演算子「==」で評価した結果も用いて分岐していたが、これでは常にFALSEとなり、イベントPreUpdateSkinPart/PostUpdateSkinPartが絶対に発生しない。

そのため、empty()関数により評価するように書き換えた。

nucleus/libs/SKIN.php

index 82e73a6..13c1e9e 100644 (file)
@@ -455,7 +455,7 @@ class Skin
                $res = DB::getValue($query);\r
                \r
                $skintypeexists = !empty($res);\r
-               $skintypevalue = ($content == true);\r
+               $skintypevalue = !empty($content);\r
                \r
                if( $skintypevalue && $skintypeexists )\r
                {\r
@@ -464,39 +464,35 @@ class Skin
                                'type'          =>  $type,\r
                                'content'       => &$content\r
                        );\r
-                       \r
-                       // PreUpdateSkinPart event\r
-                       $manager->notify("PreUpdate{{$this->event_identifier}}Part", $data);\r
+                       $manager->notify("PreUpdate{$this->event_identifier}Part", $data);\r
                }\r
-               else if( $skintypevalue && !$skintypeexists )\r
+               else if( $skintypevalue )\r
                {\r
                        $data = array(\r
-                               'skinid'        => $this->id,\r
-                               'type'          => $type,\r
+                               'skinid'        =>  $this->id,\r
+                               'type'          =>  $type,\r
                                'content'       => &$content\r
                        );\r
-                       \r
                        $manager->notify("PreAdd{$this->event_identifier}Part", $data);\r
                }\r
-               else if( !$skintypevalue && $skintypeexists )\r
+               else if( $skintypeexists )\r
                {\r
                        $data = array(\r
                                'skinid'        => $this->id,\r
                                'type'          => $type\r
                        );\r
-                       \r
                        $manager->notify("PreDelete{$this->event_identifier}Part", $data);\r
                }\r
                \r
                // delete old thingie\r
-               $query = "DELETE FROM %s WHERE stype=%s and sdesc=%d";\r
+               $query = "DELETE FROM %s WHERE stype=%s and sdesc=%d;";\r
                $query = sprintf($query, sql_table('skin'), DB::quoteValue($type), (integer) $this->id);\r
                DB::execute($query);\r
                \r
                // write new thingie\r
                if ( $content )\r
                {\r
-                       $query = "INSERT INTO %s (scontent, stype, sdesc) VALUE (%s, %s, %d)";\r
+                       $query = "INSERT INTO %s (scontent, stype, sdesc) VALUE (%s, %s, %d);";\r
                        $query = sprintf($query, sql_table('skin'), DB::quoteValue($content), DB::quoteValue($type), (integer) $this->id);\r
                        DB::execute($query);\r
                }\r
@@ -504,32 +500,27 @@ class Skin
                if( $skintypevalue && $skintypeexists )\r
                {\r
                        $data = array(\r
-                               'skinid'        => $this->id,\r
-                               'type'          => $type,\r
+                               'skinid'        =>  $this->id,\r
+                               'type'          =>  $type,\r
                                'content'       => &$content\r
                        );\r
-                       \r
-                       // PostUpdateSkinPart event\r
                        $manager->notify("PostUpdate{$this->event_identifier}Part", $data);\r
                }\r
-               else if( $skintypevalue && (!$skintypeexists) )\r
+               else if( $skintypevalue )\r
                {\r
                        $data = array(\r
-                               'skinid'        => $this->id,\r
-                               'type'          => $type,\r
+                               'skinid'        =>  $this->id,\r
+                               'type'          =>  $type,\r
                                'content'       => &$content\r
                        );\r
-                       \r
-                       // PostAddSkinPart event\r
                        $manager->notify("PostAdd{$this->event_identifier}Part", $data);\r
                }\r
-               else if( (!$skintypevalue) && $skintypeexists )\r
+               else if( $skintypeexists )\r
                {\r
                        $data = array(\r
                                'skinid'        => $this->id,\r
                                'type'          => $type\r
                        );\r
-                       \r
                        $manager->notify("PostDelete{$this->event_identifier}Part", $data);\r
                }\r
                return;\r