From b90c61558a7ed2b1d3674074a4d1117130ad22ae Mon Sep 17 00:00:00 2001
From: Saophalkun Ponlu
Set to Two Step ' . $twoStepActive . '
')); + $fields->addFieldToTab("Root.Main", new LiteralField("WorkflowThreeStepLink", 'Set to Three Step ' . $threeStepActive . '
')); + } + + /** + * Apply two step (config) or three step workflow config. + * Two step config is already set in the module so SiteConfig::WorkflowStepConfig is twostep we don't need to do anything + */ + static function apply_active_config() { + $whichStep = self::get_step_config(); + + if($whichStep == 'threestep') { + // remove two-step decorators + Object::remove_extension('WorkflowRequest', 'WorkflowTwoStepRequest'); + Object::remove_extension('SiteTree', 'SiteTreeCMSTwoStepWorkflow'); + Object::remove_extension('SiteConfig', 'SiteConfigTwoStepWorkflow'); + + // add three-step decorators + Object::add_extension('WorkflowRequest', 'WorkflowThreeStepRequest'); + Object::add_extension('SiteTree', 'SiteTreeCMSThreeStepWorkflow'); + Object::add_extension('LeftAndMain', 'LeftAndMainCMSThreeStepWorkflow'); + Object::add_extension('SiteConfig', 'SiteConfigThreeStepWorkflow'); + } + + } + + /** + * Get STEP config variable from file self::get_config_file_path() + * @return string | the value of the config variable + */ + static function get_step_config() { + $config = self::get_config_content(); + $value = self::get_config($config, "STEP"); + + return $value; + } + + /** + * Set Get STEP config varial from file self::get_config_file_path() + */ + static function set_step_config($val) { + $config = self::get_config_content(); + $newContent = self::set_config($config, "STEP", $val); + self::write_config_file($newContent); + } + + /** + * Config file path for frameworktest - two step and three step testing + */ + static function get_config_file_path() { + return dirname(__FILE__) . "/CMSWorkflow_Config.cfg"; + } + + /** + * Config file path for frameworktest - two step and three step testing + * @return file handler + */ + static function get_config_file($mode = "r+") { + $path = self::get_config_file_path(); + + // create if not existing + if(!file_exists($path)) { + $file = fopen($path, "w"); + // default config + fwrite($file, self::$default_config); + fclose($file); + } + + return fopen($path, $mode); + } + + /** + * Config file path for frameworktest - two step and three step testing + * @return file handler + */ + static function write_config_file($content) { + $file = self::get_config_file(); + + // clear the file first + ftruncate($file, 0); + + fwrite($file, $content); + fclose($file); + } + + /** + * Config file path for frameworktest - two step and three step testing + * @return string + */ + static function get_config_content() { + $file = self::get_config_file(); + $size = filesize(self::get_config_file_path()); + if($size < 1) $size = 1; + $content = fread($file, $size); + fclose($file); + return $content; + } + + /** + * + * @param content from the file return from self::get_config_file + * @param config variable + */ + static function get_config($content, $var) { + $pattern = "/$var\s*=\s*([\w_]*)/"; + preg_match($pattern, $content, $matches); + + if(count($matches) < 2) return false; + + return $matches[1]; + } + + /** + * @param content from the file return from self::get_config_file + * @param config variable + * @param value of the config variable + * @return string | new content + */ + static function set_config($content, $var, $value) { + $pattern = "/$var\s*=\s*([\w_]*)/"; + $replaced = preg_replace($pattern, "$var = $value", $content); + + // if there varial is not found in the config a new a new one + if(preg_match($pattern, $content) == 0) { + if (trim($replaced) == "") { + $replaced = self::$default_config; + } + else { + $replaced = trim($replaced) . "\n" . self::$default_config; + } + } + return $replaced; + } + + +} \ No newline at end of file