diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index 9eefff363080228f1412f34a6734ce27ab072fc5..1deb6050284d384ec4fdb69a6f65acee8fa4cdd8 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -62,3 +62,6 @@ ALTER TABLE `mail_user` MODIFY `move_junk` enum('y','a','n') NOT NULL DEFAULT 'y
 
 -- Change id_rsa column to TEXT format
 ALTER TABLE `client` CHANGE `id_rsa` `id_rsa` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '';
+
+ALTER TABLE `directive_snippets` ADD `update_sites` ENUM('y','n') NOT NULL DEFAULT 'n' ;
+
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index c35d55331a9dec0da083d82fe9fd78323b152c92..edd4dd50491cf6dfe21898e8d7c6027b04e86541 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -470,6 +470,7 @@ CREATE TABLE IF NOT EXISTS `directive_snippets` (
   `required_php_snippets` varchar(255) NOT NULL DEFAULT '',
   `active` enum('n','y') NOT NULL DEFAULT 'y',
   `master_directive_snippets_id` int(11) unsigned NOT NULL DEFAULT '0',
+  `update_sites` ENUM('y','n') NOT NULL DEFAULT 'n',
   PRIMARY KEY (`directive_snippets_id`)
 ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 
diff --git a/interface/web/admin/directive_snippets_edit.php b/interface/web/admin/directive_snippets_edit.php
index b12da0a79bf28f000b0c11103db13482557608ad..e22a7cf42a2d7903121f6c87873c19a06f93a71f 100644
--- a/interface/web/admin/directive_snippets_edit.php
+++ b/interface/web/admin/directive_snippets_edit.php
@@ -75,6 +75,7 @@ class page_action extends tform_actions {
 				$app->tpl->setVar("snippet", $this->dataRecord['snippet'], true);
 			}
 		}
+
 		$app->tpl->setVar("is_master", $is_master);
 		
 		parent::onShowEnd();
