function getAvailableFiles($sModule, $sFolder = "langs") { global $sIncPath; global $sModulesUrl; //--- Get info which was set by admin in the Ray Base ---// $aFileContents = getFileContents($sModule, "/xml/" . $sFolder . ".xml", true); $aFiles = $aFileContents['contents']; //--- Get info from file system ---// $aRealFiles = getExtraFiles($sModule, $sFolder, false, true); //--- Merge info from these arrays ---// $aResult = array(); foreach ($aFiles as $sFile => $bEnabled) { if ($bEnabled == TRUE_VAL && ($sKey = array_search($sFile, $aRealFiles['files'])) !== false) { $aResult['files'][] = $sFile; $aResult['dates'][] = $aRealFiles['dates'][$sKey]; } } $aResult['default'] = $aFiles['_default_']; return $aResult; }
<?php setlocale(LC_ALL, 'EN_US'); header('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT'); header("Content-Type: application/x-shockwave-flash"); require_once "../../global/inc/header.inc.php"; require_once $sIncPath . "functions.inc.php"; require_once $sIncPath . "apiFunctions.inc.php"; require_once $sIncPath . "xml.inc.php"; $aPathParts = explode("/", $_SERVER['PHP_SELF']); $iPartsCount = count($aPathParts); $aResult = getExtraFiles($aPathParts[$iPartsCount - 3], $aPathParts[$iPartsCount - 2]); $sFile = $aResult['current'] . "." . $aResult['extension']; readfile($sFile);
/** * refresh extra file (skins.xml/langs.xml) * @param sWidget - the name of the widget. * @param sCase - skins/langs */ function refreshExtraFile($sWidget, $sCase, $bReset = false, $sDefaultFile = "", $aEnabledFiles = array()) { global $sModulesPath; global $aXmlTemplates; global $aErrorCodes; //--- Get folder contents ---// $sDir = $sWidget . "/" . $sCase; $sDirName = $sModulesPath . $sDir; if (!(file_exists($sDirName) && is_dir($sDirName))) { return parseXml($aXmlTemplates['result'], getError($aErrorCodes[6], $sDir), FAILED_VAL); } $aFiles = getExtraFiles($sWidget, $sCase, false); $iFilesCount = count($aFiles['files']); if ($iFilesCount == 0) { return array('value' => getError($aErrorCodes[7], $sDir), 'status' => FAILED_VAL, 'contents' => ""); } //--- Get XML file contents ---// $aFileContents = getFileContents($sWidget, "/xml/" . $sCase . ".xml", true); if ($aFileContents['status'] == FAILED_VAL) { return array('value' => $aFileContents['value'], 'status' => FAILED_VAL, 'contents' => ""); } $aContents = $aFileContents['contents']; //--- Merge folder and file contents ---// $sCurrent = isset($aContents[FILE_DEFAULT_KEY]) && in_array($aContents[FILE_DEFAULT_KEY], $aFiles["files"]) ? $aContents[FILE_DEFAULT_KEY] : $aFiles["current"]; $sCurrent = $bReset && in_array($sDefaultFile, $aFiles["files"]) ? $sDefaultFile : $sCurrent; $aEnabledFiles[] = $sCurrent; $sContents = parseXml($aXmlTemplates["item"], FILE_DEFAULT_KEY, $sCurrent); for ($i = 0; $i < $iFilesCount; $i++) { $sEnabled = isset($aContents[$aFiles["files"][$i]]) ? $aContents[$aFiles["files"][$i]] : TRUE_VAL; if ($bReset) { $sEnabled = in_array($aFiles["files"][$i], $aEnabledFiles) ? TRUE_VAL : FALSE_VAL; } $sContents .= parseXml($aXmlTemplates["item"], $aFiles["files"][$i], $sEnabled); } $sContents = makeGroup($sContents, "items"); //--- Save changes to the file---// $sFile = $sWidget . "/xml/" . $sCase . ".xml"; $sFileName = $sModulesPath . $sFile; $bResult = false; if (($rHandle = @fopen($sFileName, "wt")) !== false) { $bResult = fwrite($rHandle, $sContents) !== false; fclose($rHandle); } $bResult = $bResult && $rHandle; $sValue = $bResult ? "" : getError($aErrorCodes[2], $sFile); return array('value' => $sValue, 'status' => $bResult ? SUCCESS_VAL : FAILED_VAL, 'contents' => $sContents); }
/** * get extra files for module in XML format * @param $sModule - module name * @param $sFolder - folder name for which value is set * @param $bGetDate - get dates of files * @return $sContents - XML formatted result */ function printFiles($sModule, $sFolder = "langs", $bGetDate = false, $bGetNames = false) { global $sIncPath; global $sModulesUrl; require_once $sIncPath . "xmlTemplates.inc.php"; $aFileContents = getFileContents($sModule, "/xml/" . $sFolder . ".xml", true); $aFiles = $aFileContents['contents']; $aEnabledFiles = array(); foreach ($aFiles as $sFile => $sEnabled) { if ($sEnabled == TRUE_VAL) { $aEnabledFiles[] = $sFile; } } $sDefault = $aFiles['_default_']; $aResult = getExtraFiles($sModule, $sFolder, true, $bGetDate); $sCurrent = $aResult['current']; $sCurrent = in_array($sCurrent, $aEnabledFiles) ? $sCurrent : $sDefault; $sCurrentFile = $sCurrent . "." . $aResult['extension']; $aRealFiles = array_flip($aResult['files']); $aFileDates = $aResult['dates']; $sContents = ""; for ($i = 0; $i < count($aEnabledFiles); $i++) { if (isset($aRealFiles[$aEnabledFiles[$i]])) { $sFile = $aEnabledFiles[$i]; if ($bGetDate) { $sContents .= parseXml($aXmlTemplates['file'], $sFile, $aFileDates[$aRealFiles[$sFile]]); } else { if ($bGetNames) { $sName = $sFolder == "langs" ? getSettingValue($sModule, "_name_", $sFile, false, "langs") : getSettingValue($sModule, $sFile, "skinsNames"); if (empty($sName)) { $sName = $sFile; } $sContents .= parseXml($aXmlTemplates['file'], $sFile, $sName, ""); } else { $sContents .= parseXml($aXmlTemplates['file'], $sFile); } } } } $sContents = makeGroup($sContents, "files"); $sContents .= parseXml($aXmlTemplates['current'], $sCurrent, $sModulesUrl . $sModule . "/" . $sFolder . "/" . $sCurrentFile); return $sContents; }