/** * Функция обработки файлов в процессе распаковки * @param mixed $p_event * @param mixed $p_header */ static function preExtractCallBack($p_event, &$p_header) { // Если файл admin.php, смотрим как он называется у пользователя // и если название отличается, переименовываем его if ('admin.php' === $p_header['filename']) { if (defined('CONF_ADMIN_FILE') && 'admin.php' !== CONF_ADMIN_FILE) { $p_header['filename'] = CONF_ADMIN_FILE; } } // Проверяем, если файл существует и это не каталог $logData = array('error' => 2, 'message' => 'Search file', 'object' => $p_header['filename']); self::setLogData($logData); self::saveLogData(); if (@file_exists($p_header['filename']) && !$p_header['folder']) { // Пытаемся изменить парава доступа к файлу $logData = array('error' => 2, 'message' => 'Try chmod file (to: 0666; now: ' . filesys::getFileMode($p_header['filename']) . ')', 'object' => $p_header['filename']); self::setLogData($logData); self::saveLogData(); if (chmod($p_header['filename'], 0666)) { $logData = array('error' => 0, 'message' => 'File success change mode (now: ' . filesys::getFileMode($p_header['filename']) . ')', 'object' => $p_header['filename']); } else { $logData = array('error' => 1, 'message' => 'Can not change file mode (now: ' . filesys::getFileMode($p_header['filename']) . ')', 'object' => $p_header['filename']); } self::setLogData($logData); self::saveLogData(); // Пытаемся удалить файл $logData = array('error' => 2, 'message' => 'Try delete file', 'object' => $p_header['filename']); self::setLogData($logData); self::saveLogData(); if (unlink($p_header['filename'])) { $logData = array('error' => 0, 'message' => 'File success deleted', 'object' => $p_header['filename']); } else { $logData = array('error' => 1, 'message' => 'Unable delete file', 'object' => $p_header['filename']); } self::setLogData($logData); self::saveLogData(); } else { if (!file_exists($p_header['filename'])) { $logData = array('error' => 0, 'message' => 'File not exists', 'object' => $p_header['filename']); } else { $logData = array('error' => 0, 'message' => 'This is folder', 'object' => $p_header['filename']); } self::setLogData($logData); self::saveLogData(); } return 1; }