[20910] New feature : preferences for notifications

Pascal Vilarem <[email protected]>
Newsgroups gmane.comp.web.phpgroupware.cvs
Message-ID <[email protected]>
Revision: 20910
          http://svn.sv.gnu.org/viewvc/?view=rev&root=phpgroupware&revision=20910
Author:   maat
Date:     2010-01-05 17:36:55 +0000 (Tue, 05 Jan 2010)
Log Message:
-----------
New feature : preferences for notifications

Modified Paths:
--------------
    modules/ged/trunk/inc/class.ged_dm.inc.php

Modified: modules/ged/trunk/inc/class.ged_dm.inc.php
===================================================================
--- modules/ged/trunk/inc/class.ged_dm.inc.php	2010-01-05 17:24:12 UTC (rev 20909)
+++ modules/ged/trunk/inc/class.ged_dm.inc.php	2010-01-05 17:36:55 UTC (rev 20910)
@@ -3683,9 +3683,130 @@
 		
 		return ($out);
 	}
-	
+
 	function get_project_status($project_root)
 	{
 		
 	}
+
+	/**
+	* Get GED Preference
+	*
+	* @return array of preference
+	*/
+	function get_ged_preference ()
+	{
+		
+		
+		//TODO : limiter en fonction des droits
+		$sql="select preference_value from phpgw_preferences where preference_app = 'ged' and preference_owner = ".$GLOBALS['phpgw_info']['user']['account_id'];
+		$this->db->query($sql, __LINE__, __FILE__);
+
+		$this->db->next_record();
+		$array = unserialize($this->db->f('preference_value'));
+		
+		$this->db->unlock();
+		
+		return $array;
+	}
+	
+	function add_reject($project,$action)
+	{
+		$new_reject=array('project' => $project,'action' => $action);
+		$sql="select * from phpgw_preferences where preference_app = 'flow_mail_ged' and preference_owner = ".$GLOBALS['phpgw_info']['user']['account_id'];
+		$this->db->query($sql, __LINE__, __FILE__);
+
+		
+		if($this->db->next_record())
+		{
+			$value = unserialize($this->db->f('preference_value'));
+			$value[count($value)]=$new_reject;
+			
+			$sql2="UPDATE phpgw_preferences SET preference_value='".serialize($value)."' where preference_app = 'flow_mail_ged' and preference_owner = ".$GLOBALS['phpgw_info']['user']['account_id'];
+		}
+		else
+		{
+			$value=array(0 => $new_reject);
+			$sql2="INSERT INTO phpgw_preferences (preference_value,preference_app,preference_owner) values ('".serialize($value)."','flow_mail_ged',".$GLOBALS['phpgw_info']['user']['account_id'].")";
+		}
+		
+		$this->db->query($sql2);
+	
+		$this->db->unlock();
+		
+	}
+	
+	function list_ged_reject ($user='')
+	{
+		
+		if($user =='')
+			$user=$GLOBALS['phpgw_info']['user']['account_id'];
+		//TODO : limiter en fonction des droits
+		$sql="select preference_value from phpgw_preferences where preference_app = 'flow_mail_ged' and preference_owner = ".$user;
+		$this->db->query($sql, __LINE__, __FILE__);
+
+		$this->db->next_record();
+		$array = unserialize($this->db->f('preference_value'));
+		
+		$this->db->unlock();
+		
+		return $array;
+	}
+	
+	function remove_reject($i)
+	{
+		
+		$sql="select * from phpgw_preferences where preference_app = 'flow_mail_ged' and preference_owner = ".$GLOBALS['phpgw_info']['user']['account_id'];
+		$this->db->query($sql, __LINE__, __FILE__);
+		$new_tab=array();
+		$cpt=0;
+		if($this->db->next_record())
+		{
+			$values = unserialize($this->db->f('preference_value'));
+			foreach($values as $key => $value)
+			{
+				
+				if($key != $i)
+					$new_tab[$cpt++]=$value;
+			}
+			
+			
+			$sql2="UPDATE phpgw_preferences SET preference_value='".serialize($new_tab)."' where preference_app = 'flow_mail_ged' and preference_owner = ".$GLOBALS['phpgw_info']['user']['account_id'];
+		}
+		else
+		{
+			return false;
+		}
+		
+		$this->db->query($sql2);
+	
+		$this->db->unlock();
+		
+	}
+	
+	function notification_filter($user,$project,$action)
+	{
+		
+		$user_pref	= createObject('phpgwapi.preferences');
+		$user_pref->preferences($user);
+	
+		$data = $user_pref->read();
+		if(!isset($data['email']['address']))
+			return false;
+		$list_project = $data['ged']['show_projects'];
+		$list_reject = $data['flow_mail_ged'];
+		if(!isset($list_project[$project]))
+			return false;
+		foreach($list_reject as $reject)
+		{
+			if($reject['project'] == 0 && $reject['action'] == $action) 
+				return false;
+			if($reject['project'] == $project && $reject['action'] == $action)
+				return false;
+		}
+		
+		return $data['email']['address'];
+	
+	}
+	
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.