HEX
Server: Apache
System: Linux server1.myinter.net 4.18.0-553.147.1.el8_10.x86_64 #1 SMP Fri Jul 24 08:29:05 EDT 2026 x86_64
User: internet (1005)
PHP: 8.4.23
Disabled: passthru,system
Upload Files
File: /home/internet/public_html/app/core/Language.php
<?php

namespace Fir\Languages;

/**
 * The Language class which gets and set the languages
 */
class Language {

    /**
     * User selected language
     * @var string
     */
    public $language;

    /**
     * Available languages
     * @var array
     */
    public $languages;

    /**
     * Languages folder path
     * @var string
     */
    public $folder;

    public function __construct() {
        $this->languages = $this->languages();
    }

    /**
     * Get all the available languages from the languages folder
     * @return	array
     */
    private function languages() {
        // Define the languages folder
        $this->folder = __DIR__ .'/../languages/';

        $languages = [];

        if($handle = opendir($this->folder)) {
            while(false !== ($entry = readdir($handle))) {
                if($entry != '.' && $entry != '..' && substr($entry, -4, 4) == '.php') {
                    $name = pathinfo($entry);
                    $languages[] = $name['filename'];
                }
            }
            closedir($handle);
        }

        return $languages;
    }

    /**
     * @return string
     */
    public function get() {
        return $this->language;
    }

    /**
     * Set and select the language file
     *
     * @param   string  $language   The default site language
     * @return	string | array
     */
    public function set($language = null) {
        // If the user wants to set a language
        if(isset($_POST['site_language'])) {
            // If the language exists
            if(in_array($_POST['site_language'], $this->languages)) {
                $language = $_POST['site_language'];
                setcookie('lang', $language, time() + (10 * 365 * 24 * 60 * 60), COOKIE_PATH); // Expire in one month
            } else {
                // Set the language to the default one
                setcookie('lang', $language, time() + (10 * 365 * 24 * 60 * 60), COOKIE_PATH); // Expire in one month
            }
        }
        // If the user has previously selected a language
        elseif(isset($_COOKIE['lang'])) {
            // Verify if the selected language exists
            if(in_array($_COOKIE['lang'], $this->languages)) {
                $language = $_COOKIE['lang'];
            }
        }
        // Set the language to the default one
        else {
            setcookie('lang', $language, time() + (10 * 365 * 24 * 60 * 60), COOKIE_PATH); // Expire in one month
        }
        // Store the selected language
        $this->language = $language;

        // If the language exists, load and return its content
        if(in_array($language, $this->languages)) {
            require_once($this->folder.$language.'.php');
            return $lang;
        }
    }
}