From 897f8cc8b5f4cfbbf3bfefca46fa8c15acacba1c Mon Sep 17 00:00:00 2001 From: "Hahn Axel (hahn)" <axel.hahn@unibe.ch> Date: Fri, 23 Aug 2024 10:07:22 +0200 Subject: [PATCH] build-base-class: php8 only; added variable types; short array syntax --- .../deployment/classes/build_base.class.php | 223 +++++++++++------- 1 file changed, 137 insertions(+), 86 deletions(-) diff --git a/public_html/deployment/classes/build_base.class.php b/public_html/deployment/classes/build_base.class.php index 723deb29..84a93a04 100644 --- a/public_html/deployment/classes/build_base.class.php +++ b/public_html/deployment/classes/build_base.class.php @@ -6,17 +6,47 @@ require_once 'build.interface.php'; * see deployment/plugins/build/* * * @author axel + * + * 2024-08-23 v1.1 Axel Hahn php8 only; added variable types; short array syntax */ -class build_base implements iBuildplugin{ - - protected $_sBuildDir = false; - protected $_sOutfile = false; - - protected $_sPluginId = false; - protected $_aPlugininfos = false; +class build_base implements iBuildplugin +{ - protected $_sLang = "en-en"; - protected $_aLang = []; + /** + * path of the build directory + * @var string + */ + protected string $_sBuildDir = ''; + + /** + * outputfile during build + * @var string + */ + protected string $_sOutfile = ''; + + /** + * id of the plugin + * @var string + */ + protected string $_sPluginId = ''; + + /** + * array with plugin infos + * @var array + */ + protected array $_aPlugininfos = []; + + /** + * language of ui; default is "en-en" + * @var string + */ + protected string $_sLang = "en-en"; + + /** + * array of language texts + * @var array + */ + protected array $_aLang = []; // --------------------------------------------------------------- @@ -24,58 +54,58 @@ class build_base implements iBuildplugin{ // --------------------------------------------------------------- /** - * initialize build plugin + * Initialize build plugin * @param array $aParams hash with those possible keys * lang string language, i.e. 'de' * phase string name of phase in a project * globalcfg array given global config $aConfig * projectcfg array project config to generate config * for project and all phases - * @return boolean */ - public function __construct($aParams) { - + public function __construct(array $aParams) + { + // set current plugin id - taken from plugin directory name above - $oReflection=new ReflectionClass($this); - $this->_sPluginId=basename(dirname($oReflection->getFileName())); - + $oReflection = new ReflectionClass($this); + $this->_sPluginId = basename(dirname($oReflection->getFileName())); + // ----- init language - if (isset($aParams['lang'])){ + if (isset($aParams['lang'])) { $this->setLang($aParams['lang']); } else { $this->setLang(); } - if (isset($aParams['workdir'])){ + if (isset($aParams['workdir'])) { $this->setWorkdir($aParams['workdir']); } - if (isset($aParams['outfile'])){ + if (isset($aParams['outfile'])) { $this->setOutfile($aParams['outfile']); } - return true; } - + // --------------------------------------------------------------- // LANGUAGE TEXTS // --------------------------------------------------------------- - + /** - * get a translated text from lang_XX.json in plugin dir; + * Get a translated text from lang_XX.json in plugin dir; * If the key is missed it returns "[KEY :: LANG]" * * @see setLang() * @param string $sKey key to find in lang file * @return string */ - protected function _t($sKey){ + protected function _t(string $sKey): string + { return (isset($this->_aLang[$sKey]) && $this->_aLang[$sKey]) - ? $this->_aLang[$sKey] - : "[ $sKey :: $this->_sLang ]" + ? $this->_aLang[$sKey] + : "[ $sKey :: $this->_sLang ]" ; } /** - * set language for output of formdata and other texts. + * Set language for output of formdata and other texts. * This method loads the language file into a hash. The output of * translated texts can be done with $this->_t("your_key") * @@ -83,12 +113,13 @@ class build_base implements iBuildplugin{ * @param string $sLang language code, i.e. "de" * @return boolean */ - public function setLang($sLang=false){ - $this->_sLang=$sLang ? $sLang : $this->_sLang; - - $oReflection=new ReflectionClass($this); - $sFile=dirname($oReflection->getFileName()) . '/lang_'.$this->_sLang.'.json'; - $this->_aLang=(file_exists($sFile)) ? json_decode(file_get_contents($sFile), 1) : $this->_aLang; + public function setLang(string $sLang = ''): bool + { + $this->_sLang = $sLang ? $sLang : $this->_sLang; + + $oReflection = new ReflectionClass($this); + $sFile = dirname($oReflection->getFileName()) . '/lang_' . $this->_sLang . '.json'; + $this->_aLang = (file_exists($sFile)) ? json_decode(file_get_contents($sFile), 1) : $this->_aLang; return true; } // --------------------------------------------------------------- @@ -97,123 +128,143 @@ class build_base implements iBuildplugin{ /** - * set build dir with sources + * Set build dir with sources * @param string $sBuildDir full path of the build directory - * @return array + * @return bool */ - public function setWorkdir($sBuildDir){ - return $this->_sBuildDir=$sBuildDir ? $sBuildDir : $this->_sBuildDir; + public function setWorkdir(string $sBuildDir): bool + { + $this->_sBuildDir = $sBuildDir ? $sBuildDir : $this->_sBuildDir; + return true; } /** - * set outfile name + * Set outfile name * @param string $sOutFilename filename for output (without extension) - * @return array + * @return bool */ - public function setOutfile($sOutFilename){ - return $this->_sOutfile=$sOutFilename ? $sOutFilename : $this->_sOutfile; + public function setOutfile(string $sOutFilename) + { + $this->_sOutfile = $sOutFilename ? $sOutFilename : $this->_sOutfile; + return true; } // --------------------------------------------------------------- // GETTER // --------------------------------------------------------------- - + /** - * check requirements if the plugin could work + * Check requirements if the plugin could work * @return array */ - public function checkRequirements() { + public function checkRequirements(): array + { return [ - 'echo "ERROR: The method checkRequirements() was not implemented in the build plugin ['.$this->getId().']"', + 'echo "ERROR: The method checkRequirements() was not implemented in the build plugin [' . $this->getId() . ']"', 'exit 1' - ]; + ]; } /** - * get an array with shell commands to execute + * Get an array with shell commands to execute * @return array */ - public function getBuildCommands(){ + public function getBuildCommands(): array + { return [ - 'echo "ERROR: The method getBuildCommamds() was not implemented in the build plugin ['.$this->getId().']"', + 'echo "ERROR: The method getBuildCommamds() was not implemented in the build plugin [' . $this->getId() . ']"', 'exit 1' - ]; + ]; } - + /** - * get string with current ID + * Get string with current ID * @return string */ - public function getId(){ + public function getId(): string + { return $this->_sPluginId; } - + /** - * get string with plugin name (taken from plugin language file) + * Get string with plugin name (taken from plugin language file) * @return string */ - public function getName(){ + public function getName():string + { return $this->_t('plugin_name'); } - + /** - * get string with plugin description (taken from plugin language file) + * Get string with plugin description (taken from plugin language file) * @return string */ - public function getDescription(){ + public function getDescription(): string + { return $this->_t('description'); } + /** - * get array read from info.json - * @return type + * Get array read from info.json + * @return array */ - public function getPluginInfos(){ + public function getPluginInfos(): array + { - if ($this->_aPlugininfos){ + if ($this->_aPlugininfos) { return $this->_aPlugininfos; } - - $oReflection=new ReflectionClass($this); - $sFile=dirname($oReflection->getFileName()) . '/info.json'; - $this->_aPlugininfos= (file_exists($sFile)) + + $oReflection = new ReflectionClass($this); + $sFile = dirname($oReflection->getFileName()) . '/info.json'; + $this->_aPlugininfos = (file_exists($sFile)) ? json_decode(file_get_contents($sFile), 1) - : array('error'=> 'unable to read info file ['.$sFile.'].') + : ['error' => "unable to read info file [$sFile]."] ; return $this->_aPlugininfos; } /** - * get the file extension of created output file (from plugin info.json) + * Get the file extension of created output file (from plugin info.json) + * @return string */ - public function getExtension(){ - $aInfos=$this->getPluginInfos(); - return isset($aInfos['extension']) ? '.'.$aInfos['extension'] : ''; + public function getExtension(): string + { + $aInfos = $this->getPluginInfos(); + return isset($aInfos['extension']) ? '.' . $aInfos['extension'] : ''; } + /** - * set outfile name including extension (from plugin metadata) - * @param string $sOutFilename filename for output (without extension) - * @return array + * Get outfile name including extension (from plugin metadata) + * @return string */ - public function getOutfile(){ - return $this->_sOutfile.$this->getExtension(); + public function getOutfile(): string + { + return $this->_sOutfile . $this->getExtension(); } + /** - * set outfile name - * @param string $sOutFilename filename for output (without extension) - * @return array + * get current build dir + * @return string */ - public function getBuildDir(){ + public function getBuildDir(): string + { return $this->_sBuildDir; } // ---------------------------------------------------------------------- // INTERFACE :: RENDERER // ---------------------------------------------------------------------- - public function renderPluginBox(){ - $sReturn=''; - $aInfos=$this->getPluginInfos(); - return '<strong>'.$this->getName().'</strong> ('.$this->getId().')<br> - '.$this->getDescription(); + /** + * Render plugin box as HTML to show in plugin overview + * @return string + */ + public function renderPluginBox(): string + { + $aInfos = $this->getPluginInfos(); + + return '<strong>' . $this->getName() . '</strong> (' . $this->getId() . ')<br> + ' . $this->getDescription(); } } -- GitLab