diff --git a/workflow/engine/classes/class.Installer.php b/workflow/engine/classes/class.Installer.php index 2a29ac58b..a39f8516d 100755 --- a/workflow/engine/classes/class.Installer.php +++ b/workflow/engine/classes/class.Installer.php @@ -193,7 +193,7 @@ class Installer /* Dump schema workflow && data */ - $this->log("Importing database schema:\n"); + $this->log("Import database schema:\n"); $myPortA = explode(":",$this->options['database']['hostname']); if(count($myPortA)<2) { $myPortA[1]="3306"; @@ -217,6 +217,19 @@ class Installer $qrv = $this->query_sql_file(PATH_RBAC_MYSQL_DATA.$values,$this->connection_database); $this->log($qrv, isset($qrv['errors'])); + mysql_select_db($wf,$this->connection_database); + + require_once("propel/Propel.php"); + require_once('classes/model/AppCacheView.php'); + + $appCache = new AppCacheView(); + $appCache->setPathToAppCacheFiles ( PATH_METHODS . 'setup/setupSchemas/' ); + $triggers = $appCache->getTriggers("en"); + $this->log("Create 'cases list cache' triggers"); + foreach ($triggers as $triggerName => $trigger) { + $this->run_query($trigger, "-> Trigger $triggerName"); + } + $path_site = $this->options['path_data']."/sites/".$this->options['name']."/"; $db_file = $path_site."db.php"; @mkdir($path_site,0777,true); diff --git a/workflow/engine/classes/model/AppCacheView.php b/workflow/engine/classes/model/AppCacheView.php index 692dc82f8..4f877b43d 100644 --- a/workflow/engine/classes/model/AppCacheView.php +++ b/workflow/engine/classes/model/AppCacheView.php @@ -1162,6 +1162,28 @@ class AppCacheView extends BaseAppCacheView { return 'exists'; } + /** + * Retrieve the SQL code to create the APP_CACHE_VIEW triggers. + * + * @return array each value is a SQL statement to create a trigger. + */ + function getTriggers($lang){ + $triggerFiles = array( + 'triggerApplicationDelete.sql', + 'triggerApplicationUpdate.sql', + 'triggerAppDelegationUpdate.sql', + 'triggerAppDelegationInsert.sql'); + $triggers = array(); + foreach ($triggerFiles as $triggerFile) { + $trigger = file_get_contents("{$this->pathToAppCacheFiles}/$triggerFile"); + if ($trigger === false) + throw new Exception("Could not read trigger contents in $triggerFile"); + $trigger = str_replace('{lang}', $lang, $trigger); + $triggers[$triggerFile] = $trigger; + } + return $triggers; + } + function getFormatedUser($sFormat, $aCaseUser, $userIndex){ require_once('classes/model/Users.php'); $oUser = new Users();