freenetis-github/application/models/local_subnet.php @ 53cf4ce8
8baed187 | Michal Kliment | <?php defined('SYSPATH') or die('No direct script access.');
|
|
/*
|
|||
* This file is part of open source system FreenetIS
|
|||
* and it is release under GPLv3 licence.
|
|||
*
|
|||
* More info about licence can be found:
|
|||
* http://www.gnu.org/licenses/gpl-3.0.html
|
|||
*
|
|||
* More info about project can be found:
|
|||
* http://www.freenetis.org/
|
|||
*
|
|||
*/
|
|||
/**
|
|||
* Local subnet contains subnets belongs to default country
|
|||
*
|
|||
* @author Michal Kliment
|
|||
* @package Model
|
|||
*
|
|||
* @property integer $id
|
|||
* @property string $network_address
|
|||
* @property string $netmask
|
|||
*/
|
|||
class Local_subnet_Model extends ORM
|
|||
{
|
|||
/**
|
|||
* Returns all local subnets in CIDR format
|
|||
*
|
|||
* @author Michal Kliment
|
|||
* @return type
|
|||
*/
|
|||
public function get_all_local_subnets()
|
|||
{
|
|||
return $this->db->query("
|
|||
SELECT id, CONCAT(
|
|||
network_address, '/',
|
|||
ROUND(32-log2((~inet_aton(netmask) & 0xffffffff) + 1))
|
|||
) AS address
|
|||
FROM local_subnets
|
|||
ORDER BY INET_ATON(network_address)
|
|||
");
|
|||
}
|
|||
/**
|
|||
* Adds subnets
|
|||
*
|
|||
* @author Michal Kliment
|
|||
* @param string $subnets
|
|||
* @return boolean
|
|||
*/
|
|||
public function add_subnets($subnets = array())
|
|||
{
|
|||
// it has to be array
|
|||
if (!count($subnets))
|
|||
return false;
|
|||
// converts inner array to string
|
|||
foreach ($subnets as $i => $subnet)
|
|||
{
|
|||
$subnets[$i] = "(".$this->db->escape ($subnet['network_address'])
|
|||
.", ".$this->db->escape($subnet['netmask']).")";
|
|||
}
|
|||
return $this->db->query("
|
|||
INSERT INTO local_subnets (network_address, netmask)
|
|||
VALUES ".implode(", ",$subnets)
|
|||
);
|
|||
}
|
|||
/**
|
|||
* Delets all local subnets
|
|||
*
|
|||
* @author Michal Kliment
|
|||
*/
|
|||
public function delete_subnets()
|
|||
{
|
|||
$this->db->query("TRUNCATE local_subnets");
|
|||
}
|
|||
}
|