libraries/aulib.php
author viric@mandarina
Thu, 25 Dec 2008 11:25:58 +0000
changeset 0 3773f4677c40
child 3 f3e55c2386a1
permissions -rw-r--r--
Opiniarbo - versikontrolita.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
     1
<?php
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
     2
class Aulib
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
     3
{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
     4
	private $obj = NULL;
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
     5
	
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
     6
	function Aulib()
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
     7
	{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
     8
		$this->obj =& get_instance();
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
     9
		$this->obj->load->model('aumodel');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    10
		$this->obj->config->load('auconfig');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    11
		if ($this->obj->config->item('au_language') != '') 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    12
			$curLang = $this->obj->config->item('au_language');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    13
		else
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    14
			$curLang = $this->obj->config->item('language');    
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    15
		$this->obj->lang->load('au', $curLang); 		
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    16
	}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    17
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    18
	/*
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    19
	 * Return "welcome" string with link to login page
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    20
	 * Call this function every time on you main page 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    21
	 */
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    22
	function getLoginLink()
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    23
	{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    24
		$id = $this->getSessionId();
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    25
		if($id)
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    26
		{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    27
			$logoff_link = $this->obj->lang->line('logout_link_name');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    28
			$welcome_str = $this->obj->lang->line('welcome_string');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    29
			if($welcome_str != '')
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    30
			{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    31
				$welcome_str = str_replace('%name%', $this->obj->aumodel->userInfo($id, 'name'), $welcome_str);
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    32
				$welcome_str = str_replace('%logoff%', anchor('au/logout',$logoff_link), $welcome_str);
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    33
			}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    34
			return $welcome_str;
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    35
		}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    36
		else
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    37
		{ 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    38
			$login_link = $this->obj->lang->line('login_link_name');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    39
			$registers_link = $this->obj->lang->line('registers_link_name');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    40
			$login_str = $this->obj->lang->line('login_string');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    41
			if($login_str != '')
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    42
			{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    43
				$login_str = str_replace('%registers%', anchor('au/registers',$registers_link), $login_str);
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    44
				$login_str = str_replace('%login%', anchor('au/login',$login_link), $login_str);
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    45
			}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    46
			
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    47
			return $login_str;
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    48
		} 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    49
	}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    50
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    51
	/*
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    52
	 * Return link for call back-end system
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    53
	 * This back-end can help you manage users & groups
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    54
	 */
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    55
	function getManagerLink()
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    56
	{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    57
		return anchor('aumanager', $this->obj->lang->line('manager_link_name'));
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    58
	}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    59
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    60
	/*
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    61
	 * function block for set/get session userID
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    62
	 */
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    63
	function setSessionId($id, $storable = FALSE)
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    64
	{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    65
		if( $id < 1 ) 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    66
		{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    67
			$this->obj->session->unset_userdata('id');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    68
			$this->obj->session->unset_userdata('flash');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    69
		}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    70
		else
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    71
		{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    72
			$this->obj->session->set_userdata('flash', !$storable);
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    73
			$offset = (int) $this->obj->config->item('id_offset');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    74
			
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    75
			 if($storable) 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    76
				$this->obj->session->set_userdata('id', $id * $offset);
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    77
		 	else 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    78
		 	{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    79
		 		$this->obj->session->set_flashdata('id', $id * $offset);
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    80
		 		$this->obj->session->set_flashdata('expire', time()+$this->obj->config->item('autologin_timeout'));
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    81
		 	}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    82
		}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    83
	}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    84
function getSessionId()
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    85
{ 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    86
		$this->keepSession();
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    87
		if($this->obj->session->userdata('flash'))
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    88
		{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    89
			if( !$this->obj->session->flashdata('id') )
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    90
				return 0;		
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    91
		}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    92
		$offset = (int) $this->obj->config->item('id_offset');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    93
		if(!$this->obj->session->userdata('flash'))
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    94
			$real_id = ($this->obj->session->userdata('id') / $offset);
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    95
		else
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    96
			$real_id = ($this->obj->session->flashdata('id') / $offset);
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    97
		if(ceil($real_id) != floor($real_id)) 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    98
		{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
    99
			$this->logout();
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   100
			return 0;
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   101
		}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   102
			else 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   103
				return $real_id;
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   104
	}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   105
	function keepSession()
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   106
	{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   107
		if( ($this->obj->session->userdata('flash')) && ($this->obj->session->flashdata('expire') >= time()) ) 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   108
		{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   109
			$this->obj->session->keep_flashdata('id');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   110
			$this->obj->session->set_flashdata('expire', time()+$this->obj->config->item('autologin_timeout'));
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   111
		}   		
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   112
	}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   113
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   114
	/*
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   115
	 * Return TRUE if user is logged on
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   116
	 */
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   117
	function isLogged() { return (bool) $this->getSessionId();	}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   118
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   119
	/*
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   120
	 * Return TRUE if user is in group
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   121
	 */
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   122
	function isGroup($group_name) 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   123
	{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   124
		return ($this->obj->aumodel->getRefId('augroup', $group_name) == $this->obj->aumodel->userInfo($this->getSessionId(), 'group_id')); 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   125
	}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   126
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   127
	/*
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   128
	 * Return TRUE if user has specified role
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   129
	 */
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   130
	function isRole($role_name) 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   131
	{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   132
		return ( $this->obj->aumodel->getRefId('aurole', $role_name) == $this->obj->aumodel->userInfo($this->getSessionId(), 'role_id') ); 
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   133
	}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   134
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   135
	/*
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   136
	 * Show "deny access" page
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   137
	 */
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   138
	function denyAccess()
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   139
	{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   140
		$this->obj->load->helper('url');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   141
		redirect('au/denyaccess');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   142
	}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   143
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   144
	/*
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   145
	 * Create and return captcha
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   146
	 * Use standart CI plugin
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   147
	 */
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   148
	function getCaptcha()
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   149
	{
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   150
		$this->obj->load->helper('url');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   151
		$this->obj->load->plugin('captcha');
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   152
		$vals = array(
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   153
						'word' => '',
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   154
						'img_path' => $this->obj->config->item('au_captcha_store_path'),
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   155
						'img_url' => $this->obj->config->item('au_captcha_img_url'),
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   156
						'font_path' => '/system/fonts/texb.ttf',
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   157
						'img_width' => '120',
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   158
						'img_height' => '40',
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   159
						'expiration' => '7200'
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   160
						);
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   161
		$cap = create_captcha($vals);
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   162
		return $cap;		
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   163
	}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   164
}
3773f4677c40 Opiniarbo - versikontrolita.
viric@mandarina
parents:
diff changeset
   165
?>