summaryrefslogtreecommitdiffstats
path: root/lib/class/access.class.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/class/access.class.php')
-rw-r--r--lib/class/access.class.php1070
1 files changed, 535 insertions, 535 deletions
diff --git a/lib/class/access.class.php b/lib/class/access.class.php
index ad4f4162..b72b7f3a 100644
--- a/lib/class/access.class.php
+++ b/lib/class/access.class.php
@@ -1,5 +1,5 @@
<?php
-/* vim:set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab: */
+/* vim:set softtabstop=4 shiftwidth=4 expandtab: */
/**
*
* LICENSE: GNU General Public License, version 2 (GPLv2)
@@ -29,540 +29,540 @@
*/
class Access {
- // Variables from DB
-
- /**
- * User ID
- *
- * @var integer
- */
- public $id;
-
- /**
- *
- */
- public $name;
-
- /**
- *
- */
- public $start;
-
- /**
- *
- */
- public $end;
-
- /**
- *
- */
- public $level;
-
- /**
- *
- */
- public $user;
-
- /**
- *
- */
- public $type;
-
- /**
- *
- */
- public $enabled;
-
- /**
- * constructor
- *
- * Takes an ID of the access_id dealie :)
- *
- * @param integer $access_id ID of the access_id
- * @return boolean
- */
- public function __construct($access_id='') {
-
- if (!$access_id) { return false; }
-
- /* Assign id for use in get_info() */
- $this->id = intval($access_id);
-
- $info = $this->_get_info();
- foreach ($info as $key=>$value) {
- $this->$key = $value;
- }
-
- return true;
-
- } // Constructor
-
- /**
- * _get_info
- *
- * get's the vars for $this out of the database
- * Taken from the object
- *
- * @return resource
- */
- private function _get_info() {
-
- /* Grab the basic information from the catalog and return it */
- $sql = "SELECT * FROM `access_list` WHERE `id`='" . Dba::escape($this->id) . "'";
- $db_results = Dba::read($sql);
-
- $results = Dba::fetch_assoc($db_results);
-
- return $results;
-
- } // _get_info
-
- /**
- * format
- *
- * This makes the Access object a nice fuzzy human readable object, spiffy ain't it.
- *
- * @return void
- */
- public function format() {
-
- $this->f_start = inet_ntop($this->start);
- $this->f_end = inet_ntop($this->end);
-
- $this->f_user = $this->get_user_name();
- $this->f_level = $this->get_level_name();
- $this->f_type = $this->get_type_name();
-
- } // format
-
- /**
- * update
- *
- * This function takes a named array as a datasource and updates the current access list entry
- *
- * @param array $data xxx
- * @return boolean
- */
- public function update($data) {
-
- /* We need to verify the incomming data a littlebit */
- $start = @inet_pton($data['start']);
- $end = @inet_pton($data['end']);
-
- if (!$start AND $data['start'] != '0.0.0.0' AND $data['start'] != '::') {
- Error::add('start', T_('Invalid IPv4 / IPv6 Address Entered'));
- return false;
- }
- if (!$end) {
- Error::add('end', T_('Invalid IPv4 / IPv6 Address Entered'));
- return false;
- }
-
- if (strlen(bin2hex($start)) != strlen(bin2hex($end))) {
- Error::add('start', T_('IP Address Version Mismatch'));
- Error::add('end', T_('IP Address Version Mismatch'));
- return false;
- }
-
- $name = Dba::escape($data['name']);
- $type = self::validate_type($data['type']);
- $start = Dba::escape(inet_pton($data['start']));
- $end = Dba::escape(inet_pton($data['end']));
- $level = Dba::escape($data['level']);
- $user = $data['user'] ? Dba::escape($data['user']) : '-1';
- $enabled = make_bool($data['enabled']) ? 1 : 0;
-
- $sql = "UPDATE `access_list` " .
- "SET `start`='$start', `end`='$end', `level`='$level', `user`='$user', " .
- "`name`='$name', `type`='$type',`enabled`='$enabled' WHERE `id`='" . Dba::escape($this->id) . "'";
- $db_results = Dba::write($sql);
-
- return true;
-
- } // update
-
- /**
- * create
- *
- * This takes a key'd array of data and trys to insert it as a
- * new ACL entry
- *
- * @param array $data xxx
- * @return boolean
- */
- public static function create($data) {
-
- /* We need to verify the incomming data a littlebit */
- $start = @inet_pton($data['start']);
- $end = @inet_pton($data['end']);
-
- if (!$start AND $data['start'] != '0.0.0.0' AND $data['start'] != '::') {
- Error::add('start', T_('Invalid IPv4 / IPv6 Address Entered'));
- return false;
- }
- if (!$end) {
- Error::add('end', T_('Invalid IPv4 / IPv6 Address Entered'));
- return false;
- }
-
- if (strlen(bin2hex($start)) != strlen(bin2hex($end))) {
- Error::add('start', T_('IP Address Version Mismatch'));
- Error::add('end', T_('IP Address Version Mismatch'));
- return false;
- }
-
- // Check existing ACL's to make sure we're not duplicating values here
- if (self::exists($data)) {
- debug_event('ACL Create','Error: An ACL equal to the created one does already exist. Not adding another one: ' . $data['start'] . ' - ' . $data['end'],'1');
- Error::add('general', T_('Duplicate ACL defined'));
- return false;
- }
-
- $start = Dba::escape($start);
- $end = Dba::escape($end);
- $name = Dba::escape($data['name']);
- $user = $data['user'] ? Dba::escape($data['user']) : '-1';
- $level = intval($data['level']);
- $type = self::validate_type($data['type']);
- $enabled = make_bool($data['enabled']) ? 1 : 0;
-
- $sql = "INSERT INTO `access_list` (`name`,`level`,`start`,`end`,`user`,`type`,`enabled`) " .
- "VALUES ('$name','$level','$start','$end','$user','$type','$enabled')";
- $db_results = Dba::write($sql);
-
- return true;
-
- } // create
-
- /**
- * exists
- *
- * this sees if the ACL that we've specified already exists, prevent duplicates. This ignores the name
- *
- * @param array $data xxx
- * @return boolean
- */
- public static function exists($data) {
-
- $start = Dba::escape(inet_pton($data['start']));
- $end = Dba::escape(inet_pton($data['end']));
- $type = self::validate_type($data['type']);
- $user = $data['user'] ? Dba::escape($data['user']) : '-1';
-
- $sql = "SELECT * FROM `access_list` WHERE `start`='$start' AND `end` = '$end' " .
- "AND `type`='$type' AND `user`='$user'";
- $db_results = Dba::read($sql);
-
- if (Dba::fetch_assoc($db_results)) {
- return true;
- }
-
- return false;
-
- } // exists
-
- /**
- * delete
- *
- * deletes the specified access_list entry
- *
- * @param integer $access_id xxx
- * @return void
- */
- public static function delete($access_id) {
-
- $sql = "DELETE FROM `access_list` WHERE `id`='" . Dba::escape($access_id) . "'";
- $db_results = Dba::write($sql);
-
- } // delete
-
- /**
- * check_function
- *
- * This checks if a specific functionality is enabled
- * it takes a type only
- *
- * @param string $type check type xxx
- * @return mixed boolean or config
- */
- public static function check_function($type) {
-
- switch ($type) {
- case 'download':
- return Config::get('download');
- break ;
- case 'batch_download':
- if (!function_exists('gzcompress')) {
- debug_event('gzcompress','ZLIB Extensions not loaded, batch download disabled','3');
- return false;
- }
- if (Config::get('allow_zip_download') AND $GLOBALS['user']->has_access('25')) {
- return Config::get('download');
- }
- break;
- default:
- return false;
- break;
- } // end switch
-
- } // check_function
-
- /**
- * check_network
- *
- * This takes a type, ip, user, level and key
- * and then returns true or false if they have access to this
- * the IP is passed as a dotted quad
- *
- * @param string $type Check type.
- * @param string $user User name.
- * @param integer $level Access level.
- * @param string $ip IP Address.
- * @return boolean
- */
- public static function check_network($type, $user, $level, $ip=null) {
-
- if (!Config::get('access_control')) {
- switch ($type) {
- case 'interface':
- case 'stream':
- return true;
- break;
- default:
- return false;
- } // end switch
- } // end if access control is turned off
-
- // Clean incoming variables
- $ip = $ip
- ? Dba::escape(inet_pton($ip))
- : Dba::escape(inet_pton($_SERVER['REMOTE_ADDR']));
- $user = Dba::escape($user);
- $level = Dba::escape($level);
-
- switch ($type) {
- case 'init-api':
- if ($user) {
- $user = User::get_from_username($user);
- $user = $user->id;
- }
- case 'api':
- $type = 'rpc';
- case 'network':
- case 'interface':
- case 'stream':
- break;
- default:
- return false;
- break;
- } // end switch on type
-
- $sql = 'SELECT `id` FROM `access_list` ' .
- "WHERE `start` <= '$ip' AND `end` >= '$ip' " .
- "AND `level` >= '$level' AND `type` = '$type'";
-
- if (strlen($user) && $user != '-1') {
- $sql .= " AND `user` IN('$user', '-1')";
- }
- else {
- $sql .= " AND `user` = '-1'";
- }
-
- $db_results = Dba::read($sql);
-
- if (Dba::fetch_row($db_results)) {
- // Yah they have access they can use the mojo
- return true;
- }
-
- return false;
- } // check_network
-
- /**
- * check_access
- * This is the global 'has_access' function it can check for any 'type'
- * of object.
- * Everything uses the global 0,5,25,50,75,100 stuff. GLOBALS['user'] is
- * always used.
- */
- public static function check($type,$level) {
-
- if (Config::get('demo_mode')) { return true; }
- if (defined('INSTALL')) { return true; }
-
- $level = intval($level);
-
- // Switch on the type
- switch ($type) {
- case 'localplay':
- // Check their localplay_level
- if (Config::get('localplay_level') >= $level OR $GLOBALS['user']->access >= '100') {
- return true;
- }
- else {
- return false;
- }
- break;
- case 'interface':
- // Check their standard user level
- if ($GLOBALS['user']->access >= $level) {
- return true;
- }
- else {
- return false;
- }
- break;
- default:
- return false;
- break;
- } // end switch on type
-
- // Default false
- return false;
-
- } // check
-
- /**
- * validate_type
- * This cleans up and validates the specified type
- */
- public static function validate_type($type) {
-
- switch($type) {
- case 'rpc':
- case 'interface':
- case 'network':
- return $type;
- break;
- case 'xml-rpc':
- return 'rpc';
- break;
- default:
- return 'stream';
- break;
- } // end switch
-
- } // validate_type
-
- /**
- * get_access_lists
- * returns a full listing of all access rules on this server
- */
- public static function get_access_lists() {
-
- $sql = "SELECT `id` FROM `access_list`";
- $db_results = Dba::read($sql);
-
- $results = array();
-
- // Man this is the wrong way to do it...
- while ($row = Dba::fetch_assoc($db_results)) {
- $results[] = $row['id'];
- } // end while access list mojo
-
- return $results;
-
- } // get_access_lists
-
-
- /**
- * get_level_name
- * take the int level and return a named level
- */
- public function get_level_name() {
-
- if ($this->level >= '75') {
- return T_('All');
- }
- if ($this->level == '5') {
- return T_('View');
- }
- if ($this->level == '25') {
- return T_('Read');
- }
- if ($this->level == '50') {
- return T_('Read/Write');
- }
-
- } // get_level_name
-
- /**
- * get_user_name
- * Take a user and return their full name
- */
- public function get_user_name() {
-
- if ($this->user == '-1') { return T_('All'); }
-
- $user = new User($this->user);
- return $user->fullname . " (" . $user->username . ")";
-
- } // get_user_name
-
- /**
- * get_type_name
- * This function returns the pretty name for our current type
- */
- public function get_type_name() {
-
- switch ($this->type) {
- case 'xml-rpc':
- case 'rpc':
- return T_('API/RPC');
- break;
- case 'network':
- return T_('Local Network Definition');
- break;
- case 'interface':
- return T_('Web Interface');
- break;
- case 'stream':
- default:
- return T_('Stream Access');
- break;
- } // end switch
-
- } // get_type_name
-
- /**
- * session_exists
- * This checks to see if the specified session of the specified type
- * exists, it also provides an array of key'd data that may be required
- * based on the type
- */
- public static function session_exists($data,$key,$type) {
-
- // Switch on the type they pass
- switch ($type) {
- case 'api':
- $key = Dba::escape($key);
- $time = time();
- $sql = "SELECT * FROM `session_api` WHERE `id`='$key' AND `expire` > '$time'";
- $db_results = Dba::read($sql);
-
- if (Dba::num_rows($db_results)) {
- $time = $time + 3600;
- $sql = "UPDATE `session_api` WHERE `id`='$key' SET `expire`='$time'";
- $db_results = Dba::write($sql);
- return true;
- }
-
- return false;
-
- break;
- case 'stream':
-
- break;
- case 'interface':
-
- break;
- default:
- return false;
- break;
- } // type
-
-
- } // session_exists
+ // Variables from DB
+
+ /**
+ * User ID
+ *
+ * @var integer
+ */
+ public $id;
+
+ /**
+ *
+ */
+ public $name;
+
+ /**
+ *
+ */
+ public $start;
+
+ /**
+ *
+ */
+ public $end;
+
+ /**
+ *
+ */
+ public $level;
+
+ /**
+ *
+ */
+ public $user;
+
+ /**
+ *
+ */
+ public $type;
+
+ /**
+ *
+ */
+ public $enabled;
+
+ /**
+ * constructor
+ *
+ * Takes an ID of the access_id dealie :)
+ *
+ * @param integer $access_id ID of the access_id
+ * @return boolean
+ */
+ public function __construct($access_id='') {
+
+ if (!$access_id) { return false; }
+
+ /* Assign id for use in get_info() */
+ $this->id = intval($access_id);
+
+ $info = $this->_get_info();
+ foreach ($info as $key=>$value) {
+ $this->$key = $value;
+ }
+
+ return true;
+
+ } // Constructor
+
+ /**
+ * _get_info
+ *
+ * get's the vars for $this out of the database
+ * Taken from the object
+ *
+ * @return resource
+ */
+ private function _get_info() {
+
+ /* Grab the basic information from the catalog and return it */
+ $sql = "SELECT * FROM `access_list` WHERE `id`='" . Dba::escape($this->id) . "'";
+ $db_results = Dba::read($sql);
+
+ $results = Dba::fetch_assoc($db_results);
+
+ return $results;
+
+ } // _get_info
+
+ /**
+ * format
+ *
+ * This makes the Access object a nice fuzzy human readable object, spiffy ain't it.
+ *
+ * @return void
+ */
+ public function format() {
+
+ $this->f_start = inet_ntop($this->start);
+ $this->f_end = inet_ntop($this->end);
+
+ $this->f_user = $this->get_user_name();
+ $this->f_level = $this->get_level_name();
+ $this->f_type = $this->get_type_name();
+
+ } // format
+
+ /**
+ * update
+ *
+ * This function takes a named array as a datasource and updates the current access list entry
+ *
+ * @param array $data xxx
+ * @return boolean
+ */
+ public function update($data) {
+
+ /* We need to verify the incomming data a littlebit */
+ $start = @inet_pton($data['start']);
+ $end = @inet_pton($data['end']);
+
+ if (!$start AND $data['start'] != '0.0.0.0' AND $data['start'] != '::') {
+ Error::add('start', T_('Invalid IPv4 / IPv6 Address Entered'));
+ return false;
+ }
+ if (!$end) {
+ Error::add('end', T_('Invalid IPv4 / IPv6 Address Entered'));
+ return false;
+ }
+
+ if (strlen(bin2hex($start)) != strlen(bin2hex($end))) {
+ Error::add('start', T_('IP Address Version Mismatch'));
+ Error::add('end', T_('IP Address Version Mismatch'));
+ return false;
+ }
+
+ $name = Dba::escape($data['name']);
+ $type = self::validate_type($data['type']);
+ $start = Dba::escape(inet_pton($data['start']));
+ $end = Dba::escape(inet_pton($data['end']));
+ $level = Dba::escape($data['level']);
+ $user = $data['user'] ? Dba::escape($data['user']) : '-1';
+ $enabled = make_bool($data['enabled']) ? 1 : 0;
+
+ $sql = "UPDATE `access_list` " .
+ "SET `start`='$start', `end`='$end', `level`='$level', `user`='$user', " .
+ "`name`='$name', `type`='$type',`enabled`='$enabled' WHERE `id`='" . Dba::escape($this->id) . "'";
+ $db_results = Dba::write($sql);
+
+ return true;
+
+ } // update
+
+ /**
+ * create
+ *
+ * This takes a key'd array of data and trys to insert it as a
+ * new ACL entry
+ *
+ * @param array $data xxx
+ * @return boolean
+ */
+ public static function create($data) {
+
+ /* We need to verify the incomming data a littlebit */
+ $start = @inet_pton($data['start']);
+ $end = @inet_pton($data['end']);
+
+ if (!$start AND $data['start'] != '0.0.0.0' AND $data['start'] != '::') {
+ Error::add('start', T_('Invalid IPv4 / IPv6 Address Entered'));
+ return false;
+ }
+ if (!$end) {
+ Error::add('end', T_('Invalid IPv4 / IPv6 Address Entered'));
+ return false;
+ }
+
+ if (strlen(bin2hex($start)) != strlen(bin2hex($end))) {
+ Error::add('start', T_('IP Address Version Mismatch'));
+ Error::add('end', T_('IP Address Version Mismatch'));
+ return false;
+ }
+
+ // Check existing ACL's to make sure we're not duplicating values here
+ if (self::exists($data)) {
+ debug_event('ACL Create','Error: An ACL equal to the created one does already exist. Not adding another one: ' . $data['start'] . ' - ' . $data['end'],'1');
+ Error::add('general', T_('Duplicate ACL defined'));
+ return false;
+ }
+
+ $start = Dba::escape($start);
+ $end = Dba::escape($end);
+ $name = Dba::escape($data['name']);
+ $user = $data['user'] ? Dba::escape($data['user']) : '-1';
+ $level = intval($data['level']);
+ $type = self::validate_type($data['type']);
+ $enabled = make_bool($data['enabled']) ? 1 : 0;
+
+ $sql = "INSERT INTO `access_list` (`name`,`level`,`start`,`end`,`user`,`type`,`enabled`) " .
+ "VALUES ('$name','$level','$start','$end','$user','$type','$enabled')";
+ $db_results = Dba::write($sql);
+
+ return true;
+
+ } // create
+
+ /**
+ * exists
+ *
+ * this sees if the ACL that we've specified already exists, prevent duplicates. This ignores the name
+ *
+ * @param array $data xxx
+ * @return boolean
+ */
+ public static function exists($data) {
+
+ $start = Dba::escape(inet_pton($data['start']));
+ $end = Dba::escape(inet_pton($data['end']));
+ $type = self::validate_type($data['type']);
+ $user = $data['user'] ? Dba::escape($data['user']) : '-1';
+
+ $sql = "SELECT * FROM `access_list` WHERE `start`='$start' AND `end` = '$end' " .
+ "AND `type`='$type' AND `user`='$user'";
+ $db_results = Dba::read($sql);
+
+ if (Dba::fetch_assoc($db_results)) {
+ return true;
+ }
+
+ return false;
+
+ } // exists
+
+ /**
+ * delete
+ *
+ * deletes the specified access_list entry
+ *
+ * @param integer $access_id xxx
+ * @return void
+ */
+ public static function delete($access_id) {
+
+ $sql = "DELETE FROM `access_list` WHERE `id`='" . Dba::escape($access_id) . "'";
+ $db_results = Dba::write($sql);
+
+ } // delete
+
+ /**
+ * check_function
+ *
+ * This checks if a specific functionality is enabled
+ * it takes a type only
+ *
+ * @param string $type check type xxx
+ * @return mixed boolean or config
+ */
+ public static function check_function($type) {
+
+ switch ($type) {
+ case 'download':
+ return Config::get('download');
+ break ;
+ case 'batch_download':
+ if (!function_exists('gzcompress')) {
+ debug_event('gzcompress','ZLIB Extensions not loaded, batch download disabled','3');
+ return false;
+ }
+ if (Config::get('allow_zip_download') AND $GLOBALS['user']->has_access('25')) {
+ return Config::get('download');
+ }
+ break;
+ default:
+ return false;
+ break;
+ } // end switch
+
+ } // check_function
+
+ /**
+ * check_network
+ *
+ * This takes a type, ip, user, level and key
+ * and then returns true or false if they have access to this
+ * the IP is passed as a dotted quad
+ *
+ * @param string $type Check type.
+ * @param string $user User name.
+ * @param integer $level Access level.
+ * @param string $ip IP Address.
+ * @return boolean
+ */
+ public static function check_network($type, $user, $level, $ip=null) {
+
+ if (!Config::get('access_control')) {
+ switch ($type) {
+ case 'interface':
+ case 'stream':
+ return true;
+ break;
+ default:
+ return false;
+ } // end switch
+ } // end if access control is turned off
+
+ // Clean incoming variables
+ $ip = $ip
+ ? Dba::escape(inet_pton($ip))
+ : Dba::escape(inet_pton($_SERVER['REMOTE_ADDR']));
+ $user = Dba::escape($user);
+ $level = Dba::escape($level);
+
+ switch ($type) {
+ case 'init-api':
+ if ($user) {
+ $user = User::get_from_username($user);
+ $user = $user->id;
+ }
+ case 'api':
+ $type = 'rpc';
+ case 'network':
+ case 'interface':
+ case 'stream':
+ break;
+ default:
+ return false;
+ break;
+ } // end switch on type
+
+ $sql = 'SELECT `id` FROM `access_list` ' .
+ "WHERE `start` <= '$ip' AND `end` >= '$ip' " .
+ "AND `level` >= '$level' AND `type` = '$type'";
+
+ if (strlen($user) && $user != '-1') {
+ $sql .= " AND `user` IN('$user', '-1')";
+ }
+ else {
+ $sql .= " AND `user` = '-1'";
+ }
+
+ $db_results = Dba::read($sql);
+
+ if (Dba::fetch_row($db_results)) {
+ // Yah they have access they can use the mojo
+ return true;
+ }
+
+ return false;
+ } // check_network
+
+ /**
+ * check_access
+ * This is the global 'has_access' function it can check for any 'type'
+ * of object.
+ * Everything uses the global 0,5,25,50,75,100 stuff. GLOBALS['user'] is
+ * always used.
+ */
+ public static function check($type,$level) {
+
+ if (Config::get('demo_mode')) { return true; }
+ if (defined('INSTALL')) { return true; }
+
+ $level = intval($level);
+
+ // Switch on the type
+ switch ($type) {
+ case 'localplay':
+ // Check their localplay_level
+ if (Config::get('localplay_level') >= $level OR $GLOBALS['user']->access >= '100') {
+ return true;
+ }
+ else {
+ return false;
+ }
+ break;
+ case 'interface':
+ // Check their standard user level
+ if ($GLOBALS['user']->access >= $level) {
+ return true;
+ }
+ else {
+ return false;
+ }
+ break;
+ default:
+ return false;
+ break;
+ } // end switch on type
+
+ // Default false
+ return false;
+
+ } // check
+
+ /**
+ * validate_type
+ * This cleans up and validates the specified type
+ */
+ public static function validate_type($type) {
+
+ switch($type) {
+ case 'rpc':
+ case 'interface':
+ case 'network':
+ return $type;
+ break;
+ case 'xml-rpc':
+ return 'rpc';
+ break;
+ default:
+ return 'stream';
+ break;
+ } // end switch
+
+ } // validate_type
+
+ /**
+ * get_access_lists
+ * returns a full listing of all access rules on this server
+ */
+ public static function get_access_lists() {
+
+ $sql = "SELECT `id` FROM `access_list`";
+ $db_results = Dba::read($sql);
+
+ $results = array();
+
+ // Man this is the wrong way to do it...
+ while ($row = Dba::fetch_assoc($db_results)) {
+ $results[] = $row['id'];
+ } // end while access list mojo
+
+ return $results;
+
+ } // get_access_lists
+
+
+ /**
+ * get_level_name
+ * take the int level and return a named level
+ */
+ public function get_level_name() {
+
+ if ($this->level >= '75') {
+ return T_('All');
+ }
+ if ($this->level == '5') {
+ return T_('View');
+ }
+ if ($this->level == '25') {
+ return T_('Read');
+ }
+ if ($this->level == '50') {
+ return T_('Read/Write');
+ }
+
+ } // get_level_name
+
+ /**
+ * get_user_name
+ * Take a user and return their full name
+ */
+ public function get_user_name() {
+
+ if ($this->user == '-1') { return T_('All'); }
+
+ $user = new User($this->user);
+ return $user->fullname . " (" . $user->username . ")";
+
+ } // get_user_name
+
+ /**
+ * get_type_name
+ * This function returns the pretty name for our current type
+ */
+ public function get_type_name() {
+
+ switch ($this->type) {
+ case 'xml-rpc':
+ case 'rpc':
+ return T_('API/RPC');
+ break;
+ case 'network':
+ return T_('Local Network Definition');
+ break;
+ case 'interface':
+ return T_('Web Interface');
+ break;
+ case 'stream':
+ default:
+ return T_('Stream Access');
+ break;
+ } // end switch
+
+ } // get_type_name
+
+ /**
+ * session_exists
+ * This checks to see if the specified session of the specified type
+ * exists, it also provides an array of key'd data that may be required
+ * based on the type
+ */
+ public static function session_exists($data,$key,$type) {
+
+ // Switch on the type they pass
+ switch ($type) {
+ case 'api':
+ $key = Dba::escape($key);
+ $time = time();
+ $sql = "SELECT * FROM `session_api` WHERE `id`='$key' AND `expire` > '$time'";
+ $db_results = Dba::read($sql);
+
+ if (Dba::num_rows($db_results)) {
+ $time = $time + 3600;
+ $sql = "UPDATE `session_api` WHERE `id`='$key' SET `expire`='$time'";
+ $db_results = Dba::write($sql);
+ return true;
+ }
+
+ return false;
+
+ break;
+ case 'stream':
+
+ break;
+ case 'interface':
+
+ break;
+ default:
+ return false;
+ break;
+ } // type
+
+
+ } // session_exists
} //end of access class