* Date: 15.10.14 11:04 * You must not use this file without permission. */ if(!file_exists(dirname(__FILE__).'/lib/Workflow/DbCheck.php')) { var_dump('dbcheck not found'); // Error Only return; } require_once(dirname(__FILE__).'/lib/Workflow/DbCheck.php'); $adb = PearDatabase::getInstance(); $adb->query('SET SESSION sql_mode = "NO_ENGINE_SUBSTITUTION";'); //$adb->query('SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"'); if(!\Workflow\DbCheck::existTable("vtiger_wf_frontendtrigger")) { echo "Create table vtiger_wf_frontendtrigger ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_frontendtrigger` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `workflow_id` int(10) unsigned NOT NULL, `active` tinyint(3) unsigned NOT NULL, `pageload` tinyint(4) NOT NULL, `condition` text NOT NULL, `conditiontext` text NOT NULL, `fields` text NOT NULL, `sort` tinyint(4) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_repository_core")) { echo "Create table vtiger_wf_repository_core ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_repository_core` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type` varchar(32) NOT NULL, `version` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `type` (`type`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_folder")) { echo "Create table vtiger_wf_folder ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_folder` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(128) NOT NULL, `color` varchar(9) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `title` (`title`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_types")) { echo "Create table vtiger_wf_types ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_types` ( `id` mediumint(8) unsigned NOT NULL, `type` varchar(32) NOT NULL, `handlerclass` varchar(32) NOT NULL, `file` varchar(256) NOT NULL, `module` varchar(32) NOT NULL DEFAULT 'Workflow2', `output` varchar(255) NOT NULL, `persons` varchar(255) NOT NULL, `text` varchar(255) NOT NULL, `input` tinyint(4) NOT NULL DEFAULT '1', `styleclass` varchar(64) NOT NULL, `background` varchar(32) NOT NULL, `category` varchar(16) NOT NULL, `singleModule` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `type` (`type`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_frontendmanager")) { echo "Create table vtiger_wf_frontendmanager ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_frontendmanager` ( `id` int(11) NOT NULL AUTO_INCREMENT, `workflow_id` int(11) NOT NULL, `position` varchar(12) NOT NULL, `color` varchar(12) NOT NULL, `label` varchar(48) NOT NULL, `order` tinyint(4) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB ;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_frontend_config")) { echo "Create table vtiger_wf_frontend_config ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_frontend_config` ( `module` varchar(32) NOT NULL, `hide_listview` tinyint(4) NOT NULL, `show_labels` tinyint(4) NOT NULL, PRIMARY KEY (`module`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_userqueue")) { echo "Create table vtiger_wf_userqueue ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_userqueue` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parentKey` varchar(48) NOT NULL, `type` enum('requestValue') NOT NULL, `subject` varchar(64) NOT NULL, `queue_id` int(11) NOT NULL, `settings` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_trigger")) { echo "Create table vtiger_wf_trigger ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_trigger` ( `id` int(11) NOT NULL AUTO_INCREMENT, `key` varchar(24) NOT NULL, `label` varchar(32) NOT NULL, `module` varchar(24) NOT NULL, `custom` tinyint(4) NOT NULL, `deleted` tinyint(4) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `key` (`key`) ) ENGINE=InnoDB;"); // Default Trigger $adb->query("INSERT INTO `vtiger_wf_trigger` (`id`, `key`, `label`, `module`) VALUES (1, 'WF2_EVERY_SAVE', 'LBL_START_EVERY', 'Workflow2'), (2, 'WF2_CREATION', 'LBL_START_CREATION', 'Workflow2'), (3, 'WF2_MANUELL', 'LBL_START_MANUELL', 'Workflow2'), (4, 'WF2_MAILSEND', 'LBL_START_MAIL_SEND', 'Workflow2'), (5, 'WF2_MODCOMMENT', 'LBL_START_CREATE_COMMENT', 'Workflow2');"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_auth")) { echo "Create table vtiger_wf_auth ... ok
"; $adb->query("CREATE TABLE `vtiger_wf_auth` ( `workflow_id` INT UNSIGNED NOT NULL , `key_id` VARCHAR( 10 ) NOT NULL , `auth_value` TINYINT NOT NULL , `auth_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , UNIQUE ( `workflow_id` , `key_id` ) ) ENGINE = InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_options")) { echo "Create table vtiger_wf_options ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_options` ( `workflow_id` int(10) unsigned NOT NULL, `key` varchar(32) NOT NULL, `value` text NOT NULL, `modify` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`workflow_id`,`key`) ) ENGINE = InnoDB;"); } $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_types_seq` ( `id` INT UNSIGNED NOT NULL ) ENGINE = InnoDB;", false); //echo "Reset table vtiger_wf_types_seq ... ok
"; $adb->query("TRUNCATE TABLE `vtiger_wf_types_seq`;", false); $adb->query("INSERT INTO `vtiger_wf_types_seq` ( `id` ) SELECT IFNULL(MAX(id),1) FROM vtiger_wf_types", false); if(!\Workflow\DbCheck::existTable("vtiger_wf_log")) { echo "Create table vtiger_wf_log ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_log` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `workflow_id` smallint(5) unsigned NOT NULL, `execID` varchar(32) NOT NULL, `blockID` mediumint(8) unsigned NOT NULL, `lastBlockID` mediumint(8) unsigned NOT NULL, `lastBlockOutput` varchar(16) NOT NULL, `crmid` int(10) unsigned NOT NULL, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `durationms` int(11) unsigned NOT NULL, `data` BLOB NOT NULL, PRIMARY KEY (`id`), KEY `crmid` (`crmid`,`workflow_id`,`blockID`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_errorlog")) { echo "Create table vtiger_wf_errorlog ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_errorlog` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `workflow_id` int(10) unsigned NOT NULL, `block_id` int(10) unsigned NOT NULL, `text` varchar(255) NOT NULL, `datum_eintrag` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `workflow_id` (`workflow_id`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_http_logs")) { echo "Create table vtiger_wf_http_logs ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_http_logs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ip` varchar(45) NOT NULL, `log` varchar(255) NOT NULL, `created` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_scheduler")) { echo "Create table vtiger_wf_scheduler ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_scheduler` ( `id` int(11) NOT NULL AUTO_INCREMENT, `active` TINYINT UNSIGNED NOT NULL, `hour` varchar(20) NOT NULL, `minute` varchar(20) NOT NULL, `dom` varchar(20) NOT NULL, `month` varchar(20) NOT NULL, `dow` varchar(20) NOT NULL, `year` varchar(20) NOT NULL, `next_execution` datetime NOT NULL, `workflow_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `next_execution` (`next_execution`) ) ENGINE = INNODB"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_mailscanner")) { echo "Create table vtiger_wf_mailscanner ... ok
"; $adb->query("CREATE TABLE `vtiger_wf_mailscanner` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `provider_id` int(11) NOT NULL, `available_folder` text NOT NULL, `condition` text NOT NULL, `environment` text NOT NULL, `config` text NOT NULL, `workflow_id` int(10) UNSIGNED NOT NULL, `active` tinyint(4) NOT NULL, `last_check` datetime NOT NULL, PRIMARY KEY (`id`), KEY `provider_id` (`provider_id`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_mailscanner_done")) { echo "Create table vtiger_wf_mailscanner_done ... ok
"; $adb->query("CREATE TABLE `vtiger_wf_mailscanner_done` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `mailscanner_id` int(10) UNSIGNED NOT NULL, `messageid` varchar(255) NOT NULL, `done` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `mailscanner_id` (`mailscanner_id`,`messageid`) USING BTREE ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_mailscanner_folder")) { echo "Create table vtiger_wf_mailscanner_folder ... ok
"; $adb->query("CREATE TABLE `vtiger_wf_mailscanner_folder` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `mailscanner_id` int(10) UNSIGNED NOT NULL, `folder` varchar(255) NOT NULL, `lastscan` datetime NOT NULL, `dirty` tinyint(4) NOT NULL, PRIMARY KEY (`id`), KEY `mailscanner_id` (`mailscanner_id`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_messages")) { echo "Create table vtiger_wf_messages ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_messages` ( `id` int(11) NOT NULL AUTO_INCREMENT, `crmid` int(10) unsigned NOT NULL, `type` varchar(24) NOT NULL, `position` varchar(12) NOT NULL, `subject` varchar(64) NOT NULL, `message` text NOT NULL, `show_once` tinyint(1) NOT NULL, `show_until` datetime NOT NULL, `created` datetime NOT NULL, `user_id` INT(11) NOT NULL, PRIMARY KEY (`id`), KEY `crmid` (`crmid`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_frontendtype")) { echo "Create table vtiger_wf_frontendtype ... ok
"; $adb->query("CREATE TABLE `vtiger_wf_frontendtype` ( `id` int(11) NOT NULL AUTO_INCREMENT, `jsrender` tinyint(4) NOT NULL, `key` varchar(20) NOT NULL, `title` varchar(48) NOT NULL, `module` varchar(48) NOT NULL, `options` text NOT NULL, `handlerpath` varchar(255) NOT NULL, `handlerclass` varchar(80) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_confirmation")) { echo "Create table vtiger_wf_confirmation ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_confirmation` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `execID` varchar(32) NOT NULL, `visible` tinyint(1) NOT NULL DEFAULT '1', `crmid` int(10) unsigned NOT NULL, `module` varchar(64) NOT NULL, `workflow_id` int(10) unsigned NOT NULL, `blockID` int(10) unsigned NOT NULL, `backgroundcolor` varchar(24) NOT NULL, `infomessage` varchar(255) NOT NULL, `result` varchar(10) NOT NULL, `result_user_id` int(11) NOT NULL, `from_user_id` int(10) unsigned NOT NULL, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `timeout` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_confirmation_user")) { echo "Create table vtiger_wf_confirmation_user ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_confirmation_user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `confirmation_id` int(11) NOT NULL, `user_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `user_id` (`user_id`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_entityddata")) { echo "Create table vtiger_wf_entityddata ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_entityddata` ( `dataid` int(10) unsigned NOT NULL AUTO_INCREMENT, `crmid` int(10) unsigned NOT NULL, `key` varchar(64) NOT NULL, `value` text NOT NULL, `assigned_to` int(10) unsigned NOT NULL, `mode` enum('simple','multi') NOT NULL, `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`dataid`), KEY `crmid` (`crmid`,`key`) ) ENGINE=InnoDB"); } $adb->query("ALTER TABLE `vtiger_wf_entityddata` CHANGE `dataid` `dataid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT;"); if(!\Workflow\DbCheck::existTable("vtiger_wf_config")) { echo "Create table vtiger_wf_config ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_config` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, `version` float NOT NULL, `last_check` datetime NOT NULL, `available_update` VARCHAR( 10 ) NOT NULL, `license` varchar(64) NOT NULL DEFAULT 'demo', `license_for` varchar(64) NOT NULL, `last_hash` varchar(64) NOT NULL DEFAULT 'demo', `config` blob NOT NULL, `modify` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_logtbl")) { echo "Create table vtiger_wf_logtbl ... ok
"; $adb->query("CREATE TABLE `vtiger_wf_logtbl` ( `workflow` INT UNSIGNED NOT NULL , `blockid` INT UNSIGNED NOT NULL , `crmid` VARCHAR(16) NOT NULL , `log` VARCHAR(32) NOT NULL , `date` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE = INNODB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_http_limits")) { echo "Create table vtiger_wf_http_limits ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_http_limits` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(256) NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE = INNODB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_http_limits_ips")) { echo "Create table vtiger_wf_http_limits_ips ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_http_limits_ips` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `limit_id` int(10) unsigned NOT NULL, `ip` varchar(64) NOT NULL, PRIMARY KEY (`id`), KEY `ip` (`ip`) ) ENGINE = INNODB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_http_limits_value")) { echo "Create table vtiger_wf_http_limits_value ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_http_limits_value` ( `id` int(11) NOT NULL AUTO_INCREMENT, `limit_id` int(10) unsigned NOT NULL, `mode` enum('all','trigger','id') NOT NULL, `value` varchar(64) NOT NULL, PRIMARY KEY (`id`), KEY `mode` (`mode`,`value`) ) ENGINE = INNODB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_objects")) { echo "Create table vtiger_wf_objects ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_objects` ( `id` int(11) NOT NULL AUTO_INCREMENT, `x` int(11) NOT NULL, `y` int(11) NOT NULL, `type` VARCHAR( 12 ) NOT NULL, `content` text NOT NULL, `workflow_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `workflow_id` (`workflow_id`) ) ENGINE=INNODB ;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_provider")) { echo "Create table vtiger_wf_provider ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_provider` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type` varchar(48) NOT NULL, `title` varchar(64) NOT NULL, `settings` text NOT NULL, PRIMARY KEY (`id`), KEY `type` (`type`) ) ENGINE=INNODB;"); } // Repository check if(!\Workflow\DbCheck::existTable("vtiger_wf_repository")) { echo "Create table vtiger_wf_repository ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_repository` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(128) NOT NULL, `url` varchar(256) NOT NULL, `licenseCode` varchar(40) NOT NULL, `last_update` datetime NOT NULL, `messages` text NOT NULL, `available_status` varchar(64) NOT NULL, `status` varchar(12) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;"); $initRepository = true; } if(!\Workflow\DbCheck::existTable("vtiger_wf_repository_types")) { echo "Create table vtiger_wf_repository_types ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_repository_types` ( `id` int(11) NOT NULL AUTO_INCREMENT, `repos_id` int(11) NOT NULL, `min_version` double NOT NULL, `name` varchar(64) NOT NULL, `version` int(10) unsigned NOT NULL, `last_update` datetime NOT NULL, `url` varchar(255) NOT NULL, `checksum` text NOT NULL, `mode` varchar(16) NOT NULL, `autoinstall` tinyint(4) NOT NULL, `status` varchar(12) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `repos_id` (`repos_id`,`name`,`autoinstall`) ) ENGINE=InnoDB"); } else { $adb->query('ALTER TABLE `vtiger_wf_repository_types` DROP INDEX `repos_id` , ADD UNIQUE `repos_id` ( `repos_id` , `name`, `autoinstall` )'); } if(!\Workflow\DbCheck::existTable("vtiger_wf_formulas")) { echo "Create table vtiger_wf_formulas ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_formulas` ( `id` int(11) NOT NULL AUTO_INCREMENT, `formula` text NOT NULL, `name` VARCHAR( 48 ), `variables` text NOT NULL, `modified` datetime NOT NULL, `modifiedby` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;"); } if(!\Workflow\DbCheck::existTable("vtiger_wf_oauth")) { echo "Create table vtiger_wf_oauth ... ok
"; $adb->query("CREATE TABLE IF NOT EXISTS `vtiger_wf_oauth` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userid` int(10) unsigned NOT NULL, `name` varchar(60) NOT NULL, `hash` varchar(40) NOT NULL, `done` tinyint(4) NOT NULL, `handler` varchar(128) NOT NULL, `data` text NOT NULL, `refresh` text NOT NULL, `created` datetime NOT NULL, `expire` date NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `hash` (`hash`) ) ENGINE=InnoDB;"); } \Workflow\DbCheck::clearTableCache(); \Workflow\DbCheck::lowercaseColumn('vtiger_wf_types', 'styleClass'); \Workflow\DbCheck::lowercaseColumn('vtiger_wf_types', 'singleModule'); \Workflow\DbCheck::lowercaseColumn('vtiger_wf_types', 'helpUrl'); \Workflow\DbCheck::lowercaseColumn('vtiger_wf_types', 'handlerClass'); $sql = "SELECT * FROM vtiger_wf_config"; $result = $adb->query($sql); if($adb->num_rows($result) == 0) { $adb->query("INSERT INTO `vtiger_wf_config` (`id`, `version`, `license`, `last_hash`, `config`, `available_update`, `license_for`, `last_check`) VALUES (1, ".Workflow2::VERSION.", 'free', 'free', '', '', '', '0000-00-00');"); } if($adb->num_rows($result) > 1) { $adb->query("DELETE FROM `vtiger_wf_config` ORDER BY license LIMIT ".($adb->num_rows($result) - 1)); } \Workflow\DbCheck::checkColumn("vtiger_wf_messages", "target", "ENUM( 'record', 'user' )", 'record'); //\Workflow\DbCheck::checkColumn("vtiger_wf_messages", "user_id", "INT(11)"); $sql = 'DELETE FROM vtiger_wf_repository_types WHERE name = "pdfmaker_savedocument"'; $adb->query($sql); \Workflow\DbCheck::checkColumn("vtiger_wf_provider", "default", "TINYINT", '0'); \Workflow\DbCheck::checkColumn("vtiger_wf_repository", "messages", "text"); \Workflow\DbCheck::checkColumn("vtiger_wf_repository", "support_url", "VARCHAR( 255 )"); \Workflow\DbCheck::checkColumn("vtiger_wf_repository", "autoupdate", "TINYINT", '1'); \Workflow\DbCheck::checkColumn("vtiger_wf_repository", "available_status", "VARCHAR( 128 )", false, true); \Workflow\DbCheck::checkColumn("vtiger_wf_repository", "status", "VARCHAR( 12 )", 'stable'); \Workflow\DbCheck::checkColumn("vtiger_wf_repository", "version", "INT UNSIGNED", '1'); \Workflow\DbCheck::checkColumn("vtiger_wf_repository", "deleted", "TINYINT", '0'); \Workflow\DbCheck::checkColumn("vtiger_wf_repository_types", "autoinstall", "tinyint(4)"); \Workflow\DbCheck::checkColumn("vtiger_wf_repository_types", "status", "VARCHAR( 12 )"); \Workflow\DbCheck::checkColumn("vtiger_wf_repository_types", "module_required", "VARCHAR( 64 )"); \Workflow\DbCheck::checkColumn("vtiger_wf_confirmation", "result_timestamp", "datetime"); \Workflow\DbCheck::checkColumn("vtiger_wf_confirmation", "backgroundcolor", "varchar(24)"); \Workflow\DbCheck::checkColumn("vtiger_wf_confirmation", "infomessage", "varchar(255)"); \Workflow\DbCheck::checkColumn("vtiger_wf_confirmation", "rundirect", "tinyint(4)"); \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "environment", "TEXT"); \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "delta", "TEXT"); \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "hidden", "TINYINT"); \Workflow\DbCheck::checkColumn("vtiger_wf_http_limits", "url", "VARCHAR( 128 )"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "singleModule", "VARCHAR( 255 )"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "helpurl", "VARCHAR( 255 )"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "sort", "int(10) UNSIGNED"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "version", "int(10) UNSIGNED"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "repo_id", "int(10) UNSIGNED"); \Workflow\DbCheck::checkColumn("vtiger_wf_oauth", "provider", "VARCHAR(48)"); \Workflow\DbCheck::checkColumn("vtiger_wf_oauth", "expire", "DATETIME", false, true); \Workflow\DbCheck::checkColumn("vtiger_wf_frontendmanager", "position", "VARCHAR(64)", false, true); \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "folder", "VARCHAR(64)", false, false, function() { $adb = \PearDatabase::getInstance(); $sql = 'UPDATE vtiger_wf_settings SET folder = module_name WHERE folder = ""'; $adb->query($sql); }); \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "sort", "TINYINT(1)", false, false, function() { $adb = \PearDatabase::getInstance(); $sql = 'SELECT id FROM vtiger_wf_settings ORDER BY module_name, active DESC, title'; $result = $adb->pquery($sql); $counter = 1; while($row = $adb->fetchByAssoc($result)) { $sql = 'UPDATE vtiger_wf_settings SET sort = '.$counter.' WHERE id = '.$row['id']; $adb->query($sql); $counter++; } }); \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "nologging", "tinyint(1)"); \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "invisible", "tinyint(1)"); \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "last_modify_by", "int(10) UNSIGNED"); \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "withoutrecord", "tinyint(1)"); \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "once_per_record", "tinyint(1)"); \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "revision", "int(10) UNSIGNED", 1); # unused \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "authmanagement", "tinyint(3) UNSIGNED", 0); # V 1.8 \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "startfields", "TEXT"); # V 1.81 \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "options", "TEXT"); # V 1.845 \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "trigger", "VARCHAR( 24 )"); \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "view_condition", "TEXT"); \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "collection_process", "tinyint(1)"); \Workflow\DbCheck::checkColumn("vtiger_wf_settings", "view_condition_lv", "tinyint(1)"); \Workflow\DbCheck::checkColumn("vtiger_wf_config", "update_channel", "VARCHAR(10)", "stable"); \Workflow\DbCheck::checkColumn("vtiger_wf_config", "error_handler", "VARCHAR(10)", "email"); \Workflow\DbCheck::checkColumn("vtiger_wf_config", "error_handler_value", "VARCHAR(256)", ""); \Workflow\DbCheck::checkColumn("vtiger_wf_config", "minify_logs_after", "int(11)", "30"); \Workflow\DbCheck::checkColumn("vtiger_wf_config", "remove_logs_after", "int(11)", "180"); \Workflow\DbCheck::checkColumn("vtiger_wf_config", "log_handler", "VARCHAR(10)", ""); \Workflow\DbCheck::checkColumn("vtiger_wf_config", "log_handler_value", "VARCHAR(256)", ""); \Workflow\DbCheck::checkColumn("vtiger_wfp_blocks", "modified", "DATETIME"); \Workflow\DbCheck::checkColumn("vtiger_wfp_blocks", "modified_by", "int(11) UNSIGNED", "0"); \Workflow\DbCheck::checkColumn("vtiger_wfp_blocks", "colorlayer", "VARCHAR(6)", ""); \Workflow\DbCheck::checkColumn("vtiger_wfp_blocks", "env_vars", "TEXT", ""); \Workflow\DbCheck::checkColumn("vtiger_wf_scheduler", "timezone", "VARCHAR(48)", "UTC"); \Workflow\DbCheck::checkColumn("vtiger_wf_scheduler", "enable_records", "TINYINT", "0"); \Workflow\DbCheck::checkColumn("vtiger_wf_scheduler", "condition", "TEXT"); \Workflow\DbCheck::checkColumn("vtiger_wf_trigger", "description", "VARCHAR( 255 )", ""); \Workflow\DbCheck::checkColumn("vtiger_wfp_blocks", "settings", "mediumtext", false, true); \Workflow\DbCheck::tableToUtf8("vtiger_wf_settings"); \Workflow\DbCheck::tableToUtf8("vtiger_wfp_blocks"); \Workflow\DbCheck::checkColumn("vtiger_wf_frontendmanager", "config", "text"); \Workflow\DbCheck::checkColumn("vtiger_wf_frontendmanager", "module", "VARCHAR(24)", "", false, function() { $adb = \PearDatabase::getInstance(); $sql = 'UPDATE vtiger_wf_frontendmanager SET module = (SELECT module_name FROM vtiger_wf_settings WHERE vtiger_wf_settings.id = vtiger_wf_frontendmanager.workflow_id)'; $adb->query($sql); }); \Workflow\DbCheck::checkColumn("vtiger_wf_frontendmanager", "order", "tinyint(4)", "", true); \Workflow\DbCheck::checkColumn("vtiger_wf_frontendmanager", "color", "VARCHAR(12)", "", true); \Workflow\DbCheck::checkColumn("vtiger_wf_frontendmanager", "listview", 'tinyint(4)', "1"); \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "checkMode", "enum('dynamic','static','running')",'static', true); $sql = "SELECT * FROM vtiger_wf_settings WHERE `trigger` = ''"; $result = $adb->query($sql); if($adb->num_rows($result) > 0) { echo "[update] Update ".$adb->num_rows($result)." trigger"; while($row = $adb->fetchByAssoc($result)) { $sql = "SELECT `key` FROM vtiger_wf_trigger WHERE id = ?"; $result2 = $adb->pquery($sql, array($row["condition"])); $adb->pquery("UPDATE vtiger_wf_settings SET `trigger` = ? WHERE id = ?", array($adb->query_result($result2, 0, "key"), $row["id"])); } } /* Repo Update */ $className = "\\Workflow\\S"."WE"."xt"."ension\\"."ca62d58e352291a"."30c165c444877b1c92c5d28d5c"; $moduleModel = Vtiger_Module_Model::getInstance("Workflow2"); $GenKey = new $className("Workflow2", $moduleModel->version); $licenseHash = $GenKey->gb8d9a4f2e098e53aee15b6fd5f9456705f64f354(); $adb = \PearDatabase::getInstance(); $sql = 'SELECT * FROM vtiger_wf_repository WHERE url LIKE ? AND deleted = 0'; $result = $adb->pquery($sql, array('%.redoo-networks.%')); if($adb->num_rows($result) == 0) { $repoId = \Workflow\Repository::register('https://repo.redoo-networks.com', $licenseHash, 'Redoo Networks Repository', true, '', $licenseHash); } else { $repoId = $adb->query_result($result, 0, 'id'); } $sql = 'SELECT * FROM vtiger_wf_repository WHERE url LIKE ?'; $result = $adb->pquery($sql, array('%repository.stefanwarnat.de%')); $oldRepoId = $adb->query_result($result, 0, 'id'); if(!empty($oldRepoId)) { $sql = 'UPDATE vtiger_wf_types SET repo_id = ? WHERE repo_id = ? AND repo_id != 0'; $adb->pquery($sql, array($repoId, $oldRepoId)); // $sql = 'UPDATE vtiger_wf_types SET repo_id = ? WHERE repo_id = 0'; // $adb->pquery($sql, array($repoId)); $sql = 'DELETE FROM vtiger_wf_repository_types WHERE repos_id = ?'; $adb->pquery($sql, array($oldRepoId)); $sql = 'UPDATE vtiger_wf_repository SET deleted = 1 WHERE id = ?'; $adb->pquery($sql, array($oldRepoId)); } $initRepository = true; /* Repo Update */ if($full) { \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "locked", "tinyint(4)"); \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "crmid", "int(10) unsigned"); \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "workflow_id", "int(10) unsigned"); \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "execID", "varchar(32)"); \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "execution_user", "mediumint(9) unsigned"); \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "block_id", "int(10) unsigned"); \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "nextStepTime", "datetime"); \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "nextStepField", "varchar(64)"); \Workflow\DbCheck::checkColumn("vtiger_wf_queue", "timestamp", "timestamp"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "type", "varchar(32)"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "handlerclass", "varchar(32)"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "file", " varchar(256)"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "module", "varchar(32)"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "output", "varchar(255)"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "persons", "varchar(255)"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "text", "varchar(255)"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "input", " tinyint(4)", "1"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "styleclass", "varchar(64)"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "background", "varchar(32)"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "category", "varchar(16)"); \Workflow\DbCheck::checkColumn("vtiger_wf_types", "sort", "int(10) unsigned"); \Workflow\DbCheck::checkColumn("vtiger_wfp_blocks", "workflow_id", "smallint(5) unsigned"); \Workflow\DbCheck::checkColumn("vtiger_wfp_blocks", "active", "tinyint(3) unsigned"); \Workflow\DbCheck::checkColumn("vtiger_wfp_blocks", "text", "varchar(128)"); \Workflow\DbCheck::checkColumn("vtiger_wfp_blocks", "type", "varchar(32)"); \Workflow\DbCheck::checkColumn("vtiger_wfp_blocks", "x", "mediumint(9)"); \Workflow\DbCheck::checkColumn("vtiger_wfp_blocks", "y", "mediumint(9)"); \Workflow\DbCheck::checkColumn("vtiger_wfp_connections", "deleted", "tinyint(3) unsigned"); \Workflow\DbCheck::checkColumn("vtiger_wfp_connections", "workflow_id", "int(11)"); \Workflow\DbCheck::checkColumn("vtiger_wfp_connections", "source_mode", "enum('block','person')"); \Workflow\DbCheck::checkColumn("vtiger_wfp_connections", "source_id", "smallint(6)"); \Workflow\DbCheck::checkColumn("vtiger_wfp_connections", "source_key", "varchar(32)"); \Workflow\DbCheck::checkColumn("vtiger_wfp_connections", "destination_id", "smallint(6)"); \Workflow\DbCheck::checkColumn("vtiger_wfp_connections", "destination_key", "varchar(32)"); \Workflow\DbCheck::checkColumn("vtiger_wfp_connections", "last_change", "timestamp"); \Workflow\DbCheck::checkColumn("vtiger_wfp_connections", "last_changed_userid", "mediumint(9)"); } $sql = 'UPDATE vtiger_links SET linklabel = "Workflows" WHERE linklabel = "Workflow Designer" AND linktype LIKE "%SIDEBAR%"'; $adb->query($sql); $sql = 'UPDATE vtiger_wf_repository SET url = "https://repo.redoo-networks.com" WHERE url LIKE "https://repository.redoo-networks.de"'; $result = $adb->query($sql); $sql = 'SELECT id FROM vtiger_wf_repository WHERE url LIKE "%.redoo-networks%"'; $result = $adb->query($sql); if($adb->num_rows($result) == 0) { $initRepository = true; } if($initRepository) { try { $className = "\\Workflow\\S"."WE"."xt"."ension\\"."ca62d58e352291a"."30c165c444877b1c92c5d28d5c"; $moduleModel = Vtiger_Module_Model::getInstance("Workflow2"); $GenKey = new $className("Workflow2", $moduleModel->version); $licenseHash = $GenKey->gb8d9a4f2e098e53aee15b6fd5f9456705f64f354(); $newId = \Workflow\Repository::register('https://repo.redoo-networks.com', $licenseHash, 'Basic Repository', true, $licenseHash); //$repo = new \Workflow\Repository($newId); //$repo->installAll(\Workflow\Repository::INSTALL_ALL); //$adb->query('UPDATE vtiger_wf_types SET repo_id = ' . $newId); } catch (\Exception $exp) { echo 'Repository Error:'.$exp->getMessage(); }; } $repoId = $adb->query_result($result, 0, 'id'); $className = "\\Workflow\\S"."WE"."xt"."ension\\"."ca62d58e352291a"."30c165c444877b1c92c5d28d5c"; $GenKey = new $className("Workflow2", $moduleModel->version); $licenseHash = $GenKey->gb8d9a4f2e098e53aee15b6fd5f9456705f64f354(); $adb->query('UPDATE vtiger_wf_repository SET licensecode = "'.md5($licenseHash).'" WHERE url LIKE "%repository.stefanwarnat.de"'); \Workflow\DbCheck::checkColumn("vtiger_wf_repository_types", "mode", "VARCHAR(16)"); $sql = 'SELECT * FROM vtiger_wf_repository WHERE url LIKE ? AND deleted = 0'; $result = $adb->pquery($sql, array('%.redoo-networks.%'), true); if($adb->num_rows($result) > 1) { while($row = $adb->fetchByAssoc($result)) { $sql = 'SELECT * FROM vtiger_wf_types WHERE repo_id = ?'; $resultCheck = $adb->pquery($sql, array($row['id']), true); if($adb->num_rows($resultCheck) == 0) { $sql = 'UPDATE vtiger_wf_repository SET deleted = 1 WHERE id = ?'; $adb->pquery($sql, array($row['id']), true); } } $sql = 'SELECT * FROM vtiger_wf_repository WHERE url = ? AND deleted = 0'; $result = $adb->pquery($sql, array('https://repo.redoo-networks.com'), true); if($adb->num_rows($result) == 0) { $sql = 'UPDATE vtiger_wf_repository SET deleted = 0 WHERE url = ? LIMIT 1'; $adb->pquery($sql, array('https://repo.redoo-networks.com'), true); } } $sql = 'DELETE FROM vtiger_wf_repository_types WHERE repos_id IN (SELECT id FROM vtiger_wf_repository WHERE deleted = 1)'; $adb->query($sql); $sql = 'UPDATE vtiger_wf_repository SET version = 2 WHERE url LIKE "%.redoo-networks.%" AND deleted = 0'; $result = $adb->query($sql, true); if(!empty($licenseHash)) { $sql = 'UPDATE vtiger_wf_repository SET licenseCode = ? WHERE url LIKE "%.redoo-networks.%"'; $adb->pquery($sql, array(md5($licenseHash))); $sql = 'SELECT * FROM vtiger_wf_repository WHERE url LIKE "%.redoo-networks.%" AND deleted = 0'; $result = $adb->query($sql, true); $repository = new \Workflow\Repository($adb->query_result($result, 0, 'id')); $repository->pushPackageLicense(md5($licenseHash)); }