Index: kernel/content/edit.php
===================================================================
--- kernel/content/edit.php	(revision 24142)
+++ kernel/content/edit.php	(working copy)
@@ -704,8 +704,11 @@
 
             eZDebug::accumulatorStart( 'publish', '', 'publish' );
             $oldObjectName = $object->name();
-            $operationResult = eZOperationHandler::execute( 'content', 'publish', array( 'object_id' => $object->attribute( 'id' ),
-                                                                                         'version' => $version->attribute( 'version' ) ) );
+            $http = eZHTTPTool::instance();
+            $operationResult = eZOperationHandler::execute( 'content', 'publish',
+                                                            array( 'object_id' => $object->attribute( 'id' ),
+                                                                   'version' => $version->attribute( 'version' ),
+                                                                   'notify' => ( $http->hasPostVariable( 'PublishNotNotifyButton' )? 0 : 1 ) ) );
             eZDebug::accumulatorStop( 'publish' );
 
             if ( ( array_key_exists( 'status', $operationResult ) && $operationResult['status'] != eZModuleOperationInfo::STATUS_CONTINUE ) )
Index: kernel/content/ezcontentoperationcollection.php
===================================================================
--- kernel/content/ezcontentoperationcollection.php	(revision 24142)
+++ kernel/content/ezcontentoperationcollection.php	(working copy)
@@ -587,10 +587,23 @@
      \note Transaction unsafe. If you call several transaction unsafe methods you must enclose
      the calls within a db transaction; thus within db->begin and db->commit.
      */
-    static public function createNotificationEvent( $objectID, $versionNum )
+    static public function createNotificationEvent( $objectID, $versionNum, $notify = true )
     {
+        if ( !$notify )
+            return;
+
+        // Get allowed classes from ini
+        $notificationIni = eZini::instance( 'notification.ini' );
+        $includeClasses = $notificationIni->variable( 'NotificationSettings', 'IncludeClasses' );
+        // Fetch class identifier for object
+        $object = eZContentObject::fetch( $objectID );
+        $classIdentifier = $object->contentClassIdentifier();
+        // Only create event when IncludeClasses is empty or class is in IncludeClasses
+        if ( count( $includeClasses ) > 0 and !in_array( $classIdentifier, $includeClasses ) )
+            return;
+
         $event = eZNotificationEvent::create( 'ezpublish', array( 'object' => $objectID,
-                                                                   'version' => $versionNum ) );
+                                                                  'version' => $versionNum ) );
         $event->store();
     }
 
Index: kernel/content/operation_definition.php
===================================================================
--- kernel/content/operation_definition.php	(revision 24142)
+++ kernel/content/operation_definition.php	(working copy)
@@ -217,6 +217,15 @@
                                                            'name' => 'create-notification',
                                                            'frequency' => 'once',
                                                            'method' => 'createNotificationEvent',
+                                                           'parameters' => array( array( 'name' => 'object_id',
+                                                                                         'type' => 'integer',
+                                                                                         'required' => true ),
+                                                                                  array( 'name' => 'version',
+                                                                                         'type' => 'integer',
+                                                                                         'required' => true ),
+                                                                                  array( 'name' => 'notify',
+                                                                                         'type' => 'integer',
+                                                                                         'required' => true ) )
                                                            ),
 
                                                     array( 'type' => 'method',
Index: settings/notification.ini
===================================================================
--- settings/notification.ini	(revision 24142)
+++ settings/notification.ini	(working copy)
@@ -10,6 +10,11 @@
 #       in non-virtualhost modes (the .php file may already be present
 #       and can be used for this purpose).
 
+[NotificationSettings]
+# Class identifiers of classes for which notification should be sent.
+# If left empty, objects of all classes will send notifications.
+IncludeClasses[]
+
 [RuleSettings]
 RepositoryDirectories[]=kernel/notification/rules
 ExtensionDirectories[]
