|
<?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/
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* Message IP adresses. Enables redirection to IP address.
|
|
*
|
|
* @package Model
|
|
*/
|
|
class Messages_ip_addresses_Model extends Model
|
|
{
|
|
/**
|
|
* Gets all redirections of IP address
|
|
*
|
|
* @param integre $ip_address_id
|
|
* @return Mysql_Result
|
|
*/
|
|
public function get_redirections_of_ip_address($ip_address_id)
|
|
{
|
|
return $this->db->query("
|
|
SELECT m.id, m.name, mip.ip_address_id, mip.message_id
|
|
FROM messages m
|
|
JOIN messages_ip_addresses mip ON mip.message_id = m.id
|
|
WHERE mip.ip_address_id = ?
|
|
", $ip_address_id);
|
|
}
|
|
|
|
/**
|
|
* Deletes redirection of IP address or multiple IP addresses
|
|
*
|
|
* @author Michal Kliment, Ondrej Fibich
|
|
* @param integer $message_id
|
|
* @param integer|array $ip_address_id
|
|
* @return integer
|
|
*/
|
|
public function delete_redirection_of_ip_address ($message_id, $ip_address_id)
|
|
{
|
|
if (!is_array($ip_address_id))
|
|
{
|
|
return $this->db->delete('messages_ip_addresses', array
|
|
(
|
|
'message_id' => $message_id,
|
|
'ip_address_id' => $ip_address_id
|
|
))->count();
|
|
}
|
|
else if (count($ip_address_id))
|
|
{
|
|
return $this->db->from('messages_ip_addresses')
|
|
->where('message_id', $message_id)
|
|
->in('ip_address_id', array_map('intval', $ip_address_id))
|
|
->delete()
|
|
->count();
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Deletes all redirections of ip address
|
|
*
|
|
* @author Michal Kliment
|
|
* @param integer $ip_address_id
|
|
* @return integer
|
|
*/
|
|
public function delete_all_redirections_of_ip_address ($ip_address_id)
|
|
{
|
|
return $this->db->delete('messages_ip_addresses', array
|
|
(
|
|
'ip_address_id' => $ip_address_id
|
|
))->count();
|
|
}
|
|
|
|
/**
|
|
* Deletes all system redirections of ip address
|
|
*
|
|
* @author Michal Kliment
|
|
* @param integer $ip_address_id
|
|
* @return integer
|
|
*/
|
|
public function delete_all_system_redirections_of_ip_address ($ip_address_id)
|
|
{
|
|
return $this->db->query("
|
|
DELETE mip FROM messages_ip_addresses mip, messages m
|
|
WHERE mip.message_id = m.id AND mip.ip_address_id = ? AND m.type > 0
|
|
", $ip_address_id);
|
|
}
|
|
|
|
/**
|
|
* Adds new redirection to ip address
|
|
*
|
|
* @author Michal Kliment
|
|
* @param integer $message_id
|
|
* @param integer $ip_address_id
|
|
* @param string $comment
|
|
* @return integer
|
|
*/
|
|
public function add_redirection_to_ip_address ($message_id, $ip_address_id, $comment)
|
|
{
|
|
// check for wrong redirection (#541)
|
|
if (trim(ORM::factory('message', $message_id)->text) != '')
|
|
{
|
|
return $this->db->insert('messages_ip_addresses', array
|
|
(
|
|
'message_id' => $message_id,
|
|
'ip_address_id' => $ip_address_id,
|
|
'user_id' => Session::instance()->get('user_id'),
|
|
'comment' => $comment,
|
|
'datetime' => date('Y-m-d H:i:s')
|
|
))->count();
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
}
|