<?php

/**
 * @package     Sven.Bluege
 * @subpackage  com_eventgallery
 *
 * @copyright   Copyright (C) 2005 - 2019 Sven Bluege All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();

class EventgalleryLibraryCommonSecurity
{
    /**
     * write content to a given path and filename
     *
     * @param string $path
     * @param string $filename
     * @param $content
     */
    private static function writeToFile($path, $filename, $content) {
        if ($path[strlen($path)-1] == DIRECTORY_SEPARATOR) {
            $path = substr($path, 0, strlen($path)-1);
        }

        $filepath = $path . DIRECTORY_SEPARATOR . $filename;

        JFile::write($filepath , $content);
    }

    /**
     * add the necessary protection files for a folder to prevent direct access through the web server
     *
     * @param string $path
     */
    public static function protectFolder($path) {
        self::writeToFile($path, '.htaccess', COM_EVENTGALLERY_IMAGE_PROTECTION_HTACCESS);
        self::writeToFile($path, 'web.config', COM_EVENTGALLERY_IMAGE_PROTECTION_WEB_CONFIG);
    }

    public static function unprotectFolder($path) {
        if (file_exists($path.'.htaccess')) {
            unlink($path . '.htaccess');
        }
        if (file_exists($path . 'web.config')) {
            unlink($path . 'web.config');
        }
    }

    /**
     * write the index.html file for the given folder.
     *
     * @param $path
     */
    public static function writeIndexHtmlFile($path) {
        self::writeToFile($path, 'index.html', COM_EVENTGALLERY_IMAGE_PROTECTION_INDEX_HTML);
    }

    /**
     * checks if the file is a file which is used to protect a folder. Example: .htaccess or index.html
     *
     * @param string $filename
     * @return bool
     */
    public static function isProtectionFile($filename) {

        if ($filename == '.htaccess' || $filename == 'web.config' || $filename == 'index.html') {
            return true;
        }

        return false;
    }
}
