diff --git a/src/InputOutput/IHMImpl/Config/IHMConfigClass.php b/src/InputOutput/IHMImpl/Config/IHMConfigClass.php index c6ea72e..c305c03 100644 --- a/src/InputOutput/IHMImpl/Config/IHMConfigClass.php +++ b/src/InputOutput/IHMImpl/Config/IHMConfigClass.php @@ -27,7 +27,9 @@ class IHMConfigClass private static $requestDir = "RES/"; - private static $sharedTTDir = "SHAREDTT/"; + private static $sharedDir = "shared_data/"; + + private static $sharedTreeFile = "SharedObjectTree.xml"; private static $ttDir = "TT/"; @@ -122,9 +124,14 @@ class IHMConfigClass return PARAMS_LOCALINFO_DIR; } - public static function getSharedTTPath() + public static function getSharedPath() + { + return IHM_SRC_DIR.self::$sharedDir; + } + + public static function getSharedTreeFilePath() { - return IHM_SRC_DIR.self::$dataDir.self::$sharedTTDir.self::$ttDir; + return self::getSharedPath().self::$sharedTreeFile; } public static function getUserTTPath() diff --git a/src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php b/src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php index e90e129..0555c92 100644 --- a/src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php +++ b/src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php @@ -74,12 +74,24 @@ abstract class IHMInputOutputParamsAbstractClass implements InputOutputInterface continue; } - if (strpos($tt->id, "sharedtt_") === 0) - $ttPath = IHMConfigClass::getSharedTTPath(); - else + if (strpos($tt->id, "sharedtimeTable_") === 0) { + $result = IHMSharedObjectsClass::getPath("timeTable", $tt->id); + if (!$result['success']) + throw new Exception($result['message']); + $ttPath = $result['path']; + } + else if (strpos($tt->id, "sharedcatalog_") === 0) { + $result = IHMSharedObjectsClass::getPath("catalog", $tt->id); + if (!$result['success']) + throw new Exception($result['message']); + $ttPath = $result['path']; + } + else { $ttPath = IHMConfigClass::getUserTTPath(); - $ttPath .= ($tt->id.".xml"); - if (strpos($tt->id, "cat_") === 0) + $ttPath .= ($tt->id.".xml"); + } + + if ((strpos($tt->id, "cat_") === 0) || (strpos($tt->id, "sharedcatalog_") === 0)) $timesNode->addCatalog($ttPath, $tt->{'timeTableName'}, $ttIntIndex); else $timesNode->addTimeTable($ttPath, $tt->{'timeTableName'}, $ttIntIndex); diff --git a/src/InputOutput/IHMImpl/Tools/IHMSharedObjectsClass.php b/src/InputOutput/IHMImpl/Tools/IHMSharedObjectsClass.php new file mode 100644 index 0000000..effbdfa --- /dev/null +++ b/src/InputOutput/IHMImpl/Tools/IHMSharedObjectsClass.php @@ -0,0 +1,64 @@ +<?php + +/** + * @class IHMSharedObjectsClass + * @brief Shared objects helper + * @details + */ +class IHMSharedObjectsClass { + /* + * @brief Constructor + */ + function __construct() + { + } + + public static function getPath($object_type, $object_id) { + $objectDir = ""; + switch ($object_type) { + case 'timeTable' : + $objectDir = "TT"; + break; + case 'catalog' : + $objectDir = "CAT"; + break; + default: + return array('success' => false, 'message' => 'Unknown shared object type'); + } + + $treeFilePath = IHMConfigClass::getSharedTreeFilePath(); + + if (!file_exists($treeFilePath)) + return array('success' => false, 'message' => 'Cannot retrieve shared objects file'); + + $dom = new DomDocument("1.0"); + if (!$dom->load($treeFilePath)) + return array('success' => false, 'message' => 'Cannot load shared objects file'); + + $objectRootNodeId = 'shared'.$object_type.'-treeRootNode'; + + $objectRootNode = $dom->getElementById($objectRootNodeId); + + if (!isset($objectRootNode)) + return array('success' => false, 'message' => 'Cannot retrieve shared objects root node'); + + $folderNodes = $objectRootNode->getElementsByTagName("folder"); + + foreach ($folderNodes as $folderNode) { + $objectNodes = $folderNode->getElementsByTagName($object_type); + + foreach ($objectNodes as $objectNode) { + if ($objectNode->getAttribute('xml:id') == $object_id) { + switch ($object_type) { + + } + return array('success' => true, 'path' => IHMConfigClass::getSharedPath().$objectDir."/".$folderNode->getAttribute('name').'/data/'.$object_id.".xml"); + } + } + } + + return array('success' => false, 'message' => 'Cannot retrieve shared object with id '.$object_id); + } +} + +?> \ No newline at end of file -- libgit2 0.21.2