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);
Beispiel #3
0
/**
 * 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;
}