#------------------------------------------------------------------------------- if (isset($Answer['Added'])) { #------------------------------------------------------------------------------- foreach ($Answer['Added'] as $Added) { #------------------------------------------------------------------------------- $File = $Added['File']; #------------------------------------------------------------------------------- echo SPrintF("Обновление файла (%s)\n", $File); #------------------------------------------------------------------------------- $Path = SPrintF('%s/%s', SYSTEM_PATH, $File); #------------------------------------------------------------------------------- if (File_Exists($Path)) { #------------------------------------------------------------------------------- SPrintF('Проверка прав на запись файла (%s)', $Path); #------------------------------------------------------------------------------- if (!Is_Writable($Path)) { return SPrintF("ERROR: недостаточно прав на запись файла (%s)\n", $Path); } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- if ($Commit) { #------------------------------------------------------------------------------- $IsWrite = IO_Write($Path, Base64_Decode($Added['Source']), TRUE); if (Is_Error($IsWrite)) { return SPrintF("ERROR: не возможно обновить файл (%s)\n", $Path); } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- }
function IO_Write($Path, $Data, $IsRewrite = FALSE, $Wait = 3) { /******************************************************************************/ $__args_types = array('string', 'string', 'boolean', 'integer'); #------------------------------------------------------------------------------- $__args__ = Func_Get_Args(); eval(FUNCTION_INIT); /******************************************************************************/ Debug(SPrintF('[IO_Write]: запись в файл (%s)', $Path)); #------------------------------------------------------------------------------- if (File_Exists($Path)) { #------------------------------------------------------------------------------- $Start = Time() + $Wait; #------------------------------------------------------------------------------- do { } while (!Is_Writable($Path) && Time() < $Start); #------------------------------------------------------------------------------- } else { #------------------------------------------------------------------------------- $Folder = DirName($Path); #------------------------------------------------------------------------------- if (!File_Exists($Folder)) { #------------------------------------------------------------------------------- Debug(SPrintF('[IO_Write]: создание директории (%s)', $Folder)); #------------------------------------------------------------------------------- if (!@MkDir($Folder, 0777, TRUE)) { return ERROR | @Trigger_Error(SPrintF('[IO_Write]: не возможно создать директорию (%s)', $Folder)); } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- $File = @Fopen($Path, $IsRewrite ? 'w' : 'a'); if (!$File) { return ERROR | @Trigger_Error('[IO_Write]: ошибка открытия файла'); } #------------------------------------------------------------------------------- if (!@Fwrite($File, $Data)) { return ERROR | @Trigger_Error('[IO_Write]: ошибка записи в файл'); } #------------------------------------------------------------------------------- if (!@Fclose($File)) { return ERROR | @Trigger_Error('[IO_Write]: ошибка закрытия файла'); } #------------------------------------------------------------------------------- # почему закомменчено - не знаю. так было. #if(Preg_Match('/\/tmp\//',$Path)) # if(!@ChMod($Path,0666)) # @Trigger_Error('[IO_Write]: ошибка установки прав на файл'); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- return TRUE; #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- }
function ProcessDirectory($Directory, $Options = False) { $bRecursive = $Options; /*if(Is_Bool($Options)) $bRecursive = $Options; elseif(Is_Numeric($Options)) $IntDeep = $Options; // 0 - unlim elseif(Is_Array($Options)){ $IntDeep = ArrayValue('Deep', $Options, '0'); $bRecursive = ArrayValue('Recursive', $Options, False); }*/ if (!is_dir($Directory)) { return False; } $List = array(); $Handle = opendir($Directory); while (False !== ($File = ReadDir($Handle))) { $Path = $Directory . DS . $File; if ($File == '.' || $File == '..' || !file_exists($Path)) { continue; } if (is_dir($Path) && $bRecursive) { $NextDirectory = ProcessDirectory($Path, True); if (is_array($NextDirectory)) { $List = array_merge($List, $NextDirectory); } } else { $Entry = new StdClass(); $Entry->Filename = $File; $Entry->Directory = $Directory; $Entry->Modtime = filemtime($Path); if (!is_dir($Path)) { // files $Entry->Size = FileSize($Path); } else { // directories $Entry->IsWritable = Is_Writable($Path); $Entry->bDirectory = True; } $List[] = $Entry; } } closedir($Handle); return $List; }
function prepare_cache_file() { // Prepare Cache file if (!Is_Dir($this->cache_dir_path) && !Is_File($this->cache_dir_path) && Is_Writable(DirName($this->cache_dir_path))) { MkDir($this->cache_dir_path); ChMod($this->cache_dir_path, 0755); } if (Is_Dir($this->cache_dir_path) && Is_Writable($this->cache_dir_path)) { Touch($this->cache_file_path); } }