[Fusionforge-commits] r10669 - trunk/src/common/include

Roland Mas lolando at libremir.placard.fr.eu.org
Fri Sep 24 16:32:11 CEST 2010


Author: lolando
Date: 2010-09-24 16:32:11 +0200 (Fri, 24 Sep 2010)
New Revision: 10669

Modified:
   trunk/src/common/include/Group.class.php
Log:
Less SQL (and fewer references to the user_group table), more code reuse

Modified: trunk/src/common/include/Group.class.php
===================================================================
--- trunk/src/common/include/Group.class.php	2010-09-24 14:29:46 UTC (rev 10668)
+++ trunk/src/common/include/Group.class.php	2010-09-24 14:32:11 UTC (rev 10669)
@@ -2090,39 +2090,26 @@
 	 *	@access private
 	 */
 	function activateUsers() {
-
 		/*
 			Activate member(s) of the project
 		*/
 		
-		$member_res = db_query_params ('SELECT user_id, role_id FROM user_group	WHERE group_id=$1',
-					       array ($this->getID())) ;
-		
-		$rows = db_numrows($member_res);
+		$members = $this->getUsers (true) ;
 
-		if ($rows > 0) {
-
-			for ($i=0; $i<$rows; $i++) {
-
-				$member = user_get_object(db_result($member_res,$i,'user_id'));
-				$roleId = db_result($member_res,$i,'role_id');
-
-				if (!$member || !is_object($member)) {
-					$this->setError(_('Error getting member object'));
-					return false;
-				} else if ($member->isError()) {
-					$this->setError(sprintf(_('Error getting member object: %s'),$member->getErrorMessage()));
-					return false;
+		foreach ($members as $member) {
+			$roles = array () ;
+			foreach (RBACEngine::getInstance()->getAvailableRolesForUser ($member) as $role) {
+				if ($role->getHomeProject() && $role->getHomeProject()->getID() == $this->getID()) {
+					$roles[] = $role ;
 				}
-
-				if (!$this->addUser($member->getUnixName(),$roleId)) {
-					return false;
+				if (!$this->addUser($member->getUnixName(),$role->getID())) {
+					return false ;
 				}
 			}
-
-		 }
-
-		 return true;
+			
+		}
+		
+		return true ;
 	}
 
 	/**
@@ -2356,23 +2343,15 @@
 	 *	@access public
 	 */
 	function sendApprovalEmail() {
-		$res_admins = db_query_params ('
-			SELECT users.user_name,users.email,users.language,users.user_id
-			FROM users,user_group
-			WHERE users.user_id=user_group.user_id
-			AND user_group.group_id=$1
-			AND user_group.admin_flags=$2',
-					       array ($this->getID(),
-						      'A')) ;
+		$admins = RBACEngine::getInstance()->getUsersByAllowedAction ('project_admin', $this->getID()) ;
 
-		if (db_numrows($res_admins) < 1) {
+		if (count($admins) < 1) {
 			$this->setError(_("Group does not have any administrators."));
 			return false;
 		}
 
 		// send one email per admin
-		while ($row_admins = db_fetch_array($res_admins)) {
-			$admin =& user_get_object($row_admins['user_id']);
+		foreach ($admins as $admin) {
 			setup_gettext_for_user ($admin) ;
 
 			$message=sprintf(_('Your project registration for %4$s has been approved.
@@ -2411,7 +2390,7 @@
 						       util_make_url ('/project/admin/?group_id='.$this->getID()),
 						       forge_get_config ('forge_name'));
 	
-			util_send_message($row_admins['email'], sprintf(_('%1$s Project Approved'), forge_get_config ('forge_name')), $message);
+			util_send_message($admin->getEmail(), sprintf(_('%1$s Project Approved'), forge_get_config ('forge_name')), $message);
 
 			setup_gettext_from_context();
 		}
@@ -2496,21 +2475,15 @@
 		$submitter =& user_get_object(db_result($res,0,'user_id'));
 
 
-		$res = db_query_params ('SELECT users.email, users.language, users.user_id
-	 			FROM users, user_group
-				WHERE group_id=1 
-				AND user_group.admin_flags=$1
-				AND users.user_id=user_group.user_id',
-					array ('A'));
-		
-		if (db_numrows($res) < 1) {
+		$admins = RBACEngine::getInstance()->getUsersByAllowedAction ('project_approve', -1) ;
+
+		if (count($admins) < 1) {
 			$this->setError(_("There is no administrator to send the mail to."));
 			return false;
 		}
 
-		for ($i=0; $i<db_numrows($res) ; $i++) {
-			$admin_email = db_result($res,$i,'email') ;
-			$admin =& user_get_object(db_result($res,$i,'user_id'));
+		foreach ($admins as $admin) {
+			$admin_email = $admin->getEmail () ;
 			setup_gettext_for_user ($admin) ;
 			
 			$message=sprintf(_('New %1$s Project Submitted




More information about the Fusionforge-commits mailing list