Current File : //root/panel/modules/apache_admin/code/controller.ext.php
<?php

/**
 * @copyright 2014-2015 Sentora Project (http://www.sentora.org/) 
 * Sentora is a GPL fork of the ZPanel Project whose original header follows:
 *
 * ZPanel - A Cross-Platform Open-Source Web Hosting Control panel.
 *
 * @package ZPanel
 * @version $Id$
 * @author Bobby Allen - ballen@bobbyallen.me
 * @copyright (c) 2008-2014 ZPanel Group - http://www.zpanelcp.com/
 * @license http://opensource.org/licenses/gpl-3.0.html GNU Public License v3
 *
 * This program (ZPanel) is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */
class module_controller extends ctrl_module
{

    static $ok;
    static $showvhost;
	static $folder_issue;
	static $file_issue;
	static $sock_issue;
	static $tryagain;
    static function getApacheConfig()
    {
        if (!fs_director::CheckForEmptyValue(self::$showvhost)) {
            $display = self::DisplayApacheVhost();
        } else {
            $display = self::DisplayApacheConfig();
        }
        return $display;
    }

    static function getVhostConfig()
    {
        $display = self::DisplayVhostConfig();
        return $display;
    }
	
 static function getVhostConfigdomain()
    {
        $display = self::DisplayVhostConfigAlldomain();
        return $display;
    }
    static function getDisabledVhostConfig()
    {
        $display = self::DisplayDisabledVhostConfig();
        return $display;
    }

    static function getDisplayVhostOverrides()
    {
        $display = self::DisplayVhostOverrides();
        return $display;
    }
    static function gethelpicon()
    {
        global $zdbh;
        global $controller;
        $temp=$controller->GetControllerRequest('URL','module') ;
        $val = '/assets/one.txt';
        $val1 = '/modules/';
        $name=file_get_contents("modules/$temp/assets/helpicon.txt");
        return $name;
    }

