inc/toolkit.inc.php
author rejo
Tue, 05 Jun 2007 22:40:47 +0000
changeset 15 305cee3b388d
parent 13 2ff220cfde13
child 23 4abaed69febd
permissions -rwxr-xr-x
[feladat @ 62] Bugfix. In list_zones.php with no domains created, get_domains will return -1, count() will not be 0, as all_doms contains one element. Similar problem in existed in list_supermasters.php.

<?
session_start();

/*************
 * Constants  *
  *************/

define(ROWAMOUNT, 500);

if (isset($_GET["start"])) {
   define(ROWSTART, (($_GET["start"] - 1) * ROWAMOUNT));
   } else {
   define(ROWSTART, 0);
}

if (isset($_GET["letter"])) {
   define(LETTERSTART, $_GET["letter"]);
   $_SESSION["letter"] = $_GET["letter"];
} elseif(isset($_SESSION["letter"])) {
   define(LETTERSTART, $_SESSION["letter"]);
} else {
   define(LETTERSTART, "a");
}

if(!@include_once("config.inc.php"))
{
	error( _('You have to create a config.inc.php!') );
}

if(is_file( dirname(__FILE__) . '/../install.php'))
{
	error( _('You have to remove install.php before this program will run') );
}

if(is_file( dirname(__FILE__) . '/../migrator.php'))
{
        error( _('You have to remove migrator.php before this program will run') );
}

/* Database connection */

require_once("database.inc.php");
// Generates $db variable to access database.


// Array of the available zone types
$server_types = array("MASTER", "SLAVE", "NATIVE");


/*************
 * Includes  *
 *************/

require_once("error.inc.php");
require_once("auth.inc.php");
require_once("i18n.inc.php");
require_once("users.inc.php");
require_once("dns.inc.php");
require_once("record.inc.php");


/*************
 * Functions *
 *************/

/*
 * Display the page option: [1] [2] .. [n]
 */

function show_pages($amount,$rowamount,$id='')
{
   if ($amount > $rowamount) {
      if (!isset($_GET["start"])) $_GET["start"]=1;
      echo _('Show page') . "<br>";
      for ($i=1;$i<=ceil($amount / $rowamount);$i++) {
         if ($_GET["start"] == $i) {
            echo "[ <b>".$i."</b> ] ";
         } else {
            echo "[ <a href=\"".$_SERVER["PHP_SELF"]."?start=".$i;
	    if ($id!='') echo "&id=".$id;
	    echo "\">".$i."</a> ] ";
         }
      }
   }
}

/*
 * Display the alphabetic option: [0-9] [a] [b] .. [z]
 */

function show_letters($letterstart,$doms)
{
   foreach ($doms as $dom) {
      if (is_numeric($dom["name"][0])) {
         $letter_taken["0"] = 1;
      } else {
         $letter_taken[$dom["name"][0]] = 1;
      }
   }

   echo _('Show zones beginning with:') . "<br>";
   if ($letterstart == 1) {
      echo "[ <b>0-9</b> ] ";
   } elseif ($letter_taken["0"] != 1) {
      echo "[ 0-9 ] ";
   } else {
      echo "[ <a href=\"".$_SERVER["PHP_SELF"]."?letter=1\">0-9</a> ] ";
   }
   
   foreach (range('a','z') as $letter) {
      if ($letterstart === $letter) {
         echo "[ <span class=\"lettertaken\">".$letter."</span> ] ";
      } elseif ($letter_taken[$letter] != 1) {
         echo "[ <span class=\"letternotavailble\">".$letter."</span> ] ";
      } else {
          echo "[ <a href=\"".$_SERVER["PHP_SELF"]."?letter=".$letter."\">".$letter."</a> ] ";
      }
   }
}

/*
 * Print a nice useraimed error.
 */
function error($msg)
{
	// General function for printing critical errors.
	if ($msg)
	{
		include_once("header.inc.php");
	?>
	<p><? echo _('Oops! An error occured!'); ?></p>
	<p><? echo nl2br($msg) ?></p>
	<?
		include_once("footer.inc.php");
		die();
	}
	else
	{
		include_once("footer.inc.php");
		die("No error specified!");
	}
}

/*
 * Something has been done nicely, display a message and a back button.
 */
function message($msg)
{
    include_once("header.inc.php");
    ?>
    <P><TABLE CLASS="messagetable"><TR><TD CLASS="message"><H2><? echo _('Success!'); ?></H2>
    <BR>
	<FONT STYLE="font-weight: Bold">
	<P>
	<?
    if($msg)
    {
        echo nl2br($msg);
    }
    else
    {
        echo _('Successful!');
    }
    ?>
    </P>
    <BR>
    <P>
    <a href="javascript:history.go(-1)">&lt;&lt; <? echo _('back'); ?></a></FONT>
    </P>
    </TD></TR></TABLE></P>
    <?
    include_once("footer.inc.php");
}


/*
 * Reroute a user to a cleanpage of (if passed) arg
 */

function clean_page($arg='')
{
	if (!$arg)
	{
		header("Location: ".$_SERVER["PHP_SELF"]."?time=".time());
		exit;
	}
	else
	{
		if (preg_match('!\?!si', $arg))
		{
			$add = "&time=";
		}
		else
		{
			$add = "?time=";
		}
		header("Location: $arg$add".time());
		exit;
	}
}

function level($l)
{
	if ($_SESSION["level"] >= $l)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

function xs($zoneid)
{
	global $db;
	if (is_numeric($zoneid) && is_numeric($_SESSION["level"]))
	{
		$result = $db->query("SELECT id FROM zones WHERE owner=".$_SESSION["userid"]." AND domain_id=$zoneid");
		$result_extra = $db->query("SELECT record_owners.id FROM record_owners,records WHERE record_owners.user_id=".$_SESSION["userid"]." AND records.domain_id = $zoneid AND records.id = record_owners.record_id LIMIT 1");

                if ($result->numRows() == 1 || $_SESSION["level"] >= 5)
                {
			$_SESSION[$zoneid."_ispartial"] = 0;
			return true;
		}
		elseif ($result_extra->numRows() == 1)
		{
			$_SESSION[$zoneid."_ispartial"] = 1;
			return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
        	return false;
        }
}

function get_status($res)
{
	if ($res == '0')
	{
		return "<FONT CLASS=\"inactive\">" . _('Inactive') . "</FONT>";
	}
	elseif ($res == '1')
	{
		return "<FONT CLASS=\"active\">" . _('Active') . "</FONT>";
	}
}

function parse_template_value($val, $domain, $webip, $mailip)
{
	$val = str_replace('##DOMAIN##', $domain, $val);
	$val = str_replace('##WEBIP##', $webip, $val);
	$val = str_replace('##MAILIP##', $mailip, $val);
	return $val;
}


/*
 * Validates an email address.
 * Checks if there is something before the at '@' sign and its followed by a domain and a tld of minimum 2
 * and maximum of 4 characters.
 */
function is_valid_email($email)
{
	if(!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.([a-z]{2,6}$)", $email))
	{
		return false;
	}
	return true;
}
?>