From 05cfdda64e7945b3b7c45eb99a28040c11cee700 Mon Sep 17 00:00:00 2001
From: Ross Nelson <ross.nelson@gmail.com>
Date: Mon, 18 Apr 2011 10:57:12 -0500
Subject: [PATCH] Added function mc_user_pref_get_pref to the API to allow
 read access to user preferences

---
 api/soap/mantisconnect.php    |   20 ++++++++++++++++++++
 api/soap/mc_core.php          |    1 +
 api/soap/mc_user_pref_api.php |   30 ++++++++++++++++++++++++++++++
 3 files changed, 51 insertions(+), 0 deletions(-)
 create mode 100644 api/soap/mc_user_pref_api.php

diff --git a/api/soap/mantisconnect.php b/api/soap/mantisconnect.php
index efd1545..270ff72 100644
--- a/api/soap/mantisconnect.php
+++ b/api/soap/mantisconnect.php
@@ -1428,6 +1428,26 @@ $l_oServer->register( 'mc_config_get_string',
 );
 
 ###
+###  PUBLIC METHODS (defined in mc_user_pref_api.php)
+###
+
+### mc_user_pref_get_pref
+$l_oServer->register( 'mc_user_pref_get_pref',
+	array(
+		'username'		=>	'xsd:string',
+		'password'		=>	'xsd:string',
+		'pref_name'		=>	'xsd:string',
+		'project_id'	=>	'xsd:integer'
+	),
+	array(
+		'return'	=>	'xsd:string'
+	),
+	$t_namespace,
+	false, false, false,
+	'Get the value for the specified user preference.'
+);
+
+###
 ###  IMPLEMENTATION
 ###
 
diff --git a/api/soap/mc_core.php b/api/soap/mc_core.php
index b637c3d..4369c06 100644
--- a/api/soap/mc_core.php
+++ b/api/soap/mc_core.php
@@ -40,3 +40,4 @@ require_once( $t_current_dir . 'mc_project_attachment_api.php' );
 require_once( $t_current_dir . 'mc_file_api.php' );
 require_once( $t_current_dir . 'mc_config_api.php' );
 require_once( $t_current_dir . 'mc_custom_field_api.php' );
+require_once( $t_current_dir . 'mc_user_pref_api.php' );
diff --git a/api/soap/mc_user_pref_api.php b/api/soap/mc_user_pref_api.php
new file mode 100644
index 0000000..ae00f96
--- /dev/null
+++ b/api/soap/mc_user_pref_api.php
@@ -0,0 +1,30 @@
+<?php
+# MantisConnect - A webservice interface to Mantis Bug Tracker
+# Copyright (C) 2004-2011  Victor Boctor - vboctor@users.sourceforge.net
+# This program is distributed under dual licensing.  These include
+# GPL and a commercial licenses.  Victor Boctor reserves the right to
+# change the license of future releases.
+# See docs/ folder for more details
+
+/**
+ * Get the value for the specified user preference.
+ *
+ * @param string   $p_username    The user's username
+ * @param string   $p_password    The user's password
+ * @param int      $p_project_id  Project ID (optional)
+ * @return string  $t_user_pref   The requested preference value
+ */
+function mc_user_pref_get_pref( $p_username, $p_password, $p_pref_name, $p_project_id = ALL_PROJECTS ) {
+	$t_user_id = mci_check_login( $p_username, $p_password );
+	if ( $t_user_id === false ) {
+		return mci_soap_fault_login_failed();
+	}
+
+	if ( !mci_has_readonly_access( $t_user_id ) ) {
+		return mci_soap_fault_access_denied( $t_user_id );
+	}
+
+	$t_user_pref = user_pref_get_pref( $t_user_id, $p_pref_name, $p_project_id );
+	return $t_user_pref;
+}
+
-- 
1.7.4.4