    static function DisplayApacheConfig()
    {
        global $zdbh;
        $line = "<h2>" . ui_language::translate("Configure your Apache Settings") . "</h2>";
        $line .= "<form action=\"./?module=apache_admin&action=UpdateApacheConfig\" method=\"post\">";
        $line .= "<table class=\"table table-striped\">";
        $count = 0;
        $sql = "SELECT COUNT(*) FROM x_settings WHERE so_module_vc=:module AND so_usereditable_en = 'true'";
        $moduleName = ui_module::GetModuleName();
        $numrows = $zdbh->prepare($sql);
        $numrows->bindParam(':module', $moduleName);
        $numrows->execute();
        if ($numrows) {
            if ($numrows->fetchColumn() <> 0) {
                $sql = $zdbh->prepare("SELECT * FROM x_settings WHERE so_module_vc=:module AND so_usereditable_en = 'true' ORDER BY so_cleanname_vc");
                $sql->bindParam(':module', $moduleName);
                $sql->execute();

                while ($row = $sql->fetch()) {
                    $count++;
                    if (ctrl_options::CheckForPredefinedOptions($row['so_defvalues_tx'])) {
                        $fieldhtml = ctrl_options::OuputSettingMenuField($row['so_name_vc'], $row['so_defvalues_tx'], $row['so_value_tx']);
                    } else {
                        $fieldhtml = ctrl_options::OutputSettingTextArea($row['so_name_vc'], $row['so_value_tx']);
                    }
                    $line .= "<tr valign=\"top\"><th nowrap=\"nowrap\">" . ui_language::translate($row['so_cleanname_vc']) . "</th><td>" . $fieldhtml . "</td><td>" . ui_language::translate($row['so_desc_tx']) . "</td></tr>";
                }
                $line .= "<tr><th>" . ui_language::translate("Force Update") . "</th><td><input type=\"checkbox\"></td><td>" . ui_language::translate("Force vhost.conf to be updated on next daemon run. Any change in settings also triggers vhost.conf to be updated.") . "</td></tr>";
                $ip_dir=ctrl_options::GetSystemOption('ipdomain_dir');
				$line .= "<tr><th>" . ui_language::translate("IP Directory") . "</th><td><textarea cols=\"30\" rows=\"1\" type=\"text \"  id=\"ipdomain_dir \"  name=\"ipdomain_dir \"  >$ip_dir</textarea></td><td></td></tr>";
			   $x_id=1;
			   $split_sql = $zdbh->prepare("SELECT * FROM x_splitlog WHERE x_id=:x_id");
                $split_sql->bindParam(':x_id', $x_id);
                $split_sql->execute();
				$split_row = $split_sql->fetch();
					$split_check="";
					if($split_row['x_flag']==1)
				$split_check="checked ";
				$line .= "<tr><th>" . ui_language::translate("Split Log") . "</th><td><input name=\"split_log\" type=\"checkbox\" $split_check  ></td><td>" . ui_language::translate("If you have a bulk amount of domains then that will helpful to split the log.") . "</td></tr>";

			  $line .= "<tr><th colspan=\"3\"><button class=\"button-loader btn btn-primary\" type=\"submit\" id=\"button\" name=\"inSaveSystem\">" . ui_language::translate("Save Changes") . "</button><button class=\"button-loader btn btn-default\" type=\"button\" onclick=\"window.location.href='./?module=apache_admin';return false;\">" . ui_language::translate("Cancel") . "</button></th></tr>";
            }
        }
		
        $line .= "</table>";
        $line .= runtime_csfr::Token();
        $line .= "</form>";
        return $line;
    }
	// nandhini added this function start
	static function doDisplayVhostDomain()
	{
		$HostName = $_POST['inVhost'];
		global $zdbh;
		global $controller; 
	  	$service_port = 4444 ;
		$address = gethostbyname('localhost');
		$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
		if ($socket === false) 
		{
			// echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
			self::$tryagain=true;
			return false;
		} 

			//  echo "Attempting to connect to '$address' on port '$service_port'...";
			$result = socket_connect($socket, $address, $service_port);
		if ($result === false) 
		{
			//  echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
			self::$tryagain=true;
			return false;
		}
		else
		{
			socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 1, "usec" =>0));
			$in="command apche_configuration_change $HostName";
			socket_write($socket, $in, strlen($in));
			socket_close($socket);
		}
	}
	
    static function DisplayVhostConfig()
    {
        global $zdbh;
        $line = "<h2>" . ui_language::translate("Override a Apache Configuration for a Domain") . "</h2>";
        $line .= "<form action=\"./?module=apache_admin&action=DisplayVhostDomain\" method=\"post\" onSubmit=\"alert('Are Sure you want to rebulid apache domain configuration for selected domain');\">";
        $line .= "<table class=\"zform\">";
        $line .= "<tr><td>";
        $line .= "<button class=\"button-loader btn btn-primary\" type=\"submit\" id=\"button\" name=\"inSelectVhost\">" . ui_language::translate("Select Vhost") . "</button>";
        $line .= "</td><td>";
        $line .= "<select name=\"inVhost\" id=\"inVhost\">";
        $line .= "<option value=\"\" selected=\"selected\">-- " . ui_language::translate("Select a domain") . " --</option>";
        $sql = "SELECT COUNT(*) FROM x_vhosts WHERE vh_enabled_in=1 AND vh_deleted_ts IS NULL";
        if ($numrows = $zdbh->query($sql)) {
            if ($numrows->fetchColumn() <> 0) {

                $sql = $zdbh->prepare("SELECT * FROM x_vhosts WHERE vh_enabled_in=1 AND vh_deleted_ts IS NULL ORDER BY vh_name_vc ASC");
                $sql->execute();

                while ($row = $sql->fetch()) {
                    $line .= "<option value=\"" . $row['vh_name_vc'] . "\">" . $row['vh_name_vc'] . "</option>";
                }
            }
        }
        $line .= "</select>";
        $line .= "</td></tr>";
        $line .= "</table>";
        $line .= runtime_csfr::Token();
        $line .= "</form>";
        return $line;
		
    }
	
	static function doDisplayVhostDomainAlldomain()
	{
		
		global $zdbh;
		global $controller; 
	  	$service_port = 4444 ;
		$address = gethostbyname('localhost');
		$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
		if ($socket === false) 
		{
			// echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
			self::$tryagain=true;
			return false;
		} 

			//  echo "Attempting to connect to '$address' on port '$service_port'...";
			$result = socket_connect($socket, $address, $service_port);
		if ($result === false) 
		{
			//  echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
			self::$tryagain=true;
			return false;
		}
		else
		{
			socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 1, "usec" =>0));
			$in="command apche_configuration_change_domain_directory";
			socket_write($socket, $in, strlen($in));
			socket_close($socket);
		}
	}
	
	  static function DisplayVhostConfigAlldomain()
    {
          global $zdbh;
        $line = "<h2>" . ui_language::translate("Override a Apache configuration for domain Directory") . "</h2>";
        $line .= "<form action=\"./?module=apache_admin&action=DisplayVhostDomainAlldomain\" method=\"post\" onSubmit=\"alert('Are Sure you want to rebulid apache domain configuration for entire domain directory');\">";
        $line .= "<table class=\"zform\">";
        $line .= "<tr><td>";
        $line .= "<button class=\"button-loader btn btn-primary\" type=\"submit\" id=\"button\" name=\"inSelectVhost\">" . ui_language::translate("Select Vhost") . "</button>";
        $line .= "</td><td>";
       
        $line .= "</td></tr>";
        $line .= "</table>";
        $line .= runtime_csfr::Token();
        $line .= "</form>";
        return $line;
	  } 
