getClone(); return $objQueue->execute($arrParameter); } /** * @param $strFile - the file with the query definitions to store * * store all query-definitions from the given file * **/ function storeQueryFileContent($strFile) { storeDefinitionsFromFileInGroup($strFile, 'Query-Definition'); } /** * @param $strDir - the dir with query-definitions files * @param $strMatch - a rule files in the dir have to match * * iterate through all files in the given dir. if a file matches * the rule in $strMatch, the definitions in the file will be stored * as query-definitions. all files are match in default. * **/ function loadQueryDefinitionsInDir($strDir, $strMatch = '*') { walkDirForCallback($strDir, '\DDDBL\storeQueryFileContent', $strMatch); } /** * @param $strFile - the file with the database definitions to store * * store all database definition from the given file * **/ function storeDBFileContent($strFile) { $cloAdditionalHandler = function ($objDataObjectPool, $arrDefinition) { if(!empty($arrDefinition['DEFAULT']) && true == (boolean) $arrDefinition['DEFAULT']) $objDataObjectPool->add('DEFAULT', $arrDefinition); }; storeDefinitionsFromFileInGroup($strFile, 'Database-Definition', $cloAdditionalHandler); } /** * @param $strDir - the dir with query-definitions files * @param $strMatch - a rule files in the dir have to match * * iterate through all files in the given dir. if a file matches * the rule in $strMatch, the definitions in the file will be stored * as database-definitions. all files are matched in default. * **/ function loadDBDefinitionsInDir($strDir, $strMatch = '*') { walkDirForCallback($strDir, '\DDDBL\loadDBDefinitionsInDir', $strMatch); } /** * @param $strPath - the path to the dir to handle * @param $strCallback - the callback to call when a matching file is found * @param $strFilenameMatch - the rule to filename has to match * * @throws UnexpectedParameterTypeException - if the given path or filematch-rule is not a string * @throws UnexpectedParameterTypeException - if the given callback is not a callable * @throws \Exception - if given path is not a directory * @throws \Exception - if the directory is not readable * * reads all files of the given directory (just directory, not recursive) * and checks, if the filename matches against the given rule. if * a match is found the given callback is called with the full * path to the file * **/ function walkDirForCallback($strPath, $strCallback, $strFilenameMatch) { if(!is_string($strPath)) throw new UnexpectedParameterTypeException('string', $strPath); if(!is_callable($strCallback)) throw new UnexpectedParameterTypeException('callable', $strCallback); if(!is_string($strFilenameMatch)) throw new UnexpectedParameterTypeException('string', $strFilenameMatch); if(!is_dir($strPath)) throw new \Exception ('given path is not an directory: ' . $strPath); $resDirHandle = opendir($strPath); if(!is_resource($resDirHandle)) throw new \Exception ('could not read directory: ' . $strPath); while($strFile = readdir($resDirHandle)) if(is_file($strPath.$strFile) && fnmatch($strFilenameMatch, $strFile)) call_user_func_array($strCallback, array($strPath.$strFile)); closedir($resDirHandle); } /** * @param $strFile - the file with definitions * @param $strGroup - the group the definitions should be stored in * * @throws UnexpectedParameterTypeException - if the given file is not a string * @throws UnexpectedParameterTypeException - if the given optional handler is not a callable * @throws \Exception - if the given file is not a file or do not exists * @throws \Exception - if the given file is not readable * * generic function to store all definitions in a given file * in the specified group. * * if an additional handler is given, it is called AFTER the storage of the * definition. when called it will get the reference to the DataObjectPool and the * found definition as parameter. * **/ function storeDefinitionsFromFileInGroup($strFile, $strGroup, $cloAdditionalHandler = null) { if(!is_string($strGroup)) throw new UnexpectedParameterTypeException('string', $strGroup); if(!is_null($cloAdditionalHandler) && !is_callable($cloAdditionalHandler)) throw new UnexpectedParameterTypeException('callable', $cloAdditionalHandler); if(!is_file($strFile) || !file_exists($strFile)) throw new \Exception ("given file is not a file or doesn't exists: $strFile"); if(!is_readable($strFile)) throw new \Exception ("given file is not readable: $strFile"); $arrDefinitions = parse_ini_file($strFile, true); $objDataObjectPool = new DataObjectPool($strGroup); foreach($arrDefinitions AS $strDefinitionAlias => $arrDefinition) { $objDataObjectPool->add($strDefinitionAlias, $arrDefinition); if(!is_null($cloAdditionalHandler)) $cloAdditionalHandler($objDataObjectPool, $arrDefinition); } }