]> git.defcon.no Git - hermes/blobdiff - api/lib/phone_functions.php
Moved API-files to a separate API directory.
[hermes] / api / lib / phone_functions.php
diff --git a/api/lib/phone_functions.php b/api/lib/phone_functions.php
new file mode 100644 (file)
index 0000000..17fbe10
--- /dev/null
@@ -0,0 +1,120 @@
+<?php
+require_once('config.php');
+require_once('lib/common_functions.php');
+require_once('lib/db_functions.php');
+
+function get_user_phones ( $username, $domain ) 
+{
+       global $config;
+       $query = sprintf("SELECT id FROM %s WHERE username = '%s' AND domain = '%s'",
+               $config['provision_users_table'],
+               sql_clean( $username ),
+               sql_clean( $domain )
+       );
+
+       $user = sql_dbquery_single( $config['provision_db'], $query );
+       if ( ! $user ) return null;
+       $user_id = $user['id'];
+
+       $query = sprintf("SELECT mac FROM %s WHERE user_rel = %d",
+               $config['provision_phones_table'],
+               $user_id
+       );
+
+       $result = sql_dbquery( $config['provision_db'], $query );
+       if ( !$result ) return null;
+       if (mysql_num_rows($result) < 1 ) return null;
+       $rows = array();
+       while ( $row = mysql_fetch_assoc( $result ) )
+               array_push( $rows, $row['mac'] );
+       return $rows;
+}
+
+function get_phone_users ( $macaddress ) 
+{
+       global $config;
+       $ptbl = $config['provision_phones_table'];
+       $utbl = $config['provision_users_table'];
+       $query = "SELECT ".$ptbl.".mac as mac, CONCAT( ".$utbl.".username, '@', ".$utbl.".domain ) as user
+               FROM ".$ptbl."
+               INNER JOIN ".$utbl." ON ".$ptbl.".user_rel = ".$utbl.".id
+               WHERE ".$ptbl.".mac = '".sql_clean($macaddress ). "'";
+
+       $result = sql_dbquery( $config['provision_db'], $query );
+       if ( !$result ) return null;
+       if (mysql_num_rows($result) < 1 ) return null;
+       $rows = array();
+       while ( $row = mysql_fetch_assoc( $result ) )
+       {
+               array_push( $rows, $row['user'] );
+       }
+       return $rows;
+}
+
+function add_phone_user( $mac, $username, $domain )
+{
+       global $config;
+       // Get ID of user, for use with user_rel field..
+       $user_id = get_provision_userid( $username, $domain );
+       if ( !$user_id ) return false;
+
+       // Doublecheck :)
+       $mac = clean_mac($mac);
+       if (!$mac) return false;
+
+       // Triplecheck :)
+       $phones = get_user_phones ( $username, $domain);
+       if ( $phones && in_array( $mac, $phones ) )
+               return false;
+
+       // OK, so we have the User ID, a valid MAC, and no previous registration
+       // of that combination. Going to add.
+       $query = sprintf("INSERT INTO %s ( mac, user_rel ) VALUES ( '%s', %d )",
+               $config['provision_phones_table'], $mac, $user_id);
+       return sql_dbexec( $config['provision_db'], $query );
+}
+
+function delete_phone_user( $mac, $username, $domain )
+{
+       global $config;
+       // Get ID of user, for use with user_rel field..
+       $user_id = get_provision_userid( $username, $domain );
+       if ( !$user_id ) return false;
+
+       // Doublecheck :)
+       $mac = clean_mac($mac);
+       if (!$mac) return false;
+
+       // Triplecheck :)
+       $phones = get_user_phones ( $username, $domain);
+       if ( !$phones ) return false;
+       if ( ! in_array( $mac, $phones ) ) return false;
+
+       // OK, so we have the User ID, a valid MAC, and no previous registration
+       // of that combination. Going to remove.
+       $query = sprintf("DELETE FROM %s WHERE mac = '%s' AND user_rel = %d",
+               $config['provision_phones_table'], $mac, $user_id);
+       return sql_dbexec( $config['provision_db'], $query );
+}
+
+
+
+function list_phones ( $search = null )
+{
+       global $config;
+       $query = sprintf("SELECT mac FROM %s", $config['provision_phones_table']);
+       if ( $search )
+               $query .= sprintf(" WHERE mac LIKE '%s%%'", sql_clean($search));
+
+       $result = sql_dbquery( $config['provision_db'], $query );
+       if ( !$result ) return null;
+       if (mysql_num_rows($result) < 1 ) return null;
+       $rows = array();
+       while ( $row = mysql_fetch_assoc( $result ) )
+       {
+               array_push( $rows, $row['mac'] );
+       }
+       return $rows;
+}
+
+?>