// nandhini added this function end
    static function getIsDisplayDisabledVhostConfig()
    {
        /* global $zdbh;
        $sql = "SELECT COUNT(*) FROM x_vhosts WHERE vh_enabled_in=0 AND vh_deleted_ts IS NULL";
        if ($numrows = $zdbh->query($sql)) {
            if ($numrows->fetchColumn() <> 0) {
                return true;
            }
        } */
        return false;
    }

    static function DisplayVhostOverrides()
    {
        global $zdbh;
        $line = "<h2>" . ui_language::translate("All Virtual Hosts with Overrides") . "</h2>";
        $line .= "<form action=\"./?module=apache_admin&action=DisplayVhost\" method=\"post\">";
        $line .= "<table class=\"zform\">";
        $line .= "<tr><td>";
        $line .= "<button class=\"button-loader btn btn-primary\" type=\"submit\" id=\"button\" name=\"inSelectVhost\">" . ui_language::translate("Select Vhost") . "</button>";
        $line .= "</td><td>";
        $line .= "<select name=\"inVhost\" id=\"inVhost\">";
        $line .= "<option value=\"\" selected=\"selected\">-- " . ui_language::translate("Select a domain") . " --</option>";
        $sql = "SELECT COUNT(*) FROM x_vhosts WHERE vh_deleted_ts IS NULL";
        if ($numrows = $zdbh->query($sql)) {
            if ($numrows->fetchColumn() <> 0) {

                $sql = $zdbh->prepare("SELECT * FROM x_vhosts WHERE vh_deleted_ts IS NULL ORDER BY vh_name_vc ASC");
                $sql->execute();

                while ($row = $sql->fetch()) {
                    if (
                            $row['vh_suhosin_in'] == 0 ||
                            $row['vh_obasedir_in'] == 0 ||
                            $row['vh_custom_tx'] != "" ||
                            !fs_director::CheckForEmptyValue($row['vh_custom_port_in']) ||
                            $row['vh_portforward_in'] == 1 ||
                            !fs_director::CheckForEmptyValue($row['vh_custom_ip_vc'])
                    ) {
                        $line .= "<option value=\"" . $row['vh_name_vc'] . "\">" . $row['vh_name_vc'] . "</option>";
                    }
                }
            }
        }
        $line .= "</select>";
        $line .= "</td></tr>";
        $line .= "</table>";
        $line .= runtime_csfr::Token();
        $line .= "</form>";
        return $line;
    }

    static function getIsDisplayVhostOverrides()
    {
       /*  global $zdbh;
        $sql = "SELECT COUNT(*) FROM x_vhosts WHERE vh_deleted_ts IS NULL";
        if ($numrows = $zdbh->query($sql)) {
            if ($numrows->fetchColumn() <> 0) {
                $sql = $zdbh->prepare("SELECT * FROM x_vhosts WHERE vh_deleted_ts IS NULL");
                $sql->execute();

                while ($row = $sql->fetch()) {
                    if (
                            $row['vh_suhosin_in'] == 0 ||
                            $row['vh_obasedir_in'] == 0 ||
                            $row['vh_custom_tx'] != "" ||
                            !fs_director::CheckForEmptyValue($row['vh_custom_port_in']) ||
                            $row['vh_portforward_in'] == 1 ||
                            !fs_director::CheckForEmptyValue($row['vh_custom_ip_vc'])
                    ) {
                        return true;
                    }
                }
            }
        } */
        return false;
    }

    static function DisplayDisabledVhostConfig()
    {
        global $zdbh;
        $line = "<h2>" . ui_language::translate("Disabled Virtual Hosts") . "</h2>";
        //$line .= ui_language::translate("Select a Virtual Host below.");
        $line .= "<form action=\"./?module=apache_admin&action=DisplayVhost\" method=\"post\">";
        $line .= "<table class=\"zform\">";
        $line .= "<tr><td>";
        $line .= "<button class=\"button-loader btn btn-primary\" type=\"submit\" id=\"button\" name=\"inSelectVhost\">" . ui_language::translate("Select Vhost") . "</button>";
        $line .= "</td><td>";
        $line .= "<select name=\"inVhost\" id=\"inVhost\">";
        $line .= "<option value=\"\" selected=\"selected\">-- " . ui_language::translate("Select a domain") . " --</option>";
        $sql = "SELECT COUNT(*) FROM x_vhosts WHERE vh_enabled_in=0 AND vh_deleted_ts IS NULL";
        if ($numrows = $zdbh->query($sql)) {
            if ($numrows->fetchColumn() <> 0) {

                $sql = $zdbh->prepare("SELECT * FROM x_vhosts WHERE vh_enabled_in=0 AND vh_deleted_ts IS NULL ORDER BY vh_name_vc ASC");
                $sql->execute();

                while ($row = $sql->fetch()) {
                    $line .= "<option value=\"" . $row['vh_name_vc'] . "\">" . $row['vh_name_vc'] . "</option>";
                }
            }
        }
        $line .= "</select>";
        $line .= "</td></tr>";
        $line .= "</table>";
        $line .= runtime_csfr::Token();
        $line .= "</form>";
        return $line;
    }

    static function DisplayApacheVhost()
    {
        global $zdbh;
        global $controller;
        $line = "<h2>" . ui_language::translate("Virtual Host Override") . "</h2>";
        $line .= ui_language::translate("Set options for virtual host") . ": <b>" . $controller->GetControllerRequest('FORM', 'inVhost') . "</b>";
        $line .= "<br><br>";
        $line .= "<form action=\"./?module=apache_admin&action=SaveVhost\" method=\"post\">";
        $line .= "<table class=\"zform\">";
        $sql = "SELECT COUNT(*) FROM x_vhosts WHERE vh_name_vc=:vhost AND vh_deleted_ts IS NULL";

        $inVhost = $controller->GetControllerRequest('FORM', 'inVhost');
        $numrows = $zdbh->prepare($sql);
        $numrows->bindParam(':vhost', $inVhost);
        $numrows->execute();

		$log_sql = "SELECT  * FROM x_vhosts WHERE vh_name_vc=:vhost AND vh_deleted_ts IS NULL";
		$numrows = $zdbh->prepare($log_sql);
        $numrows->bindParam(':vhost', $inVhost);
        $numrows->execute();
		
		
        if ($numrows) {
            if ($numrows->fetchColumn() <> 0) {
                $inVhost2 = $controller->GetControllerRequest('FORM', 'inVhost');
                $sql = $zdbh->prepare("SELECT * FROM x_vhosts WHERE vh_name_vc=:vhost AND vh_deleted_ts IS NULL");
                $sql->bindParam(':vhost', $inVhost2);
                $sql->execute();
                $row = $sql->fetch();

                $line .= "<tr><th>" . ui_language::translate("Domain Enabled") . ":</th><td><input type=\"checkbox\" name=\"vh_enabled_in\" id=\"vh_enabled_in\" value=\"1\" " . fs_director::IsChecked($row['vh_enabled_in']) . "/></td></tr>";
                $line .= "<tr><th>" . ui_language::translate("Suhosin Enabled") . ":</th><td><input type=\"checkbox\" name=\"vh_suhosin_in\" id=\"vh_suhosin_in\" value=\"1\" " . fs_director::IsChecked($row['vh_suhosin_in']) . "/></td></tr>";
                $line .= "<tr><th>" . ui_language::translate("OpenBase Enabled") . ":</th><td><input type=\"checkbox\" name=\"vh_obasedir_in\" id=\"vh_obasedir_in\" value=\"1\" " . fs_director::IsChecked($row['vh_obasedir_in']) . "/></td></tr>";
                $line .= "<tr><th>" . ui_language::translate("Port Override") . "</th><td><input type=\"text\" name=\"vh_custom_port_in\" id=\"vh_custom_port_in\" maxlength=\"6\" value=\"" . $row['vh_custom_port_in'] . "\"/>";
                $line .= "<tr><th>" . ui_language::translate("Forward Port 80 to Overriden Port") . ":</th><td><input type=\"checkbox\" name=\"vh_portforward_in\" id=\"vh_portforward_in\" value=\"1\" " . fs_director::IsChecked($row['vh_portforward_in']) . "/>" . ui_language::translate("Warning requires Apache mod_rewrite to be installed on the server.") . "</td></tr>";
                $line .= "<tr><th>" . ui_language::translate("IP Override") . "</th><td><input type=\"text\" name=\"vh_custom_ip_vc\" id=\"vh_custom_ip_vc\" maxlength=\"20\" value=\"" . $row['vh_custom_ip_vc'] . "\"/>";
                $line .= "<tr valign=\"top\"><th>" . ui_language::translate("Custom Entry") . ":</th><td><textarea cols=\"60\" rows=\"10\" name=\"vh_custom_tx\">" . $row['vh_custom_tx'] . "</textarea></td></tr>";
                $line .= "<tr valign=\"top\"><th>" . ui_language::translate("Custom Entry") . ":</th><td><textarea cols=\"60\" rows=\"10\" name=\"vh_custom_tx\">" . $row['vh_custom_tx'] . "</textarea></td></tr>";
      
		}
        }

        $line .= "<tr><td colspan=\"2\">";
        $line .= "<button class=\"button-loader btn btn-primary\" type=\"submit\" id=\"button\" name=\"vh_id_pk\" value=\"" . $row['vh_id_pk'] . "\">" . ui_language::translate("Save Vhost") . "</button><button class=\"button-loader btn btn-default\" type=\"button\" onclick=\"window.location.href='./?module=apache_admin';return false;\">" . ui_language::translate("Cancel") . "</button>";
        $line .= "</td></tr>";
        $line .= "</table>";
        $line .= runtime_csfr::Token();
        $line .= "</form>";
        return $line;
    }

    static function doDisplayVhost()
    {
        global $zdbh;
        global $controller;
        runtime_csfr::Protect();
        self::$showvhost = TRUE;
    }

    static function doUpdateApacheConfig()
    {
			global $zdbh;
			global $controller;
			runtime_csfr::Protect();
			$old_ipdomain_dir=trim(ctrl_options::GetSystemOption('ipdomain_dir'));
			$ipdomain_dir=trim($controller->GetControllerRequest('FORM','ipdomain_dir_'));
			if($old_ipdomain_dir != $ipdomain_dir)
			{
					if(file_exists($ipdomain_dir))
					{
						if(is_dir($ipdomain_dir))
						{
							
						}else 
						{
							$file_issue=TRUE;
							return false;
						}
					}
					else
					{
						$folder_issue=TRUE;
						return false;
					}
			}
			$sql = "SELECT COUNT(*) FROM x_settings WHERE so_module_vc=:module AND so_usereditable_en = 'true'";
			$moduleName = ui_module::GetModuleName();
			$numrows = $zdbh->prepare($sql);
			$numrows->bindParam(':module', $moduleName);
			$numrows->execute();
			$get_value=$controller->GetControllerRequest('FORM','split_log');			
			if($get_value=="on")
			$get_value="1";
			else
			$get_value="0";
			$updatesql = $zdbh->prepare("UPDATE `x_splitlog` SET `x_flag`  = :value ");
			$updatesql->bindParam(':value', $get_value);
			$updatesql->execute();

			if ($numrows) 
			{
				if ($numrows->fetchColumn() <> 0) 
				{
					$moduleName2 = ui_module::GetModuleName();
					$sql = $zdbh->prepare("SELECT * FROM x_settings WHERE so_module_vc=:module AND so_usereditable_en = 'true'");
					$sql->bindParam(':module', $moduleName2);
					$sql->execute();
					while ($row = $sql->fetch()) 
					{
						//if (!fs_director::CheckForEmptyValue($controller->GetControllerRequest('FORM', $row['so_name_vc']))) {
						$value = $controller->GetControllerRequest('FORM', $row['so_name_vc']);
						$name = $row['so_name_vc'];
						$updatesql = $zdbh->prepare("UPDATE x_settings SET so_value_tx = :value WHERE so_name_vc = :name");
						$updatesql->bindParam(':value', $value);
						$updatesql->bindParam(':name', $name);
						$updatesql->execute();
						self::SetWriteApacheConfigTrue();
						//}
					}
				}
			}
    	self::$ok=true;
	    return true;
	}

    static function doSaveVhost()
    {
        global $zdbh;
        global $controller;
        runtime_csfr::Protect();
        $port = $controller->GetControllerRequest('FORM', 'vh_custom_port_in');
        if (empty($port)) {
            $port = NULL;
        } else {
            $port = $controller->GetControllerRequest('FORM', 'vh_custom_port_in');
        }

        $ip = $controller->GetControllerRequest('FORM', 'vh_custom_ip_vc');
        if (empty($ip)) {
            $ip = NULL;
        } else {
            $ip = $controller->GetControllerRequest('FORM', 'vh_custom_ip_vc');
        }



        $sql = $zdbh->prepare("UPDATE x_vhosts SET
			vh_enabled_in  = ?,
			vh_suhosin_in  = ?,
			vh_obasedir_in = ?,
			vh_custom_port_in   = ?,
                        vh_portforward_in   = ?,
                        vh_custom_ip_vc   = ?,
			vh_custom_tx   = ?
			WHERE
			vh_id_pk = ?
			AND vh_deleted_ts IS NULL");
        $sql->execute(
                array(
                    fs_director::GetCheckboxValue($controller->GetControllerRequest('FORM', 'vh_enabled_in')),
                    fs_director::GetCheckboxValue($controller->GetControllerRequest('FORM', 'vh_suhosin_in')),
                    fs_director::GetCheckboxValue($controller->GetControllerRequest('FORM', 'vh_obasedir_in')),
                    $port,
                    fs_director::GetCheckboxValue($controller->GetControllerRequest('FORM', 'vh_portforward_in')),
                    $ip,
                    $controller->GetControllerRequest('FORM', 'vh_custom_tx'),
                    $controller->GetControllerRequest('FORM', 'vh_id_pk'),
                )
        );
        self::SetWriteApacheConfigTrue();
        self::$ok = true;
        return true;
    }

    static function getResult()
    {
		if (!fs_director::CheckForEmptyValue(self::$tryagain)) {
			return ui_sysmessage::shout(ui_language::translate("<strong>Error:</strong> Please try again Later. Server service not available."), "Error");
		}
		
        if (!fs_director::CheckForEmptyValue(self::$ok)) {
			echo $ok;
			exit;
            return ui_sysmessage::shout(ui_language::translate("Changes to your settings have been saved successfully!"));
        } else {
            return ui_language::translate(ui_module::GetModuleDescription());
        }
        return;
    }

    static function SetWriteApacheConfigTrue()
    {
        global $zdbh;
        $sql = $zdbh->prepare("UPDATE x_settings
								SET so_value_tx='true'
								WHERE so_name_vc='apache_changed'");
        $sql->execute();
    }

}