diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php index 68bfbdde8..3bf3f0463 100755 --- a/workflow/engine/classes/class.wsTools.php +++ b/workflow/engine/classes/class.wsTools.php @@ -427,6 +427,7 @@ class workspaceTools { $triggers[] = $appCache->triggerAppDelegationUpdate($lang, $checkOnly); $triggers[] = $appCache->triggerApplicationUpdate($lang, $checkOnly); $triggers[] = $appCache->triggerApplicationDelete($lang, $checkOnly); + $triggers[] = $appCache->triggerContentUpdate($lang, $checkOnly); if ($fill) { CLI::logging("-> Filling cache view\n"); diff --git a/workflow/engine/classes/model/AppCacheView.php b/workflow/engine/classes/model/AppCacheView.php index 39b52864a..a18a5831a 100755 --- a/workflow/engine/classes/model/AppCacheView.php +++ b/workflow/engine/classes/model/AppCacheView.php @@ -1066,7 +1066,7 @@ class AppCacheView extends BaseAppCacheView { if ( ! $found ) { $filenameSql = $this->pathToAppCacheFiles . '/triggerApplicationUpdate.sql'; if ( !file_exists ( $filenameSql ) ) - throw ( new Exception ( "file triggerAppDelegationUpdate.sql doesn't exist ") ); + throw ( new Exception ( "file triggerApplicationUpdate.sql doesn't exist ") ); $sql = file_get_contents ( $filenameSql ); $sql = str_replace('{lang}', $lang, $sql); $stmt->executeQuery($sql); @@ -1103,7 +1103,7 @@ class AppCacheView extends BaseAppCacheView { if ( ! $found ) { $filenameSql = $this->pathToAppCacheFiles . '/triggerApplicationDelete.sql'; if ( !file_exists ( $filenameSql ) ) - throw ( new Exception ( "file triggerAppDelegationDelete.sql doesn't exist") ); + throw ( new Exception ( "file triggerApplicationDelete.sql doesn't exist") ); $sql = file_get_contents ( $filenameSql ); $sql = str_replace('{lang}', $lang, $sql); $stmt->executeQuery($sql); @@ -1111,6 +1111,45 @@ class AppCacheView extends BaseAppCacheView { } return 'exists'; } + + function triggerContentUpdate($lang, $recreate = false) + { + $cnn = Propel::getConnection("workflow"); + $stmt = $cnn->createStatement(); + + $rs = $stmt->executeQuery("Show TRIGGERS", ResultSet::FETCHMODE_ASSOC); + $found = false; + + while ($rs->next()) { + $row = $rs->getRow(); + + if (strtolower($row["Trigger"] == "CONTENT_UPDATE") && strtoupper($row["Table"]) == "CONTENT") { + $found = true; + } + } + + if ($recreate) { + $rs = $stmt->executeQuery("DROP TRIGGER IF EXISTS CONTENT_UPDATE"); + $found = false; + } + + if (!$found) { + $filenameSql = $this->pathToAppCacheFiles . PATH_SEP . "triggerContentUpdate.sql"; + + if (!file_exists($filenameSql)) { + throw (new Exception("file triggerContentUpdate.sql doesn't exist")); + } + + $sql = file_get_contents($filenameSql); + $sql = str_replace("{lang}", $lang, $sql); + + $stmt->executeQuery($sql); + + return "created"; + } + + return "exists"; + } /** * Retrieve the SQL code to create the APP_CACHE_VIEW triggers. @@ -1122,7 +1161,8 @@ class AppCacheView extends BaseAppCacheView { 'triggerApplicationDelete.sql', 'triggerApplicationUpdate.sql', 'triggerAppDelegationUpdate.sql', - 'triggerAppDelegationInsert.sql'); + 'triggerAppDelegationInsert.sql', + 'triggerContentUpdate.sql'); $triggers = array(); foreach ($triggerFiles as $triggerFile) { $trigger = file_get_contents("{$this->pathToAppCacheFiles}/$triggerFile"); diff --git a/workflow/engine/controllers/installer.php b/workflow/engine/controllers/installer.php index e2a22802a..3d79337f5 100644 --- a/workflow/engine/controllers/installer.php +++ b/workflow/engine/controllers/installer.php @@ -718,11 +718,13 @@ class Installer extends Controller if (file_exists(PATH_HOME . 'engine/methods/setup/setupSchemas/triggerAppDelegationInsert.sql') && file_exists(PATH_HOME . 'engine/methods/setup/setupSchemas/triggerAppDelegationUpdate.sql') && file_exists(PATH_HOME . 'engine/methods/setup/setupSchemas/triggerApplicationUpdate.sql') && - file_exists(PATH_HOME . 'engine/methods/setup/setupSchemas/triggerApplicationDelete.sql')) { + file_exists(PATH_HOME . 'engine/methods/setup/setupSchemas/triggerApplicationDelete.sql') && + file_exists(PATH_HOME . 'engine/methods/setup/setupSchemas/triggerContentUpdate.sql')) { $this->mysqlQuery(@file_get_contents(PATH_HOME . 'engine/methods/setup/setupSchemas/triggerAppDelegationInsert.sql')); $this->mysqlQuery(@file_get_contents(PATH_HOME . 'engine/methods/setup/setupSchemas/triggerAppDelegationUpdate.sql')); $this->mysqlQuery(@file_get_contents(PATH_HOME . 'engine/methods/setup/setupSchemas/triggerApplicationUpdate.sql')); $this->mysqlQuery(@file_get_contents(PATH_HOME . 'engine/methods/setup/setupSchemas/triggerApplicationDelete.sql')); + $this->mysqlQuery(@file_get_contents(PATH_HOME . 'engine/methods/setup/setupSchemas/triggerContentUpdate.sql')); $this->mysqlQuery("INSERT INTO `CONFIGURATION` ( `CFG_UID`, `CFG_VALUE` @@ -792,6 +794,9 @@ class Installer extends Controller //APPLICATION DELETE $res = $appCache->triggerApplicationDelete($lang, true); + //CONTENT UPDATE + $res = $appCache->triggerContentUpdate($lang, true); + //build using the method in AppCacheView Class $res = $appCache->fillAppCacheView($lang); @@ -978,11 +983,13 @@ class Installer extends Controller if (file_exists(PATH_HOME . 'engine/plugins/enterprise/data/triggerAppDelegationInsert.sql') && file_exists(PATH_HOME . 'engine/plugins/enterprise/data/triggerAppDelegationUpdate.sql') && file_exists(PATH_HOME . 'engine/plugins/enterprise/data/triggerApplicationUpdate.sql') && - file_exists(PATH_HOME . 'engine/plugins/enterprise/data/triggerApplicationDelete.sql')) { + file_exists(PATH_HOME . 'engine/plugins/enterprise/data/triggerApplicationDelete.sql') && + file_exists(PATH_HOME . 'engine/plugins/enterprise/data/triggerContentUpdate.sql')) { $this->mssqlQuery(@file_get_contents(PATH_HOME . 'engine/plugins/enterprise/data/triggerAppDelegationInsert.sql')); $this->mssqlQuery(@file_get_contents(PATH_HOME . 'engine/plugins/enterprise/data/triggerAppDelegationUpdate.sql')); $this->mssqlQuery(@file_get_contents(PATH_HOME . 'engine/plugins/enterprise/data/triggerApplicationUpdate.sql')); $this->mssqlQuery(@file_get_contents(PATH_HOME . 'engine/plugins/enterprise/data/triggerApplicationDelete.sql')); + $this->mssqlQuery(@file_get_contents(PATH_HOME . 'engine/plugins/enterprise/data/triggerContentUpdate.sql')); $this->mssqlQuery("INSERT INTO CONFIGURATION ( CFG_UID, CFG_VALUE diff --git a/workflow/engine/methods/setup/appCacheViewAjax.php b/workflow/engine/methods/setup/appCacheViewAjax.php index c3e99fbfb..2707b2065 100755 --- a/workflow/engine/methods/setup/appCacheViewAjax.php +++ b/workflow/engine/methods/setup/appCacheViewAjax.php @@ -102,6 +102,10 @@ //APPLICATION DELETE $res = $appCache->triggerApplicationDelete($lang, false); $result->info[] = array ('name' => 'Trigger APPLICATION DELETE', 'value'=> $res); + + //CONTENT UPDATE + $res = $appCache->triggerContentUpdate($lang, false); + $result->info[] = array("name" => "Trigger CONTENT UPDATE", "value" => $res); //show language $result->info[] = array ('name' => 'Language', 'value'=> $lang ); @@ -152,7 +156,10 @@ //APPLICATION DELETE $res = $appCache->triggerApplicationDelete($lang, true); //$result->info[] = array ('name' => 'Trigger APPLICATION DELETE', 'value'=> $res); - + + //CONTENT UPDATE + $res = $appCache->triggerContentUpdate($lang, true); + //$result->info[] = array("name" => "Trigger CONTENT UPDATE", "value" => $res); //build using the method in AppCacheView Class $res = $appCache->fillAppCacheView($lang); diff --git a/workflow/engine/methods/setup/setupSchemas/triggerContentUpdate.sql b/workflow/engine/methods/setup/setupSchemas/triggerContentUpdate.sql new file mode 100644 index 000000000..2c1a28e6a --- /dev/null +++ b/workflow/engine/methods/setup/setupSchemas/triggerContentUpdate.sql @@ -0,0 +1,41 @@ +CREATE TRIGGER CONTENT_UPDATE BEFORE UPDATE ON CONTENT + +FOR EACH ROW +BEGIN + + DECLARE str TEXT; + + IF (NEW.CON_VALUE IS NULL) THEN + SET str = ''; + ELSE + SET str = NEW.CON_VALUE; + END IF; + + CASE (NEW.CON_CATEGORY) + WHEN 'APP_TITLE' THEN + BEGIN + UPDATE APP_CACHE_VIEW + SET APP_TITLE = str + WHERE APP_UID = NEW.CON_ID; + END; + + WHEN 'PRO_TITLE' THEN + BEGIN + UPDATE APP_CACHE_VIEW + SET APP_PRO_TITLE = str + WHERE PRO_UID = NEW.CON_ID; + END; + + WHEN 'TAS_TITLE' THEN + BEGIN + UPDATE APP_CACHE_VIEW + SET APP_TAS_TITLE = str + WHERE TAS_UID = NEW.CON_ID; + END; + + ELSE + BEGIN + END; + END CASE; + +END; \ No newline at end of file