$row['destination'], 'alias' => $row['alias'] ) ); } return $aliases; } function get_aliases ( $dest_username, $dest_domain ) { global $config; $aliases = array(); $query = ""; if (( $dest_username == null ) && ( $dest_domain == null) ) { $query = sprintf("SELECT CONCAT(username, '@', domain ) AS destination, CONCAT( alias_username, '@', alias_domain) AS alias FROM %s" , $config['kamailio_alias_table']); } else { $query = sprintf("SELECT '%s' AS destination, CONCAT( alias_username, '@', alias_domain) AS alias FROM %s" . " WHERE username = '%s' AND domain = '%s'", sql_clean($dest_username. '@' . $dest_domain), $config['kamailio_alias_table'], sql_clean($dest_username), sql_clean($dest_domain)); } $result = sql_dbquery( $config['kamailio_db'], $query); // If result is empty, there was either an SQL error, or simply no results. // At this point, no error checking is performed, instead the empty array is returned. if ( ! $result ) return $aliases; while ( $row = @mysql_fetch_assoc( $result ) ) { array_push( $aliases, array( 'destination' => $row['destination'], 'alias' => $row['alias'] ) ); } return $aliases; } function get_e164_alias( $dest_username, $dest_domain ) { global $config; $cur_aliases = get_aliases( $dest_username, $dest_domain ); foreach ( $cur_aliases as $testalias ) { list( $tau, $foo ) = split_sipaddress( $testalias['alias'] ); if ( verify_e164 ( $tau ) ) return $testalias; } return false; } function alias_exists( $alias_username, $alias_domain ) { global $config; $query = sprintf("SELECT COUNT(*) AS num FROM %s WHERE alias_username = '%s' AND alias_domain = '%s'", $config['kamailio_alias_table'], sql_clean($alias_username), sql_clean($alias_domain)); $result = sql_dbquery($config['kamailio_db'], $query); if ( !$result ) return true; // This is an error. Better to fail claiming alias exists... $row = @mysql_fetch_row($result); if ( !$row ) return true; // This is an error. Better to fail claiming alias exists... $num_r = $row[0]; if ( $num_r == 1 ) { $query = sprintf("SELECT CONCAT(username, '@', domain ) AS destination FROM %s WHERE alias_username = '%s' AND alias_domain = '%s'", $config['kamailio_alias_table'], sql_clean($alias_username), sql_clean($alias_domain)); $result = sql_dbquery($config['kamailio_db'], $query); $row = @mysql_fetch_row($result); if ( is_string( $row[0] ) ) return $row[0]; return true; // Failure mode.. } return false; } function add_alias( $alias_username, $alias_domain, $dest_username, $dest_domain ) { global $config; // The following will, in normal cases, lead to a double-test, and double the number of queries... // Defensive comment: better safe than sorry :P if ( alias_exists( $alias_username, $alias_domain ) ) return false; $query = sprintf("INSERT INTO %s ( alias_username, alias_domain, username, domain) VALUES ('%s','%s','%s','%s')", $config['kamailio_alias_table'], sql_clean($alias_username), sql_clean($alias_domain), sql_clean($dest_username), sql_clean($dest_domain)); return sql_dbexec( $config['kamailio_db'], $query); } function remove_alias ( $alias_username, $alias_domain ) { global $config; if (! alias_exists ( $alias_username, $alias_domain ) ) return false; $query = sprintf ("DELETE FROM %s WHERE alias_username = '%s' AND alias_domain = '%s'", $config['kamailio_alias_table'], sql_clean( $alias_username ), sql_clean( $alias_domain )); return sql_dbexec( $config['kamailio_db'], $query); } ?>