@@ -82,15 +83,41 @@ class page_action extends tform_actions {
 	
 	function onSubmit() {
 		global $app, $conf;
-		
+
 		if($this->id > 0){
 			$record = $app->db->queryOneRecord("SELECT * FROM directive_snippets WHERE directive_snippets_id = ?", $this->id);
 			if($record['master_directive_snippets_id'] > 0){
 				unset($app->tform->formDef["tabs"]['directive_snippets']['fields']['name'], $app->tform->formDef["tabs"]['directive_snippets']['fields']['type'], $app->tform->formDef["tabs"]['directive_snippets']['fields']['snippet'], $app->tform->formDef["tabs"]['directive_snippets']['fields']['required_php_snippets']);
 			}
+	
+			if(isset($this->dataRecord['update_sites'])) {
+				parent::onSubmit();
+			} else {
+				$app->db->query('UPDATE directive_snippets SET name = ?, type = ?, snippet = ?, customer_viewable = ?, required_php_snippets = ?, active = ? WHERE directive_snippets_id = ?', $this->dataRecord['name'], $this->dataRecord['type'], $this->dataRecord['snippet'], $this->dataRecord['customer_viewable'], implode(',', $this->dataRecord['required_php_snippets']), $this->dataRecord['active'], $this->id);
+
+	            if($_REQUEST["next_tab"] == '') {
+    	            $list_name = $_SESSION["s"]["form"]["return_to"];
+                	if($list_name != '' && $_SESSION["s"]["list"][$list_name]["parent_name"] != $app->tform->formDef["name"]) {
+                    	$redirect = "Location: ".$_SESSION["s"]["list"][$list_name]["parent_script"]."?id=".$_SESSION["s"]["list"][$list_name]["parent_id"]."&next_tab=".$_SESSION["s"]["list"][$list_name]["parent_tab"];
+	                    $_SESSION["s"]["form"]["return_to"] = '';
+    	                session_write_close();
+        	            header($redirect);
+                	} elseif (isset($_SESSION["s"]["form"]["return_to_url"]) && $_SESSION["s"]["form"]["return_to_url"] != '') {
+	                    $redirect = $_SESSION["s"]["form"]["return_to_url"];
+    	                $_SESSION["s"]["form"]["return_to_url"] = '';
+        	            session_write_close();
+            	        header("Location: ".$redirect);
+                	    exit;
+                	} else {
+                    	header("Location: ".$app->tform->formDef['list_default']);
+                	}
+                	exit;
+				}
+			}
+
 			unset($record);
 		}
-		
+
 		parent::onSubmit();
 	}
 	
diff --git a/interface/web/admin/form/directive_snippets.tform.php b/interface/web/admin/form/directive_snippets.tform.php
index bd9466c310ca87737154c16b251a8de4ca492398..bf7f2b7fe52d1effbbd810d46ab254104e282fb7 100644
--- a/interface/web/admin/form/directive_snippets.tform.php
+++ b/interface/web/admin/form/directive_snippets.tform.php
@@ -110,6 +110,12 @@ $form["tabs"]['directive_snippets'] = array (
 			'default' => 'y',
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
+		'update_sites' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'y',
+			'value'  => array(0 => 'n', 1 => 'y')
+		),
 		'required_php_snippets' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'CHECKBOXARRAY',
diff --git a/interface/web/admin/lib/lang/ar_directive_snippets.lng b/interface/web/admin/lib/lang/ar_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/ar_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/ar_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/bg_directive_snippets.lng b/interface/web/admin/lib/lang/bg_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/bg_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/bg_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/br_directive_snippets.lng b/interface/web/admin/lib/lang/br_directive_snippets.lng
index 43c46c69b972189158871e363aed78e153f57121..bc94b85b7d5919bc99d71d746fbb8accbedf4cec 100644
--- a/interface/web/admin/lib/lang/br_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/br_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Já existe uma diretiva com este
 $wb['variables_txt'] = 'Variáveis';
 $wb['customer_viewable_txt'] = 'Visualização personalizada';
 $wb['required_php_snippets_txt'] = 'Trecho de código exige php';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/ca_directive_snippets.lng b/interface/web/admin/lib/lang/ca_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/ca_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/ca_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/cz_directive_snippets.lng b/interface/web/admin/lib/lang/cz_directive_snippets.lng
index 1fd316583b0720863e5bd30660e01c702e242b20..26d17f64b366e474648be0e14043b477d9ae9a4e 100644
--- a/interface/web/admin/lib/lang/cz_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/cz_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Proměnné';
 $wb['customer_viewable_txt'] = 'Dostupná volba pro klienta';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/de_directive_snippets.lng b/interface/web/admin/lib/lang/de_directive_snippets.lng
index 9e369f4b514708b62098bd0f4796b338c0b24df6..dbe3aaf8bda98214340064fb398fc6ec540120eb 100644
--- a/interface/web/admin/lib/lang/de_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/de_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Es existiert schon ein Direktiven
 $wb['variables_txt'] = 'Variablen';
 $wb['customer_viewable_txt'] = 'Sichtbar für Kunden';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/dk_directive_snippets.lng b/interface/web/admin/lib/lang/dk_directive_snippets.lng
index 7b43dcd40b8059b344ca2155647296bab1fe13dd..1b158e5c8053714fbee35186f633e46fbc6eb532 100644
--- a/interface/web/admin/lib/lang/dk_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/dk_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Der er allerede et direktiv uddra
 $wb['variables_txt'] = 'Variabler';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/el_directive_snippets.lng b/interface/web/admin/lib/lang/el_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/el_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/el_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/en_directive_snippets.lng b/interface/web/admin/lib/lang/en_directive_snippets.lng
index 8e8a63afe1e3a8e3d5cd7d60b0c46432db51f2b6..da164a531879a2687cd18d0d427dfa73c34fcdfa 100644
--- a/interface/web/admin/lib/lang/en_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/en_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb["directive_snippets_name_error_unique"] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
\ No newline at end of file
diff --git a/interface/web/admin/lib/lang/es_directive_snippets.lng b/interface/web/admin/lib/lang/es_directive_snippets.lng
index 8e2a9270791b70c7a2a9d287496dc1645dd3420e..a5bb21b494464ba69e782120057824d53aef0572 100644
--- a/interface/web/admin/lib/lang/es_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/es_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['snippet_txt'] = 'Fragmento';
 $wb['type_txt'] = 'Tipo';
 $wb['variables_txt'] = 'Variables';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/fi_directive_snippets.lng b/interface/web/admin/lib/lang/fi_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/fi_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/fi_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/fr_directive_snippets.lng b/interface/web/admin/lib/lang/fr_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/fr_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/fr_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/hr_directive_snippets.lng b/interface/web/admin/lib/lang/hr_directive_snippets.lng
index 077896577db3f9b8aec8aad5f33966bd1780ea6c..5709d6075d24c0811c5b51cdc3c04b98a89c3bf1 100644
--- a/interface/web/admin/lib/lang/hr_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/hr_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Već postoji direktiva sa tim ime
 $wb['variables_txt'] = 'Varijable';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/hu_directive_snippets.lng b/interface/web/admin/lib/lang/hu_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/hu_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/hu_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/id_directive_snippets.lng b/interface/web/admin/lib/lang/id_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/id_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/id_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/it_directive_snippets.lng b/interface/web/admin/lib/lang/it_directive_snippets.lng
index 5598aacecc152ca4c07d07a7e9ad5cd0e6af4c28..e9a473f92ecc562a54c57785cb4a2d3046c60f66 100644
--- a/interface/web/admin/lib/lang/it_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/it_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Esiste già una direttiva snippet
 $wb['variables_txt'] = 'Variabili';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/ja_directive_snippets.lng b/interface/web/admin/lib/lang/ja_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/ja_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/ja_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_directive_snippets.lng b/interface/web/admin/lib/lang/nl_directive_snippets.lng
index a4f610634e6008a36d19eea337d61b6f71552219..d216622c6f5c8701361d5b816f9e6811cac90374 100644
--- a/interface/web/admin/lib/lang/nl_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/nl_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Er is al een Directive Snippet me
 $wb['variables_txt'] = 'Variabelen';
 $wb['customer_viewable_txt'] = 'Zichtbaar voor klanten';
 $wb['required_php_snippets_txt'] = 'Vereiste PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/pl_directive_snippets.lng b/interface/web/admin/lib/lang/pl_directive_snippets.lng
index 4902bf3282ce2e1148d5e5a40c9c73c998c3ccdc..abef1e28faa56c89174aef76e87ad10fa53b7b1d 100644
--- a/interface/web/admin/lib/lang/pl_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/pl_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Istnieje już zestaw dyrektyw o p
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/pt_directive_snippets.lng b/interface/web/admin/lib/lang/pt_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/pt_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/pt_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/ro_directive_snippets.lng b/interface/web/admin/lib/lang/ro_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/ro_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/ro_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/ru_directive_snippets.lng b/interface/web/admin/lib/lang/ru_directive_snippets.lng
index cfa09a02fcb1ea396c0c8a7257ae673a31e281fa..120a962d7ff5934de3b41c91dd4a41c4a03aa3f6 100644
--- a/interface/web/admin/lib/lang/ru_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/ru_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Уже есть заготовк
 $wb['variables_txt'] = 'Переменные:';
 $wb['customer_viewable_txt'] = 'Видимый клиентам';
 $wb['required_php_snippets_txt'] = 'Обязательная PHP-заготовка';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/se_directive_snippets.lng b/interface/web/admin/lib/lang/se_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/se_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/se_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/sk_directive_snippets.lng b/interface/web/admin/lib/lang/sk_directive_snippets.lng
index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 100644
--- a/interface/web/admin/lib/lang/sk_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/sk_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'There is already a directive snip
 $wb['variables_txt'] = 'Variables';
 $wb['customer_viewable_txt'] = 'Customer viewable';
 $wb['required_php_snippets_txt'] = 'Requiered PHP Snippet';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_directive_snippets.lng b/interface/web/admin/lib/lang/tr_directive_snippets.lng
index 448d4536723307c96f69f5a704e7b9a889072536..4c1cebea4e503d632e193013817c5004d5fb7685 100644
--- a/interface/web/admin/lib/lang/tr_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/tr_directive_snippets.lng
@@ -9,4 +9,5 @@ $wb['directive_snippets_name_error_unique'] = 'Aynı adlı bir yönerge kod par
 $wb['variables_txt'] = 'DeÄŸiÅŸkenler';
 $wb['customer_viewable_txt'] = 'Müşteri görebilir';
 $wb['required_php_snippets_txt'] = 'Gerekli PHP Parçası';
+$wb['update_sites_txt'] = 'Update sites using this snippet';
 ?>
diff --git a/interface/web/admin/templates/directive_snippets_edit.htm b/interface/web/admin/templates/directive_snippets_edit.htm
index ee4d2ab3cd84c6ce0a9f75e99d474f65cdfd3e54..4506cafd634189b6be65cf278b1d11fa8909dc6f 100644
--- a/interface/web/admin/templates/directive_snippets_edit.htm
+++ b/interface/web/admin/templates/directive_snippets_edit.htm
@@ -36,7 +36,10 @@
                     {tmpl_var name='active'}
                 </div>
             </div>
-        
+			<div class="form-group">
+				<label for="update_sites" class="col-sm-3 control-label">{tmpl_var name='update_sites_txt'}</label>
+				<div class="col-sm-9">{tmpl_var name='update_sites'}</div>        
+			</div> 
             
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
             
diff --git a/server/mods-available/web_module.inc.php b/server/mods-available/web_module.inc.php
index 02f31510c2a2001c3c2ef4cada45cfa3c1a76377..609e9212dc3a6fd6b6a74c2fcb3b9622039a915c 100644
--- a/server/mods-available/web_module.inc.php
+++ b/server/mods-available/web_module.inc.php
@@ -32,7 +32,8 @@ class web_module {
 
 	var $module_name = 'web_module';
 	var $class_name = 'web_module';
-	var $actions_available = array( 'web_domain_insert',
+	var $actions_available = array(
+		'web_domain_insert',
 		'web_domain_update',
 		'web_domain_delete',
 		'ftp_user_insert',
@@ -64,7 +65,9 @@ class web_module {
 		'aps_package_delete',
 		'aps_setting_insert',
 		'aps_setting_update',
-		'aps_setting_delete');
+		'aps_setting_delete',
+		'directive_snippets_update'
+	);
 
 	//* This function is called during ispconfig installation to determine
 	//  if a symlink shall be created for this plugin.
@@ -114,6 +117,7 @@ class web_module {
 		$app->modules->registerTableHook('aps_instances_settings', 'web_module', 'process');
 		$app->modules->registerTableHook('aps_packages', 'web_module', 'process');
 		$app->modules->registerTableHook('aps_settings', 'web_module', 'process');
+		$app->modules->registerTableHook('directive_snippets', 'web_module', 'process');
 
 		// Register service
 		$app->services->registerService('httpd', 'web_module', 'restartHttpd');
@@ -185,6 +189,11 @@ class web_module {
 			if($action == 'u') $app->plugins->raiseEvent('aps_setting_update', $data);
 			if($action == 'd') $app->plugins->raiseEvent('aps_setting_delete', $data);
 			break;
+		case 'directive_snippets':
+			if($action == 'i') $app->plugins->raiseEvent('directive_snippets_insert', $data);
+			if($action == 'u') $app->plugins->raiseEvent('directive_snippets_update', $data);
+			if($action == 'd') $app->plugins->raiseEvent('directive_snippets_delete', $data);
+			break;
 		} // end switch
 	} // end function
 
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index 455320863801dfd94d61ece62c2d227a1864e4eb..ba1da743544f275e5dca1c1c3054c071f21ec83c 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -93,6 +93,34 @@ class apache2_plugin {
 		$app->plugins->registerEvent('ftp_user_delete', $this->plugin_name, 'ftp_user_delete');
 
 		$app->plugins->registerAction('php_ini_changed', $this->plugin_name, 'php_ini_changed');
+
+		$app->plugins->registerEvent('directive_snippets_update', $this->plugin_name, 'directive_snippets');
+	}
+
+	function directive_snippets($event_name, $data) {
+		global $app, $conf;
+
+		$snippet = $data['new'];
+		if($snippet['active'] == 'y' && $snippet['update_sites'] == 'y') {
+			if($snippet['type'] == 'php') {
+				$rlike = $snippet['directive_snippets_id'].'|,'.$snippet['directive_snippets_id'].'|'.$snippet['directive_snippets_id'].',';
+				$affected_snippets = $app->db->queryAllRecords('SELECT directive_snippets_id FROM directive_snippets WHERE required_php_snippets RLIKE(?) AND type = ?', $rlike, 'apache');
+				if(is_array($affected_snippets) && !empty($affected_snippets)) {
+					foreach($affected_snippets as $snippet) $sql_in[] = $snippet['directive_snippets_id'];
+					$affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id IN ?', $conf['server_id'], $sql_in);
+				}
+			}
+			if($snippet['type'] == 'apache') $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id = ?', $conf['server_id'], $snippet['directive_snippets_id']);
+
+			if(is_array($affected_sites) && !empty($affected_sites)) {
+				foreach($affected_sites as $site) {
+					$website = $app->db->queryOneRecord('SELECT * FROM web_domain WHERE domain_id = ?', $site['domain_id']);
+					$new_data['old'] = $website;
+					$new_data['new'] = $website;
+					$this->update('web_domain_update', $new_data);
+				}
+			}
+		}
 	}
 
 	private function get_master_php_ini_content($web_data) {
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index 4116c1867642a1e9c50f2cdb2f330165317c68a4..f31c378c0fb5b8085acb56517dfd02d12568a8eb 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -88,6 +88,35 @@ class nginx_plugin {
 
 		$app->plugins->registerEvent('web_folder_update', $this->plugin_name, 'web_folder_update');
 		$app->plugins->registerEvent('web_folder_delete', $this->plugin_name, 'web_folder_delete');
+
+		$app->plugins->registerEvent('directive_snippets_update', $this->plugin_name, 'directive_snippets');
+	}
+
+	function directive_snippets($event_name, $data) {
+		global $app, $conf;
+
+		$snippet = $data['new'];
+
+		if($snippet['active'] == 'y' && $snippet['update_sites'] == 'y') {
+			if($snippet['type'] == 'php') {
+				$rlike = $snippet['directive_snippets_id'].'|,'.$snippet['directive_snippets_id'].'|'.$snippet['directive_snippets_id'].',';
+				$affected_snippets = $app->db->queryAllRecords('SELECT directive_snippets_id FROM directive_snippets WHERE required_php_snippets RLIKE(?) AND type = ?', $rlike, 'nginx');
+				if(is_array($affected_snippets) && !empty($affected_snippets)) {
+					foreach($affected_snippets as $snippet) $sql_in[] = $snippet['directive_snippets_id'];
+					$affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id IN ?', $conf['server_id'], $sql_in);
+				}
+			}
+			if($snippet['type'] == 'nginx') $affected_sites = $app->db->queryAllRecords('SELECT domain_id FROM web_domain WHERE server_id = ? AND directive_snippets_id = ?', $conf['server_id'], $snippet['directive_snippets_id']);
+
+			if(is_array($affected_sites) && !empty($affected_sites)) {
+				foreach($affected_sites as $site) {
+					$website = $app->db->queryOneRecord('SELECT * FROM web_domain WHERE domain_id = ?', $site['domain_id']);
+					$new_data['old'] = $website;
+					$new_data['new'] = $website;
+					$this->update('web_domain_update', $new_data);
+				}
+			}
+		}
 	}
 
 	// Handle the creation of SSL certificates