[Evolvis-commits] r154: merge up to ↓ except translations↵ svn+ssh ://mirabilos@ svn.evolvis.org/svnroot/evolvis/vendor/gforge-4.8@ 153↵

mirabilos at evolvis.org mirabilos at evolvis.org
Mon Sep 21 11:00:25 CEST 2009


Author: mirabilos
Date: 2009-09-21 09:00:23 +0000 (Mon, 21 Sep 2009)
New Revision: 154

Added:
   trunk/gforge_base/gforge-4.8/
   trunk/gforge_base/gforge-4.8/db/20021213-1.sql
   trunk/gforge_base/gforge-4.8/db/20021213-2-doc_data-migrate.php
   trunk/gforge_base/gforge-4.8/db/20021223-1-drops.sql
   trunk/gforge_base/gforge-4.8/db/20021223-2.sql
   trunk/gforge_base/gforge-4.8/db/20030102-1-drops.sql
   trunk/gforge_base/gforge-4.8/db/20030102-2.sql
   trunk/gforge_base/gforge-4.8/db/20030113-1-drops.sql
   trunk/gforge_base/gforge-4.8/db/20030113-2.sql
   trunk/gforge_base/gforge-4.8/db/20050224-1-drop.sql
   trunk/gforge_base/gforge-4.8/db/20050224-2.sql
   trunk/gforge_base/gforge-4.8/db/20050325-2.sql
   trunk/gforge_base/gforge-4.8/db/20050325-3.php
   trunk/gforge_base/gforge-4.8/db/20050325-4-drop.sql
   trunk/gforge_base/gforge-4.8/db/20050325-5.sql
   trunk/gforge_base/gforge-4.8/db/20050822-1-drops.sql
   trunk/gforge_base/gforge-4.8/db/20050822-2.sql
   trunk/gforge_base/gforge-4.8/db/20060216-1-drops.sql
   trunk/gforge_base/gforge-4.8/db/20060216-2-debian-nocommit.sql
   trunk/gforge_base/gforge-4.8/db/20060216-2.sql
   trunk/gforge_base/gforge-4.8/image-sources/fusionforge-logo.xcf
   trunk/gforge_base/gforge-4.8/www/images/fusionforge-resized.png
Removed:
   trunk/gforge_base/gforge-4.8/db/20021213.sql
   trunk/gforge_base/gforge-4.8/db/20021213_doc_data-migrate.php
   trunk/gforge_base/gforge-4.8/db/20021223-drops.sql
   trunk/gforge_base/gforge-4.8/db/20021223.sql
   trunk/gforge_base/gforge-4.8/db/20030102-drops.sql
   trunk/gforge_base/gforge-4.8/db/20030102.sql
   trunk/gforge_base/gforge-4.8/db/20030113-drops.sql
   trunk/gforge_base/gforge-4.8/db/20030113.sql
   trunk/gforge_base/gforge-4.8/db/20050224-drop.sql
   trunk/gforge_base/gforge-4.8/db/20050224.sql
   trunk/gforge_base/gforge-4.8/db/20050325-1.sql
   trunk/gforge_base/gforge-4.8/db/20050325-2.php
   trunk/gforge_base/gforge-4.8/db/20050325-3-drop.sql
   trunk/gforge_base/gforge-4.8/db/20050325-3.sql
   trunk/gforge_base/gforge-4.8/db/20050822-drops.sql
   trunk/gforge_base/gforge-4.8/db/20050822.sql
   trunk/gforge_base/gforge-4.8/db/20060216-drops.sql
   trunk/gforge_base/gforge-4.8/db/20060216-nocommit.sql
   trunk/gforge_base/gforge-4.8/db/20060216.sql
   trunk/gforge_base/gforge-4.8/image-sources/fusionforge-logo.xcf
   trunk/gforge_base/gforge-4.8/www/images/fusionforge-resized.png
   trunk/gforge_base/gforge-4.8~rc2/
Modified:
   trunk/gforge_base/gforge-4.8/common/forum/Forum.class.php
   trunk/gforge_base/gforge-4.8/common/forum/ForumFactory.class.php
   trunk/gforge_base/gforge-4.8/common/forum/ForumMessage.class.php
   trunk/gforge_base/gforge-4.8/common/frs/FRSPackage.class.php
   trunk/gforge_base/gforge-4.8/common/include/FusionForge.class.php
   trunk/gforge_base/gforge-4.8/common/include/Group.class.php
   trunk/gforge_base/gforge-4.8/common/include/Role.class.php
   trunk/gforge_base/gforge-4.8/common/include/System.class.php
   trunk/gforge_base/gforge-4.8/common/include/User.class.php
   trunk/gforge_base/gforge-4.8/common/include/account.php
   trunk/gforge_base/gforge-4.8/common/include/system/pgsql.class.php
   trunk/gforge_base/gforge-4.8/common/mail/MailingList.class.php
   trunk/gforge_base/gforge-4.8/common/reporting/Report.class.php
   trunk/gforge_base/gforge-4.8/common/search/SearchQuery.class.php
   trunk/gforge_base/gforge-4.8/common/tracker/ArtifactExtraField.class.php
   trunk/gforge_base/gforge-4.8/db/20010304-4-artifact-convert-files.php
   trunk/gforge_base/gforge-4.8/db/20040826_migrateforum.php
   trunk/gforge_base/gforge-4.8/db/20040826_migraterbac.php
   trunk/gforge_base/gforge-4.8/db/20041211-syncmail.php
   trunk/gforge_base/gforge-4.8/db/20041222-1-delete-task-artifact.php
   trunk/gforge_base/gforge-4.8/db/20050127-frs-reorg.php
   trunk/gforge_base/gforge-4.8/db/20050617.php
   trunk/gforge_base/gforge-4.8/db/20050804-2.php
   trunk/gforge_base/gforge-4.8/db/20051003.sql
   trunk/gforge_base/gforge-4.8/db/upgrade-db.php
   trunk/gforge_base/gforge-4.8/deb-specific/db-upgrade.pl
   trunk/gforge_base/gforge-4.8/debian/changelog
   trunk/gforge_base/gforge-4.8/debian/patches/use-snoopy-from-distro.dpatch
   trunk/gforge_base/gforge-4.8/fusionforge.spec
   trunk/gforge_base/gforge-4.8/plugins/cvstracker/bin/post.php
   trunk/gforge_base/gforge-4.8/plugins/cvstracker/common/cvstrackerPlugin.class.php
   trunk/gforge_base/gforge-4.8/plugins/cvstracker/www/newcommit.php
   trunk/gforge_base/gforge-4.8/plugins/scmcvs/bin/aclcheck.php
   trunk/gforge_base/gforge-4.8/plugins/scmcvs/common/Snoopy.class.php
   trunk/gforge_base/gforge-4.8/plugins/scmcvs/cron.d/fusionforge-plugin-scmcvs
   trunk/gforge_base/gforge-4.8/plugins/scmcvs/cronjobs/history_parse.php
   trunk/gforge_base/gforge-4.8/plugins/scmsvn/db/scmsvn-init.sql
   trunk/gforge_base/gforge-4.8/plugins/svntracker/common/svntrackerPlugin.class.php
   trunk/gforge_base/gforge-4.8/plugins/svntracker/www/newcommit.php
   trunk/gforge_base/gforge-4.8/plugins/wiki/README
   trunk/gforge_base/gforge-4.8/www/account/change_email.php
   trunk/gforge_base/gforge-4.8/www/account/lostpw.php
   trunk/gforge_base/gforge-4.8/www/admin/useredit.php
   trunk/gforge_base/gforge-4.8/www/admin/userlist.php
   trunk/gforge_base/gforge-4.8/www/docman/admin/index.php
   trunk/gforge_base/gforge-4.8/www/docman/index.php
   trunk/gforge_base/gforge-4.8/www/docman/search.php
   trunk/gforge_base/gforge-4.8/www/export/rss20_activity.php
   trunk/gforge_base/gforge-4.8/www/export/rss20_newreleases.php
   trunk/gforge_base/gforge-4.8/www/export/rss20_news.php
   trunk/gforge_base/gforge-4.8/www/export/rss20_projects.php
   trunk/gforge_base/gforge-4.8/www/export/rss20_version.php
   trunk/gforge_base/gforge-4.8/www/export/rss_sfnewreleases.php
   trunk/gforge_base/gforge-4.8/www/export/rss_sfnews.php
   trunk/gforge_base/gforge-4.8/www/export/rss_sfprojects.php
   trunk/gforge_base/gforge-4.8/www/export/rss_utils.inc
   trunk/gforge_base/gforge-4.8/www/export/search_plugin.php
   trunk/gforge_base/gforge-4.8/www/forum/admin/ForumAdmin.class.php
   trunk/gforge_base/gforge-4.8/www/forum/admin/index.php
   trunk/gforge_base/gforge-4.8/www/forum/attachment.php
   trunk/gforge_base/gforge-4.8/www/forum/include/AttachManager.class.php
   trunk/gforge_base/gforge-4.8/www/forum/index.php
   trunk/gforge_base/gforge-4.8/www/frs/admin/index.php
   trunk/gforge_base/gforge-4.8/www/frs/index.php
   trunk/gforge_base/gforge-4.8/www/frs/monitor.php
   trunk/gforge_base/gforge-4.8/www/include/features_boxes.php
   trunk/gforge_base/gforge-4.8/www/include/logger.php
   trunk/gforge_base/gforge-4.8/www/include/pre.php
   trunk/gforge_base/gforge-4.8/www/include/project_home.php
   trunk/gforge_base/gforge-4.8/www/include/user_home.php
   trunk/gforge_base/gforge-4.8/www/my/index.php
   trunk/gforge_base/gforge-4.8/www/project/admin/massfinish.php
   trunk/gforge_base/gforge-4.8/www/reporting/toolspie.php
   trunk/gforge_base/gforge-4.8/www/reporting/useract_graph.php
   trunk/gforge_base/gforge-4.8/www/scm/reporting/commits_graph.php
   trunk/gforge_base/gforge-4.8/www/stats/site_stats_utils.php
   trunk/gforge_base/gforge-4.8/www/themes/css/gforge.css
   trunk/gforge_base/gforge-4.8/www/themes/gforge/Theme.class.php
Log:
merge up to ↓ except translations
svn+ssh://mirabilos@svn.evolvis.org/svnroot/evolvis/vendor/gforge-4.8@153


Copied: trunk/gforge_base/gforge-4.8 (from rev 152, trunk/gforge_base/gforge-4.8~rc2)

Modified: trunk/gforge_base/gforge-4.8/common/forum/Forum.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/forum/Forum.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/forum/Forum.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -600,7 +600,7 @@
 			allow_anonymous=$4,
 			moderation_level=$5,
 			is_public=$6
-			WHERE group_id=$7,
+			WHERE group_id=$7
 			AND group_forum_id=$8',
 					array (strtolower($forum_name),
 					       htmlspecialchars($description),

Modified: trunk/gforge_base/gforge-4.8/common/forum/ForumFactory.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/forum/ForumFactory.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/forum/ForumFactory.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -160,8 +160,8 @@
 AND is_public < 3
 AND group_forum_id IN (SELECT role_setting.ref_id
                          FROM role_setting, user_group
-		       WHERE role_setting.value::integer >= 0
-                         AND role_setting.section_name = $2
+                         WHERE role_setting.section_name = $2
+                         AND role_setting.value::integer >= 0
                          AND role_setting.ref_id=forum_group_list_vw.group_forum_id
 			 AND user_group.role_id = role_setting.role_id
 			 AND user_group.user_id=$3)

Modified: trunk/gforge_base/gforge-4.8/common/forum/ForumMessage.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/forum/ForumMessage.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/forum/ForumMessage.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -639,7 +639,9 @@
 		$recipients = array ();
 		foreach ($ids as $id) {
 			$recipient = user_get_object ($id) ;
-			$recipients[] = $recipient ;
+			if ($recipient->isActive()) {
+				$recipients[] = $recipient ;
+			}
 		}
 		if ($this->Forum->getSendAllPostsTo()) {
 			$sapt = explode (',', $this->Forum->getSendAllPostsTo()) ;
@@ -663,10 +665,11 @@
 
 			$body = sprintf(_("\nRead and respond to this message at: \n%s"), util_make_url ('/forum/message.php?msg_id='.$this->getID()));
 			if ($GLOBALS['sys_use_mail']) {
-				$body .= stripcslashes(sprintf(_('\nOr by replying to this e-mail entering your response between the following markers: '.
-					  '\n%1$s'.
-					  '\n(enter your response here)'.
-					  '\n%1$s'), FORUM_MAIL_MARKER));
+				$body .= stripcslashes(sprintf(_('
+Or reply to this e-mail entering your response between the following markers: 
+%1$s
+(enter your response here)
+%1$s'), FORUM_MAIL_MARKER));
 			}
 			$body .= sprintf(_("\n\n\nBy: %s\n"), $this->getPosterRealName());
 
@@ -708,7 +711,7 @@
 			
 			$subject="[" . $this->Forum->getUnixName() ."][".$this->getID()."] ".util_unconvert_htmlspecialchars($this->getSubject());
 
-			util_send_message($dest_email,$subject,$body,"noreply@".$GLOBALS['sys_default_domain'],'Forum',$extra_headers);
+			util_send_message($dest_email,$subject,$body,"noreply@".$GLOBALS['sys_default_domain'],'','Forum',$extra_headers);
 		}
 
 		// Switch back to the user language settings
@@ -798,7 +801,7 @@
 		$msg_id = $this->getID();
 		$res = db_query_params ('UPDATE forum 
 			SET group_forum_id=$1, posted_by=$2, subject=$3,
-			body=$4, post_date=$4, is_followup_to=$6,
+			body=$4, post_date=$5, is_followup_to=$6,
 			thread_id=$7, most_recent_date=$8
 			WHERE msg_id=$9',
 					array ($group_forum_id,

Modified: trunk/gforge_base/gforge-4.8/common/frs/FRSPackage.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/frs/FRSPackage.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/frs/FRSPackage.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -331,9 +331,6 @@
 		if (!session_loggedin()) {
 			return false;
 		}
-		$sql="SELECT * FROM filemodule_monitor
-			WHERE user_id='".user_getid()."'
-			AND filemodule_id='".$this->getID()."';";
 
 		$result = db_query_params ('SELECT * FROM filemodule_monitor WHERE user_id=$1 AND filemodule_id=$2',
 					   array (user_getid(),

Modified: trunk/gforge_base/gforge-4.8/common/include/FusionForge.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/include/FusionForge.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/include/FusionForge.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -36,7 +36,7 @@
 		$this->Error();
 
 		$this->software_name = 'FusionForge' ;
-		$this->software_version = '4.8rc1' ;
+		$this->software_version = '4.8' ;
 
 		return true;
 	}

Modified: trunk/gforge_base/gforge-4.8/common/include/Group.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/include/Group.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/include/Group.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -282,6 +282,7 @@
 	function create(&$user, $group_name, $unix_name, $description, $purpose, $unix_box='shell1', $scm_box='cvs1', $is_public=1) {
 		// $user is ignored - anyone can create pending group
 
+		global $SYS;
 		if ($this->getID()!=0) {
 			$this->setError(_('Group::create: Group object already exists'));
 			return false;
@@ -290,6 +291,9 @@
 		} else if (!account_groupnamevalid($unix_name)) {
 			$this->setError(_('Invalid Unix name'));
 			return false;
+		} else if (!$SYS->sysUseUnixName($unix_name)) {
+			$this->setError(_('Unix name already taken'));
+			return false;
 		} else if (db_numrows(db_query_params('SELECT group_id FROM groups WHERE unix_group_name=$1',
 						      array ($unix_name))) > 0) {
 			$this->setError(_('Unix name already taken'));
@@ -2161,7 +2165,7 @@
 			$admin =& user_get_object($row_admins['user_id']);
 			setup_gettext_for_user ($admin) ;
 
-			$message=stripcslashes(sprintf(_('Your project registration for %4$s has been approved.
+			$message=sprintf(_('Your project registration for %4$s has been approved.
 
 Project Full Name:  %1$s
 Project Unix Name:  %2$s
@@ -2195,7 +2199,7 @@
 						       $this->getPublicName(), 
 						       $this->getUnixName(), 
 						       util_make_url ('/project/admin/?group_id='.$this->getID()),
-						       $GLOBALS['sys_name']));
+						       $GLOBALS['sys_name']);
 	
 			util_send_message($row_admins['email'], sprintf(_('%1$s Project Approved'), $GLOBALS['sys_name']), $message);
 
@@ -2233,18 +2237,18 @@
 			$admin =& user_get_object($row_admins['user_id']);
 			setup_gettext_for_user ($admin) ;
 
-			$response=stripcslashes(sprintf(_('Your project registration for %3$s has been denied.
+			$response=sprintf(_('Your project registration for %3$s has been denied.
 
 Project Full Name:  %1$s
 Project Unix Name:  %2$s
 
 Reasons for negative decision:
 
-'), $this->getPublicName(), $this->getUnixName(), $GLOBALS['sys_name']));
+'), $this->getPublicName(), $this->getUnixName(), $GLOBALS['sys_name']);
 
 			// Check to see if they want to send a custom rejection response
 			if ($response_id == 0) {
-				$response .= stripcslashes($message);
+				$response .= $message;
 			} else {
 				$response .= db_result (
 					db_query_params('SELECT response_text FROM canned_responses WHERE response_id=$1', array ($response_id)),
@@ -2299,7 +2303,7 @@
 			$admin =& user_get_object(db_result($res,$i,'user_id'));
 			setup_gettext_for_user ($admin) ;
 			
-			$message=stripcslashes(sprintf(_('New %1$s Project Submitted
+			$message=sprintf(_('New %1$s Project Submitted
 
 Project Full Name:  %2$s
 Submitted Description: %3$s
@@ -2312,7 +2316,7 @@
 						       util_unconvert_htmlspecialchars($this->getRegistrationPurpose()),
 						       util_make_url ('/admin/approve-pending.php'),
 						       $submitter->getRealName(), 
-						       $submitter->getUnixName()));
+						       $submitter->getUnixName());
 			util_send_message($admin_email, sprintf(_('New %1$s Project Submitted'), $GLOBALS['sys_name']), $message);
 			setup_gettext_from_context();
 		}
@@ -2321,12 +2325,12 @@
 		$email = $submitter->getEmail() ;
 		setup_gettext_for_user ($submitter) ;
 				
-		$message=stripcslashes(sprintf(_('New %1$s Project Submitted
+		$message=sprintf(_('New %1$s Project Submitted
 
 Project Full Name:  %2$s
 Submitted Description: %3$s
 
-The %1$s admin team will now examine your project submission.  You will be notified of their decision.'), $GLOBALS['sys_name'], $this->getPublicName(), util_unconvert_htmlspecialchars($this->getRegistrationPurpose()), $GLOBALS['sys_default_domain']));
+The %1$s admin team will now examine your project submission.  You will be notified of their decision.'), $GLOBALS['sys_name'], $this->getPublicName(), util_unconvert_htmlspecialchars($this->getRegistrationPurpose()), $GLOBALS['sys_default_domain']);
 				
 		util_send_message($email, sprintf(_('New %1$s Project Submitted'), $GLOBALS['sys_name']), $message);
 		setup_gettext_from_context();

Modified: trunk/gforge_base/gforge-4.8/common/include/Role.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/include/Role.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/include/Role.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -345,7 +345,7 @@
 					if (!$res || db_affected_rows($res) < 1) {
 						$res = db_query_params ('INSERT INTO role_setting (role_id, section_name, ref_id, value) VALUES ($1, $2, $3, $4)',
 									array ($this->getID(),
-									       $usecrion_name,
+									       $usection_name,
 									       $uref_id,
 									       $uvalue)) ;
 						if (!$res) {

Modified: trunk/gforge_base/gforge-4.8/common/include/System.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/include/System.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/include/System.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -34,6 +34,17 @@
 		return true;
 	}
 
+	/**
+	* sysUseUnixName() - Check if user/group used the unix_name
+	*
+	* @param		string   The unix_name to check
+	* @returns true if used/false is free
+	*
+	*/
+	function sysUseUnixName($unix_name) {
+		return true;
+	}
+
 	/*
  	* User management functions
  	*/

Modified: trunk/gforge_base/gforge-4.8/common/include/User.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/include/User.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/include/User.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -216,6 +216,7 @@
 	function create($unix_name,$firstname,$lastname,$password1,$password2,$email,
 		$mail_site,$mail_va,$language_id,$timezone,$jabber_address,$jabber_only,$theme_id,
 		$unix_box='shell',$address='',$address2='',$phone='',$fax='',$title='',$ccode='US',$send_mail=true) {
+		global $SYS;
 		if (!$theme_id) {
 			$this->setError(_('You must supply a theme'));
 			return false;
@@ -249,6 +250,10 @@
 			$this->setError(_('Invalid Unix Name.'));
 			return false;
 		}
+		if (!$SYS->sysUseUnixName($unix_name)) {
+			$this->setError(_('Unix name already taken'));
+			return false;
+		}
 		if (!validate_email($email)) {
 			$this->setError(_('Invalid Email Address'));
 			return false;
@@ -303,7 +308,7 @@
 						  $ccode,
 						  $theme_id)) ;
 		if (!$result) {
-			$this->setError(_('Insert Failed') .db_error().$sql);
+			$this->setError(_('Insert Failed') . db_error());
 			db_rollback();
 			return false;
 		} else {
@@ -771,8 +776,8 @@
 		}
 
 		if ($GLOBALS['sys_require_unique_email']) {
-			if (db_numrows(db_query_params('SELECT user_id FROM users WHERE email ILIKE $1 OR email_new ILIKE $2',
-						       array ($email, $email))) > 0) {
+			if (db_numrows(db_query_params('SELECT user_id FROM users WHERE user_id!=$1 AND (email ILIKE $2 OR email_new ILIKE $2)',
+						       array ($this->getID(), $email))) > 0) {
 				$this->setError(_('User with this email already exists.'));
 			return false;
 			}
@@ -823,8 +828,8 @@
 		}
 
 		if ($GLOBALS['sys_require_unique_email']) {
-			if (db_numrows(db_query_params ('SELECT user_id FROM users WHERE email ILIKE $1 OR email_new ILIKE $1',
-							array ($email))) > 0) {
+			if (db_numrows(db_query_params('SELECT user_id FROM users WHERE user_id!=$1 AND (email ILIKE $2 OR email_new ILIKE $2)',
+						       array ($this->getID(), $email))) > 0) {
 				$this->setError(_('User with this email already exists.'));
 			return false;
 			}
@@ -1385,7 +1390,7 @@
 //
 //	An optimization in session_getdata lets us pre-fetch this in most cases.....
 //
-		if (!$this->data_array['dirname']) {
+		if (!isset($this->data_array['dirname']) || !$this->data_array['dirname']) {
 			$res = db_query_params ('SELECT dirname FROM themes WHERE theme_id=$1',
 						array ($this->getThemeID())) ;
 			$this->theme=db_result($res,0,'dirname');

Modified: trunk/gforge_base/gforge-4.8/common/include/account.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/include/account.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/include/account.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -73,9 +73,15 @@
 		$GLOBALS['register_error'] = _('Name is reserved.');
 		return 0;
 	}
-	if ( exec("getent passwd $name") != "" ){
-		$GLOBALS['register_error'] = _('That username already exists.');
-		return 0;
+	if ($sys_use_shell) {
+		if ( exec("getent passwd $name") != "" ){
+			$GLOBALS['register_error'] = _('That username already exists.');
+			return 0;
+		}
+		if ( exec("getent group $name") != "" ){
+			$GLOBALS['register_error'] = _('That username already exists.');
+			return 0;
+		}
 	}
 	if (eregi("^(anoncvs_)",$name)) {
 		$GLOBALS['register_error'] = _('Name is reserved for CVS.');

Modified: trunk/gforge_base/gforge-4.8/common/include/system/pgsql.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/include/system/pgsql.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/include/system/pgsql.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -61,6 +61,24 @@
 		return true;
 	}
 
+	/**
+	* sysUseUnixName() - Check if user/group used the unix_name
+	*
+	* @param		string   The unix_name to check
+	* @returns true if used/false is free
+	*
+	*/
+	function sysUseUnixName($unix_name) {
+		$res1 = db_query_params ('SELECT user_id FROM users
+		                          WHERE user_name=$1',array($unix_name));
+		$res2 = db_query_params ('SELECT group_id FROM groups
+		                          WHERE unix_group_name=$1',array($unix_name));
+		if ( db_numrows($res1) == 0 && db_numrows($res2) == 0 ){
+			return true;
+		}
+		return false;
+	}
+
 	/*
  	* User management functions
  	*/

Modified: trunk/gforge_base/gforge-4.8/common/mail/MailingList.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/mail/MailingList.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/mail/MailingList.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -176,7 +176,7 @@
 			$this->setInvalidEmailError();
 			return false;
 		} else {
-			$mailBody = stripcslashes(sprintf(_('A mailing list will be created on %1$s in 6-24 hours 
+			$mailBody = sprintf(_('A mailing list will be created on %1$s in 6-24 hours 
 and you are the list administrator.
 
 This list is: %3$s@%2$s .
@@ -193,7 +193,7 @@
 Thank you for registering your project with %1$s.
 
 -- the %1$s staff
-'), $GLOBALS['sys_name'], $GLOBALS['sys_lists_host'], $realListName, $this->getExternalInfoUrl(), $this->getExternalAdminUrl(), $listPassword));
+'), $GLOBALS['sys_name'], $GLOBALS['sys_lists_host'], $realListName, $this->getExternalInfoUrl(), $this->getExternalAdminUrl(), $listPassword);
 			$mailSubject = sprintf(_('%1$s New Mailing List'), $GLOBALS['sys_name']);
 			
 			util_send_message($userEmail, $mailSubject, $mailBody, 'admin@'.$GLOBALS['sys_default_domain']);

Modified: trunk/gforge_base/gforge-4.8/common/reporting/Report.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/reporting/Report.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/reporting/Report.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -106,8 +106,14 @@
 
 function setDates($result,$column) {
 	$arr =& util_result_column_to_array($result,$column);
+	if(isset($this->span) && $this->span == REPORT_TYPE_MONTHLY) {
+		$format = 'M Y';
+	} else {
+	    $format = 'M d';
+	}
+	
 	for ($i=0; $i<count($arr); $i++) {
-		$this->labels[$i] = date('M d',$arr[$i]);
+		$this->labels[$i] = date($format,$arr[$i]);
 	}
 }
 

Modified: trunk/gforge_base/gforge-4.8/common/search/SearchQuery.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/search/SearchQuery.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/search/SearchQuery.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -114,13 +114,13 @@
 		if(is_numeric($words) && $this->implementsSearchById()) {
 			$this->searchId = (int) $words;
 		} else {
-			$words = htmlspecialchars($words);
-			$words = strtr($words, array('%' => '', '_' => ''));
 			$words = preg_replace("/[ \t]+/", ' ', $words);
 			if(strlen($words) < 3) {
 				$this->setError(_('Error: search query too short'));
 				return;
 			}
+			$words = htmlspecialchars($words);
+			$words = strtr($words, array('%' => '\%', '_' => '\_'));
 			$this->words = array();
 			$this->phrases = array();
 			$phrase = '';

Modified: trunk/gforge_base/gforge-4.8/common/tracker/ArtifactExtraField.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/common/tracker/ArtifactExtraField.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/common/tracker/ArtifactExtraField.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -68,7 +68,7 @@
 		}
 		//did ArtifactType have an error?
 		if ($ArtifactType->isError()) {
-			$this->setError('ArtifactExtraField: '.$Artifact->getErrorMessage());
+			$this->setError('ArtifactExtraField: '.$ArtifactType->getErrorMessage());
 			return false;
 		}
 		$this->ArtifactType =& $ArtifactType;

Modified: trunk/gforge_base/gforge-4.8/db/20010304-4-artifact-convert-files.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20010304-4-artifact-convert-files.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20010304-4-artifact-convert-files.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,6 +1,7 @@
 #! /usr/bin/php5
 <?php
 
+require_once dirname(__FILE__).'/../www/env.inc.php';
 require $gfwww.'include/squal_pre.php';
 
 db_begin();

Added: trunk/gforge_base/gforge-4.8/db/20021213-1.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20021213-1.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20021213-1.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,10 @@
+--
+--      Making docman binary safe
+--
+alter table doc_data add column filename text;
+alter table doc_data add column filetype text;
+
+--
+--	NOTE THE doc_data-migration.php SCRIPT
+--
+

Added: trunk/gforge_base/gforge-4.8/db/20021213-2-doc_data-migrate.php
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20021213-2-doc_data-migrate.php	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20021213-2-doc_data-migrate.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,45 @@
+#! /usr/bin/php5
+<?php
+
+/**
+ * Data migration for the doc_manager - between pre6 and pre7
+ *
+ * Copyright 2002 (c) GFORGE LLC
+ */
+
+require_once dirname(__FILE__).'/../www/env.inc.php';
+require $gfwww.'include/squal_pre.php';
+
+ at ini_set('memory_limit', '128M');
+
+// drop and recreate page cache
+//
+//SELECT * FROM doc_data WHERE filename is null;
+db_begin();
+
+$res=db_query("SELECT * FROM doc_data WHERE filename IS NULL");
+if (!$res) {
+	echo db_error();
+	db_rollback();
+	exit();
+}	 
+$rows=db_numrows($res);
+
+for ($i=0; $i<$rows; $i++) {
+
+	$res2=db_query("UPDATE doc_data 
+		SET 
+		data='". base64_encode( util_unconvert_htmlspecialchars( db_result($res,$i,'data') )) ."',
+		filename='file".db_result($res,$i,'docid').".html',
+		filetype='text/html'
+		WHERE docid='".db_result($res,$i,'docid')."'");
+	if (!$res2 || db_affected_rows($res2) < 1) {
+		echo 'DB ERROR'.db_error();
+		db_rollback();
+		exit;
+	}
+}
+
+db_commit();
+echo "SUCCESS\n";
+?>

Deleted: trunk/gforge_base/gforge-4.8/db/20021213.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20021213.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20021213.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,10 +0,0 @@
---
---      Making docman binary safe
---
-alter table doc_data add column filename text;
-alter table doc_data add column filetype text;
-
---
---	NOTE THE doc_data-migration.php SCRIPT
---
-

Deleted: trunk/gforge_base/gforge-4.8/db/20021213_doc_data-migrate.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20021213_doc_data-migrate.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20021213_doc_data-migrate.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,42 +0,0 @@
-#! /usr/bin/php5
-<?php
-
-/**
- * Data migration for the doc_manager - between pre6 and pre7
- *
- * Copyright 2002 (c) GFORGE LLC
- */
-
-require $gfwww.'include/squal_pre.php';
-
-// drop and recreate page cache
-//
-//SELECT * FROM doc_data WHERE filename is null;
-db_begin();
-
-$res=db_query("SELECT * FROM doc_data WHERE filename IS NULL");
-if (!$res) {
-	echo db_error();
-	db_rollback();
-	exit();
-}	 
-$rows=db_numrows($res);
-
-for ($i=0; $i<$rows; $i++) {
-
-	$res2=db_query("UPDATE doc_data 
-		SET 
-		data='". base64_encode( util_unconvert_htmlspecialchars( db_result($res,$i,'data') )) ."',
-		filename='file".db_result($res,$i,'docid').".html',
-		filetype='text/html'
-		WHERE docid='".db_result($res,$i,'docid')."'");
-	if (!$res2 || db_affected_rows($res2) < 1) {
-		echo 'DB ERROR'.db_error();
-		db_rollback();
-		exit;
-	}
-}
-
-db_commit();
-echo "SUCCESS\n";
-?>

Added: trunk/gforge_base/gforge-4.8/db/20021223-1-drops.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20021223-1-drops.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20021223-1-drops.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,13 @@
+ALTER TABLE project_task DROP CONSTRAINT "project_task_group_project_id_f" RESTRICT;
+DROP TABLE project_category;
+DROP SEQUENCE project_categor_category_id_seq;
+DROP VIEW project_task_vw;
+DROP TABLE project_task_artifact;
+DROP TABLE project_group_forum;
+DROP TABLE project_group_doccat;
+DROP VIEW project_depend_vw;
+DROP VIEW project_dependon_vw;
+DROP VIEW project_history_user_vw;
+DROP VIEW project_message_user_vw;
+DROP TRIGGER projtask_update_depend_trig ON project_task;
+DROP TRIGGER projtask_insert_depend_trig ON project_task;

Added: trunk/gforge_base/gforge-4.8/db/20021223-2.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20021223-2.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20021223-2.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,235 @@
+--
+-- rename old "date" fields to be SQL compliant
+--
+alter table project_history rename column date to mod_date;
+
+--
+--	Change project_task to delete on removal of project
+--
+
+ALTER TABLE project_task 
+	ADD CONSTRAINT projecttask_groupprojectid_fk FOREIGN KEY (group_project_id)
+	REFERENCES project_group_list(group_project_id) ON DELETE CASCADE;
+
+--
+--	Add email address to send all task updates to
+--
+ALTER TABLE project_group_list ADD COLUMN send_all_posts_to text;
+
+
+--
+--	Each task can be assigned a category
+--
+CREATE SEQUENCE "project_categor_category_id_seq" ;
+CREATE TABLE project_category (
+category_id integer DEFAULT nextval('project_categor_category_id_seq'::text) NOT NULL,
+group_project_id int 
+	CONSTRAINT projcat_projgroupid_fk REFERENCES project_group_list(group_project_id) ON DELETE CASCADE,
+category_name text,
+	CONSTRAINT "project_category_pkey" Primary Key ("category_id")
+);
+CREATE INDEX projectcategory_groupprojectid ON project_category(group_project_id);
+INSERT INTO project_category VALUES ('100','1','None');
+SELECT SETVAL('project_categor_category_id_seq',100);
+
+--
+--	Add category_id
+--
+ALTER TABLE project_task ADD COLUMN category_id int REFERENCES project_category(category_id);
+UPDATE project_task SET category_id=100;
+
+--
+--	Convenience view required for ProjectTask object
+--
+CREATE VIEW project_task_vw AS 
+SELECT project_task.*,project_category.category_name,project_status.status_name 
+FROM project_task 
+FULL JOIN project_category ON (project_category.category_id=project_task.category_id) 
+NATURAL JOIN project_status;
+
+--
+--	Each task can have multiple artifacts associated with it
+--
+CREATE TABLE project_task_artifact (
+project_task_id int 
+	CONSTRAINT projtaskartifact_projtaskid_fk REFERENCES project_task(project_task_id) ON DELETE CASCADE,
+artifact_id int 
+	CONSTRAINT projtaskartifact_artifactid_fk REFERENCES artifact(artifact_id) ON DELETE CASCADE);
+CREATE INDEX projecttaskartifact_projecttaskid ON project_task_artifact (project_task_id);
+CREATE INDEX projecttaskartifact_artifactid ON project_task_artifact (artifact_id);
+
+--
+--	Relation to forums dedicated to this project
+--
+CREATE TABLE project_group_forum (
+group_project_id int 
+	CONSTRAINT projgroupforum_projgroupid_fk REFERENCES project_group_list(group_project_id) ON DELETE CASCADE,
+group_forum_id int 
+	CONSTRAINT projgroupforum_groupforumid_fk REFERENCES forum_group_list(group_forum_id) ON DELETE CASCADE);
+CREATE INDEX projectgroupforum_groupprojectid ON project_group_forum(group_project_id);
+CREATE INDEX projectgroupforum_groupforumid ON project_group_forum(group_forum_id);
+
+--
+--	Relation to a category of docs for this project
+--
+CREATE TABLE project_group_doccat (
+group_project_id int 
+	CONSTRAINT projgroupdoccat_projgroupid_fk REFERENCES project_group_list(group_project_id) ON DELETE CASCADE,
+doc_group_id int 
+	CONSTRAINT projgroupdoccat_docgroupid_fk REFERENCES doc_groups(doc_group) ON DELETE CASCADE);
+CREATE INDEX projectgroupdoccat_groupprojectid ON project_group_forum(group_project_id);
+CREATE INDEX projectgroupdoccat_groupgroupid ON project_group_doccat(doc_group_id);
+
+--
+--
+--
+CREATE VIEW project_depend_vw AS 
+	SELECT pt.project_task_id,pd.is_dependent_on_task_id,pt.end_date,pt.start_date
+	FROM project_task pt NATURAL JOIN project_dependencies pd;
+
+CREATE VIEW project_dependon_vw AS 
+	SELECT pd.project_task_id,pd.is_dependent_on_task_id,pt.end_date,pt.start_date
+	FROM project_task pt FULL JOIN project_dependencies pd ON (pd.is_dependent_on_task_id=pt.project_task_id);
+
+CREATE VIEW project_history_user_vw AS
+	SELECT users.realname,users.email,users.user_name,project_history.* 
+	FROM users,project_history 
+	WHERE project_history.mod_by=users.user_id;
+
+--
+--	Move project messages into separate table from project_history
+--
+CREATE TABLE project_messages (
+project_message_id SERIAL,
+project_task_id INT NOT NULL REFERENCES project_task(project_task_id) ON DELETE CASCADE,
+body text,
+posted_by INT NOT NULL REFERENCES users(user_id),
+postdate int NOT NULL);
+
+--BEGIN;
+INSERT INTO project_messages (project_task_id,body,posted_by,postdate) 
+	SELECT project_task_id,old_value,mod_by,mod_date 
+	FROM project_history
+	WHERE field_name='details';
+
+DELETE FROM project_history WHERE field_name='details';
+
+--COMMIT;
+
+CREATE VIEW project_message_user_vw AS
+	SELECT users.realname,users.email,users.user_name,project_messages.*
+	FROM users,project_messages
+	WHERE project_messages.posted_by=users.user_id;
+--
+--	Remove all existing dependencies, as they may be problematic.
+--
+DELETE FROM project_dependencies;
+
+--
+--	Function to enforce dependencies in the table structure
+--
+
+CREATE OR REPLACE FUNCTION projtask_update_depend () RETURNS OPAQUE AS '
+DECLARE
+	dependent RECORD;
+	dependon RECORD;
+	delta	INTEGER;
+BEGIN
+	--
+	--  See if tasks that are dependent on us are OK
+	--  See if the end date has changed
+	--
+	IF NEW.end_date > OLD.end_date THEN
+		--
+		--  If the end date pushed back, push back dependent tasks
+		--
+		FOR dependent IN SELECT * FROM project_depend_vw WHERE is_dependent_on_task_id=NEW.project_task_id LOOP
+			--
+			--  Some dependent tasks may not start immediately
+			--
+			IF dependent.start_date > OLD.end_date THEN
+				IF dependent.start_date < NEW.end_date THEN
+					delta := NEW.end_date-dependent.start_date;
+					UPDATE project_task
+						SET start_date=start_date+delta,
+						end_date=end_date+delta
+						WHERE project_task_id=dependent.project_task_id;
+				END IF;
+			ELSE
+				IF dependent.start_date = OLD.end_date THEN
+					delta := NEW.end_date-OLD.end_date;
+					UPDATE project_task
+						SET start_date=start_date+delta,
+						end_date=end_date+delta
+						WHERE project_task_id=dependent.project_task_id;
+				END IF;
+			END IF;
+		END LOOP;
+	ELSIF NEW.end_date < OLD.end_date THEN
+			--
+			--	If the end date moved up, move up dependent tasks
+			--
+			FOR dependent IN SELECT * FROM project_depend_vw WHERE is_dependent_on_task_id=NEW.project_task_id LOOP
+				IF dependent.start_date = OLD.end_date THEN
+					--
+					--  dependent task was constrained by us - bring it forward
+					--
+					delta := OLD.end_date-NEW.end_date;
+					UPDATE project_task
+						SET start_date=start_date-delta,
+						end_date=end_date-delta
+						WHERE project_task_id=dependent.project_task_id;
+				END IF;
+			END LOOP;
+	END IF;
+--
+--	MAY WISH TO INSERT AUDIT TRAIL HERE FOR CHANGED begin/end DATES
+--
+	RETURN NEW;
+END;
+' LANGUAGE 'plpgsql';
+
+
+CREATE TRIGGER projtask_update_depend_trig AFTER UPDATE ON project_task
+	FOR EACH ROW EXECUTE PROCEDURE projtask_update_depend();
+
+
+--
+--	  Function to enforce dependencies in the table structure
+--
+CREATE OR REPLACE FUNCTION projtask_insert_depend () RETURNS OPAQUE AS '
+DECLARE
+	dependon RECORD;
+	delta INTEGER;
+BEGIN
+	--
+	--  ENFORCE START/END DATE logic
+	--
+	IF NEW.start_date >= NEW.end_date THEN
+		RAISE EXCEPTION ''START DATE CANNOT BE AFTER END DATE'';
+	END IF;
+	--
+	--	  First make sure we start on or after end_date of tasks
+	--	  that we depend on
+	--
+	FOR dependon IN SELECT * FROM project_dependon_vw
+				WHERE project_task_id=NEW.project_task_id LOOP
+		--
+		--	  See if the task we are dependon on
+		--	  ends after we are supposed to start
+		--
+		IF dependon.end_date > NEW.start_date THEN
+			delta := dependon.end_date-NEW.start_date;
+			RAISE NOTICE ''Bumping Back: % Delta: % '',NEW.project_task_id,delta;
+			NEW.start_date := NEW.start_date+delta;
+			NEW.end_date := NEW.end_date+delta;
+		END IF;
+
+	END LOOP;
+	RETURN NEW;
+END;
+' LANGUAGE 'plpgsql';
+
+CREATE TRIGGER projtask_insert_depend_trig BEFORE INSERT OR UPDATE ON project_task
+	FOR EACH ROW EXECUTE PROCEDURE projtask_insert_depend();
+

Deleted: trunk/gforge_base/gforge-4.8/db/20021223-drops.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20021223-drops.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20021223-drops.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,13 +0,0 @@
-ALTER TABLE project_task DROP CONSTRAINT "project_task_group_project_id_f" RESTRICT;
-DROP TABLE project_category;
-DROP SEQUENCE project_categor_category_id_seq;
-DROP VIEW project_task_vw;
-DROP TABLE project_task_artifact;
-DROP TABLE project_group_forum;
-DROP TABLE project_group_doccat;
-DROP VIEW project_depend_vw;
-DROP VIEW project_dependon_vw;
-DROP VIEW project_history_user_vw;
-DROP VIEW project_message_user_vw;
-DROP TRIGGER projtask_update_depend_trig ON project_task;
-DROP TRIGGER projtask_insert_depend_trig ON project_task;

Deleted: trunk/gforge_base/gforge-4.8/db/20021223.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20021223.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20021223.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,235 +0,0 @@
---
--- rename old "date" fields to be SQL compliant
---
-alter table project_history rename column date to mod_date;
-
---
---	Change project_task to delete on removal of project
---
-
-ALTER TABLE project_task 
-	ADD CONSTRAINT projecttask_groupprojectid_fk FOREIGN KEY (group_project_id)
-	REFERENCES project_group_list(group_project_id) ON DELETE CASCADE;
-
---
---	Add email address to send all task updates to
---
-ALTER TABLE project_group_list ADD COLUMN send_all_posts_to text;
-
-
---
---	Each task can be assigned a category
---
-CREATE SEQUENCE "project_categor_category_id_seq" ;
-CREATE TABLE project_category (
-category_id integer DEFAULT nextval('project_categor_category_id_seq'::text) NOT NULL,
-group_project_id int 
-	CONSTRAINT projcat_projgroupid_fk REFERENCES project_group_list(group_project_id) ON DELETE CASCADE,
-category_name text,
-	CONSTRAINT "project_category_pkey" Primary Key ("category_id")
-);
-CREATE INDEX projectcategory_groupprojectid ON project_category(group_project_id);
-INSERT INTO project_category VALUES ('100','1','None');
-SELECT SETVAL('project_categor_category_id_seq',100);
-
---
---	Add category_id
---
-ALTER TABLE project_task ADD COLUMN category_id int REFERENCES project_category(category_id);
-UPDATE project_task SET category_id=100;
-
---
---	Convenience view required for ProjectTask object
---
-CREATE VIEW project_task_vw AS 
-SELECT project_task.*,project_category.category_name,project_status.status_name 
-FROM project_task 
-FULL JOIN project_category ON (project_category.category_id=project_task.category_id) 
-NATURAL JOIN project_status;
-
---
---	Each task can have multiple artifacts associated with it
---
-CREATE TABLE project_task_artifact (
-project_task_id int 
-	CONSTRAINT projtaskartifact_projtaskid_fk REFERENCES project_task(project_task_id) ON DELETE CASCADE,
-artifact_id int 
-	CONSTRAINT projtaskartifact_artifactid_fk REFERENCES artifact(artifact_id) ON DELETE CASCADE);
-CREATE INDEX projecttaskartifact_projecttaskid ON project_task_artifact (project_task_id);
-CREATE INDEX projecttaskartifact_artifactid ON project_task_artifact (artifact_id);
-
---
---	Relation to forums dedicated to this project
---
-CREATE TABLE project_group_forum (
-group_project_id int 
-	CONSTRAINT projgroupforum_projgroupid_fk REFERENCES project_group_list(group_project_id) ON DELETE CASCADE,
-group_forum_id int 
-	CONSTRAINT projgroupforum_groupforumid_fk REFERENCES forum_group_list(group_forum_id) ON DELETE CASCADE);
-CREATE INDEX projectgroupforum_groupprojectid ON project_group_forum(group_project_id);
-CREATE INDEX projectgroupforum_groupforumid ON project_group_forum(group_forum_id);
-
---
---	Relation to a category of docs for this project
---
-CREATE TABLE project_group_doccat (
-group_project_id int 
-	CONSTRAINT projgroupdoccat_projgroupid_fk REFERENCES project_group_list(group_project_id) ON DELETE CASCADE,
-doc_group_id int 
-	CONSTRAINT projgroupdoccat_docgroupid_fk REFERENCES doc_groups(doc_group) ON DELETE CASCADE);
-CREATE INDEX projectgroupdoccat_groupprojectid ON project_group_forum(group_project_id);
-CREATE INDEX projectgroupdoccat_groupgroupid ON project_group_doccat(doc_group_id);
-
---
---
---
-CREATE VIEW project_depend_vw AS 
-	SELECT pt.project_task_id,pd.is_dependent_on_task_id,pt.end_date,pt.start_date
-	FROM project_task pt NATURAL JOIN project_dependencies pd;
-
-CREATE VIEW project_dependon_vw AS 
-	SELECT pd.project_task_id,pd.is_dependent_on_task_id,pt.end_date,pt.start_date
-	FROM project_task pt FULL JOIN project_dependencies pd ON (pd.is_dependent_on_task_id=pt.project_task_id);
-
-CREATE VIEW project_history_user_vw AS
-	SELECT users.realname,users.email,users.user_name,project_history.* 
-	FROM users,project_history 
-	WHERE project_history.mod_by=users.user_id;
-
---
---	Move project messages into separate table from project_history
---
-CREATE TABLE project_messages (
-project_message_id SERIAL,
-project_task_id INT NOT NULL REFERENCES project_task(project_task_id) ON DELETE CASCADE,
-body text,
-posted_by INT NOT NULL REFERENCES users(user_id),
-postdate int NOT NULL);
-
---BEGIN;
-INSERT INTO project_messages (project_task_id,body,posted_by,postdate) 
-	SELECT project_task_id,old_value,mod_by,mod_date 
-	FROM project_history
-	WHERE field_name='details';
-
-DELETE FROM project_history WHERE field_name='details';
-
---COMMIT;
-
-CREATE VIEW project_message_user_vw AS
-	SELECT users.realname,users.email,users.user_name,project_messages.*
-	FROM users,project_messages
-	WHERE project_messages.posted_by=users.user_id;
---
---	Remove all existing dependencies, as they may be problematic.
---
-DELETE FROM project_dependencies;
-
---
---	Function to enforce dependencies in the table structure
---
-
-CREATE OR REPLACE FUNCTION projtask_update_depend () RETURNS OPAQUE AS '
-DECLARE
-	dependent RECORD;
-	dependon RECORD;
-	delta	INTEGER;
-BEGIN
-	--
-	--  See if tasks that are dependent on us are OK
-	--  See if the end date has changed
-	--
-	IF NEW.end_date > OLD.end_date THEN
-		--
-		--  If the end date pushed back, push back dependent tasks
-		--
-		FOR dependent IN SELECT * FROM project_depend_vw WHERE is_dependent_on_task_id=NEW.project_task_id LOOP
-			--
-			--  Some dependent tasks may not start immediately
-			--
-			IF dependent.start_date > OLD.end_date THEN
-				IF dependent.start_date < NEW.end_date THEN
-					delta := NEW.end_date-dependent.start_date;
-					UPDATE project_task
-						SET start_date=start_date+delta,
-						end_date=end_date+delta
-						WHERE project_task_id=dependent.project_task_id;
-				END IF;
-			ELSE
-				IF dependent.start_date = OLD.end_date THEN
-					delta := NEW.end_date-OLD.end_date;
-					UPDATE project_task
-						SET start_date=start_date+delta,
-						end_date=end_date+delta
-						WHERE project_task_id=dependent.project_task_id;
-				END IF;
-			END IF;
-		END LOOP;
-	ELSIF NEW.end_date < OLD.end_date THEN
-			--
-			--	If the end date moved up, move up dependent tasks
-			--
-			FOR dependent IN SELECT * FROM project_depend_vw WHERE is_dependent_on_task_id=NEW.project_task_id LOOP
-				IF dependent.start_date = OLD.end_date THEN
-					--
-					--  dependent task was constrained by us - bring it forward
-					--
-					delta := OLD.end_date-NEW.end_date;
-					UPDATE project_task
-						SET start_date=start_date-delta,
-						end_date=end_date-delta
-						WHERE project_task_id=dependent.project_task_id;
-				END IF;
-			END LOOP;
-	END IF;
---
---	MAY WISH TO INSERT AUDIT TRAIL HERE FOR CHANGED begin/end DATES
---
-	RETURN NEW;
-END;
-' LANGUAGE 'plpgsql';
-
-
-CREATE TRIGGER projtask_update_depend_trig AFTER UPDATE ON project_task
-	FOR EACH ROW EXECUTE PROCEDURE projtask_update_depend();
-
-
---
---	  Function to enforce dependencies in the table structure
---
-CREATE OR REPLACE FUNCTION projtask_insert_depend () RETURNS OPAQUE AS '
-DECLARE
-	dependon RECORD;
-	delta INTEGER;
-BEGIN
-	--
-	--  ENFORCE START/END DATE logic
-	--
-	IF NEW.start_date >= NEW.end_date THEN
-		RAISE EXCEPTION ''START DATE CANNOT BE AFTER END DATE'';
-	END IF;
-	--
-	--	  First make sure we start on or after end_date of tasks
-	--	  that we depend on
-	--
-	FOR dependon IN SELECT * FROM project_dependon_vw
-				WHERE project_task_id=NEW.project_task_id LOOP
-		--
-		--	  See if the task we are dependon on
-		--	  ends after we are supposed to start
-		--
-		IF dependon.end_date > NEW.start_date THEN
-			delta := dependon.end_date-NEW.start_date;
-			RAISE NOTICE ''Bumping Back: % Delta: % '',NEW.project_task_id,delta;
-			NEW.start_date := NEW.start_date+delta;
-			NEW.end_date := NEW.end_date+delta;
-		END IF;
-
-	END LOOP;
-	RETURN NEW;
-END;
-' LANGUAGE 'plpgsql';
-
-CREATE TRIGGER projtask_insert_depend_trig BEFORE INSERT OR UPDATE ON project_task
-	FOR EACH ROW EXECUTE PROCEDURE projtask_insert_depend();
-

Added: trunk/gforge_base/gforge-4.8/db/20030102-1-drops.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20030102-1-drops.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20030102-1-drops.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1 @@
+DROP VIEW docdata_vw;

Added: trunk/gforge_base/gforge-4.8/db/20030102-2.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20030102-2.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20030102-2.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,49 @@
+--
+--	Add a group_id column to relate docs to a group
+--
+ALTER TABLE doc_data ADD COLUMN group_id INT;
+UPDATE doc_data SET group_id=(SELECT group_id FROM doc_groups WHERE doc_group=doc_data.doc_group);
+UPDATE doc_data SET stateid=4 WHERE stateid=100;
+--
+--	Add fkey constraints
+--
+ALTER TABLE doc_data ADD CONSTRAINT docdata_groupid
+	FOREIGN KEY (group_id) REFERENCES groups(group_id) ON DELETE CASCADE;
+ALTER TABLE doc_data ADD CONSTRAINT docdata_docgroupid
+	FOREIGN KEY (doc_group) REFERENCES doc_groups(doc_group);
+ALTER TABLE doc_data ADD CONSTRAINT docdata_stateid
+	FOREIGN KEY (stateid) REFERENCES doc_states(stateid);
+ALTER TABLE doc_groups ADD CONSTRAINT docgroups_groupid
+	FOREIGN KEY (group_id) REFERENCES groups(group_id) ON DELETE CASCADE;
+--
+--	Re-use old columns in the groups table
+--
+ALTER TABLE groups RENAME COLUMN new_task_address TO new_doc_address;
+ALTER TABLE groups RENAME COLUMN send_all_tasks TO send_all_docs;
+--BEGIN;
+UPDATE groups SET new_doc_address='',send_all_docs='0';
+--COMMIT;
+
+--
+--	Create a convenience view for selecting from docman
+--
+CREATE VIEW docdata_vw AS
+SELECT users.user_name,users.realname,users.email,
+	d.group_id,d.docid,d.stateid,d.title,d.updatedate,d.createdate,d.created_by,
+	d.doc_group,d.description,d.language_id,d.filename,d.filetype,
+	doc_states.name AS state_name,
+	doc_groups.groupname AS group_name,
+	sl.name as language_name
+FROM doc_data d
+NATURAL JOIN doc_states 
+NATURAL JOIN doc_groups 
+JOIN supported_languages sl ON (sl.language_id=d.language_id)
+JOIN users ON (users.user_id=d.created_by);
+
+--
+--	NEW VIEW FOR TRACKER
+--
+CREATE VIEW artifact_group_list_vw AS
+SELECT agl.*,aca.count,aca.open_count
+        FROM artifact_group_list agl
+        LEFT JOIN artifact_counts_agg aca USING (group_artifact_id);

Deleted: trunk/gforge_base/gforge-4.8/db/20030102-drops.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20030102-drops.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20030102-drops.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1 +0,0 @@
-DROP VIEW docdata_vw;

Deleted: trunk/gforge_base/gforge-4.8/db/20030102.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20030102.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20030102.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,49 +0,0 @@
---
---	Add a group_id column to relate docs to a group
---
-ALTER TABLE doc_data ADD COLUMN group_id INT;
-UPDATE doc_data SET group_id=(SELECT group_id FROM doc_groups WHERE doc_group=doc_data.doc_group);
-UPDATE doc_data SET stateid=4 WHERE stateid=100;
---
---	Add fkey constraints
---
-ALTER TABLE doc_data ADD CONSTRAINT docdata_groupid
-	FOREIGN KEY (group_id) REFERENCES groups(group_id) ON DELETE CASCADE;
-ALTER TABLE doc_data ADD CONSTRAINT docdata_docgroupid
-	FOREIGN KEY (doc_group) REFERENCES doc_groups(doc_group);
-ALTER TABLE doc_data ADD CONSTRAINT docdata_stateid
-	FOREIGN KEY (stateid) REFERENCES doc_states(stateid);
-ALTER TABLE doc_groups ADD CONSTRAINT docgroups_groupid
-	FOREIGN KEY (group_id) REFERENCES groups(group_id) ON DELETE CASCADE;
---
---	Re-use old columns in the groups table
---
-ALTER TABLE groups RENAME COLUMN new_task_address TO new_doc_address;
-ALTER TABLE groups RENAME COLUMN send_all_tasks TO send_all_docs;
---BEGIN;
-UPDATE groups SET new_doc_address='',send_all_docs='0';
---COMMIT;
-
---
---	Create a convenience view for selecting from docman
---
-CREATE VIEW docdata_vw AS
-SELECT users.user_name,users.realname,users.email,
-	d.group_id,d.docid,d.stateid,d.title,d.updatedate,d.createdate,d.created_by,
-	d.doc_group,d.description,d.language_id,d.filename,d.filetype,
-	doc_states.name AS state_name,
-	doc_groups.groupname AS group_name,
-	sl.name as language_name
-FROM doc_data d
-NATURAL JOIN doc_states 
-NATURAL JOIN doc_groups 
-JOIN supported_languages sl ON (sl.language_id=d.language_id)
-JOIN users ON (users.user_id=d.created_by);
-
---
---	NEW VIEW FOR TRACKER
---
-CREATE VIEW artifact_group_list_vw AS
-SELECT agl.*,aca.count,aca.open_count
-        FROM artifact_group_list agl
-        LEFT JOIN artifact_counts_agg aca USING (group_artifact_id);

Added: trunk/gforge_base/gforge-4.8/db/20030113-1-drops.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20030113-1-drops.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20030113-1-drops.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,4 @@
+DROP VIEW stats_project_vw;
+DROP VIEW stats_project_all_vw;
+DROP VIEW stats_site_vw;
+DROP VIEW stats_site_all_vw;

Added: trunk/gforge_base/gforge-4.8/db/20030113-2.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20030113-2.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20030113-2.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,122 @@
+DROP TABLE stats_site_all;
+DROP TABLE stats_site_last_30;
+DROP TABLE stats_project_all;
+DROP TABLE stats_project_developers_last30;
+DROP TABLE stats_project_last_30;
+
+CREATE VIEW stats_project_vw AS
+SELECT spd.group_id,
+    spd.month,
+    spd.day,
+    spd.developers,
+    spm.ranking AS group_ranking,
+    spm.percentile AS group_metric,
+    salbg.count AS logo_showings,
+    fdga.downloads,
+    sasbg.count AS site_views,
+    ssp.pages AS subdomain_views,
+    (coalesce(sasbg.count,0) + coalesce(ssp.pages,0))::int AS page_views,
+    sp.file_releases,
+    sp.msg_posted,
+    sp.msg_uniq_auth,
+    sp.bugs_opened,
+    sp.bugs_closed,
+    sp.support_opened,
+    sp.support_closed,
+    sp.patches_opened,
+    sp.patches_closed,
+    sp.artifacts_opened,
+    sp.artifacts_closed,
+    sp.tasks_opened,
+    sp.tasks_closed,
+    sp.help_requests,
+    scg.checkouts AS cvs_checkouts,
+    scg.commits AS cvs_commits,
+    scg.adds AS cvs_adds
+FROM stats_project_developers spd
+    LEFT JOIN stats_project sp USING (month,day,group_id) 
+    LEFT JOIN stats_project_metric spm USING (month,day,group_id)
+    LEFT JOIN stats_cvs_group scg USING (month,day,group_id)
+    LEFT JOIN stats_agg_site_by_group sasbg USING (month,day,group_id)
+    LEFT JOIN stats_agg_logo_by_group salbg USING (month,day,group_id)
+    LEFT JOIN stats_subd_pages ssp USING (month,day,group_id)
+    LEFT JOIN frs_dlstats_group_vw fdga USING (month,day,group_id)
+;
+
+CREATE VIEW stats_project_all_vw AS
+SELECT group_id,
+    AVG(developers)::int AS developers,
+    AVG(group_ranking)::int AS group_ranking,
+    AVG(group_metric)::float AS group_metric,
+    SUM(logo_showings) AS logo_showings,
+    SUM(downloads) AS downloads,
+    SUM(site_views) AS site_views,
+    SUM(subdomain_views) AS subdomain_views,
+    SUM(page_views) AS page_views,
+    SUM(file_releases) AS file_releases,
+    SUM(msg_posted) AS msg_posted,
+    AVG(msg_uniq_auth)::int AS msg_uniq_auth,
+    SUM(bugs_opened) AS bugs_opened,
+    SUM(bugs_closed) AS bugs_closed,
+    SUM(support_opened) AS support_opened,
+    SUM(support_closed) AS support_closed,
+    SUM(patches_opened) AS patches_opened,
+    SUM(patches_closed) AS patches_closed,
+    SUM(artifacts_opened) AS artifacts_opened,
+    SUM(artifacts_closed) AS artifacts_closed,
+    SUM(tasks_opened) AS tasks_opened,
+    SUM(tasks_closed) AS tasks_closed,
+    SUM(help_requests) AS help_requests,
+    SUM(cvs_checkouts) AS cvs_checkouts,
+    SUM(cvs_commits) AS cvs_commits,
+    SUM(cvs_adds) AS cvs_adds
+    FROM stats_project_months
+    GROUP BY group_id;
+
+CREATE VIEW stats_site_vw AS 
+SELECT p.month,
+    p.day,
+    sspbd.site_page_views,
+    SUM(p.downloads) AS downloads,
+    SUM(p.subdomain_views) AS subdomain_views,
+    SUM(p.msg_posted) AS msg_posted,
+    SUM(p.bugs_opened) AS bugs_opened,
+    SUM(p.bugs_closed) AS bugs_closed,
+    SUM(p.support_opened) AS support_opened,
+    SUM(p.support_closed) AS support_closed,
+    SUM(p.patches_opened) AS patches_opened,
+    SUM(p.patches_closed) AS patches_closed,
+    SUM(artifacts_opened) AS artifacts_opened,
+    SUM(artifacts_closed) AS artifacts_closed,
+    SUM(p.tasks_opened) AS tasks_opened,
+    SUM(p.tasks_closed) AS tasks_closed,
+    SUM(p.help_requests) AS help_requests,
+    SUM(p.cvs_checkouts) AS cvs_checkouts,
+    SUM(p.cvs_commits) AS cvs_commits,
+    SUM(p.cvs_adds) AS cvs_adds
+    FROM stats_project_vw p, stats_site_pages_by_day sspbd
+        WHERE p.month=sspbd.month AND p.day=sspbd.day
+    GROUP BY p.month, p.day, sspbd.site_page_views;
+
+
+CREATE VIEW stats_site_all_vw AS
+SELECT
+    SUM(site_page_views) AS site_page_views,
+    SUM(downloads) AS downloads,
+    SUM(subdomain_views) AS subdomain_views,
+    SUM(msg_posted) AS msg_posted,
+    SUM(bugs_opened) AS bugs_opened,
+    SUM(bugs_closed) AS bugs_closed,
+    SUM(support_opened) AS support_opened,
+    SUM(support_closed) AS support_closed,
+    SUM(patches_opened) AS patches_opened,
+    SUM(patches_closed) AS patches_closed,
+    SUM(artifacts_opened) AS artifacts_opened,
+    SUM(artifacts_closed) AS artifacts_closed,
+    SUM(tasks_opened) AS tasks_opened,
+    SUM(tasks_closed) AS tasks_closed,
+    SUM(help_requests) AS help_requests,
+    SUM(cvs_checkouts) AS cvs_checkouts,
+    SUM(cvs_commits) AS cvs_commits,
+    SUM(cvs_adds) AS cvs_adds
+    FROM stats_site_months;

Deleted: trunk/gforge_base/gforge-4.8/db/20030113-drops.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20030113-drops.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20030113-drops.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,4 +0,0 @@
-DROP VIEW stats_project_vw;
-DROP VIEW stats_project_all_vw;
-DROP VIEW stats_site_vw;
-DROP VIEW stats_site_all_vw;

Deleted: trunk/gforge_base/gforge-4.8/db/20030113.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20030113.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20030113.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,122 +0,0 @@
-DROP TABLE stats_site_all;
-DROP TABLE stats_site_last_30;
-DROP TABLE stats_project_all;
-DROP TABLE stats_project_developers_last30;
-DROP TABLE stats_project_last_30;
-
-CREATE VIEW stats_project_vw AS
-SELECT spd.group_id,
-    spd.month,
-    spd.day,
-    spd.developers,
-    spm.ranking AS group_ranking,
-    spm.percentile AS group_metric,
-    salbg.count AS logo_showings,
-    fdga.downloads,
-    sasbg.count AS site_views,
-    ssp.pages AS subdomain_views,
-    (coalesce(sasbg.count,0) + coalesce(ssp.pages,0))::int AS page_views,
-    sp.file_releases,
-    sp.msg_posted,
-    sp.msg_uniq_auth,
-    sp.bugs_opened,
-    sp.bugs_closed,
-    sp.support_opened,
-    sp.support_closed,
-    sp.patches_opened,
-    sp.patches_closed,
-    sp.artifacts_opened,
-    sp.artifacts_closed,
-    sp.tasks_opened,
-    sp.tasks_closed,
-    sp.help_requests,
-    scg.checkouts AS cvs_checkouts,
-    scg.commits AS cvs_commits,
-    scg.adds AS cvs_adds
-FROM stats_project_developers spd
-    LEFT JOIN stats_project sp USING (month,day,group_id) 
-    LEFT JOIN stats_project_metric spm USING (month,day,group_id)
-    LEFT JOIN stats_cvs_group scg USING (month,day,group_id)
-    LEFT JOIN stats_agg_site_by_group sasbg USING (month,day,group_id)
-    LEFT JOIN stats_agg_logo_by_group salbg USING (month,day,group_id)
-    LEFT JOIN stats_subd_pages ssp USING (month,day,group_id)
-    LEFT JOIN frs_dlstats_group_vw fdga USING (month,day,group_id)
-;
-
-CREATE VIEW stats_project_all_vw AS
-SELECT group_id,
-    AVG(developers)::int AS developers,
-    AVG(group_ranking)::int AS group_ranking,
-    AVG(group_metric)::float AS group_metric,
-    SUM(logo_showings) AS logo_showings,
-    SUM(downloads) AS downloads,
-    SUM(site_views) AS site_views,
-    SUM(subdomain_views) AS subdomain_views,
-    SUM(page_views) AS page_views,
-    SUM(file_releases) AS file_releases,
-    SUM(msg_posted) AS msg_posted,
-    AVG(msg_uniq_auth)::int AS msg_uniq_auth,
-    SUM(bugs_opened) AS bugs_opened,
-    SUM(bugs_closed) AS bugs_closed,
-    SUM(support_opened) AS support_opened,
-    SUM(support_closed) AS support_closed,
-    SUM(patches_opened) AS patches_opened,
-    SUM(patches_closed) AS patches_closed,
-    SUM(artifacts_opened) AS artifacts_opened,
-    SUM(artifacts_closed) AS artifacts_closed,
-    SUM(tasks_opened) AS tasks_opened,
-    SUM(tasks_closed) AS tasks_closed,
-    SUM(help_requests) AS help_requests,
-    SUM(cvs_checkouts) AS cvs_checkouts,
-    SUM(cvs_commits) AS cvs_commits,
-    SUM(cvs_adds) AS cvs_adds
-    FROM stats_project_months
-    GROUP BY group_id;
-
-CREATE VIEW stats_site_vw AS 
-SELECT p.month,
-    p.day,
-    sspbd.site_page_views,
-    SUM(p.downloads) AS downloads,
-    SUM(p.subdomain_views) AS subdomain_views,
-    SUM(p.msg_posted) AS msg_posted,
-    SUM(p.bugs_opened) AS bugs_opened,
-    SUM(p.bugs_closed) AS bugs_closed,
-    SUM(p.support_opened) AS support_opened,
-    SUM(p.support_closed) AS support_closed,
-    SUM(p.patches_opened) AS patches_opened,
-    SUM(p.patches_closed) AS patches_closed,
-    SUM(artifacts_opened) AS artifacts_opened,
-    SUM(artifacts_closed) AS artifacts_closed,
-    SUM(p.tasks_opened) AS tasks_opened,
-    SUM(p.tasks_closed) AS tasks_closed,
-    SUM(p.help_requests) AS help_requests,
-    SUM(p.cvs_checkouts) AS cvs_checkouts,
-    SUM(p.cvs_commits) AS cvs_commits,
-    SUM(p.cvs_adds) AS cvs_adds
-    FROM stats_project_vw p, stats_site_pages_by_day sspbd
-        WHERE p.month=sspbd.month AND p.day=sspbd.day
-    GROUP BY p.month, p.day, sspbd.site_page_views;
-
-
-CREATE VIEW stats_site_all_vw AS
-SELECT
-    SUM(site_page_views) AS site_page_views,
-    SUM(downloads) AS downloads,
-    SUM(subdomain_views) AS subdomain_views,
-    SUM(msg_posted) AS msg_posted,
-    SUM(bugs_opened) AS bugs_opened,
-    SUM(bugs_closed) AS bugs_closed,
-    SUM(support_opened) AS support_opened,
-    SUM(support_closed) AS support_closed,
-    SUM(patches_opened) AS patches_opened,
-    SUM(patches_closed) AS patches_closed,
-    SUM(artifacts_opened) AS artifacts_opened,
-    SUM(artifacts_closed) AS artifacts_closed,
-    SUM(tasks_opened) AS tasks_opened,
-    SUM(tasks_closed) AS tasks_closed,
-    SUM(help_requests) AS help_requests,
-    SUM(cvs_checkouts) AS cvs_checkouts,
-    SUM(cvs_commits) AS cvs_commits,
-    SUM(cvs_adds) AS cvs_adds
-    FROM stats_site_months;

Modified: trunk/gforge_base/gforge-4.8/db/20040826_migrateforum.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20040826_migrateforum.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20040826_migrateforum.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -23,6 +23,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  US
  */
 
+require_once dirname(__FILE__).'/../www/env.inc.php';
 require_once $gfwww.'include/squal_pre.php';
 
 //

Modified: trunk/gforge_base/gforge-4.8/db/20040826_migraterbac.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20040826_migraterbac.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20040826_migraterbac.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -23,6 +23,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  US
  */
 
+require_once dirname(__FILE__).'/../www/env.inc.php';
 require_once $gfwww.'include/squal_pre.php';
 
 //system library

Modified: trunk/gforge_base/gforge-4.8/db/20041211-syncmail.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20041211-syncmail.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20041211-syncmail.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,5 +1,6 @@
 #! /usr/bin/php5
 <?php
+require_once dirname(__FILE__).'/../www/env.inc.php';
 require_once $gfwww.'include/squal_pre.php';
 require_once $gfcommon.'mail/MailingList.class.php';
 require_once $gfcommon.'include/Group.class.php';

Modified: trunk/gforge_base/gforge-4.8/db/20041222-1-delete-task-artifact.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20041222-1-delete-task-artifact.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20041222-1-delete-task-artifact.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,5 +1,6 @@
 #! /usr/bin/php5
 <?php
+require_once dirname(__FILE__).'/../www/env.inc.php';
 require_once $gfwww.'include/squal_pre.php';
 require_once $gfcommon.'pm/ProjectTask.class.php';
 

Modified: trunk/gforge_base/gforge-4.8/db/20050127-frs-reorg.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20050127-frs-reorg.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20050127-frs-reorg.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -22,7 +22,7 @@
  * along with GForge; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  US
  */
-
+require_once dirname(__FILE__).'/../www/env.inc.php';
 require_once $gfwww.'include/squal_pre.php';
 require_once $gfcommon.'frs/FRSFile.class.php';
 require_once $gfcommon.'frs/FRSRelease.class.php';

Added: trunk/gforge_base/gforge-4.8/db/20050224-1-drop.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20050224-1-drop.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20050224-1-drop.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,8 @@
+DROP INDEX docdata_groupid;
+DROP INDEX forumperm_useridgroupforumid;
+ALTER TABLE forum_perm DROP CONSTRAINT forum_perm_id_key;
+DROP INDEX forumperm_groupforumiduserid;
+DROP INDEX group_cvs_history_id_key;
+ALTER TABLE project_perm DROP CONSTRAINT project_perm_id_key;
+DROP INDEX projecttaskartifact_projecttask;
+DROP INDEX supported_langu_language_id_key;

Added: trunk/gforge_base/gforge-4.8/db/20050224-2.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20050224-2.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20050224-2.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,302 @@
+CREATE INDEX artifactextrafldlmts_extrafieldid ON
+artifact_extra_field_elements(extra_field_id);
+
+CREATE INDEX artifactextrafielddata_artifactid ON
+artifact_extra_field_data(artifact_id);
+
+CREATE INDEX artifactextrafieldlist_groupartid ON
+artifact_extra_field_list(group_artifact_id);
+
+CREATE INDEX docdata_groupid ON doc_data (group_id,doc_group); 
+
+CREATE SEQUENCE artifact_extra_field_elements_element_id_seq;
+ALTER TABLE artifact_extra_field_elements ALTER COLUMN 
+	element_id SET DEFAULT nextval('artifact_extra_field_elements_element_id_seq');
+DROP SEQUENCE artifact_group_selection_box_options_id_seq;
+SELECT setval('artifact_extra_field_elements_element_id_seq',(SELECT
+max(element_id) FROM artifact_extra_field_elements)); 
+
+CREATE SEQUENCE artifact_extra_field_data_data_id_seq;
+ALTER TABLE artifact_extra_field_data ALTER COLUMN 
+	data_id SET DEFAULT nextval('artifact_extra_field_data_data_id_seq');
+SELECT setval('artifact_extra_field_data_data_id_seq',(SELECT
+max(data_id) FROM artifact_extra_field_data));
+DROP SEQUENCE artifact_extra_field_data_id_seq;
+
+CREATE SEQUENCE artifact_extra_field_list_extra_field_id_seq;
+ALTER TABLE artifact_extra_field_list ALTER COLUMN 
+	extra_field_id SET DEFAULT nextval('artifact_extra_field_list_extra_field_id_seq');
+SELECT setval('artifact_extra_field_list_extra_field_id_seq',(SELECT
+max(extra_field_id) FROM artifact_extra_field_list));
+DROP SEQUENCE artifact_group_selection_box_list_id_seq;
+
+
+ALTER TABLE artifact_counts_agg ADD CONSTRAINT 
+	artifact_counts_agg_pkey primary key (group_artifact_id);
+DROP INDEX artifactcountsagg_groupartid;
+
+
+ALTER TABLE artifact_extra_field_elements DROP CONSTRAINT 
+	artifact_group_selection_box_options_pkey;
+ALTER TABLE artifact_extra_field_elements ADD CONSTRAINT 
+	artifact_extra_field_elements_pkey primary key (element_id);
+
+
+ALTER TABLE artifact_extra_field_list DROP CONSTRAINT
+	artifact_group_selection_box_list_pkey;
+ALTER TABLE artifact_extra_field_list ADD CONSTRAINT
+	artifact_extra_field_list_pkey primary key (extra_field_id);
+
+DROP INDEX artfile_artid;
+
+DROP INDEX artgrouplist_groupid;
+
+DROP INDEX arthistory_artid;
+
+DROP INDEX artmessage_artid;
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+ALTER TABLE artifact_monitor DROP CONSTRAINT artifact_monitor_pkey;
+DROP INDEX artmonitor_artifactid;
+ALTER TABLE artifact_monitor ADD CONSTRAINT artifact_monitor_pkey PRIMARY KEY (artifact_id,user_id);
+CREATE INDEX artmonitor_useridartid ON artifact_monitor(user_id,artifact_id);
+
+DROP INDEX artperm_groupartifactid;
+
+CREATE INDEX cronhist_jobrundate ON cron_history(job,rundate);
+
+DROP INDEX doc_group_doc_group;
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+ALTER TABLE filemodule_monitor DROP CONSTRAINT filemodule_monitor_pkey;
+DROP INDEX filemodule_monitor_id;
+DROP INDEX filemodulemonitor_userid;
+ALTER TABLE filemodule_monitor ADD CONSTRAINT filemodule_monitor_pkey PRIMARY KEY (filemodule_id,user_id);
+CREATE INDEX filemodulemonitor_useridfilemoduleid ON filemodule_monitor (user_id,filemodule_id);
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+ALTER TABLE forum_monitored_forums DROP CONSTRAINT forum_monitored_forums_pkey;
+DROP INDEX forum_monitor_combo_id;
+DROP INDEX forum_monitor_thread_id;
+DROP INDEX forummonitoredforums_user;
+ALTER TABLE forum_monitored_forums ADD CONSTRAINT forum_monitored_forums_pkey PRIMARY KEY (forum_id,user_id);
+CREATE INDEX forummonitoredforums_useridforumid ON forum_monitored_forums(user_id,forum_id);
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+ALTER TABLE forum_perm DROP CONSTRAINT forum_perm_id_key;
+CREATE INDEX forumperm_useridgroupforumid ON forum_perm(user_id,group_forum_id);
+ALTER TABLE forum_perm ADD CONSTRAINT forum_perm_pkey PRIMARY KEY (group_forum_id, user_id);
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+ALTER TABLE forum_saved_place DROP CONSTRAINT forum_saved_place_pkey;
+ALTER TABLE forum_saved_place ADD CONSTRAINT 
+	forum_saved_place_pkey PRIMARY KEY (user_id,forum_id);
+
+DROP INDEX frsdlfiletotal_fileid;
+ALTER TABLE frs_dlstats_filetotal_agg DROP CONSTRAINT frs_dlstats_filetotal_agg_pkey;
+ALTER TABLE frs_dlstats_filetotal_agg ADD CONSTRAINT 
+	frs_dlstats_filetotal_agg_pkey PRIMARY KEY (file_id);
+
+--
+-- TODO investigate if group_plugin_id is needed at all
+--
+CREATE INDEX groupplugin_groupid ON group_plugin(group_id);
+
+ALTER TABLE licenses DROP CONSTRAINT licenses_license_id_key CASCADE;
+ALTER TABLE licenses ADD CONSTRAINT licenses_pkey PRIMARY KEY (license_id);
+--groups fkey is dropped BY CASCADE
+--"groups_license" FOREIGN KEY (license) REFERENCES licenses(license_id) MATCH FULL
+ALTER TABLE groups ADD CONSTRAINT groups_license
+        FOREIGN KEY (license) REFERENCES licenses(license_id) MATCH FULL;
+
+CREATE INDEX prdbdbs_groupid ON prdb_dbs(group_id);
+CREATE INDEX prdbstates_stateid ON prdb_states(stateid);
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+ALTER TABLE project_assigned_to DROP CONSTRAINT project_assigned_to_pkey;
+DROP INDEX project_assigned_to_assigned_to;
+DROP INDEX project_assigned_to_task_id;
+--mop up duplicate ids
+DELETE FROM project_assigned_to WHERE EXISTS (
+SELECT * FROM (SELECT project_task_id,assigned_to_id,count(*) AS count FROM project_assigned_to
+	GROUP BY project_task_id,assigned_to_id ORDER BY count) ta WHERE ta.count > 1
+	AND ta.project_task_id=project_assigned_to.project_task_id);
+ALTER TABLE project_assigned_to ADD CONSTRAINT 
+	project_assigned_to_pkey PRIMARY KEY (project_task_id,assigned_to_id);
+CREATE INDEX projectassigned_assignedtotaskid ON 
+	project_assigned_to(assigned_to_id,project_task_id);
+
+ALTER TABLE project_counts_agg ADD CONSTRAINT 
+	project_counts_agg_pkey PRIMARY KEY (group_project_id);
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+ALTER TABLE project_dependencies DROP CONSTRAINT project_dependencies_pkey;
+DROP INDEX project_dependencies_task_id;
+DROP INDEX project_is_dependent_on_task_id;
+ALTER TABLE project_dependencies ALTER COLUMN link_type SET DEFAULT 'FS';
+--mop up duplicate ids
+DELETE FROM project_dependencies WHERE EXISTS (
+SELECT * FROM (SELECT project_task_id,is_dependent_on_task_id,count(*) AS count 
+	FROM project_dependencies
+	GROUP BY project_task_id,is_dependent_on_task_id ORDER BY count) ta WHERE ta.count > 1
+	AND ta.project_task_id=project_dependencies.project_task_id
+	AND ta.is_dependent_on_task_id=project_dependencies.is_dependent_on_task_id);
+ALTER TABLE project_dependencies ADD CONSTRAINT project_dependencies_pkey 
+	PRIMARY KEY(project_task_id,is_dependent_on_task_id);
+CREATE INDEX projectdep_isdepon_projtaskid ON 
+	project_dependencies(is_dependent_on_task_id,project_task_id);
+
+DROP TABLE project_group_doccat;
+DROP TABLE project_group_forum;
+
+CREATE INDEX projectmsgs_projtaskidpostdate ON project_messages(project_task_id,postdate);
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+ALTER TABLE project_perm DROP CONSTRAINT project_perm_id_key;
+DROP INDEX projectperm_groupprojiduserid;
+ALTER TABLE project_perm ADD CONSTRAINT project_perm_id_key PRIMARY KEY(group_project_id,user_id);
+CREATE INDEX projectperm_useridgroupprojid ON project_perm(user_id,group_project_id);
+
+
+DROP INDEX projectsumsagg_groupid;
+--MAY HAVE TO RUN db_project_sums.php cronjob first
+ALTER TABLE project_sums_agg ALTER type SET NOT NULL;
+DELETE FROM project_sums_agg;
+ALTER TABLE project_sums_agg ADD CONSTRAINT project_sums_agg_pkey PRIMARY KEY (group_id,type);
+
+DROP INDEX project_task_group_project_id;
+
+DROP INDEX projecttaskartifact_artifactid;
+ALTER TABLE project_task_artifact ALTER project_task_id SET NOT NULL;
+ALTER TABLE project_task_artifact ALTER artifact_id SET NOT NULL;
+ALTER TABLE project_task_artifact ADD CONSTRAINT 
+	project_task_artifact_pkey PRIMARY KEY (project_task_id,artifact_id);
+CREATE INDEX projecttaskartifact_artidprojtaskid ON 
+	project_task_artifact(artifact_id,project_task_id);
+
+DROP INDEX projecttaskexternal_projtaskid;
+ALTER TABLE project_task_external_order ADD CONSTRAINT 
+	roject_task_external_order_pkey PRIMARY KEY (project_task_id);
+
+--UNKNOWN IF CORRECT: project_weekly_metric
+--UNKNOWN IF CORRECT: prweb_vhost
+
+ALTER TABLE role DROP CONSTRAINT role_role_id_key CASCADE;
+--NOTICE:  drop cascades to constraint usergroup_roleid on table user_group
+--NOTICE:  drop cascades to constraint $1 on table role_setting
+ALTER TABLE role ADD CONSTRAINT role_role_id_pkey PRIMARY KEY (role_id);
+ALTER TABLE user_group ADD CONSTRAINT usergroup_roleid
+        FOREIGN KEY (role_id) REFERENCES role(role_id) MATCH FULL;
+ALTER TABLE role_setting ADD CONSTRAINT rolesetting_roleroleid 
+	FOREIGN KEY (role_id) REFERENCES role(role_id) ON DELETE CASCADE;
+
+DROP INDEX rolesetting_roleidsectionid;
+ALTER TABLE role_setting ADD CONSTRAINT role_setting_pkey 
+	PRIMARY KEY (role_id,section_name,ref_id);
+
+--skills_data ignored - to be dropped 
+--stats tables ignored - to be dropped
+
+CREATE UNIQUE INDEX supportedlanguage_code ON supported_languages(language_code);
+--TODO DROP supported_languages.filename
+
+--NEED TO BE INVESTIGATED MORE THOROUGHLY
+-- public | survey_questions              | table | tperdue
+-- public | survey_rating_aggregate       | table | tperdue
+-- public | survey_rating_response        | table | tperdue
+-- public | survey_responses              | table | tperdue
+DROP INDEX survey_responses_user_survey;
+
+DROP INDEX troveagg_trovecatid;
+--trove_agg - what is this?
+DROP INDEX parent_idx;
+CREATE INDEX trovecat_parentid ON trove_cat(parent);
+DROP INDEX version_idx;
+DROP INDEX root_parent_idx;
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+ALTER TABLE trove_group_link DROP CONSTRAINT trove_group_link_pkey;
+DROP INDEX trove_group_link_cat_id;
+DROP INDEX trove_group_link_group_id;
+CREATE INDEX trovegrouplink_groupidcatid ON trove_group_link(group_id,trove_cat_id);
+ALTER TABLE trove_group_link ADD CONSTRAINT 
+	trove_group_link_pkey PRIMARY KEY(trove_cat_id,group_id,trove_cat_version);
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+ALTER TABLE trove_treesums DROP CONSTRAINT trove_treesums_pkey;
+ALTER TABLE trove_treesums ADD CONSTRAINT trove_treesums_pkey PRIMARY KEY (trove_cat_id);
+
+DROP INDEX user_diary_user;
+DROP INDEX user_diary_date;
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+ALTER TABLE user_diary_monitor DROP CONSTRAINT user_diary_monitor_pkey;
+DROP INDEX user_diary_monitor_monitored_us;
+DROP INDEX user_diary_monitor_user;
+ALTER TABLE user_diary_monitor ADD CONSTRAINT 
+	user_diary_monitor_pkey PRIMARY KEY (monitored_user,user_id);
+CREATE INDEX userdiarymon_useridmonitoredid ON 
+	user_diary_monitor(user_id,monitored_user);
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+DROP INDEX admin_flags_idx;
+DROP INDEX forum_flags_idx;
+DROP INDEX project_flags_idx;
+DROP INDEX user_group_group_id;
+DROP INDEX user_group_user_id;
+ALTER TABLE user_group DROP CONSTRAINT user_group_pkey;
+ALTER TABLE user_group ADD CONSTRAINT user_group_pkey PRIMARY KEY (group_id,user_id);
+CREATE INDEX usergroup_useridgroupid ON user_group(user_id,group_id);
+DROP INDEX usergroup_uniq_groupid_userid;
+
+CREATE UNIQUE INDEX usermetric_userid ON user_metric(user_id);
+
+CREATE INDEX usermetrichistory_useridmonthday ON user_metric_history(user_id,month,day);
+DROP INDEX user_metric_history_date_userid;
+ALTER TABLE user_metric_history ADD CONSTRAINT 
+	user_metric_history_pkey PRIMARY KEY (month,day,user_id);
+
+--
+-- TODO DROP unnecessary sequence/id
+--
+ALTER TABLE user_plugin DROP CONSTRAINT user_plugin_pkey;
+ALTER TABLE user_plugin ALTER user_id SET NOT NULL;
+ALTER TABLE user_plugin ALTER plugin_id SET NOT NULL;
+ALTER TABLE user_plugin ADD CONSTRAINT user_plugin_pkey PRIMARY KEY (user_id,plugin_id);
+
+
+DROP INDEX user_pref_user_id;
+ALTER TABLE user_preferences ALTER user_id SET NOT NULL;
+ALTER TABLE user_preferences ALTER preference_name SET NOT NULL;
+ALTER TABLE user_preferences ADD CONSTRAINT 
+	user_preferences_pkey PRIMARY KEY (user_id,preference_name);
+
+DROP INDEX user_ratings_rated_by;
+ALTER TABLE user_ratings ADD CONSTRAINT user_ratings_pkey PRIMARY KEY (rated_by,user_id,rate_field);
+
+DROP INDEX users_user_pw;
+

Deleted: trunk/gforge_base/gforge-4.8/db/20050224-drop.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20050224-drop.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20050224-drop.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,8 +0,0 @@
-DROP INDEX docdata_groupid;
-DROP INDEX forumperm_useridgroupforumid;
-DROP INDEX forum_perm_id_key;
-DROP INDEX forumperm_groupforumiduserid;
-DROP INDEX group_cvs_history_id_key;
-DROP INDEX project_perm_id_key;
-DROP INDEX projecttaskartifact_projecttask;
-DROP INDEX supported_langu_language_id_key;

Deleted: trunk/gforge_base/gforge-4.8/db/20050224.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20050224.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20050224.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,302 +0,0 @@
-CREATE INDEX artifactextrafldlmts_extrafieldid ON
-artifact_extra_field_elements(extra_field_id);
-
-CREATE INDEX artifactextrafielddata_artifactid ON
-artifact_extra_field_data(artifact_id);
-
-CREATE INDEX artifactextrafieldlist_groupartid ON
-artifact_extra_field_list(group_artifact_id);
-
-CREATE INDEX docdata_groupid ON doc_data (group_id,doc_group); 
-
-CREATE SEQUENCE artifact_extra_field_elements_element_id_seq;
-ALTER TABLE artifact_extra_field_elements ALTER COLUMN 
-	element_id SET DEFAULT nextval('artifact_extra_field_elements_element_id_seq');
-DROP SEQUENCE artifact_group_selection_box_options_id_seq;
-SELECT setval('artifact_extra_field_elements_element_id_seq',(SELECT
-max(element_id) FROM artifact_extra_field_elements)); 
-
-CREATE SEQUENCE artifact_extra_field_data_data_id_seq;
-ALTER TABLE artifact_extra_field_data ALTER COLUMN 
-	data_id SET DEFAULT nextval('artifact_extra_field_data_data_id_seq');
-SELECT setval('artifact_extra_field_data_data_id_seq',(SELECT
-max(data_id) FROM artifact_extra_field_data));
-DROP SEQUENCE artifact_extra_field_data_id_seq;
-
-CREATE SEQUENCE artifact_extra_field_list_extra_field_id_seq;
-ALTER TABLE artifact_extra_field_list ALTER COLUMN 
-	extra_field_id SET DEFAULT nextval('artifact_extra_field_list_extra_field_id_seq');
-SELECT setval('artifact_extra_field_list_extra_field_id_seq',(SELECT
-max(extra_field_id) FROM artifact_extra_field_list));
-DROP SEQUENCE artifact_group_selection_box_list_id_seq;
-
-
-ALTER TABLE artifact_counts_agg ADD CONSTRAINT 
-	artifact_counts_agg_pkey primary key (group_artifact_id);
-DROP INDEX artifactcountsagg_groupartid;
-
-
-ALTER TABLE artifact_extra_field_elements DROP CONSTRAINT 
-	artifact_group_selection_box_options_pkey;
-ALTER TABLE artifact_extra_field_elements ADD CONSTRAINT 
-	artifact_extra_field_elements_pkey primary key (element_id);
-
-
-ALTER TABLE artifact_extra_field_list DROP CONSTRAINT
-	artifact_group_selection_box_list_pkey;
-ALTER TABLE artifact_extra_field_list ADD CONSTRAINT
-	artifact_extra_field_list_pkey primary key (extra_field_id);
-
-DROP INDEX artfile_artid;
-
-DROP INDEX artgrouplist_groupid;
-
-DROP INDEX arthistory_artid;
-
-DROP INDEX artmessage_artid;
-
---
--- TODO DROP unnecessary sequence/id
---
-ALTER TABLE artifact_monitor DROP CONSTRAINT artifact_monitor_pkey;
-DROP INDEX artmonitor_artifactid;
-ALTER TABLE artifact_monitor ADD CONSTRAINT artifact_monitor_pkey PRIMARY KEY (artifact_id,user_id);
-CREATE INDEX artmonitor_useridartid ON artifact_monitor(user_id,artifact_id);
-
-DROP INDEX artperm_groupartifactid;
-
-CREATE INDEX cronhist_jobrundate ON cron_history(job,rundate);
-
-DROP INDEX doc_group_doc_group;
-
---
--- TODO DROP unnecessary sequence/id
---
-ALTER TABLE filemodule_monitor DROP CONSTRAINT filemodule_monitor_pkey;
-DROP INDEX filemodule_monitor_id;
-DROP INDEX filemodulemonitor_userid;
-ALTER TABLE filemodule_monitor ADD CONSTRAINT filemodule_monitor_pkey PRIMARY KEY (filemodule_id,user_id);
-CREATE INDEX filemodulemonitor_useridfilemoduleid ON filemodule_monitor (user_id,filemodule_id);
-
---
--- TODO DROP unnecessary sequence/id
---
-ALTER TABLE forum_monitored_forums DROP CONSTRAINT forum_monitored_forums_pkey;
-DROP INDEX forum_monitor_combo_id;
-DROP INDEX forum_monitor_thread_id;
-DROP INDEX forummonitoredforums_user;
-ALTER TABLE forum_monitored_forums ADD CONSTRAINT forum_monitored_forums_pkey PRIMARY KEY (forum_id,user_id);
-CREATE INDEX forummonitoredforums_useridforumid ON forum_monitored_forums(user_id,forum_id);
-
---
--- TODO DROP unnecessary sequence/id
---
-ALTER TABLE forum_perm DROP CONSTRAINT forum_perm_id_key;
-CREATE INDEX forumperm_useridgroupforumid ON forum_perm(user_id,group_forum_id);
-ALTER TABLE forum_perm ADD CONSTRAINT forum_perm_pkey PRIMARY KEY (group_forum_id, user_id);
-
---
--- TODO DROP unnecessary sequence/id
---
-ALTER TABLE forum_saved_place DROP CONSTRAINT forum_saved_place_pkey;
-ALTER TABLE forum_saved_place ADD CONSTRAINT 
-	forum_saved_place_pkey PRIMARY KEY (user_id,forum_id);
-
-DROP INDEX frsdlfiletotal_fileid;
-ALTER TABLE frs_dlstats_filetotal_agg DROP CONSTRAINT frs_dlstats_filetotal_agg_pkey;
-ALTER TABLE frs_dlstats_filetotal_agg ADD CONSTRAINT 
-	frs_dlstats_filetotal_agg_pkey PRIMARY KEY (file_id);
-
---
--- TODO investigate if group_plugin_id is needed at all
---
-CREATE INDEX groupplugin_groupid ON group_plugin(group_id);
-
-ALTER TABLE licenses DROP CONSTRAINT licenses_license_id_key CASCADE;
-ALTER TABLE licenses ADD CONSTRAINT licenses_pkey PRIMARY KEY (license_id);
---groups fkey is dropped BY CASCADE
---"groups_license" FOREIGN KEY (license) REFERENCES licenses(license_id) MATCH FULL
-ALTER TABLE groups ADD CONSTRAINT groups_license
-        FOREIGN KEY (license) REFERENCES licenses(license_id) MATCH FULL;
-
-CREATE INDEX prdbdbs_groupid ON prdb_dbs(group_id);
-CREATE INDEX prdbstates_stateid ON prdb_states(stateid);
-
---
--- TODO DROP unnecessary sequence/id
---
-ALTER TABLE project_assigned_to DROP CONSTRAINT project_assigned_to_pkey;
-DROP INDEX project_assigned_to_assigned_to;
-DROP INDEX project_assigned_to_task_id;
---mop up duplicate ids
-DELETE FROM project_assigned_to WHERE EXISTS (
-SELECT * FROM (SELECT project_task_id,assigned_to_id,count(*) AS count FROM project_assigned_to
-	GROUP BY project_task_id,assigned_to_id ORDER BY count) ta WHERE ta.count > 1
-	AND ta.project_task_id=project_assigned_to.project_task_id);
-ALTER TABLE project_assigned_to ADD CONSTRAINT 
-	project_assigned_to_pkey PRIMARY KEY (project_task_id,assigned_to_id);
-CREATE INDEX projectassigned_assignedtotaskid ON 
-	project_assigned_to(assigned_to_id,project_task_id);
-
-ALTER TABLE project_counts_agg ADD CONSTRAINT 
-	project_counts_agg_pkey PRIMARY KEY (group_project_id);
-
---
--- TODO DROP unnecessary sequence/id
---
-ALTER TABLE project_dependencies DROP CONSTRAINT project_dependencies_pkey;
-DROP INDEX project_dependencies_task_id;
-DROP INDEX project_is_dependent_on_task_id;
-ALTER TABLE project_dependencies ALTER COLUMN link_type SET DEFAULT 'FS';
---mop up duplicate ids
-DELETE FROM project_dependencies WHERE EXISTS (
-SELECT * FROM (SELECT project_task_id,is_dependent_on_task_id,count(*) AS count 
-	FROM project_dependencies
-	GROUP BY project_task_id,is_dependent_on_task_id ORDER BY count) ta WHERE ta.count > 1
-	AND ta.project_task_id=project_dependencies.project_task_id
-	AND ta.is_dependent_on_task_id=project_dependencies.is_dependent_on_task_id);
-ALTER TABLE project_dependencies ADD CONSTRAINT project_dependencies_pkey 
-	PRIMARY KEY(project_task_id,is_dependent_on_task_id);
-CREATE INDEX projectdep_isdepon_projtaskid ON 
-	project_dependencies(is_dependent_on_task_id,project_task_id);
-
-DROP TABLE project_group_doccat;
-DROP TABLE project_group_forum;
-
-CREATE INDEX projectmsgs_projtaskidpostdate ON project_messages(project_task_id,postdate);
-
---
--- TODO DROP unnecessary sequence/id
---
-ALTER TABLE project_perm DROP CONSTRAINT project_perm_id_key;
-DROP INDEX projectperm_groupprojiduserid;
-ALTER TABLE project_perm ADD CONSTRAINT project_perm_id_key PRIMARY KEY(group_project_id,user_id);
-CREATE INDEX projectperm_useridgroupprojid ON project_perm(user_id,group_project_id);
-
-
-DROP INDEX projectsumsagg_groupid;
---MAY HAVE TO RUN db_project_sums.php cronjob first
-ALTER TABLE project_sums_agg ALTER type SET NOT NULL;
-DELETE FROM project_sums_agg;
-ALTER TABLE project_sums_agg ADD CONSTRAINT project_sums_agg_pkey PRIMARY KEY (group_id,type);
-
-DROP INDEX project_task_group_project_id;
-
-DROP INDEX projecttaskartifact_artifactid;
-ALTER TABLE project_task_artifact ALTER project_task_id SET NOT NULL;
-ALTER TABLE project_task_artifact ALTER artifact_id SET NOT NULL;
-ALTER TABLE project_task_artifact ADD CONSTRAINT 
-	project_task_artifact_pkey PRIMARY KEY (project_task_id,artifact_id);
-CREATE INDEX projecttaskartifact_artidprojtaskid ON 
-	project_task_artifact(artifact_id,project_task_id);
-
-DROP INDEX projecttaskexternal_projtaskid;
-ALTER TABLE project_task_external_order ADD CONSTRAINT 
-	roject_task_external_order_pkey PRIMARY KEY (project_task_id);
-
---UNKNOWN IF CORRECT: project_weekly_metric
---UNKNOWN IF CORRECT: prweb_vhost
-
-ALTER TABLE role DROP CONSTRAINT role_role_id_key CASCADE;
---NOTICE:  drop cascades to constraint usergroup_roleid on table user_group
---NOTICE:  drop cascades to constraint $1 on table role_setting
-ALTER TABLE role ADD CONSTRAINT role_role_id_pkey PRIMARY KEY (role_id);
-ALTER TABLE user_group ADD CONSTRAINT usergroup_roleid
-        FOREIGN KEY (role_id) REFERENCES role(role_id) MATCH FULL;
-ALTER TABLE role_setting ADD CONSTRAINT rolesetting_roleroleid 
-	FOREIGN KEY (role_id) REFERENCES role(role_id) ON DELETE CASCADE;
-
-DROP INDEX rolesetting_roleidsectionid;
-ALTER TABLE role_setting ADD CONSTRAINT role_setting_pkey 
-	PRIMARY KEY (role_id,section_name,ref_id);
-
---skills_data ignored - to be dropped 
---stats tables ignored - to be dropped
-
-CREATE UNIQUE INDEX supportedlanguage_code ON supported_languages(language_code);
---TODO DROP supported_languages.filename
-
---NEED TO BE INVESTIGATED MORE THOROUGHLY
--- public | survey_questions              | table | tperdue
--- public | survey_rating_aggregate       | table | tperdue
--- public | survey_rating_response        | table | tperdue
--- public | survey_responses              | table | tperdue
-DROP INDEX survey_responses_user_survey;
-
-DROP INDEX troveagg_trovecatid;
---trove_agg - what is this?
-DROP INDEX parent_idx;
-CREATE INDEX trovecat_parentid ON trove_cat(parent);
-DROP INDEX version_idx;
-DROP INDEX root_parent_idx;
-
---
--- TODO DROP unnecessary sequence/id
---
-ALTER TABLE trove_group_link DROP CONSTRAINT trove_group_link_pkey;
-DROP INDEX trove_group_link_cat_id;
-DROP INDEX trove_group_link_group_id;
-CREATE INDEX trovegrouplink_groupidcatid ON trove_group_link(group_id,trove_cat_id);
-ALTER TABLE trove_group_link ADD CONSTRAINT 
-	trove_group_link_pkey PRIMARY KEY(trove_cat_id,group_id,trove_cat_version);
-
---
--- TODO DROP unnecessary sequence/id
---
-ALTER TABLE trove_treesums DROP CONSTRAINT trove_treesums_pkey;
-ALTER TABLE trove_treesums ADD CONSTRAINT trove_treesums_pkey PRIMARY KEY (trove_cat_id);
-
-DROP INDEX user_diary_user;
-DROP INDEX user_diary_date;
-
---
--- TODO DROP unnecessary sequence/id
---
-ALTER TABLE user_diary_monitor DROP CONSTRAINT user_diary_monitor_pkey;
-DROP INDEX user_diary_monitor_monitored_us;
-DROP INDEX user_diary_monitor_user;
-ALTER TABLE user_diary_monitor ADD CONSTRAINT 
-	user_diary_monitor_pkey PRIMARY KEY (monitored_user,user_id);
-CREATE INDEX userdiarymon_useridmonitoredid ON 
-	user_diary_monitor(user_id,monitored_user);
-
---
--- TODO DROP unnecessary sequence/id
---
-DROP INDEX admin_flags_idx;
-DROP INDEX forum_flags_idx;
-DROP INDEX project_flags_idx;
-DROP INDEX user_group_group_id;
-DROP INDEX user_group_user_id;
-ALTER TABLE user_group DROP CONSTRAINT user_group_pkey;
-ALTER TABLE user_group ADD CONSTRAINT user_group_pkey PRIMARY KEY (group_id,user_id);
-CREATE INDEX usergroup_useridgroupid ON user_group(user_id,group_id);
-DROP INDEX usergroup_uniq_groupid_userid;
-
-CREATE UNIQUE INDEX usermetric_userid ON user_metric(user_id);
-
-CREATE INDEX usermetrichistory_useridmonthday ON user_metric_history(user_id,month,day);
-DROP INDEX user_metric_history_date_userid;
-ALTER TABLE user_metric_history ADD CONSTRAINT 
-	user_metric_history_pkey PRIMARY KEY (month,day,user_id);
-
---
--- TODO DROP unnecessary sequence/id
---
-ALTER TABLE user_plugin DROP CONSTRAINT user_plugin_pkey;
-ALTER TABLE user_plugin ALTER user_id SET NOT NULL;
-ALTER TABLE user_plugin ALTER plugin_id SET NOT NULL;
-ALTER TABLE user_plugin ADD CONSTRAINT user_plugin_pkey PRIMARY KEY (user_id,plugin_id);
-
-
-DROP INDEX user_pref_user_id;
-ALTER TABLE user_preferences ALTER user_id SET NOT NULL;
-ALTER TABLE user_preferences ALTER preference_name SET NOT NULL;
-ALTER TABLE user_preferences ADD CONSTRAINT 
-	user_preferences_pkey PRIMARY KEY (user_id,preference_name);
-
-DROP INDEX user_ratings_rated_by;
-ALTER TABLE user_ratings ADD CONSTRAINT user_ratings_pkey PRIMARY KEY (rated_by,user_id,rate_field);
-
-DROP INDEX users_user_pw;
-

Deleted: trunk/gforge_base/gforge-4.8/db/20050325-1.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20050325-1.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20050325-1.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,40 +0,0 @@
-ALTER TABLE artifact_extra_field_list ADD COLUMN is_required INT;
-UPDATE artifact_extra_field_list SET is_required=0;
-ALTER TABLE artifact_extra_field_list ALTER COLUMN is_required SET NOT NULL;
-ALTER TABLE artifact_extra_field_list ALTER COLUMN is_required SET DEFAULT 0;
-
-ALTER TABLE artifact_extra_field_elements ADD COLUMN status_id INT;
-UPDATE artifact_extra_field_elements SET status_id=0;
-ALTER TABLE artifact_extra_field_elements ALTER COLUMN status_id SET NOT NULL;
-ALTER TABLE artifact_extra_field_elements ALTER COLUMN status_id SET DEFAULT 0;
-
-ALTER TABLE artifact_group_list ADD COLUMN custom_status_field INT;
-UPDATE artifact_group_list SET custom_status_field=0;
-ALTER TABLE artifact_group_list ALTER COLUMN custom_status_field SET NOT NULL;
-ALTER TABLE artifact_group_list ALTER COLUMN custom_status_field SET DEFAULT 0;
-
-ALTER TABLE artifact_group_list ADD COLUMN custom_renderer TEXT;
-
-CREATE TABLE artifact_query (
-	artifact_query_id SERIAL NOT NULL,
-	group_artifact_id integer NOT NULL 
-		CONSTRAINT artquery_groupartid_fk REFERENCES artifact_group_list(group_artifact_id) ON DELETE CASCADE,
-	user_id integer NOT NULL,
-	query_name text NOT NULL,
-	Constraint artifact_query_pkey Primary Key (artifact_query_id)
-);
-
-CREATE TABLE artifact_query_fields (
-	artifact_query_id integer NOT NULL 
-		CONSTRAINT artqueryelmnt_artqueryid REFERENCES artifact_query(artifact_query_id) ON DELETE CASCADE,
-	query_field_type text NOT NULL,
-	query_field_id int NOT NULL,
-	query_field_values text NOT NULL,
-	Constraint artifact_query_elements_pkey Primary Key (artifact_query_id,query_field_type,query_field_id)
-);
-
-ALTER TABLE doc_groups ADD COLUMN parent_doc_group INTEGER;
-UPDATE doc_groups SET parent_doc_group=0;
-ALTER TABLE doc_groups ALTER COLUMN parent_doc_group SET NOT NULL;
-ALTER TABLE doc_groups ALTER COLUMN parent_doc_group SET DEFAULT 0;
-CREATE INDEX docgroups_parentdocgroup ON doc_groups(parent_doc_group);

Deleted: trunk/gforge_base/gforge-4.8/db/20050325-2.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20050325-2.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20050325-2.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,247 +0,0 @@
-#! /usr/bin/php5
-<?php
-/**
- * GForge Extra Field Conversion Script
- *
- * Copyright 2004 GForge, LLC
- * http://gforge.org/
- *
- * This file is part of GForge.
- *
- * GForge is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * GForge is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GForge; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  US
- */
-
-require_once $gfwww.'include/squal_pre.php';
-require_once $gfcommon.'tracker/ArtifactExtraField.class.php';
-require_once $gfcommon.'tracker/ArtifactExtraFieldElement.class.php';
-
-// First of all, try to create the "alias" field if it doesn't exist
-$res = db_query("SELECT alias FROM artifact_extra_field_list");
-if (!$res) {		// error, the field doesn't exist
-	$res = db_query("ALTER TABLE artifact_extra_field_list ADD COLUMN alias TEXT");
-	if (!$res) {
-		echo db_error();
-		exit(16);
-	}
-} 
-
-//
-//  Set up this script to run as the site admin
-//
-
-$res = db_query("SELECT user_id FROM user_group WHERE admin_flags='A' AND group_id='1'");
-
-if (!$res) {
-    echo db_error();
-    exit(1);
-}
-
-if (db_numrows($res) == 0) {
-    // There are no Admins yet, aborting without failing
-    echo "SUCCESS\n";
-    exit(0);
-}
-
-$id=db_result($res,0,0);
-session_set_new($id);
-
-db_begin();
-
-$res=db_query("SELECT group_id,group_artifact_id,use_resolution FROM artifact_group_list");
-
-for ($i=0; $i<db_numrows($res); $i++) {
-
-	$group_id=db_result($res,$i,'group_id');
-	$gaid=db_result($res,$i,'group_artifact_id');
-	$ur=db_result($res,$i,'use_resolution');
-
-	$g = group_get_object($group_id);
-	if (!$g || !is_object($g)) {
-		echo "\nCould Not Get Group: $group_id";
-		db_rollback();
-		exit(2);
-	}
-
-	$at = new ArtifactType($g,$gaid);
-	if (!$at || !is_object($at)) {
-		echo "\nCould Not Get ArtifactType: $gaid";
-		db_rollback();
-		exit(3);
-	}
-	//
-	//	Convert ArtifactCategory To Extra Field
-	//
-	$aef=new ArtifactExtraField($at);
-	$aef->create('Category',ARTIFACT_EXTRAFIELDTYPE_SELECT,0,0);
-	$catbox_id=$aef->getID();
-	if (!$catbox_id) {
-		echo "\nCould Not Get New Category Box ID: $gaid ".$aef->getErrorMessage();
-		db_rollback();
-		exit(4);
-	}
-	$resc=db_query("SELECT * FROM artifact_category WHERE group_artifact_id='$gaid'");
-	for ($j=0; $j<db_numrows($resc); $j++) {
-		$cat_id=db_result($resc,$j,'id');
-		$cat_name=addslashes(db_result($resc,$j,'category_name'));
-		if (strlen($cat_name) < 1) {
-			$cat_name='[empty]';
-		}
-
-		$efe=new ArtifactExtraFieldElement($aef);
-		#DEBUG
-		#$efe->create($cat_name);
-		if (!$efe->create($cat_name)) {
-			echo 'Group: '.$group_id.' Could not create category element: '.$cat_name.' '.$efe->getErrorMessage();
-			db_rollback();
-			exit(5);
-		}
-		$efe_id=$efe->getID();
-//echo 'Artifact Category: Group: '.$group_id;
-//print_r($efe->data_array);
-		if (!$efe_id) {
-			#DEBUG echo "\nDid Not Get efe_id";
-			echo "\nDid Not Get efe_id (group_id: $group_id)";
-			db_rollback();
-			exit(5);
-		}
-		$res2=db_query("INSERT INTO artifact_extra_field_data (artifact_id,field_data,extra_field_id)
-			SELECT artifact_id,$efe_id,$catbox_id FROM artifact 
-			WHERE category_id='$cat_id' AND group_artifact_id='$gaid'");
-		if (!$res2) {
-			echo "Could Not Insert AEFD for category " . db_error();
-			db_rollback();
-			exit(6);
-		}
-		$res3=db_query("UPDATE artifact_history SET old_value='$cat_name',field_name='Category'
-			WHERE old_value='$cat_id' AND field_name='category_id' AND artifact_id IN
-            (SELECT artifact_id FROM artifact WHERE group_artifact_id='$gaid')");
-		if (!$res3) {
-			echo "Could Not update history category " . db_error();
-			db_rollback();
-			exit(7);
-		}
-	}
-
-	//
-	//	Convert ArtifactGroup To Extra Field
-	//
-	$aef=new ArtifactExtraField($at);
-	$aef->create('Group',ARTIFACT_EXTRAFIELDTYPE_SELECT,0,0);
-	$groupbox_id=$aef->getID();
-	if (!$groupbox_id) {
-		echo "\nCould Not Get groupbox_id ".$aef->getErrorMessage();
-		db_rollback();
-		exit(8);
-	}
-	$resc=db_query("SELECT * FROM artifact_group WHERE group_artifact_id='$gaid'");
-	for ($j=0; $j<db_numrows($resc); $j++) {
-		$artgroup_id=db_result($resc,$j,'id');
-		$group_name=addslashes(db_result($resc,$j,'group_name'));
-		if (strlen($group_name) < 1) {
-			$group_name='[empty]';
-		}
-
-		$efe=new ArtifactExtraFieldElement($aef);
-		//$efe->create($group_name);
-		if (!$efe->create($group_name)) {
-			echo 'Group: '.$group_id.' Could not create group element: '.$group_name.' '.$efe->getErrorMessage();
-			db_rollback();
-			exit(5);
-		}
-//echo 'Artifact Group: Group: '.$group_id;
-//print_r($efe->data_array);
-		$efe_id=$efe->getID();
-		if (!$efe_id) {
-			echo "\nDid Not Get efe_id";
-			db_rollback();
-			exit(9);
-		}
-		$res2=db_query("INSERT INTO artifact_extra_field_data (artifact_id,field_data,extra_field_id)
-			SELECT artifact_id,$efe_id,$groupbox_id FROM artifact 
-			WHERE artifact_group_id='$artgroup_id' AND group_artifact_id='$gaid'");
-		if (!$res2) {
-			echo "Could Not Insert AEFD for artifactgroup " . db_error();
-			db_rollback();
-			exit(10);
-		}
-		$res3=db_query("UPDATE artifact_history SET old_value='$group_name',field_name='Group'
-			WHERE old_value='$artgroup_id' AND field_name='artifact_group_id' AND artifact_id IN
-            (SELECT artifact_id FROM artifact WHERE group_artifact_id='$gaid')");
-		if (!$res3) {
-			echo "Could Not update history artifactgroup " . db_error();
-			db_rollback();
-			exit(11);
-		}
-	}
-
-	if ($ur) {
-		//
-		//	Convert ArtifactResolution To Extra Field
-		//
-		$aef=new ArtifactExtraField($at);
-		$aef->create('Resolution',ARTIFACT_EXTRAFIELDTYPE_SELECT,0,0);
-		$resolutionbox_id=$aef->getID();
-		if (!$resolutionbox_id) {
-			echo "\nCould Not Get resolutionbox_id ".$aef->getErrorMessage();
-			db_rollback();
-			exit(12);
-		}
-		$resc=db_query("SELECT * FROM artifact_resolution");
-		for ($j=0; $j<db_numrows($resc); $j++) {
-			$resolution_id=db_result($resc,$j,'id');
-			$resolution_name=addslashes(db_result($resc,$j,'resolution_name'));
-			if (strlen($resolution_name) < 1) {
-				$resolution_name='[empty]';
-			}
-			$efe=new ArtifactExtraFieldElement($aef);
-		//	$efe->create($resolution_name);
-			if (!$efe->create($resolution_name)) {
-				echo 'Group: '.$group_id.' Could not create resolution element: '.$resolution_name.' '.$efe->getErrorMessage();
-				db_rollback();
-				exit(5);
-			}
-//echo 'Artifact Group: Group: '.$group_id;
-//print_r($efe->data_array);
-			$efe_id=$efe->getID();
-			if (!$efe_id) {
-				echo "\nDid Not Get efe_id";
-				db_rollback();
-				exit(13);
-			}
-			$res2=db_query("INSERT INTO artifact_extra_field_data (artifact_id,field_data,extra_field_id)
-				SELECT artifact_id,$efe_id,$resolutionbox_id FROM artifact 
-				WHERE resolution_id='$resolution_id' AND group_artifact_id='$gaid'");
-			if (!$res2) {
-				echo "Could Not Insert AEFD for resolution " . db_error();
-				db_rollback();
-				exit(14);
-			}
-			$res3=db_query("UPDATE artifact_history SET old_value='$resolution_name',field_name='Resolution'
-				WHERE old_value='$resolution_id' AND field_name='resolution_id' AND artifact_id IN 
-				(SELECT artifact_id FROM artifact WHERE group_artifact_id='$gaid')");
-			if (!$res3) {
-				echo "Could Not update history resolution " . db_error();
-				db_rollback();
-				exit(15);
-			}
-		}
-	}
-}
-db_commit();
-
-
-echo "\nSUCCESS";
-
-?>

Added: trunk/gforge_base/gforge-4.8/db/20050325-2.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20050325-2.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20050325-2.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,40 @@
+ALTER TABLE artifact_extra_field_list ADD COLUMN is_required INT;
+UPDATE artifact_extra_field_list SET is_required=0;
+ALTER TABLE artifact_extra_field_list ALTER COLUMN is_required SET NOT NULL;
+ALTER TABLE artifact_extra_field_list ALTER COLUMN is_required SET DEFAULT 0;
+
+ALTER TABLE artifact_extra_field_elements ADD COLUMN status_id INT;
+UPDATE artifact_extra_field_elements SET status_id=0;
+ALTER TABLE artifact_extra_field_elements ALTER COLUMN status_id SET NOT NULL;
+ALTER TABLE artifact_extra_field_elements ALTER COLUMN status_id SET DEFAULT 0;
+
+ALTER TABLE artifact_group_list ADD COLUMN custom_status_field INT;
+UPDATE artifact_group_list SET custom_status_field=0;
+ALTER TABLE artifact_group_list ALTER COLUMN custom_status_field SET NOT NULL;
+ALTER TABLE artifact_group_list ALTER COLUMN custom_status_field SET DEFAULT 0;
+
+ALTER TABLE artifact_group_list ADD COLUMN custom_renderer TEXT;
+
+CREATE TABLE artifact_query (
+	artifact_query_id SERIAL NOT NULL,
+	group_artifact_id integer NOT NULL 
+		CONSTRAINT artquery_groupartid_fk REFERENCES artifact_group_list(group_artifact_id) ON DELETE CASCADE,
+	user_id integer NOT NULL,
+	query_name text NOT NULL,
+	Constraint artifact_query_pkey Primary Key (artifact_query_id)
+);
+
+CREATE TABLE artifact_query_fields (
+	artifact_query_id integer NOT NULL 
+		CONSTRAINT artqueryelmnt_artqueryid REFERENCES artifact_query(artifact_query_id) ON DELETE CASCADE,
+	query_field_type text NOT NULL,
+	query_field_id int NOT NULL,
+	query_field_values text NOT NULL,
+	Constraint artifact_query_elements_pkey Primary Key (artifact_query_id,query_field_type,query_field_id)
+);
+
+ALTER TABLE doc_groups ADD COLUMN parent_doc_group INTEGER;
+UPDATE doc_groups SET parent_doc_group=0;
+ALTER TABLE doc_groups ALTER COLUMN parent_doc_group SET NOT NULL;
+ALTER TABLE doc_groups ALTER COLUMN parent_doc_group SET DEFAULT 0;
+CREATE INDEX docgroups_parentdocgroup ON doc_groups(parent_doc_group);

Deleted: trunk/gforge_base/gforge-4.8/db/20050325-3-drop.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20050325-3-drop.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20050325-3-drop.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,2 +0,0 @@
-DROP VIEW artifact_group_list_vw;
-DROP VIEW artifact_vw;

Added: trunk/gforge_base/gforge-4.8/db/20050325-3.php
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20050325-3.php	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20050325-3.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,248 @@
+#! /usr/bin/php5
+<?php
+/**
+ * GForge Extra Field Conversion Script
+ *
+ * Copyright 2004 GForge, LLC
+ * http://gforge.org/
+ *
+ * This file is part of GForge.
+ *
+ * GForge is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * GForge is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GForge; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  US
+ */
+
+require_once dirname(__FILE__).'/../www/env.inc.php';
+require_once $gfwww.'include/squal_pre.php';
+require_once $gfcommon.'tracker/ArtifactExtraField.class.php';
+require_once $gfcommon.'tracker/ArtifactExtraFieldElement.class.php';
+
+// First of all, try to create the "alias" field if it doesn't exist
+$res = db_query("SELECT alias FROM artifact_extra_field_list");
+if (!$res) {		// error, the field doesn't exist
+	$res = db_query("ALTER TABLE artifact_extra_field_list ADD COLUMN alias TEXT");
+	if (!$res) {
+		echo db_error();
+		exit(16);
+	}
+} 
+
+//
+//  Set up this script to run as the site admin
+//
+
+$res = db_query("SELECT user_id FROM user_group WHERE admin_flags='A' AND group_id='1'");
+
+if (!$res) {
+    echo db_error();
+    exit(1);
+}
+
+if (db_numrows($res) == 0) {
+    // There are no Admins yet, aborting without failing
+    echo "SUCCESS\n";
+    exit(0);
+}
+
+$id=db_result($res,0,0);
+session_set_new($id);
+
+db_begin();
+
+$res=db_query("SELECT group_id,group_artifact_id,use_resolution FROM artifact_group_list");
+
+for ($i=0; $i<db_numrows($res); $i++) {
+
+	$group_id=db_result($res,$i,'group_id');
+	$gaid=db_result($res,$i,'group_artifact_id');
+	$ur=db_result($res,$i,'use_resolution');
+
+	$g = group_get_object($group_id);
+	if (!$g || !is_object($g)) {
+		echo "\nCould Not Get Group: $group_id";
+		db_rollback();
+		exit(2);
+	}
+
+	$at = new ArtifactType($g,$gaid);
+	if (!$at || !is_object($at)) {
+		echo "\nCould Not Get ArtifactType: $gaid";
+		db_rollback();
+		exit(3);
+	}
+	//
+	//	Convert ArtifactCategory To Extra Field
+	//
+	$aef=new ArtifactExtraField($at);
+	$aef->create('Category',ARTIFACT_EXTRAFIELDTYPE_SELECT,0,0);
+	$catbox_id=$aef->getID();
+	if (!$catbox_id) {
+		echo "\nCould Not Get New Category Box ID: $gaid ".$aef->getErrorMessage();
+		db_rollback();
+		exit(4);
+	}
+	$resc=db_query("SELECT * FROM artifact_category WHERE group_artifact_id='$gaid'");
+	for ($j=0; $j<db_numrows($resc); $j++) {
+		$cat_id=db_result($resc,$j,'id');
+		$cat_name=addslashes(db_result($resc,$j,'category_name'));
+		if (strlen($cat_name) < 1) {
+			$cat_name='[empty]';
+		}
+
+		$efe=new ArtifactExtraFieldElement($aef);
+		#DEBUG
+		#$efe->create($cat_name);
+		if (!$efe->create($cat_name)) {
+			echo 'Group: '.$group_id.' Could not create category element: '.$cat_name.' '.$efe->getErrorMessage();
+			db_rollback();
+			exit(5);
+		}
+		$efe_id=$efe->getID();
+//echo 'Artifact Category: Group: '.$group_id;
+//print_r($efe->data_array);
+		if (!$efe_id) {
+			#DEBUG echo "\nDid Not Get efe_id";
+			echo "\nDid Not Get efe_id (group_id: $group_id)";
+			db_rollback();
+			exit(5);
+		}
+		$res2=db_query("INSERT INTO artifact_extra_field_data (artifact_id,field_data,extra_field_id)
+			SELECT artifact_id,$efe_id,$catbox_id FROM artifact 
+			WHERE category_id='$cat_id' AND group_artifact_id='$gaid'");
+		if (!$res2) {
+			echo "Could Not Insert AEFD for category " . db_error();
+			db_rollback();
+			exit(6);
+		}
+		$res3=db_query("UPDATE artifact_history SET old_value='$cat_name',field_name='Category'
+			WHERE old_value='$cat_id' AND field_name='category_id' AND artifact_id IN
+            (SELECT artifact_id FROM artifact WHERE group_artifact_id='$gaid')");
+		if (!$res3) {
+			echo "Could Not update history category " . db_error();
+			db_rollback();
+			exit(7);
+		}
+	}
+
+	//
+	//	Convert ArtifactGroup To Extra Field
+	//
+	$aef=new ArtifactExtraField($at);
+	$aef->create('Group',ARTIFACT_EXTRAFIELDTYPE_SELECT,0,0);
+	$groupbox_id=$aef->getID();
+	if (!$groupbox_id) {
+		echo "\nCould Not Get groupbox_id ".$aef->getErrorMessage();
+		db_rollback();
+		exit(8);
+	}
+	$resc=db_query("SELECT * FROM artifact_group WHERE group_artifact_id='$gaid'");
+	for ($j=0; $j<db_numrows($resc); $j++) {
+		$artgroup_id=db_result($resc,$j,'id');
+		$group_name=addslashes(db_result($resc,$j,'group_name'));
+		if (strlen($group_name) < 1) {
+			$group_name='[empty]';
+		}
+
+		$efe=new ArtifactExtraFieldElement($aef);
+		//$efe->create($group_name);
+		if (!$efe->create($group_name)) {
+			echo 'Group: '.$group_id.' Could not create group element: '.$group_name.' '.$efe->getErrorMessage();
+			db_rollback();
+			exit(5);
+		}
+//echo 'Artifact Group: Group: '.$group_id;
+//print_r($efe->data_array);
+		$efe_id=$efe->getID();
+		if (!$efe_id) {
+			echo "\nDid Not Get efe_id";
+			db_rollback();
+			exit(9);
+		}
+		$res2=db_query("INSERT INTO artifact_extra_field_data (artifact_id,field_data,extra_field_id)
+			SELECT artifact_id,$efe_id,$groupbox_id FROM artifact 
+			WHERE artifact_group_id='$artgroup_id' AND group_artifact_id='$gaid'");
+		if (!$res2) {
+			echo "Could Not Insert AEFD for artifactgroup " . db_error();
+			db_rollback();
+			exit(10);
+		}
+		$res3=db_query("UPDATE artifact_history SET old_value='$group_name',field_name='Group'
+			WHERE old_value='$artgroup_id' AND field_name='artifact_group_id' AND artifact_id IN
+            (SELECT artifact_id FROM artifact WHERE group_artifact_id='$gaid')");
+		if (!$res3) {
+			echo "Could Not update history artifactgroup " . db_error();
+			db_rollback();
+			exit(11);
+		}
+	}
+
+	if ($ur) {
+		//
+		//	Convert ArtifactResolution To Extra Field
+		//
+		$aef=new ArtifactExtraField($at);
+		$aef->create('Resolution',ARTIFACT_EXTRAFIELDTYPE_SELECT,0,0);
+		$resolutionbox_id=$aef->getID();
+		if (!$resolutionbox_id) {
+			echo "\nCould Not Get resolutionbox_id ".$aef->getErrorMessage();
+			db_rollback();
+			exit(12);
+		}
+		$resc=db_query("SELECT * FROM artifact_resolution");
+		for ($j=0; $j<db_numrows($resc); $j++) {
+			$resolution_id=db_result($resc,$j,'id');
+			$resolution_name=addslashes(db_result($resc,$j,'resolution_name'));
+			if (strlen($resolution_name) < 1) {
+				$resolution_name='[empty]';
+			}
+			$efe=new ArtifactExtraFieldElement($aef);
+		//	$efe->create($resolution_name);
+			if (!$efe->create($resolution_name)) {
+				echo 'Group: '.$group_id.' Could not create resolution element: '.$resolution_name.' '.$efe->getErrorMessage();
+				db_rollback();
+				exit(5);
+			}
+//echo 'Artifact Group: Group: '.$group_id;
+//print_r($efe->data_array);
+			$efe_id=$efe->getID();
+			if (!$efe_id) {
+				echo "\nDid Not Get efe_id";
+				db_rollback();
+				exit(13);
+			}
+			$res2=db_query("INSERT INTO artifact_extra_field_data (artifact_id,field_data,extra_field_id)
+				SELECT artifact_id,$efe_id,$resolutionbox_id FROM artifact 
+				WHERE resolution_id='$resolution_id' AND group_artifact_id='$gaid'");
+			if (!$res2) {
+				echo "Could Not Insert AEFD for resolution " . db_error();
+				db_rollback();
+				exit(14);
+			}
+			$res3=db_query("UPDATE artifact_history SET old_value='$resolution_name',field_name='Resolution'
+				WHERE old_value='$resolution_id' AND field_name='resolution_id' AND artifact_id IN 
+				(SELECT artifact_id FROM artifact WHERE group_artifact_id='$gaid')");
+			if (!$res3) {
+				echo "Could Not update history resolution " . db_error();
+				db_rollback();
+				exit(15);
+			}
+		}
+	}
+}
+db_commit();
+
+
+echo "\nSUCCESS";
+
+?>

Deleted: trunk/gforge_base/gforge-4.8/db/20050325-3.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20050325-3.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20050325-3.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,42 +0,0 @@
-DROP TABLE artifact_category CASCADE;
-DROP TABLE artifact_group CASCADE;
-DROP TABLE artifact_resolution CASCADE;
-ALTER TABLE artifact DROP COLUMN artifact_group_id;
-ALTER TABLE artifact DROP COLUMN resolution_id;
-ALTER TABLE artifact DROP COLUMN category_id;
-ALTER TABLE artifact_group_list DROP COLUMN use_resolution CASCADE;
-
-CREATE VIEW artifact_group_list_vw AS
-SELECT agl.*,aca.count,aca.open_count
-        FROM artifact_group_list agl
-        LEFT JOIN artifact_counts_agg aca USING (group_artifact_id);
-
-CREATE VIEW artifact_vw
-AS
-SELECT  artifact.artifact_id,
-        artifact.group_artifact_id,
-        artifact.status_id,
-        artifact.priority,
-        artifact.submitted_by,
-        artifact.assigned_to,
-        artifact.open_date,
-        artifact.close_date,
-        artifact.summary,
-        artifact.details,
-        u.user_name AS assigned_unixname,
-        u.realname AS assigned_realname,
-        u.email AS assigned_email,
-        u2.user_name AS submitted_unixname,
-        u2.realname AS submitted_realname,
-        u2.email AS submitted_email,
-        artifact_status.status_name,
-        artifact.last_modified_date
-FROM    users u,
-        users u2,
-        artifact_status,
-        artifact
-WHERE   artifact.assigned_to = u.user_id
-AND     artifact.submitted_by = u2.user_id
-AND     artifact.status_id = artifact_status.id;
-
-DELETE FROM user_preferences WHERE preference_name LIKE 'art_cust%';

Added: trunk/gforge_base/gforge-4.8/db/20050325-4-drop.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20050325-4-drop.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20050325-4-drop.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,2 @@
+DROP VIEW artifact_group_list_vw;
+DROP VIEW artifact_vw;

Added: trunk/gforge_base/gforge-4.8/db/20050325-5.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20050325-5.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20050325-5.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,42 @@
+DROP TABLE artifact_category CASCADE;
+DROP TABLE artifact_group CASCADE;
+DROP TABLE artifact_resolution CASCADE;
+ALTER TABLE artifact DROP COLUMN artifact_group_id;
+ALTER TABLE artifact DROP COLUMN resolution_id;
+ALTER TABLE artifact DROP COLUMN category_id;
+ALTER TABLE artifact_group_list DROP COLUMN use_resolution CASCADE;
+
+CREATE VIEW artifact_group_list_vw AS
+SELECT agl.*,aca.count,aca.open_count
+        FROM artifact_group_list agl
+        LEFT JOIN artifact_counts_agg aca USING (group_artifact_id);
+
+CREATE VIEW artifact_vw
+AS
+SELECT  artifact.artifact_id,
+        artifact.group_artifact_id,
+        artifact.status_id,
+        artifact.priority,
+        artifact.submitted_by,
+        artifact.assigned_to,
+        artifact.open_date,
+        artifact.close_date,
+        artifact.summary,
+        artifact.details,
+        u.user_name AS assigned_unixname,
+        u.realname AS assigned_realname,
+        u.email AS assigned_email,
+        u2.user_name AS submitted_unixname,
+        u2.realname AS submitted_realname,
+        u2.email AS submitted_email,
+        artifact_status.status_name,
+        artifact.last_modified_date
+FROM    users u,
+        users u2,
+        artifact_status,
+        artifact
+WHERE   artifact.assigned_to = u.user_id
+AND     artifact.submitted_by = u2.user_id
+AND     artifact.status_id = artifact_status.id;
+
+DELETE FROM user_preferences WHERE preference_name LIKE 'art_cust%';

Modified: trunk/gforge_base/gforge-4.8/db/20050617.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20050617.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20050617.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -23,6 +23,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  US
  */
 
+require_once dirname(__FILE__).'/../www/env.inc.php';
 require_once $gfwww.'include/squal_pre.php';
 
 // these names can't be assigned to an extra field's alias because they are already

Modified: trunk/gforge_base/gforge-4.8/db/20050804-2.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20050804-2.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20050804-2.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -22,7 +22,8 @@
  * along with GForge; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  US
  */
- 
+
+require_once dirname(__FILE__).'/../www/env.inc.php';
 require_once $gfwww.'include/squal_pre.php';
 
 $res = db_query("SELECT * FROM doc_data");

Added: trunk/gforge_base/gforge-4.8/db/20050822-1-drops.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20050822-1-drops.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20050822-1-drops.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,2 @@
+drop table forum_attachment;
+drop table forum_attachmenttype;

Added: trunk/gforge_base/gforge-4.8/db/20050822-2.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20050822-2.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20050822-2.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,116 @@
+--
+-- Modification to forum table for bbcode support
+--
+
+alter table forum add bbcode_uid character varying(15);
+
+--
+-- forum_attachment
+--
+
+
+--
+-- Name: forum_attachment; Type: TABLE; Schema: public; Owner: gforge; Tablespace: 
+--
+
+
+CREATE TABLE forum_attachment (
+    attachmentid serial NOT NULL,
+    userid integer DEFAULT 0 NOT NULL,
+    dateline integer DEFAULT 0 NOT NULL,
+    filename character varying(100) DEFAULT ''::character varying NOT NULL,
+    filedata text NOT NULL,
+    visible smallint DEFAULT (0)::smallint NOT NULL,
+    counter smallint DEFAULT (0)::smallint NOT NULL,
+    filesize integer DEFAULT 0 NOT NULL,
+    msg_id integer DEFAULT 0 NOT NULL,
+    filehash character varying(32) DEFAULT ''::character varying NOT NULL
+);
+
+
+
+--
+-- Name: filehash; Type: CONSTRAINT; Schema: public; Owner: gforge; Tablespace: 
+--
+
+ALTER TABLE ONLY forum_attachment
+    ADD CONSTRAINT filehash UNIQUE (filehash);
+
+
+
+--
+-- Name: forum_attachment_key; Type: CONSTRAINT; Schema: public; Owner: gforge; Tablespace: 
+--
+
+ALTER TABLE ONLY forum_attachment
+    ADD CONSTRAINT forum_attachment_key PRIMARY KEY (attachmentid);
+
+
+
+--
+-- Name: msg_id; Type: CONSTRAINT; Schema: public; Owner: gforge; Tablespace: 
+--
+
+ALTER TABLE ONLY forum_attachment
+    ADD CONSTRAINT msg_id UNIQUE (msg_id);
+
+
+
+--
+-- forum_attachmenttype
+--
+
+
+--
+-- Name: forum_attachmenttype; Type: TABLE; Schema: public; Owner: gforge; Tablespace: 
+--
+
+
+CREATE TABLE forum_attachmenttype (
+    extension character varying(20) DEFAULT ''::character varying NOT NULL,
+    mimetype character varying(255) DEFAULT ''::character varying NOT NULL,
+    size integer DEFAULT 0 NOT NULL,
+    width smallint DEFAULT 0::smallint NOT NULL,
+    height smallint DEFAULT 0::smallint NOT NULL,
+    enabled smallint DEFAULT 1::smallint NOT NULL,
+    display smallint DEFAULT 0::smallint NOT NULL
+);
+
+
+
+--
+-- Data for Name: forum_attachmenttype; Type: TABLE DATA; Schema: public; Owner: gforge
+--
+
+INSERT INTO forum_attachmenttype VALUES ('gif', 'a:1:{i:0;s:23:"Content-type: image/gif";}', 20000, 620, 280, 1, 0);
+INSERT INTO forum_attachmenttype VALUES ('jpeg', 'a:1:{i:0;s:24:"Content-type: image/jpeg";}', 20000, 620, 280, 1, 0);
+INSERT INTO forum_attachmenttype VALUES ('jpg', 'a:1:{i:0;s:24:"Content-type: image/jpeg";}', 100000, 0, 0, 1, 0);
+INSERT INTO forum_attachmenttype VALUES ('jpe', 'a:1:{i:0;s:24:"Content-type: image/jpeg";}', 20000, 620, 280, 1, 0);
+INSERT INTO forum_attachmenttype VALUES ('png', 'a:1:{i:0;s:23:"Content-type: image/png";}', 20000, 620, 280, 1, 0);
+INSERT INTO forum_attachmenttype VALUES ('txt', 'a:1:{i:0;s:24:"Content-type: plain/text";}', 20000, 0, 0, 1, 2);
+INSERT INTO forum_attachmenttype VALUES ('doc', 'a:2:{i:0;s:20:"Accept-ranges: bytes";i:1;s:32:"Content-type: application/msword";}', 20000, 0, 0, 1, 0);
+INSERT INTO forum_attachmenttype VALUES ('pdf', 'a:1:{i:0;s:29:"Content-type: application/pdf";}', 20000, 0, 0, 1, 0);
+INSERT INTO forum_attachmenttype VALUES ('bmp', 'a:1:{i:0;s:26:"Content-type: image/bitmap";}', 20000, 620, 280, 1, 0);
+INSERT INTO forum_attachmenttype VALUES ('psd', 'a:1:{i:0;s:29:"Content-type: unknown/unknown";}', 20000, 0, 0, 1, 0);
+INSERT INTO forum_attachmenttype VALUES ('zip', 'a:1:{i:0;s:29:"Content-type: application/zip";}', 100000, 0, 0, 1, 0);
+
+
+--
+-- Name: forum_attachmenttype_key; Type: CONSTRAINT; Schema: public; Owner: gforge; Tablespace: 
+--
+
+ALTER TABLE ONLY forum_attachmenttype
+    ADD CONSTRAINT forum_attachmenttype_key PRIMARY KEY (extension);
+
+
+--
+-- change the views
+--
+
+DROP VIEW forum_user_vw;
+
+CREATE VIEW forum_user_vw AS
+    SELECT forum.msg_id, forum.group_forum_id, forum.posted_by, forum.subject, forum.body, forum.post_date, forum.is_followup_to, forum.thread_id, forum.has_followups, forum.most_recent_date,
+forum.bbcode_uid, users.user_name, users.realname FROM forum, users WHERE (forum.posted_by = users.user_id);
+
+

Deleted: trunk/gforge_base/gforge-4.8/db/20050822-drops.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20050822-drops.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20050822-drops.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,2 +0,0 @@
-drop table forum_attachment;
-drop table forum_attachmenttype;

Deleted: trunk/gforge_base/gforge-4.8/db/20050822.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20050822.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20050822.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,120 +0,0 @@
---
--- Modification to forum table for bbcode support
---
-
-alter table forum add bbcode_uid character varying(15);
-
---
--- forum_attachment
---
-
-
---
--- Name: forum_attachment; Type: TABLE; Schema: public; Owner: gforge; Tablespace: 
---
-
-
-CREATE TABLE forum_attachment (
-    attachmentid serial NOT NULL,
-    userid integer DEFAULT 0 NOT NULL,
-    dateline integer DEFAULT 0 NOT NULL,
-    filename character varying(100) DEFAULT ''::character varying NOT NULL,
-    filedata text NOT NULL,
-    visible smallint DEFAULT (0)::smallint NOT NULL,
-    counter smallint DEFAULT (0)::smallint NOT NULL,
-    filesize integer DEFAULT 0 NOT NULL,
-    msg_id integer DEFAULT 0 NOT NULL,
-    filehash character varying(32) DEFAULT ''::character varying NOT NULL
-);
-
-
-
---
--- Name: filehash; Type: CONSTRAINT; Schema: public; Owner: gforge; Tablespace: 
---
-
-ALTER TABLE ONLY forum_attachment
-    ADD CONSTRAINT filehash UNIQUE (filehash);
-
-
-
---
--- Name: forum_attachment_key; Type: CONSTRAINT; Schema: public; Owner: gforge; Tablespace: 
---
-
-ALTER TABLE ONLY forum_attachment
-    ADD CONSTRAINT forum_attachment_key PRIMARY KEY (attachmentid);
-
-
-
---
--- Name: msg_id; Type: CONSTRAINT; Schema: public; Owner: gforge; Tablespace: 
---
-
-ALTER TABLE ONLY forum_attachment
-    ADD CONSTRAINT msg_id UNIQUE (msg_id);
-
-
-
---
--- forum_attachmenttype
---
-
-
---
--- Name: forum_attachmenttype; Type: TABLE; Schema: public; Owner: gforge; Tablespace: 
---
-
-
-CREATE TABLE forum_attachmenttype (
-    extension character varying(20) DEFAULT ''::character varying NOT NULL,
-    mimetype character varying(255) DEFAULT ''::character varying NOT NULL,
-    size integer DEFAULT 0 NOT NULL,
-    width smallint DEFAULT 0::smallint NOT NULL,
-    height smallint DEFAULT 0::smallint NOT NULL,
-    enabled smallint DEFAULT 1::smallint NOT NULL,
-    display smallint DEFAULT 0::smallint NOT NULL
-);
-
-
-
---
--- Data for Name: forum_attachmenttype; Type: TABLE DATA; Schema: public; Owner: gforge
---
-
---COPY forum_attachmenttype (extension, mimetype, size, width, height, enabled, display) FROM stdin;
---compat for older version
-COPY forum_attachmenttype FROM stdin;
-gif	a:1:{i:0;s:23:"Content-type: image/gif";}	20000	620	280	1	0
-jpeg	a:1:{i:0;s:24:"Content-type: image/jpeg";}	20000	620	280	1	0
-jpg	a:1:{i:0;s:24:"Content-type: image/jpeg";}	100000	0	0	1	0
-jpe	a:1:{i:0;s:24:"Content-type: image/jpeg";}	20000	620	280	1	0
-txt	a:1:{i:0;s:24:"Content-type: plain/text";}	20000	0	0	1	2
-png	a:1:{i:0;s:23:"Content-type: image/png";}	20000	620	280	1	0
-doc	a:2:{i:0;s:20:"Accept-ranges: bytes";i:1;s:32:"Content-type: application/msword";}	20000	0	0	1	0
-pdf	a:1:{i:0;s:29:"Content-type: application/pdf";}	20000	0	0	1	0
-bmp	a:1:{i:0;s:26:"Content-type: image/bitmap";}	20000	620	280	1	0
-psd	a:1:{i:0;s:29:"Content-type: unknown/unknown";}	20000	0	0	1	0
-zip	a:1:{i:0;s:29:"Content-type: application/zip";}	100000	0	0	1	0
-\.
-
-
---
--- Name: forum_attachmenttype_key; Type: CONSTRAINT; Schema: public; Owner: gforge; Tablespace: 
---
-
-ALTER TABLE ONLY forum_attachmenttype
-    ADD CONSTRAINT forum_attachmenttype_key PRIMARY KEY (extension);
-
-
---
--- change the views
---
-
-DROP VIEW forum_user_vw;
-
-CREATE VIEW forum_user_vw AS
-    SELECT forum.msg_id, forum.group_forum_id, forum.posted_by, forum.subject, forum.body, forum.post_date, forum.is_followup_to, forum.thread_id, forum.has_followups, forum.most_recent_date,
-forum.bbcode_uid, users.user_name, users.realname FROM forum, users WHERE (forum.posted_by = users.user_id);
-
-

Modified: trunk/gforge_base/gforge-4.8/db/20051003.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20051003.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20051003.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,5 +1,5 @@
---ALTER TABLE plugin_cvstracker_data_master DROP COLUMN cvs_date;
---ALTER TABLE plugin_cvstracker_data_master ADD COLUMN cvs_date int;
---UPDATE plugin_cvstracker_data_master SET cvs_date=extract(epoch from now());
---ALTER TABLE plugin_cvstracker_data_master ALTER COLUMN cvs_date SET NOT NULL;
-
+ALTER TABLE plugin_cvstracker_data_master ADD COLUMN cvs_date_int int;
+UPDATE plugin_cvstracker_data_master SET cvs_date_int=extract(epoch from cvs_date);
+ALTER TABLE plugin_cvstracker_data_master DROP COLUMN cvs_date;
+ALTER TABLE plugin_cvstracker_data_master RENAME COLUMN cvs_date_int TO cvs_date;
+ALTER TABLE plugin_cvstracker_data_master ALTER COLUMN cvs_date SET NOT NULL;
\ No newline at end of file

Added: trunk/gforge_base/gforge-4.8/db/20060216-1-drops.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20060216-1-drops.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20060216-1-drops.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1 @@
+DROP VIEW activity_vw;

Added: trunk/gforge_base/gforge-4.8/db/20060216-2-debian-nocommit.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20060216-2-debian-nocommit.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20060216-2-debian-nocommit.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,38 @@
+
+CREATE VIEW activity_vw AS 
+SELECT 
+agl.group_id, 'trackeropen'::text AS section, agl.group_artifact_id AS ref_id,
+a.artifact_id as subref_id, a.summary as description, a.open_date AS activity_date, u.user_id, u.user_name, u.realname
+FROM artifact_group_list agl JOIN artifact a using (group_artifact_id), 
+users u WHERE u.user_id=a.submitted_by
+UNION
+SELECT 
+agl.group_id, 'trackerclose'::text AS section, agl.group_artifact_id AS ref_id,
+a.artifact_id as subref_id, a.summary as description, a.close_date AS activity_date, u.user_id, u.user_name, u.realname
+FROM artifact_group_list agl JOIN artifact a using (group_artifact_id), users u WHERE u.user_id=a.assigned_to 
+--actually should join against  
+AND a.close_date > 0
+UNION
+SELECT 
+frsp.group_id, 'frsrelease'::text as section,frsp.package_id as ref_id, 
+frsr.release_id as subref_id, frsr.name AS description, frsr.release_date AS activity_date, 
+u.user_id, u.user_name, u.realname FROM frs_package frsp JOIN frs_release frsr USING (package_id), users u WHERE
+u.user_id=frsr.released_by 
+UNION
+SELECT 
+fgl.group_id, 'forumpost'::text as section,fgl.group_forum_id as ref_id, forum.msg_id 
+as subref_id, forum.subject AS description, forum.post_date AS activity_date, u.user_id, 
+u.user_name, u.realname FROM forum_group_list fgl JOIN forum USING (group_forum_id), users u WHERE
+u.user_id=forum.posted_by 
+;
+
+CREATE TABLE group_activity_monitor (
+group_id int not null CONSTRAINT group_id REFERENCES groups(group_id) ON DELETE CASCADE,
+user_id int NOT NULL CONSTRAINT userid_fk REFERENCES users(user_id),
+filter text,
+PRIMARY KEY (group_id,user_id)
+);
+
+CREATE RULE groupactivity_userdelete_rule AS ON UPDATE TO USERS DO
+	DELETE FROM group_activity_monitor WHERE user_id =(CASE WHEN NEW.status='D' 
+	THEN NEW.user_id ELSE 0 END);

Added: trunk/gforge_base/gforge-4.8/db/20060216-2.sql
===================================================================
--- trunk/gforge_base/gforge-4.8/db/20060216-2.sql	                        (rev 0)
+++ trunk/gforge_base/gforge-4.8/db/20060216-2.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -0,0 +1,46 @@
+CREATE VIEW activity_vw AS 
+SELECT 
+agl.group_id, 'trackeropen'::text AS section, agl.group_artifact_id AS ref_id,
+a.artifact_id as subref_id, a.summary as description, a.open_date AS activity_date, u.user_id, u.user_name, u.realname
+FROM artifact_group_list agl JOIN artifact a using (group_artifact_id), 
+users u WHERE u.user_id=a.submitted_by
+UNION
+SELECT 
+agl.group_id, 'trackerclose'::text AS section, agl.group_artifact_id AS ref_id,
+a.artifact_id as subref_id, a.summary as description, a.close_date AS activity_date, u.user_id, u.user_name, u.realname
+FROM artifact_group_list agl JOIN artifact a using (group_artifact_id), users u WHERE u.user_id=a.assigned_to 
+--actually should join against  
+AND a.close_date > 0
+UNION
+SELECT 
+agl.group_id, 'commit'::text AS section, agl.group_artifact_id AS ref_id,
+a.artifact_id as subref_id, pcdm.log_text AS description, pcdm.cvs_date AS activity_date, u.user_id, u.user_name, u.realname 
+FROM artifact_group_list agl JOIN artifact a using (group_artifact_id), 
+plugin_cvstracker_data_master pcdm, plugin_cvstracker_data_artifact pcda, users u 
+WHERE pcdm.holder_id=pcda.id 
+AND pcda.group_artifact_id=a.artifact_id
+AND u.user_name=pcdm.author
+UNION
+SELECT 
+frsp.group_id, 'frsrelease'::text as section,frsp.package_id as ref_id, 
+frsr.release_id as subref_id, frsr.name AS description, frsr.release_date AS activity_date, 
+u.user_id, u.user_name, u.realname FROM frs_package frsp JOIN frs_release frsr USING (package_id), users u WHERE
+u.user_id=frsr.released_by 
+UNION
+SELECT 
+fgl.group_id, 'forumpost'::text as section,fgl.group_forum_id as ref_id, forum.msg_id 
+as subref_id, forum.subject AS description, forum.post_date AS activity_date, u.user_id, 
+u.user_name, u.realname FROM forum_group_list fgl JOIN forum USING (group_forum_id), users u WHERE
+u.user_id=forum.posted_by 
+;
+
+CREATE TABLE group_activity_monitor (
+group_id int not null CONSTRAINT group_id REFERENCES groups(group_id) ON DELETE CASCADE,
+user_id int NOT NULL CONSTRAINT userid_fk REFERENCES users(user_id),
+filter text,
+PRIMARY KEY (group_id,user_id)
+);
+
+CREATE RULE groupactivity_userdelete_rule AS ON UPDATE TO USERS DO
+	DELETE FROM group_activity_monitor WHERE user_id =(CASE WHEN NEW.status='D' 
+	THEN NEW.user_id ELSE 0 END);

Deleted: trunk/gforge_base/gforge-4.8/db/20060216-drops.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20060216-drops.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20060216-drops.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1 +0,0 @@
-DROP VIEW activity_vw;

Deleted: trunk/gforge_base/gforge-4.8/db/20060216-nocommit.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20060216-nocommit.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20060216-nocommit.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,38 +0,0 @@
-
-CREATE VIEW activity_vw AS 
-SELECT 
-agl.group_id, 'trackeropen'::text AS section, agl.group_artifact_id AS ref_id,
-a.artifact_id as subref_id, a.summary as description, a.open_date AS activity_date, u.user_id, u.user_name, u.realname
-FROM artifact_group_list agl JOIN artifact a using (group_artifact_id), 
-users u WHERE u.user_id=a.submitted_by
-UNION
-SELECT 
-agl.group_id, 'trackerclose'::text AS section, agl.group_artifact_id AS ref_id,
-a.artifact_id as subref_id, a.summary as description, a.close_date AS activity_date, u.user_id, u.user_name, u.realname
-FROM artifact_group_list agl JOIN artifact a using (group_artifact_id), users u WHERE u.user_id=a.assigned_to 
---actually should join against  
-AND a.close_date > 0
-UNION
-SELECT 
-frsp.group_id, 'frsrelease'::text as section,frsp.package_id as ref_id, 
-frsr.release_id as subref_id, frsr.name AS description, frsr.release_date AS activity_date, 
-u.user_id, u.user_name, u.realname FROM frs_package frsp JOIN frs_release frsr USING (package_id), users u WHERE
-u.user_id=frsr.released_by 
-UNION
-SELECT 
-fgl.group_id, 'forumpost'::text as section,fgl.group_forum_id as ref_id, forum.msg_id 
-as subref_id, forum.subject AS description, forum.post_date AS activity_date, u.user_id, 
-u.user_name, u.realname FROM forum_group_list fgl JOIN forum USING (group_forum_id), users u WHERE
-u.user_id=forum.posted_by 
-;
-
-CREATE TABLE group_activity_monitor (
-group_id int not null CONSTRAINT group_id REFERENCES groups(group_id) ON DELETE CASCADE,
-user_id int NOT NULL CONSTRAINT userid_fk REFERENCES users(user_id),
-filter text,
-PRIMARY KEY (group_id,user_id)
-);
-
-CREATE RULE groupactivity_userdelete_rule AS ON UPDATE TO USERS DO
-	DELETE FROM group_activity_monitor WHERE user_id =(CASE WHEN NEW.status='D' 
-	THEN NEW.user_id ELSE 0 END);

Deleted: trunk/gforge_base/gforge-4.8/db/20060216.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/20060216.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/20060216.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,47 +0,0 @@
-
-CREATE VIEW activity_vw AS 
-SELECT 
-agl.group_id, 'trackeropen'::text AS section, agl.group_artifact_id AS ref_id,
-a.artifact_id as subref_id, a.summary as description, a.open_date AS activity_date, u.user_id, u.user_name, u.realname
-FROM artifact_group_list agl JOIN artifact a using (group_artifact_id), 
-users u WHERE u.user_id=a.submitted_by
-UNION
-SELECT 
-agl.group_id, 'trackerclose'::text AS section, agl.group_artifact_id AS ref_id,
-a.artifact_id as subref_id, a.summary as description, a.close_date AS activity_date, u.user_id, u.user_name, u.realname
-FROM artifact_group_list agl JOIN artifact a using (group_artifact_id), users u WHERE u.user_id=a.assigned_to 
---actually should join against  
-AND a.close_date > 0
-UNION
-SELECT 
-agl.group_id, 'commit'::text AS section, agl.group_artifact_id AS ref_id,
-a.artifact_id as subref_id, pcdm.log_text AS description, pcdm.cvs_date AS activity_date, u.user_id, u.user_name, u.realname 
-FROM artifact_group_list agl JOIN artifact a using (group_artifact_id), 
-plugin_cvstracker_data_master pcdm, plugin_cvstracker_data_artifact pcda, users u 
-WHERE pcdm.holder_id=pcda.id 
-AND pcda.group_artifact_id=a.artifact_id
-AND u.user_name=pcdm.author
-UNION
-SELECT 
-frsp.group_id, 'frsrelease'::text as section,frsp.package_id as ref_id, 
-frsr.release_id as subref_id, frsr.name AS description, frsr.release_date AS activity_date, 
-u.user_id, u.user_name, u.realname FROM frs_package frsp JOIN frs_release frsr USING (package_id), users u WHERE
-u.user_id=frsr.released_by 
-UNION
-SELECT 
-fgl.group_id, 'forumpost'::text as section,fgl.group_forum_id as ref_id, forum.msg_id 
-as subref_id, forum.subject AS description, forum.post_date AS activity_date, u.user_id, 
-u.user_name, u.realname FROM forum_group_list fgl JOIN forum USING (group_forum_id), users u WHERE
-u.user_id=forum.posted_by 
-;
-
-CREATE TABLE group_activity_monitor (
-group_id int not null CONSTRAINT group_id REFERENCES groups(group_id) ON DELETE CASCADE,
-user_id int NOT NULL CONSTRAINT userid_fk REFERENCES users(user_id),
-filter text,
-PRIMARY KEY (group_id,user_id)
-);
-
-CREATE RULE groupactivity_userdelete_rule AS ON UPDATE TO USERS DO
-	DELETE FROM group_activity_monitor WHERE user_id =(CASE WHEN NEW.status='D' 
-	THEN NEW.user_id ELSE 0 END);

Modified: trunk/gforge_base/gforge-4.8/db/upgrade-db.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/db/upgrade-db.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/db/upgrade-db.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -107,7 +107,7 @@
 					if (strlen($name) >= 8) {
 						$date_aux = substr($name, 0, 8);
 						$type_aux = substr($file, $pos + 1);
-						if ((int) $date_aux > 20000000 && $type_aux=='sql' || $type_aux=='php') {
+						if ((int) $date_aux > 20000000 && ($type_aux=='sql' || $type_aux=='php') && strpos($file, 'debian') === false) {
 							$data[] = array('date'=>$date_aux, 'filename'=>$file, 'ext'=>$type_aux);
 						}
 					}
@@ -115,12 +115,17 @@
 			}
 			closedir($dh);
 		}
-		sort($data);
+		usort($data, 'compare_scripts');
 		reset($data);
 	}
+	
 	return $data;
 }
 
+function compare_scripts($script1, $script2) {
+	return strcmp($script1['filename'], $script2['filename']);
+}
+
 function run_script($script) {
 	global $db_path;
 	$return = false;
@@ -183,7 +188,7 @@
 	
 	$content = preg_replace("/--(.*)/", '', $content);
 	
-	$parts = explode(';', $content);
+	$parts = explode(";\n", $content);
 	$queries = array();
 	$query_temp = '';
 	$is_function = false;
@@ -206,7 +211,7 @@
 		} else if (in_string($q, 'copy') && in_string($q, 'from stdin')) {
 			while (!in_string($q, '\.')) {
 				$i++;
-				$q = $q.';'.$parts[$i];
+				$q = $q.";\n".$parts[$i];
 			}
 			$aux = explode('\.', $q, 2);
 			$queries[] = ltrim($aux[0]."\\.\n");
@@ -216,7 +221,7 @@
 		// Else, we just add it up
 		} else {
 			if (trim($q) != '') {
-				$queries[] = trim($q);
+				$queries[] = trim(preg_replace("/\s+/", ' ', str_replace("\n", ' ', $q)));
 			}
 		}
 	}
@@ -230,7 +235,7 @@
 		if (in_string($query, 'drop table')) {
 			$aux = explode(' ', trim($query));
 			if (count($aux) == 3 || count($aux) == 4) { // PERFECT!
-				drop_table_if_exists($aux[2]);
+				drop_table_if_exists($aux[2], (count($aux) == 4) && preg_match('/CASCADE/i', trim($aux[3])));
 			} else {
 				print_r($aux);
 			}
@@ -258,6 +263,21 @@
 			} else {
 				print_r($aux);
 			}
+		// Check if it is a DROP INDEX
+		} else if (in_string($query, 'drop index')) {
+			$aux = explode(' ', trim($query));
+			if (count($aux) == 3 || count($aux) == 4) { // PERFECT!
+				drop_index_if_exists($aux[2]);
+			} else {
+				print_r($aux);
+			}
+		// Check if it is a DROP CONSTRAINT
+		} else if (in_string($query, 'alter table') && in_string($query, 'drop constraint')) {
+			$aux = explode(' ', trim($query));
+			$table = trim($aux[2], "\" ");
+			$constraint = trim($aux[5], "\" ");
+			
+			drop_constraint_if_exists($table, $constraint, $query);
 		} else {
 			$res = db_query($query);
 			if (!$res) {
@@ -266,7 +286,7 @@
 				show("Continue executing ([Y]es/[N]o)?\n");
 				// Read the input
 				$answer = strtolower(trim(fgets(STDIN)));
-				if ($answer != 'y' && $anser != 'yes') {
+				if ($answer != 'y' && $answer != 'yes') {
 					//db_rollback();
 					return false;
 				} else {
@@ -376,19 +396,28 @@
 	return $result;
 }
 
-function drop_table_if_exists($name) {
-	$result = drop_if_exists($name, 'DROP TABLE', 'r');
+function drop_index_if_exists($name) {
+	$result = drop_if_exists($name, 'DROP INDEX', 'i');
 	return $result;
 }
 
-function drop_if_exists($name, $command, $kind) {
+function drop_table_if_exists($name, $cascade) {
+	if($cascade)  {
+		$result = drop_if_exists($name, 'DROP TABLE', 'r', 'CASCADE');
+	} else {
+		$result = drop_if_exists($name, 'DROP TABLE', 'r');
+	}
+	return $result;
+}
+
+function drop_if_exists($name, $command, $kind, $commandSuffix = '') {
 	$res = db_query("SELECT COUNT(*) AS exists FROM pg_class WHERE relname='$name' AND relkind='$kind'");
 	if (!$res) {
 		show("ERROR:".db_error()."\n");
 		return false;
 	}
 	if (db_result($res, 0, 'exists') != '0') {
-		$res = db_query("$command $name");
+		$res = db_query("$command $name $commandSuffix");
 		if (!$res) {
 			show("ERROR:".db_error()."\n");
 			//db_rollback();
@@ -398,6 +427,21 @@
 	return true;
 }
 
+function drop_constraint_if_exists($table, $constraint, $query) {
+	$res = db_query("SELECT COUNT(*) AS exists FROM information_schema.constraint_table_usage WHERE table_name='$table' AND constraint_name='$constraint'");
+	if (!$res) {
+		show("ERROR:".db_error()."\n");
+		return false;
+	}
+	if (db_result($res, 0, 'exists') != '0') {
+		$res = db_query($query);
+		if (!$res) {
+			show("ERROR:".db_error()."\n");
+		}
+	}
+	return true;
+}
+
 function drop_trigger_if_exists($name, $on) {
 	$res = db_query("SELECT COUNT(*) AS exists FROM pg_trigger WHERE tgname='$name'");
 	if (!$res) {
@@ -431,4 +475,4 @@
 	fwrite(STDOUT, $text);
 }
 
-?>
+?>
\ No newline at end of file

Modified: trunk/gforge_base/gforge-4.8/deb-specific/db-upgrade.pl
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/deb-specific/db-upgrade.pl	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/deb-specific/db-upgrade.pl	2009-09-21 09:00:23 UTC (rev 154)
@@ -835,9 +835,9 @@
     $version = &get_db_version ;
     $target = "2.6-0+checkpoint+14" ;
     if (&is_lesser ($version, $target)) {
-      &debug ("Upgrading with 20021213.sql") ;
+      &debug ("Upgrading with 20021213-1.sql") ;
 
-      @reqlist = @{ &parse_sql_file ("$sqldir/20021213.sql") } ;
+      @reqlist = @{ &parse_sql_file ("$sqldir/20021213-1.sql") } ;
       foreach my $s (@reqlist) {
 	  $query = $s ;
 	  # debug $query ;
@@ -944,9 +944,9 @@
     $version = &get_db_version ;
     $target = "2.6-0+checkpoint+19" ;
     if (&is_lesser ($version, $target)) {
-      &debug ("Upgrading with 20021223.sql") ;
+      &debug ("Upgrading with 20021223-2.sql") ;
 
-      @reqlist = @{ &parse_sql_file ("$sqldir/20021223.sql") } ;
+      @reqlist = @{ &parse_sql_file ("$sqldir/20021223-2.sql") } ;
       foreach my $s (@reqlist) {
 	  $query = $s ;
 	  # debug $query ;
@@ -964,9 +964,9 @@
     $version = &get_db_version ;
     $target = "2.6-0+checkpoint+20" ;
     if (&is_lesser ($version, $target)) {
-      &debug ("Upgrading with 20030102.sql") ;
+      &debug ("Upgrading with 20030102-2.sql") ;
 
-      @reqlist = @{ &parse_sql_file ("$sqldir/20030102.sql") } ;
+      @reqlist = @{ &parse_sql_file ("$sqldir/20030102-2.sql") } ;
       foreach my $s (@reqlist) {
 	  $query = $s ;
 	  # debug $query ;
@@ -1075,9 +1075,9 @@
     $version = &get_db_version ;
     $target = "2.6-0+checkpoint+25" ;
     if (&is_lesser ($version, $target)) {
-      &debug ("Upgrading with 20030113.sql") ;
+      &debug ("Upgrading with 20030113-2.sql") ;
 
-      @reqlist = @{ &parse_sql_file ("$sqldir/20030113.sql") } ;
+      @reqlist = @{ &parse_sql_file ("$sqldir/20030113-2.sql") } ;
       foreach my $s (@reqlist) {
 	  $query = $s ;
 	  # debug $query ;
@@ -2139,9 +2139,9 @@
     $version = &get_db_version ;
     $target = "4.1-0" ;
     if (&is_lesser ($version, $target)) {
-        &debug ("Upgrading with 20050224.sql") ;
+        &debug ("Upgrading with 20050224-2.sql") ;
 
-        @reqlist = @{ &parse_sql_file ("$sqldir/20050224.sql") } ;
+        @reqlist = @{ &parse_sql_file ("$sqldir/20050224-2.sql") } ;
         foreach my $s (@reqlist) {
             $query = $s ;
             # debug $query ;
@@ -2219,9 +2219,9 @@
     $version = &get_db_version ;
     $target = "4.1-4" ;
     if (&is_lesser ($version, $target)) {
-        &debug ("Upgrading with 20050325-1.sql") ;
+        &debug ("Upgrading with 20050325-2.sql") ;
 
-        @reqlist = @{ &parse_sql_file ("$sqldir/20050325-1.sql") } ;
+        @reqlist = @{ &parse_sql_file ("$sqldir/20050325-2.sql") } ;
         foreach my $s (@reqlist) {
             $query = $s ;
             # debug $query ;
@@ -2435,9 +2435,9 @@
     $version = &get_db_version ;
     $target = "4.1-6" ;
     if (&is_lesser ($version, $target)) {
-        &debug ("Upgrading with 20050325-3.sql") ;
+        &debug ("Upgrading with 20050325-5.sql") ;
 
-        @reqlist = @{ &parse_sql_file ("$sqldir/20050325-3.sql") } ;
+        @reqlist = @{ &parse_sql_file ("$sqldir/20050325-5.sql") } ;
         foreach my $s (@reqlist) {
             $query = $s ;
             # debug $query ;
@@ -2680,14 +2680,14 @@
     # If the view doesn't exists apply 
     if (! &view_exists ($dbh, 'activity_vw')) {
         &update_with_sql("20050812","4.5.15-10merge"); 
-        &update_with_sql("20050822","4.5.15-11merge"); 
+        &update_with_sql("20050822-2","4.5.15-11merge"); 
         &update_with_sql("20050823","4.5.15-12merge"); 
         &update_with_sql("20050824","4.5.15-13merge"); 
         &update_with_sql("20050831","4.5.15-14merge"); 
 
         &update_with_sql("20060113","4.5.15-15"); 
         &update_with_sql("20060214","4.5.15-16"); 
-        &update_with_sql("20060216-nocommit","4.5.15-17"); 
+        &update_with_sql("20060216-2-debian-nocommit","4.5.15-17"); 
     }
 
     $version = &get_db_version ;

Modified: trunk/gforge_base/gforge-4.8/debian/changelog
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/debian/changelog	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/debian/changelog	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,3 +1,28 @@
+gforge (4.8-3evolvis1) unreleased; urgency=low
+
+  * Upstream sync
+
+ -- Thorsten Glaser <t.glaser at tarent.de>  Mon, 21 Sep 2009 10:52:33 +0200
+
+gforge (4.8-3) unstable; urgency=low
+
+  * New upstream snapshot as of SVN r7960.
+
+ -- Roland Mas <lolando at debian.org>  Thu, 27 Aug 2009 10:47:54 +0200
+
+gforge (4.8-2) unstable; urgency=low
+
+  * Upload to Debian unstable, with a new upstream snapshot as of SVN
+    r7945.
+
+ -- Roland Mas <lolando at debian.org>  Thu, 06 Aug 2009 11:25:16 +0200
+
+gforge (4.8-1) experimental; urgency=low
+
+  * New upstream release.
+
+ -- Roland Mas <lolando at debian.org>  Fri, 12 Jun 2009 13:44:57 +0200
+
 gforge (4.8~rc2-1evolvis1) unreleased; urgency=low
 
   * Upstream sync
@@ -47,6 +72,13 @@
 
  -- Roland Mas <lolando at debian.org>  Tue, 28 Apr 2009 15:33:18 +0200
 
+gforge (4.7.3-2) unstable; urgency=high
+
+  * Fixed SQL injection and possible cross-site scripting vulnerabilities
+    due to insufficient input sanitizing (CVE ids pending).
+
+ -- Roland Mas <lolando at debian.org>  Mon, 15 Jun 2009 16:10:06 +0200
+
 gforge (4.7.3-1) unstable; urgency=low
 
   * New upstream release.

Modified: trunk/gforge_base/gforge-4.8/debian/patches/use-snoopy-from-distro.dpatch
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/debian/patches/use-snoopy-from-distro.dpatch	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/debian/patches/use-snoopy-from-distro.dpatch	2009-09-21 09:00:23 UTC (rev 154)
@@ -7,23 +7,44 @@
 
 @DPATCH@
 diff -urNad gforge~/plugins/cvstracker/bin/post.php gforge/plugins/cvstracker/bin/post.php
---- gforge~/plugins/cvstracker/bin/post.php	2007-09-03 18:08:13.000000000 +0200
-+++ gforge/plugins/cvstracker/bin/post.php	2007-09-25 09:34:07.000000000 +0200
-@@ -33,7 +33,7 @@
-  
- //require ('local.inc'); we don´t need this file. also, in some installations this file cannot be accessed by the caller (perms problem)
- require $gfconfig.'plugins/cvstracker/config.php';
--require $gfplugins.'cvstracker/common/Snoopy.class.php';
-+require '/usr/share/php/libphp-snoopy/Snoopy.class.php';
+--- gforge~/plugins/cvstracker/bin/post.php	2009-06-07 14:20:47.000000000 +0200
++++ gforge/plugins/cvstracker/bin/post.php	2009-06-07 17:24:09.000000000 +0200
+@@ -34,7 +34,7 @@
+ require dirname(__FILE__).'/../../env.inc.php';
+ require_once ($gfconfig.'plugins/cvstracker/config.php');
+ require_once ($gfcommon.'common/include/utils.php');
+-require_once ($gfplugins.'cvstracker/common/Snoopy.class.php');
++require_once ('/usr/share/php/libphp-snoopy/Snoopy.class.php');
  
  
  if ($cvs_binary_version != "1.12" &&
+diff -urNad gforge~/plugins/cvstracker/bin/post.php.rej gforge/plugins/cvstracker/bin/post.php.rej
+--- gforge~/plugins/cvstracker/bin/post.php.rej	1970-01-01 01:00:00.000000000 +0100
++++ gforge/plugins/cvstracker/bin/post.php.rej	2009-06-07 17:22:33.000000000 +0200
+@@ -0,0 +1,17 @@
++***************
++*** 33,39 ****
++   
++  //require ('local.inc'); we don´t need this file. also, in some installations this file cannot be accessed by the caller (perms problem)
++  require $gfconfig.'plugins/cvstracker/config.php';
++- require $gfplugins.'cvstracker/common/Snoopy.class.php';
++  
++  
++  if ($cvs_binary_version != "1.12" &&
++--- 33,39 ----
++   
++  //require ('local.inc'); we don´t need this file. also, in some installations this file cannot be accessed by the caller (perms problem)
++  require $gfconfig.'plugins/cvstracker/config.php';
+++ require '/usr/share/php/libphp-snoopy/Snoopy.class.php';
++  
++  
++  if ($cvs_binary_version != "1.12" &&
 diff -urNad gforge~/plugins/scmcvs/bin/aclcheck.php gforge/plugins/scmcvs/bin/aclcheck.php
---- gforge~/plugins/scmcvs/bin/aclcheck.php	2007-09-03 18:08:13.000000000 +0200
-+++ gforge/plugins/scmcvs/bin/aclcheck.php	2007-09-25 09:33:25.000000000 +0200
+--- gforge~/plugins/scmcvs/bin/aclcheck.php	2009-06-02 20:33:08.000000000 +0200
++++ gforge/plugins/scmcvs/bin/aclcheck.php	2009-06-07 17:22:33.000000000 +0200
 @@ -30,7 +30,7 @@
- }
- 
+ require_once dirname(__FILE__).'/../../env.inc.php';
+ require_once $gfwww.'include/squal_pre.php';
  require_once $gfconfig.'plugins/scmcvs/config.php';
 -require $gfplugins.'scmcvs/common/Snoopy.class.php';
 +require '/usr/share/php/libphp-snoopy/Snoopy.class.php';
@@ -31,8 +52,8 @@
  // Input cleansing
  $env_cvsroot = (string) $_ENV['CVSROOT'];
 diff -urNad gforge~/plugins/svntracker/bin/post.php gforge/plugins/svntracker/bin/post.php
---- gforge~/plugins/svntracker/bin/post.php	2007-09-03 18:08:13.000000000 +0200
-+++ gforge/plugins/svntracker/bin/post.php	2007-09-25 09:33:46.000000000 +0200
+--- gforge~/plugins/svntracker/bin/post.php	2009-05-15 18:55:18.000000000 +0200
++++ gforge/plugins/svntracker/bin/post.php	2009-06-07 17:22:33.000000000 +0200
 @@ -32,7 +32,7 @@
  
  

Modified: trunk/gforge_base/gforge-4.8/fusionforge.spec
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/fusionforge.spec	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/fusionforge.spec	2009-09-21 09:00:23 UTC (rev 154)
@@ -158,6 +158,7 @@
 install -m 755 -d $RPM_BUILD_ROOT/%{UPLOAD_DIR}
 #install -m 755 -d $RPM_BUILD_ROOT/%{CACHE_DIR}
 install -m 755 -d $RPM_BUILD_ROOT/%{SCM_TARBALLS_DIR}
+install -m 755 -d $RPM_BUILD_ROOT/%{SCM_SNAPSHOTS_DIR}
 install -m 755 -d $RPM_BUILD_ROOT/%{PLUGINS_LIB_DIR}
 install -m 755 -d $RPM_BUILD_ROOT/%{SBIN_DIR}
 install -m 755 -d $RPM_BUILD_ROOT/%{HTTPD_CONF_DIR}/conf.d
@@ -372,6 +373,7 @@
 %{GFORGE_LANG_DIR}
 %{GFORGE_CONF_DIR}
 %{SCM_TARBALLS_DIR}
+%{SCM_SNAPSHOTS_DIR}
 
 %changelog
 * Wed Jun 29 2005 Open Wide <guillaume.smet at openwide.fr>

Deleted: trunk/gforge_base/gforge-4.8/image-sources/fusionforge-logo.xcf
===================================================================
(Binary files differ)

Copied: trunk/gforge_base/gforge-4.8/image-sources/fusionforge-logo.xcf (from rev 153, vendor/gforge-4.8/image-sources/fusionforge-logo.xcf)
===================================================================
(Binary files differ)


Property changes on: trunk/gforge_base/gforge-4.8/image-sources/fusionforge-logo.xcf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream
Name: svn:mergeinfo
   + 

Modified: trunk/gforge_base/gforge-4.8/plugins/cvstracker/bin/post.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/plugins/cvstracker/bin/post.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/plugins/cvstracker/bin/post.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -31,8 +31,10 @@
  */
  
 //require ('local.inc'); we don't need this file. also, in some installations this file cannot be accessed by the caller (perms problem)
-require $gfconfig.'plugins/cvstracker/config.php';
-require $gfplugins.'cvstracker/common/Snoopy.class.php';
+require dirname(__FILE__).'/../../env.inc.php';
+require_once ($gfconfig.'plugins/cvstracker/config.php');
+require_once ($gfcommon.'common/include/utils.php');
+require_once ($gfplugins.'cvstracker/common/Snoopy.class.php');
 
 
 if ($cvs_binary_version != "1.12" &&
@@ -103,6 +105,7 @@
 	$Lines = explode("\n", $Input);
 	$ii = count($Lines);
 	$Logging=false;
+	$Log = "";
 	for ( $i=0; $i < $ii ; $i++ )
 	{
 		if ($Logging==true)
@@ -122,7 +125,7 @@
 }
 
 if( $cvs_binary_version == "1.11" ) {
-	if ($argc != 3 ) {
+	if ($argc <= 3 ) {
 		usage ( $argv );
 	}
 	

Modified: trunk/gforge_base/gforge-4.8/plugins/cvstracker/common/cvstrackerPlugin.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/plugins/cvstracker/common/cvstrackerPlugin.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/plugins/cvstracker/common/cvstrackerPlugin.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -118,7 +118,7 @@
 	*
 	*/
 	function getFileLink($GroupName, $FileName, $LatestRevision) {
-		return url_make_link ('/scm/viewvc.php/'.$FileName .
+		return util_make_link ('/scm/viewvc.php/'.$FileName .
 				      '?root='.$GroupName.'&amp;view=log',
 				      $FileName);
 	}
@@ -134,7 +134,7 @@
 	*
 	*/
 	function getActualVersionLink($GroupName, $FileName, $Version) {
-		return url_make_link ('/scm/viewvc.php/'.$FileName .
+		return util_make_link ('/scm/viewvc.php/'.$FileName .
 				      '?root='.$GroupName.'&pathrev='.$Version .
 				      '&amp;view=markup',
 				      $Version);
@@ -152,7 +152,7 @@
 	*
 	*/
 	function getDiffLink($GroupName, $FileName, $PrevVersion, $ActualVersion) {
-		return url_make_link ('/scm/viewvc.php/'.$FileName .
+		return util_make_link ('/scm/viewvc.php/'.$FileName .
 				      '?root='.$GroupName.'&r1='.$PrevVersion .
 				      '&r2='.$ActualVersion,
 				      _('Diff To').' '.$PrevVersion);
@@ -165,7 +165,7 @@
 	* @param   string  $path The filename of loginfo
 	*
 	*/
-	function addCvsTrackerToFile($path) {
+	function addCvsTrackerToFile($group, $path) {
 		global $sys_plugins_path, $sys_users_host, $cvs_binary_version;
 		
 		$FOut = fopen($path, "a");
@@ -179,7 +179,7 @@
 			if ( $cvs_binary_version == "1.11") {
 				$Line = "ALL ( php -q -d include_path=".ini_get('include_path').
 					" ".$sys_plugins_path."/cvstracker/bin/post.php".
-					" %r %{sVv} )\n";
+					" ".$group->getUnixName()." %{sVv} )\n";
 			}
 			fwrite($FOut,$Line);
 			fwrite($FOut, "# END added by gforge-plugin-cvstracker\n");
@@ -200,7 +200,7 @@
 		if ( $cvs_binary_version == "1.11" ) {
 				$array[] = "ALL ( php -q -d include_path=".ini_get('include_path').
 					" ".$sys_plugins_path."/cvstracker/bin/post.php".
-					" %r %{sVv} )\n";
+					" ".$group->getUnixName()." %{sVv} )\n";
 		}else { //it's version 1.12
 			$array[] = "ALL ( php -q -d include_path=".ini_get('include_path').
 			" ".$sys_plugins_path."/cvstracker/bin/post.php".
@@ -320,13 +320,14 @@
 				if($LineFound==FALSE) {
 					$newfile=getCvsFile($params["file_name"],
 						 "CVSROOT/loginfo");
-					$this->addCvsTrackerToFile($newfile);
+					$this->addCvsTrackerToFile($group, $newfile);
 					$this->putCvsFile($params["file_name"],
 						$newfile);
 				}
 			}
 		} elseif ($hookname == "get_cvs_loginfo_lines") {
-			$GLOBALS['loginfo_lines']=$this->getCvsTrackerLogInfoLines();		
+			$group = &group_get_object($group_id);
+			$GLOBALS['loginfo_lines']=$this->getCvsTrackerLogInfoLines($group);		
 		}
 	}
 }

Modified: trunk/gforge_base/gforge-4.8/plugins/cvstracker/www/newcommit.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/plugins/cvstracker/www/newcommit.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/plugins/cvstracker/www/newcommit.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -15,6 +15,7 @@
  * store in DB the commit info attached to the tracker or task.
  *
  */
+require_once dirname(__FILE__)."/../../env.inc.php";
 require_once $gfwww.'include/squal_pre.php';
 require_once $gfconfig.'plugins/cvstracker/config.php';
 
@@ -25,7 +26,7 @@
  */
 $Config = array();
 $SubmittedVars = array();
-$SubmittedVars = unserialize(str_replace('\"','"',$_POST['data']));
+$SubmittedVars = unserialize(str_replace('\\\\', '\\', str_replace('\"','"',$_POST['data'])));
 
 $i = 0;
 foreach ($SubmittedVars as $SubmittedVar) {

Modified: trunk/gforge_base/gforge-4.8/plugins/scmcvs/bin/aclcheck.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/plugins/scmcvs/bin/aclcheck.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/plugins/scmcvs/bin/aclcheck.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -27,6 +27,9 @@
 	exit(1);
 }
 
+require_once dirname(__FILE__).'/../../env.inc.php';
+require $gfcgfile;
+require_once $gfcommon.'include/utils.php';
 require_once $gfconfig.'plugins/scmcvs/config.php';
 require $gfplugins.'scmcvs/common/Snoopy.class.php';
 

Modified: trunk/gforge_base/gforge-4.8/plugins/scmcvs/common/Snoopy.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/plugins/scmcvs/common/Snoopy.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/plugins/scmcvs/common/Snoopy.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -287,7 +287,12 @@
 					}
 					else
 					{
-						$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
+						if (isset($URI_PARTS["query"]))
+						{
+							$path = $URI_PARTS["path"].$URI_PARTS["query"];
+						}else {
+							$path = $URI_PARTS["path"];
+						}
 						// no proxy, send only the path
 						$this->_httprequest($path, $fp, $URI, $this->_submit_method, $this->_submit_type, $postdata);
 					}
@@ -1137,6 +1142,7 @@
 	{
 		settype($formvars, "array");
 		settype($formfiles, "array");
+		$postdata = "";
 
 		if (count($formvars) == 0 && count($formfiles) == 0)
 			return;

Modified: trunk/gforge_base/gforge-4.8/plugins/scmcvs/cron.d/fusionforge-plugin-scmcvs
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/plugins/scmcvs/cron.d/fusionforge-plugin-scmcvs	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/plugins/scmcvs/cron.d/fusionforge-plugin-scmcvs	2009-09-21 09:00:23 UTC (rev 154)
@@ -39,7 +39,7 @@
 #
 #       Create CVS tarballs
 #
-#5 2 * * * root $PHP $FUSIONFORGE/plugins/plugins/scmcvs/cronjobs/tarballs.php
+5 2 * * * root $PHP $FUSIONFORGE/plugins/scmcvs/cronjobs/tarballs.php
 
 #
 #       Create CVS snapshots
@@ -47,4 +47,4 @@
 # CVSROOT and SCMSNAPSHOTSDIR variables are hard-coded in the script, so
 # you'll have to edit the script if necessary.
 #
-#35 2 * * * root /bin/sh $FUSIONFORGE/plugins/plugins/scmcvs/cronjobs/snapshots.sh generate
+35 2 * * * root /bin/sh $FUSIONFORGE/plugins/scmcvs/cronjobs/snapshots.sh generate

Modified: trunk/gforge_base/gforge-4.8/plugins/scmcvs/cronjobs/history_parse.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/plugins/scmcvs/cronjobs/history_parse.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/plugins/scmcvs/cronjobs/history_parse.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -167,9 +167,11 @@
 			if ( ($time_parsed > $day_begin) && ($time_parsed < $day_end) ) {
 				if ( $type == 'M' ) {
 					$cvs_commit++;
+					if(!isset($usr_commit[$user])) $usr_commit[$user] = 0;
 					$usr_commit[$user]++;
 				} elseif ( $type == 'A' ) {
 					$cvs_add++;
+					if(!isset($usr_add[$user])) $usr_add[$user] = 0;
 					$usr_add[$user]++;
 				} elseif ( $type == 'O' || $type == 'E' ) {
 					$cvs_co++;
@@ -253,7 +255,7 @@
 	exit;
 }
 
-if ( $ARGV[1] && $ARGV[2] && $ARGV[3] ) {
+if ( isset($ARGV[1]) && isset($ARGV[2]) && isset($ARGV[3]) ) {
 	
 	$day_begin = gmmktime( 0, 0, 0, $ARGV[2], $ARGV[3], $ARGV[1] );
 	//	$day_begin = timegm( 0, 0, 0, $ARGV[2], $ARGV[1] - 1, $ARGV[0] - 1900 );
@@ -265,7 +267,7 @@
 	} else {
 		db_commit();
 	}
-} else if($ARGV[1]=='all' && !$ARGV[2] && !$ARGV[3]) { 
+} else if(isset($ARGV) && $ARGV[1]=='all' && !isset($ARGV[2]) && !isset($ARGV[3])) { 
   
 	// Heavy (rarely used) operation, allow for 8hrs
 	ini_set('max_execution_time', '30000');
@@ -299,12 +301,6 @@
 	}
 }
 
-if ( $rollback ) {
-	db_rollback();
-} else {
-	db_commit();
-}
-
 cron_entry(14,$err);
 
 ?>

Modified: trunk/gforge_base/gforge-4.8/plugins/scmsvn/db/scmsvn-init.sql
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/plugins/scmsvn/db/scmsvn-init.sql	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/plugins/scmsvn/db/scmsvn-init.sql	2009-09-21 09:00:23 UTC (rev 154)
@@ -1,4 +1,4 @@
-DROP TABLE plugin_scmsvn_group_usage;
-DROP TABLE plugin_scmsvn_stats;
-DROP SEQUENCE plugin_scmsvn_grp_usage_pk_seq;
-DROP SEQUENCE plugin_scmsvn_stats_pk_seq;
+DROP TABLE IF EXISTS plugin_scmsvn_group_usage;
+DROP TABLE IF EXISTS plugin_scmsvn_stats;
+DROP SEQUENCE IF EXISTS plugin_scmsvn_grp_usage_pk_seq;
+DROP SEQUENCE IF EXISTS plugin_scmsvn_stats_pk_seq;

Modified: trunk/gforge_base/gforge-4.8/plugins/svntracker/common/svntrackerPlugin.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/plugins/svntracker/common/svntrackerPlugin.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/plugins/svntracker/common/svntrackerPlugin.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -111,7 +111,7 @@
 	*
 	*/
 	function getFileLink($GroupName, $FileName, $LatestRevision) {
-		return util_make_link ('/plugins/scmsvn/viewcvs.php/'.$FileName .
+		return util_make_link ('/scm/viewvc.php'.$FileName .
 				       '?root='.$GroupName.'&view=log&rev=' .
 				       $LatestRevision,
 				       $FileName) ;
@@ -128,7 +128,7 @@
 	*
 	*/
 	function getActualVersionLink($GroupName, $FileName, $Version) {
-		return util_make_link ('/plugins/scmsvn/viewcvs.php/'.$FileName .
+		return util_make_link ('/scm/viewvc.php'.$FileName .
 				       '?root='.$GroupName.'&rev='.$Version,
 				       $Version);
 	}
@@ -145,7 +145,7 @@
 	*
 	*/
 	function getDiffLink($GroupName, $FileName, $PrevVersion, $ActualVersion) {
-		return util_make_link ('/plugins/scmsvn/viewcvs.php/'.$FileName .
+		return util_make_link ('/scm/viewvc.php'.$FileName .
 				       '?root='.$GroupName.'&r1='.$PrevVersion .
 				       '&r2='.$ActualVersion,
 				       _('Diff To').' '.$PrevVersion);

Modified: trunk/gforge_base/gforge-4.8/plugins/svntracker/www/newcommit.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/plugins/svntracker/www/newcommit.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/plugins/svntracker/www/newcommit.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -16,6 +16,7 @@
  *
  */
 
+require_once dirname(__FILE__)."/../../env.inc.php";
 require_once $gfwww.'include/squal_pre.php';
 require_once $gfconfig.'plugins/svntracker/config.php';
 
@@ -30,10 +31,11 @@
  */
 $Config = array();
 $SubmittedVars = array();
-$SubmittedVars = unserialize(str_replace('\"','"',$_POST['data']));
+$SubmittedVars = unserialize(str_replace('\\\\', '\\', str_replace('\"','"',$_POST['data'])));
 
 $i = 0;
 foreach ($SubmittedVars as $SubmittedVar) {
+	$Configs[$i] = array();
 	$Configs[$i]['UserName']        = $SubmittedVar['UserName'];
 	//$Configs[$i]['UserName']        = 'def_admin';   use this to make tests, just replace with a gforge user
 	$Configs[$i]['Repository']      = $SubmittedVar['Repository'];
@@ -127,7 +129,7 @@
  */
 function addArtifactLog($Config, $GroupId, $Num)
 {
-	global $file;
+	global $file, $svn_tracker_debug;
 	$return = array();
 	$Query = "SELECT * from artifact,artifact_group_list WHERE ".
 		"artifact.group_artifact_id=artifact_group_list.group_artifact_id ".
@@ -140,7 +142,7 @@
 		fwrite($file,"rows : " . $Rows ."\n");
 	}
 	if ($Rows == 0) {
-		$return['Error'] .= "Artifact ".$Num." Not Found.";
+		$return['Error'] = "Artifact ".$Num." Not Found.";
 	}
 
 	if ($Rows == 1) {
@@ -238,7 +240,7 @@
 }
 
 foreach ($Configs as $Config) {
-	$Result = parseConfig(&$Config);
+	$Result = parseConfig($Config);
 	if ($Result['check'] == false) {
 		exit_error('Check_error', $Result['error']);
 	}

Modified: trunk/gforge_base/gforge-4.8/plugins/wiki/README
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/plugins/wiki/README	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/plugins/wiki/README	2009-09-21 09:00:23 UTC (rev 154)
@@ -57,3 +57,14 @@
 2) By default, phpWiki creates lots of pages with plugins and helps. The current 
  implementation allows to create a full wiki (with all standard pages) or one big
  and the others with minimal pages (see configuration file for more).
+
+PROBLEMS:
+* If you have PearDB problems and if you have a peardb package already installed, then
+you can try to remove it. By default, phpwiki will try to use the installed one and
+failback to the embedded one if none found.
+
+* You may also have problems with the tsearch configuration. phpWiki uses full text
+search to provide an improved search and you have to check that the configuration
+is supported by the installed locale on your system.
+Here is an example of command if your installed locale is fr_FR.UTF-8:
+SQL: UPDATE pg_ts_cfg set locale = 'fr_FR.UTF-8' WHERE ts_name = 'default';

Modified: trunk/gforge_base/gforge-4.8/www/account/change_email.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/account/change_email.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/account/change_email.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -58,14 +58,14 @@
 		);
 	}
 
-	$message = stripcslashes(sprintf(_('You have requested a change of email address on %1$s.
+	$message = sprintf(_('You have requested a change of email address on %1$s.
 Please visit the following URL to complete the email change:
 
 %2$s
 
  -- the %1$s staff'), 
 					 $GLOBALS['sys_name'],
-					 util_make_url ('/account/change_email-complete.php?ch=_'.$confirm_hash)));
+					 util_make_url ('/account/change_email-complete.php?ch=_'.$confirm_hash));
 
 	util_send_message($newemail,sprintf(_('%1$s Verification'), $GLOBALS['sys_name']),$message);
 

Modified: trunk/gforge_base/gforge-4.8/www/account/lostpw.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/account/lostpw.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/account/lostpw.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -54,7 +54,7 @@
 		exit_error('Error',$u->getErrorMessage());
 	} else {
 
-		$message = stripcslashes(sprintf(_('Someone (presumably you) on the %1$s site requested a
+		$message = sprintf(_('Someone (presumably you) on the %1$s site requested a
 password change through email verification. If this was not you,
 ignore this message and nothing will happen.
 
@@ -64,13 +64,13 @@
 <%2$s>
 
  -- the %1$s staff
-'), $GLOBALS['sys_name'], util_make_url ("/account/lostlogin.php?ch=_".$confirm_hash)));
+'), $GLOBALS['sys_name'], util_make_url ("/account/lostlogin.php?ch=_".$confirm_hash));
 
 		util_send_message($u->getEmail(),sprintf(_('%1$s Verification'), $GLOBALS['sys_name']),$message);
 
 		$HTML->header(array('title'=>"Lost Password Confirmation"));
 
-		echo '<p>'.printf(_('An email has been sent to the address you have on file. Follow the instructions in the email to change your account password.').'</p><p><a href="%1$s">Home</a>', util_make_url ('/')).'</p>';
+		echo '<p>'.printf(_('An email has been sent to the address you have on file. Follow the instructions in the email to change your account password.').'</p><p><a href="%1$s">'._("Home").'</a>', util_make_url ('/')).'</p>';
 
 		$HTML->footer(array());
 		exit();

Modified: trunk/gforge_base/gforge-4.8/www/admin/useredit.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/admin/useredit.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/admin/useredit.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -71,8 +71,12 @@
 	if ($u->getUnixStatus() != 'N') {
 		$u->setUnixStatus($status);
 	} else {
-		// make sure that user doesn't have LDAP entry
-		$u->setUnixStatus('N');
+		if (count($u->getGroups())>0 && $u->isActive()) {
+			$u->setUnixStatus('A');
+		}else{
+			// make sure that user doesn't have LDAP entry
+			$u->setUnixStatus('N');
+		}
 	}
 	
 	if ($u->isError()) {

Modified: trunk/gforge_base/gforge-4.8/www/admin/userlist.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/admin/userlist.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/admin/userlist.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -48,7 +48,11 @@
 	} else {
 		if(!$u->setStatus($newStatus)) {
 			exit_error('Error',$u->getErrorMessage());
-		}	
+		}
+		if(!$u->setUnixStatus($newStatus)) {
+			exit_error('Error',$u->getErrorMessage());
+		}
+
 	}
 	echo "<h2>" .sprintf(_('User updated to %1$s status'), $statusString)."</h2>";
 }

Modified: trunk/gforge_base/gforge-4.8/www/docman/admin/index.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/docman/admin/index.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/docman/admin/index.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -203,9 +203,9 @@
 		<td>
 		<strong><?php echo _('File')?></strong><?php echo utils_requiredField(); ?><br />
 		<?php if ($d->isURL()) {
-			echo '<a href="'.$d->getFileName().'">[View File URL]</a>';
+			echo '<a href="'.inputSpecialchars($d->getFileName()).'">[View File URL]</a>';
 		} else { ?>
-		<a target="_blank" href="../view.php/<?php echo $group_id.'/'.$d->getID().'/'.$d->getFileName() ?>"><?php echo $d->getName(); ?></a>
+		<a target="_blank" href="../view.php/<?php echo $group_id.'/'.$d->getID().'/'.urlencode($d->getFileName()) ?>"><?php echo $d->getName(); ?></a>
 		<?php } ?>
 		</td>
 	</tr>

Modified: trunk/gforge_base/gforge-4.8/www/docman/index.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/docman/index.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/docman/index.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -34,8 +34,8 @@
 			docman_recursive_display($dg->getID());
 			if (isset($nested_docs[$dg->getID()]) && is_array($nested_docs[$dg->getID()])) {
 				foreach ($nested_docs[$dg->getID()] as $d) {
-					$docurl=util_make_url ('/docman/view.php/'.$group_id.'/'.$d->getID().'/'.$d->getFileName());
-					$docname=addslashes($d->getName())." (".$d->getFileName().")";
+					$docurl=util_make_url ('/docman/view.php/'.$group_id.'/'.$d->getID().'/'.urlencode($d->getFileName()));
+					$docname=addslashes($d->getName(), ENT_QUOTES)." (".htmlspecialchars($d->getFileName(), ENT_QUOTES).")";
 					$docdesc=addslashes($d->getDescription());
 					echo ",['','".$docname."','".$docurl."','','".$docdesc."' ]";
 				}

Modified: trunk/gforge_base/gforge-4.8/www/docman/search.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/docman/search.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/docman/search.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -190,7 +190,7 @@
 		$vtp->SetVar($handle,"RESULT.SEARCHPATH",$s);
 		$vtp->SetVar($handle,"RESULT.GROUP_ID",$_GET["group_id"]);
 		$vtp->SetVar($handle,"RESULT.DOC_ID",$item["docid"]);
-		$vtp->SetVar($handle,"RESULT.FILE_NAME",$item["filename"]);
+		$vtp->SetVar($handle,"RESULT.FILE_NAME",urlencode($item["filename"]));
 		if ($is_editor) $vtp->SetVar($handle,"RESULT.STATE",$item["statename"]);
 		$vtp->CloseSession($handle,"RESULT");
 	}

Modified: trunk/gforge_base/gforge-4.8/www/export/rss20_activity.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/export/rss20_activity.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/export/rss20_activity.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -49,11 +49,11 @@
 	if ($rowwm = db_fetch_array($reswm)) {
 		$webmaster = $rowwm['user_name']."@".$GLOBALS['sys_users_host']." (".$rowwm['realname'].")";
 	} else {
-		$webmaster = "admin@".$GLOBALS['sys_default_domain'];
+		$webmaster = $GLOBALS['sys_admin_email'];
 	}
 
 	// ## one time output
-	header("Content-Type: text/xml");
+	header("Content-Type: text/xml; charset=utf-8");
 	print '<?xml version="1.0" encoding="UTF-8"?>
        <rss version="2.0">
        ';
@@ -62,22 +62,12 @@
 	print "  <link>$url/activity/$link</link>\n";
 	print "  <description>".$GLOBALS['sys_name']." Project Activity$description</description>\n";
 	print "  <language>en-us</language>\n";
-	print "  <copyright>Copyright 2000-".date("Y")." ".$GLOBALS['sys_name']." OSI</copyright>\n";
+	print "  <copyright>Copyright ".date("Y")." ".$GLOBALS['sys_name']."</copyright>\n";
 	print "  <webMaster>$webmaster</webMaster>\n";
-	print "  <lastBuildDate>".gmdate('D, d M Y G:i:s',time())." GMT</lastBuildDate>\n";
+	print "  <lastBuildDate>".rss_date(time())."</lastBuildDate>\n";
 	print "  <docs>http://blogs.law.harvard.edu/tech/rss</docs>\n";
 	print "  <generator>".$GLOBALS['sys_name']." RSS generator</generator>\n";
 
-	if (file_exists('../images/bflogo-88.png')) {
-		print "  <image>\n";
-		print "    <url>$url/images/bflogo-88.png</url>\n";
-		print "    <title>".$GLOBALS['sys_name']."</title>\n";
-		print "    <link>$url/</link>\n";
-		print "    <width>124</width>\n";
-		print "    <heigth>32</heigth>\n";
-		print "  </image>\n";
-	}
-
 	$sql="SELECT * FROM activity_vw WHERE activity_date BETWEEN '".(time()-(30*86400))."' AND '".time()."'
 	AND group_id='$group_id' ORDER BY activity_date DESC";
 	$res = db_query($sql, $limit);
@@ -90,44 +80,44 @@
 			case 'commit': {
 				print "   <title>".htmlspecialchars('Commit for Tracker Item [#'.$arr['subref_id'].'] '.$arr['description'])."</title>\n";
 				print "   <link>$url/tracker/?func=detail&amp;atid=".$arr['ref_id'].'&amp;aid='.$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</link>\n";
-				print "   <comment>$url/tracker/?func=detail&amp;atid=".$arr['ref_id'].'&amp;aid='.$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</comment>\n";
+				print "   <comments>$url/tracker/?func=detail&amp;atid=".$arr['ref_id'].'&amp;aid='.$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</comments>\n";
 				break;
 			}
 			case 'trackeropen': {
 				print "   <title>".htmlspecialchars('Tracker Item [#'.$arr['subref_id'].' '.$arr['description'].'] Opened')."</title>\n";
 				print "   <link>$url/tracker/?func=detail&amp;atid=".$arr['ref_id'].'&amp;aid='.$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</link>\n";
-				print "   <comment>$url/tracker/?func=detail&amp;atid=".$arr['ref_id'].'&amp;aid='.$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</comment>\n";
+				print "   <comments>$url/tracker/?func=detail&amp;atid=".$arr['ref_id'].'&amp;aid='.$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</comments>\n";
 				break;
 			}
 			case 'trackerclose': {
 				print "   <title>".htmlspecialchars('Tracker Item [#'.$arr['subref_id'].' '.$arr['description'].'] Closed')."</title>\n";
 				print "   <link>$url/tracker/?func=detail&amp;atid=".$arr['ref_id'].'&amp;aid='.$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</link>\n";
-				print "   <comment>$url/tracker/?func=detail&amp;atid=".$arr['ref_id'].'&amp;aid='.$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</comment>\n";
+				print "   <comments>$url/tracker/?func=detail&amp;atid=".$arr['ref_id'].'&amp;aid='.$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</comments>\n";
 				break;
 			}
 			case 'frsrelease': {
 				print "   <title>".htmlspecialchars('FRS Release [#'.$arr['description'].']')."</title>\n";
 				print "   <link>$url/frs/?release_id=".$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</link>\n";
-				print "   <comment>$url/frs/?release_id=".$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</comment>\n";
+				print "   <comments>$url/frs/?release_id=".$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</comments>\n";
 				break;
 			}
 			case 'forumpost': {
 				print "   <title>".htmlspecialchars('Forum Post [#'.$arr['subref_id'].'] '.$arr['description'])."</title>\n";
 				print "   <link>$url/forum/message.php?forum_id=".$arr['ref_id'].'&amp;msg_id='.$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</link>\n";
-				print "   <comment>$url/forum/message.php?forum_id=".$arr['ref_id'].'&amp;msg_id='.$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</comment>\n";
+				print "   <comments>$url/forum/message.php?forum_id=".$arr['ref_id'].'&amp;msg_id='.$arr['subref_id'].'&amp;group_id='.$arr['group_id']."</comments>\n";
 				break;
 			}
 			case 'news': {
 				print "   <title>".htmlspecialchars('News Post [#'.$arr['subref_id'].'] '.$arr['description'])."</title>\n";
 				print "   <link>$url/forum/forum.php?forum_id=".$arr['subref_id']."</link>\n";
-				print "   <comment>$url/forum/forum.php?forum_id=".$arr['subref_id']."</comment>\n";
+				print "   <comments>$url/forum/forum.php?forum_id=".$arr['subref_id']."</comments>\n";
 				break;
 			}
 		}
 
 		print "   <description>".rss_description($arr['description'])."</description>\n";
 		print "   <author>".$arr['user_name']."@".$GLOBALS['sys_users_host']." (".$arr['realname'].")</author>\n";
-		print "   <pubDate>".gmdate('D, d M Y G:i:s',$arr['activity_date'])." GMT</pubDate>\n";
+		print "   <pubDate>".rss_date($arr['activity_date'])."</pubDate>\n";
 		print "  </item>\n";
 	}
 	// ## end output

Modified: trunk/gforge_base/gforge-4.8/www/export/rss20_newreleases.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/export/rss20_newreleases.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/export/rss20_newreleases.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -14,7 +14,7 @@
 require_once $gfwww.'include/pre.php';
 require_once $gfwww.'export/rss_utils.inc';
 
-header("Content-Type: text/xml");
+header("Content-Type: text/xml; charset=utf-8");
 print '<?xml version="1.0" encoding="UTF-8"?>
 <rss version="2.0">
 ';
@@ -53,17 +53,10 @@
 print "  <link>http://".$GLOBALS['sys_default_domain']."$link</link>\n";
 print "  <description>".$GLOBALS['sys_name']." Project Releases$description</description>\n";
 print "  <language>en-us</language>\n";
-print "  <copyright>Copyright 2000-".date("Y")." ".$GLOBALS['sys_name']." OSI</copyright>\n";
+print "  <copyright>Copyright ".date("Y")." ".$GLOBALS['sys_name']."</copyright>\n";
 print "  <webMaster>$webmaster</webMaster>\n";
-print "  <lastBuildDate>".gmdate('D, d M Y G:i:s',time())." GMT</lastBuildDate>\n";
+print "  <lastBuildDate>".rss_date(time())."</lastBuildDate>\n";
 print "  <docs>http://blogs.law.harvard.edu/tech/rss</docs>\n";
-print "  <image>\n";
-print "    <url>http://".$GLOBALS['sys_default_domain']."/images/bflogo-88.png</url>\n";
-print "    <title>".$GLOBALS['sys_name']." Developer</title>\n";
-print "    <link>http://".$GLOBALS['sys_default_domain']."/</link>\n";
-print "    <width>124</width>\n";
-print "    <heigth>32</heigth>\n";
-print "  </image>\n";
 
 $res = db_query("SELECT groups.group_name AS group_name,"
 	. "frs_package.group_id AS group_id,"
@@ -103,8 +96,8 @@
 		print "   <link>http://".$GLOBALS['sys_default_domain']."/project/showfiles.php?group_id=".$row['group_id']."&amp;release_id=".$row['filerelease_id']."</link>\n";
 		print "   <description>".rss_description($row['module_notes'])."</description>\n";
 		print "   <author>".$row['user_name']."@".$GLOBALS['sys_users_host']." (".$row['realname'].")</author>\n";
-		print "   <comment>http://".$GLOBALS['sys_default_domain']."/project/shownotes.php?group_id=".$row['group_id']."&amp;release_id=".$row['filerelease_id']."</comment>\n";
-		print "   <pubDate>".gmdate('D, d M Y G:i:s',$row['release_date'])." GMT</pubDate>\n";
+		print "   <comments>http://".$GLOBALS['sys_default_domain']."/project/shownotes.php?group_id=".$row['group_id']."&amp;release_id=".$row['filerelease_id']."</comments>\n";
+		print "   <pubDate>".rss_date($row['release_date'])."</pubDate>\n";
 		print "   <guid>http://".$GLOBALS['sys_default_domain']."/project/showfiles.php?group_id=".$row['group_id']."&amp;release_id=".$row['filerelease_id']."</guid>\n";
 		print "  </item>\n";
 		$outputtotal++;

Modified: trunk/gforge_base/gforge-4.8/www/export/rss20_news.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/export/rss20_news.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/export/rss20_news.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -7,7 +7,7 @@
 require_once $gfwww.'include/pre.php';
 require_once $gfwww.'export/rss_utils.inc';
 
-header("Content-Type: text/xml");
+header("Content-Type: text/xml; charset=utf-8");
 print '<?xml version="1.0" encoding="UTF-8"?>
 <rss version="2.0">
 ';
@@ -16,8 +16,8 @@
 if ($limit > 100) $limit = 100;
 
 if ($group_id) {
-	$where = "group_id=$group_id";
-	$query = "SELECT group_name FROM groups WHERE $where";
+	$where = "AND g.group_id=$group_id";
+	$query = "SELECT group_name FROM groups WHERE group_id=$group_id";
 	$res = db_query($query,1);
 	$row = db_fetch_array($res);
 	$title = ": ".$row['group_name']." - ";
@@ -38,24 +38,20 @@
 	$webmaster = $GLOBALS['sys_admin_email'];
 }
 
+$rssTitle = $GLOBALS['sys_name']." Project$title News";
+$rssLink = "http://".$GLOBALS['sys_default_domain']."/news/$link";
+
 // ## one time output
 print " <channel>\n";
-print "  <title>".$GLOBALS['sys_name']." Project$title News</title>\n";
-print "  <link>http://".$GLOBALS['sys_default_domain']."/news/$link</link>\n";
+print "  <title>".$rssTitle."</title>\n";
+print "  <link>".$rssLink."</link>\n";
 print "  <description>".$GLOBALS['sys_name']." Project News$description</description>\n";
 print "  <language>en-us</language>\n";
-print "  <copyright>Copyright 2000-".date("Y")." ".$GLOBALS['sys_name']." OSI</copyright>\n";
+print "  <copyright>Copyright ".date("Y")." ".$GLOBALS['sys_name']."</copyright>\n";
 print "  <webMaster>$webmaster</webMaster>\n";
-print "  <lastBuildDate>".gmdate('D, d M Y G:i:s',time())." GMT</lastBuildDate>\n";
+print "  <lastBuildDate>".rss_date(time())."</lastBuildDate>\n";
 print "  <docs>http://blogs.law.harvard.edu/tech/rss</docs>\n";
 print "  <generator>".$GLOBALS['sys_name']." RSS generator</generator>\n";
-print "  <image>\n";
-print "    <url>http://".$GLOBALS['sys_default_domain']."/images/bflogo-88.png</url>\n";
-print "    <title>".$GLOBALS['sys_name']." Developer</title>\n";
-print "    <link>http://".$GLOBALS['sys_default_domain']."/</link>\n";
-print "    <width>124</width>\n";
-print "    <heigth>32</heigth>\n";
-print "  </image>\n";
 
 $sql = "SELECT forum_id,summary,post_date,details,g.group_id,g.group_name,u.realname,u.user_name
         FROM news_bytes, groups g,users u
@@ -81,7 +77,7 @@
 	}
 	print "   <description>".rss_description($row['details'])."</description>\n";
 	print "   <author>".$row['user_name']."@".$GLOBALS['sys_users_host']." (".$row['realname'].")</author>\n";
-	print "   <pubDate>".gmdate('D, d M Y G:i:s',$row['post_date'])." GMT</pubDate>\n";
+	print "   <pubDate>".rss_date($row['post_date'])."</pubDate>\n";
 	if ($row['group_id'] != $sys_news_group) {
 		print "   <guid>http://".$GLOBALS['sys_default_domain']."/forum/forum.php?forum_id=".$row['forum_id']."</guid>\n";
 	} else {
@@ -89,9 +85,9 @@
 	}
 	// if news group, comment is main page
 	if ($row['group_id'] != $sys_news_group) {
-		print "   <comment>http://".$GLOBALS['sys_default_domain']."/forum/forum.php?forum_id=".$row['forum_id']."</comment>\n";
+		print "   <comments>http://".$GLOBALS['sys_default_domain']."/forum/forum.php?forum_id=".$row['forum_id']."</comments>\n";
 	} else {
-		print "   <comment>http://".$GLOBALS['sys_default_domain']."/</comment>\n";
+		print "   <comments>http://".$GLOBALS['sys_default_domain']."/</comments>\n";
 	}
 	print "  </item>\n";
 }

Modified: trunk/gforge_base/gforge-4.8/www/export/rss20_projects.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/export/rss20_projects.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/export/rss20_projects.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -3,13 +3,15 @@
 // Author: Scott Grayban <sgrayban at borgnet.us>
 //
 
-include "../env.inc.php";
-include "pre.php";
-include "rss_utils.inc";
-header("Content-Type: text/xml");
-print '<?xml version="1.0"?>
+require_once '../env.inc.php';
+require_once $gfwww.'include/pre.php';
+require_once $gfwww.'export/rss_utils.inc';
+
+header("Content-Type: text/xml; charset=utf-8");
+print '<?xml version="1.0" encoding="UTF-8"?>
 <rss version="2.0">
 ';
+
 $limit = getIntFromRequest('limit', 10);
 
 $res = db_query(
@@ -20,6 +22,6 @@
 
 //rss20_dump_project_result_set($res,$GLOBALS['sys_default_name'].' Full Project Listing');
 // quick and dirty fix
-rss_dump_project_result_set($res,$GLOBALS['sys_default_name'].' Full Project Listing');
+rss_dump_project_result_set($res,$GLOBALS['sys_name'].' Full Project Listing');
 ?>
 </rss>

Modified: trunk/gforge_base/gforge-4.8/www/export/rss20_version.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/export/rss20_version.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/export/rss20_version.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -3,18 +3,20 @@
 // Export software version in RSS 2.0
 // Author: Christian Bayle <bayle at debian.org>
 
-include "../env.inc.php";
-include "pre.php";
+require_once '../env.inc.php';
+require_once $gfwww.'include/pre.php';
+require_once $gfwww.'export/rss_utils.inc';
 require_once $gfcommon.'include/FusionForge.class.php';
 
 $forge=new FusionForge();
 $vers=$forge->software_version;
 $name=$forge->software_name;
-$date=gmdate('D, d M Y g:i:s',time())." GMT";
-$link="http://".$GLOBALS[sys_default_domain];
+$date=rss_date(time());
+$link="http://".$GLOBALS['sys_default_domain'].'/';
+$title=$GLOBALS['sys_name'].' - Software version';
 
-header("Content-Type: text/xml");
-print '<?xml version="1.0"?>';
+header("Content-Type: text/xml; charset=utf-8");
+print '<?xml version="1.0" encoding="UTF-8"?>';
 ?>
 <rss version="2.0">
 <channel>
@@ -23,7 +25,6 @@
         <description><?php echo "$name $vers"; ?></description>
         <link><?php echo $link; ?></link>
         <title><?php echo $title; ?></title>
-        <webMaster><?php echo $webmaster; ?></webMaster>
         <language>en-us</language>
 	<item>
               	<title>Name</title>

Modified: trunk/gforge_base/gforge-4.8/www/export/rss_sfnewreleases.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/export/rss_sfnewreleases.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/export/rss_sfnewreleases.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -17,8 +17,8 @@
 $limit = getIntFromRequest('limit', 10);
 if ($limit > 100) $limit = 100;
 
-header("Content-Type: text/plain");
-print '<?xml version="1.0"?>
+header("Content-Type: text/xml; charset=utf-8");
+print '<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
 <rss version="0.91">
 ';
@@ -46,12 +46,12 @@
 
 // ## one time output
 print " <channel>\n";
-print "  <copyright>Copyright 1999-2000 VA Linux Systems, Inc.</copyright>\n";
-print "  <pubDate>".gmdate('D, d M Y g:i:s',time())." GMT</pubDate>\n";
+print "  <copyright>Copyright ".date("Y")." ".$GLOBALS['sys_name']."</copyright>\n";
+print "  <pubDate>".rss_date(time())."</pubDate>\n";
 print "  <description>".$GLOBALS['sys_name']." New Releases</description>\n";
-print "  <link>http://$GLOBALS[sys_default_domain]</link>\n";
+print "  <link>http://".$GLOBALS['sys_default_domain']."</link>\n";
 print "  <title>".$GLOBALS['sys_name']." New Releases</title>\n";
-print "  <webMaster>webmaster@$GLOBALS[sys_default_domain]</webMaster>\n";
+print "  <webMaster>".$GLOBALS['sys_admin_email']."</webMaster>\n";
 print "  <language>en-us</language>\n";
 // ## item outputs
 $outputtotal = 0;

Modified: trunk/gforge_base/gforge-4.8/www/export/rss_sfnews.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/export/rss_sfnews.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/export/rss_sfnews.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -18,7 +18,7 @@
 $limit = getIntFromRequest('limit', 10);
 if ($limit > 100) $limit = 100;
 
-header("Content-Type: text/plain");
+header("Content-Type: text/xml; charset=utf-8");
 print '<?xml version="1.0" encoding="UTF-8"?>
 
 <rdf:RDF
@@ -45,7 +45,6 @@
 	$res = db_query($sql, $limit);
 
 print "\n <channel rdf:about=".'"'."http://$GLOBALS[sys_default_domain]/export/rss_sfnews.php".'"'.">\n";
-print "  <copyright>Copyright 1999-2000 VA Linux Systems, Inc.</copyright>\n";
 $grsql = "SELECT group_name from groups where group_id='.$group_id'";
 $grres = db_query($sql,$limit);
 $grrow = db_fetch_array($grres);
@@ -75,7 +74,7 @@
 	print "   <description>".rss_description($row['details'])."</description>\n";
 	print "   <dc:subject>".$row['group_name']."</dc:subject>\n";
 	print "   <dc:creator>".$row['realname']."</dc:creator>\n";
-	print "  <dc:date>".gmdate('D, d M Y g:i:s',$row['post_date'])." GMT</dc:date>\n";
+	print "  <dc:date>".gmdate('c', $row['post_date'])."</dc:date>\n";
 	print "  </item>\n";
 }
 // ## end output

Modified: trunk/gforge_base/gforge-4.8/www/export/rss_sfprojects.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/export/rss_sfprojects.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/export/rss_sfprojects.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -17,8 +17,8 @@
 $limit = getIntFromRequest('limit', 10);
 if ($limit > 100) $limit = 100;
 
-header("Content-Type: text/plain");
-print '<?xml version="1.0"?>
+header("Content-Type: text/xml; charset=utf-8");
+print '<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">
 <rss version="0.91">
 ';

Modified: trunk/gforge_base/gforge-4.8/www/export/rss_utils.inc
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/export/rss_utils.inc	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/export/rss_utils.inc	2009-09-21 09:00:23 UTC (rev 154)
@@ -21,6 +21,10 @@
 	}
 }
 
+function rss_date($date) {
+	return gmdate('D, d M Y H:i:s', $date).' GMT';
+}
+
 function rss_description ($in) {
 	// if description_maxlen is defined, then truncate appropriately
 	// added for netscape rss schema compat
@@ -44,12 +48,12 @@
         if (!$desription) $desription=$title;
 	// one time output
 	print " <channel>\n";
-	print "  <copyright>Copyright 2007-2009 tarent GmbH</copyright>\n";
-	print "  <pubDate>".gmdate('D, d M Y G:i:s',time())." GMT</pubDate>\n";
+	print "  <copyright>Copyright 2007-2009 tarent GmbH; ".date("Y")." ".$GLOBALS['sys_name']."</copyright>\n";
+	print "  <pubDate>".rss_date(time())."</pubDate>\n";
 	print "  <description>$desription</description>\n";
-	print "  <link>http://$GLOBALS[sys_default_domain]</link>\n";
+	print "  <link>http://".$GLOBALS['sys_default_domain']."/</link>\n";
 	print "  <title>$title</title>\n";
-	print "  <webMaster>webmaster@$GLOBALS[sys_default_domain]</webMaster>\n";
+	print "  <webMaster>".$GLOBALS['sys_admin_email']."</webMaster>\n";
 	print "  <language>en-us</language>\n";
 
 	// item outputs
@@ -110,4 +114,4 @@
 	print " </channel>\n";
 }
 
-?>
+?>
\ No newline at end of file

Modified: trunk/gforge_base/gforge-4.8/www/export/search_plugin.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/export/search_plugin.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/export/search_plugin.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -19,3 +19,4 @@
 <InputEncoding>UTF-8</InputEncoding>
 <Image width="16" height="16" type="image/x-icon"><?php echo "http://".$GLOBALS['sys_default_domain']."/images/opensearchdescription.png"; ?></Image>
 <Url type="text/html" method="GET" template="<?php print 'http' . (session_issecure()?'s':'') . '://' . $GLOBALS['sys_default_domain']; ?>/search/?type_of_search=soft&amp;words={searchTerms}"/>
+</OpenSearchDescription>

Modified: trunk/gforge_base/gforge-4.8/www/forum/admin/ForumAdmin.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/forum/admin/ForumAdmin.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/forum/admin/ForumAdmin.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -59,8 +59,8 @@
 	function PrintAdminMessageOptions($msg_id,$group_id,$thread_id=0,$forum_id=0) {
 		global $HTML;
 		
-		$return = '<a href="admin/index.php?editmsg=' . $msg_id  . '&group_id=' . $group_id .  '&thread_id=' . $thread_id. '&forum_id=' . $forum_id . '">' . html_image('ic/forum_edit.gif','37','15',array('alt'=>"Edit")) . "</a>";
-		$return .= '    <a href="admin/index.php?deletemsg=' . $msg_id  . '&group_id=' . $group_id . '&thread_id=' . $thread_id. '&forum_id=' . $forum_id . '">' . html_image('ic/forum_delete.gif','16','18',array('alt'=>"Delete")) . "</a>";
+		$return = '<a href="admin/index.php?editmsg=' . $msg_id  . '&group_id=' . $group_id .  '&thread_id=' . $thread_id. '&forum_id=' . $forum_id . '">' . html_image('ic/forum_edit.gif','37','15',array('alt'=>_("Edit"))) . "</a>";
+		$return .= '    <a href="admin/index.php?deletemsg=' . $msg_id  . '&group_id=' . $group_id . '&thread_id=' . $thread_id. '&forum_id=' . $forum_id . '">' . html_image('ic/forum_delete.gif','16','18',array('alt'=>_("Delete"))) . "</a>";
 		$return .= "<br>";
 		return $return;
 	}

Modified: trunk/gforge_base/gforge-4.8/www/forum/admin/index.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/forum/admin/index.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/forum/admin/index.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -376,7 +376,8 @@
 				echo $farr[$j]->getErrorMessage();
 			} else {
 				echo '<a href="'.getStringFromServer('PHP_SELF').'?group_id='.$group_id.'&amp;change_status=1&amp;group_forum_id='. $farr[$j]->getID() .'">'.
-					$farr[$j]->getName() .'</a><br />'.$farr[$j]->getDescription().'<br /><a href="monitor.php?group_id='.$group_id.'&amp;group_forum_id='. $farr[$j]->getID() .'">Monitoring Users</a><p>';
+					$farr[$j]->getName() .'</a><br />'.$farr[$j]->getDescription().'<br /><a href="monitor.php?group_id='.$group_id.'&amp;group_forum_id='. $farr[$j]->getID() .'">'.
+					_('Monitoring Users').'</a><p>';
 			}
 		}
 

Modified: trunk/gforge_base/gforge-4.8/www/forum/attachment.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/forum/attachment.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/forum/attachment.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -147,7 +147,7 @@
 			foreach ($am->Getmessages() as $item) {
 				$feedback .= "<br>" . $item;
 			}
-			echo '<p><p><center><form method="post"><input type="button" value="Close Window" onclick="window.close()"></form></center>';
+			echo '<p><p><center><form method="post"><input type="button" value="'._("Close Window").'" onclick="window.close()"></form></center>';
 			forum_footer(array());
 			exit();
 		} else {
@@ -160,7 +160,7 @@
 				exit_error(_('Error'),$fh->getErrorMessage());
 			}
 			if (!db_result($res,0,'filename')) {
-				$filename = "No attach found";
+				$filename = _("No attach found");
 			} else {
 				$filename = db_result($res,0,'filename');
 			}

Modified: trunk/gforge_base/gforge-4.8/www/forum/include/AttachManager.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/forum/include/AttachManager.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/forum/include/AttachManager.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -144,8 +144,8 @@
 			exit_error('Error', _('Could Not Get Forum Object'));
 			} else {
 				if ( ((user_getid() == $attach_userid) || ($f->userIsAdmin())) && (!$msg->isPending()) ) { //only permit the user who created the attach to delete it, or an admin
-					$attach .= "   <a href=\"javascript:manageattachments('".util_make_url ("/forum/attachment.php?attachid=$attachid&group_id=$group_id&forum_id=$forum_id&msg_id=$msg_id&edit=yes")."','no');\">" .  "<font size=\"-3\">" .  html_image('ic/forum_edit.gif','37','15',array('alt'=>"Edit")) . "</font></a>";
-					$attach .= "     <a href=\"javascript:manageattachments('".util_make_url("/forum/attachment.php?attachid=$attachid&group_id=$group_id&forum_id=$forum_id&delete=yes")."','yes');\">" .  "<font size=\"-3\">" .  html_image('ic/forum_delete.gif','16','18',array('alt'=>"Delete")) . "</font></a>";
+					$attach .= "   <a href=\"javascript:manageattachments('".util_make_url ("/forum/attachment.php?attachid=$attachid&group_id=$group_id&forum_id=$forum_id&msg_id=$msg_id&edit=yes")."','no');\">" .  "<font size=\"-3\">" .  html_image('ic/forum_edit.gif','37','15',array('alt'=>_("Edit"))) . "</font></a>";
+					$attach .= "     <a href=\"javascript:manageattachments('".util_make_url("/forum/attachment.php?attachid=$attachid&group_id=$group_id&forum_id=$forum_id&delete=yes")."','yes');\">" .  "<font size=\"-3\">" .  html_image('ic/forum_delete.gif','16','18',array('alt'=>_("Delete"))) . "</font></a>";
 				}
 			}
 		}	else {
@@ -156,7 +156,7 @@
 			} else {
 				$attach = html_image('ic/cfolder15.png',"15","13",array("border"=>"0")) . _('No attachment found');
 				if ( ((user_getid() == $msg->getPosterID()) || ($f->userIsAdmin())) && (!$msg->isPending()) ) { //only permit an admin or the user who created the message to insert an attach
-					$attach .= "   <a href=\"javascript:manageattachments('".util_make_url ("/forum/attachment.php?attachid=0&group_id=$group_id&forum_id=$forum_id&msg_id=$msg_id&edit=yes")."','no');\">" .  "<font size=\"-3\">" .  html_image('ic/forum_add.gif','37','15',array('alt'=>"Add")) . "</font></a>";
+					$attach .= "   <a href=\"javascript:manageattachments('".util_make_url ("/forum/attachment.php?attachid=0&group_id=$group_id&forum_id=$forum_id&msg_id=$msg_id&edit=yes")."','no');\">" .  "<font size=\"-3\">" .  html_image('ic/forum_add.gif','37','15',array('alt'=>_("Add"))) . "</font></a>";
 				}
 			}
 		}

Modified: trunk/gforge_base/gforge-4.8/www/forum/index.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/forum/index.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/forum/index.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -56,7 +56,7 @@
 
 //	echo _('<p>Choose a forum and you can browse, search, and post messages.<p>');
 
-	echo $HTML->subMenu(array("My Monitored Forums"),array("/forum/myforums.php?group_id=$group_id"));
+	echo $HTML->subMenu(array(_("My Monitored Forums")),array("/forum/myforums.php?group_id=$group_id"));
 	$tablearr=array(_('Forum'),_('Description'),_('Threads'),_('Posts'), _('Last Post'),_('Moderation Level'));
 	echo $HTML->listTableTop($tablearr);
 

Modified: trunk/gforge_base/gforge-4.8/www/frs/admin/index.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/frs/admin/index.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/frs/admin/index.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -163,7 +163,7 @@
 					</a>
 
 			</td>
-			<td><input type="text" name="package_name" value="'.db_result($res,$i,'package_name') .'" size="20" maxlength="30" /></td>
+			<td><input type="text" name="package_name" value="'.db_result($res,$i,'package_name') .'" size="20" maxlength="60" /></td>
 			<td>'.frs_show_status_popup ('status_id', db_result($res,$i,'status_id')).'</span></td>
 			<td><input type="submit" name="submit" value="'._('Update').'" />
 				

Modified: trunk/gforge_base/gforge-4.8/www/frs/index.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/frs/index.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/frs/index.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -27,6 +27,7 @@
 require_once('../env.inc.php');
 require_once $gfwww.'include/pre.php';
 require_once $gfwww.'frs/include/frs_utils.php';
+require_once $gfcommon.'frs/FRSPackage.class.php';
 
 $group_id = getIntFromRequest('group_id');
 $release_id = getIntFromRequest('release_id');
@@ -117,11 +118,20 @@
 	// Iterate and show the packages
 	for ( $p = 0; $p < $num_packages; $p++ ) {
 		$cur_style = $GLOBALS['HTML']->boxGetAltRowStyle($p);
+		
+		$frsPackage = new FRSPackage($cur_group, db_result($res_package,$p,'package_id'));
+		
+		print '<tr '.$cur_style.'><td colspan="3"><h3>'.db_result($res_package,$p,'name');
 
-		print '<tr '.$cur_style.'><td colspan="3"><h3>'.db_result($res_package,$p,'name').'
-	<a href="'.util_make_url ('/frs/monitor.php?filemodule_id='. db_result($res_package,$p,'package_id') .'&group_id='.db_result($res_package,$p,'group_id').'&start=1').'">'.
-		html_image('ic/mail16w.png','20','20',array('alt'=>_('Monitor this package'))) .
-		'</a></h3></td><td colspan="4">&nbsp;</td></tr>';
+		if($frsPackage->isMonitoring()) {
+			print ' <a href="'.util_make_url ('/frs/monitor.php?filemodule_id='. db_result($res_package,$p,'package_id') .'&group_id='.db_result($res_package,$p,'group_id').'&stop=1').'">'.
+				html_image('ic/xmail16w.png','20','20',array('alt'=>_('Stop monitoring this package')));
+		} else {
+			print ' <a href="'.util_make_url ('/frs/monitor.php?filemodule_id='. db_result($res_package,$p,'package_id') .'&group_id='.db_result($res_package,$p,'group_id').'&start=1').'">'.
+				html_image('ic/mail16w.png','20','20',array('alt'=>_('Monitor this package')));
+		}
+		
+		print '</a></h3></td><td colspan="4">&nbsp;</td></tr>';
 
 		// get the releases of the package
 		$sql = "SELECT * FROM frs_release

Modified: trunk/gforge_base/gforge-4.8/www/frs/monitor.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/frs/monitor.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/frs/monitor.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -40,7 +40,7 @@
 				exit_error(_('Error'),$f->getErrorMessage());
 			} else {
 				frs_header(array('title'=>_('Monitoring stopped'),'group'=>$group_id));
-				echo _('Monitoring Has Been Stopped');
+				echo $HTML->feedback(_('Monitoring Has Been Stopped'));
 				frs_footer();
 			}
 		} elseif($start) {
@@ -48,7 +48,7 @@
 				exit_error('Error',$f->getErrorMessage());
 			} else {
 				frs_header(array('title'=>_('Monitoring started'),'group'=>$group_id));
-				echo _('Monitoring Has Been Started');
+				echo $HTML->feedback(_('Monitoring Has Been Started'));
 				frs_footer();
 			}
 		}

Deleted: trunk/gforge_base/gforge-4.8/www/images/fusionforge-resized.png
===================================================================
(Binary files differ)

Copied: trunk/gforge_base/gforge-4.8/www/images/fusionforge-resized.png (from rev 153, vendor/gforge-4.8/www/images/fusionforge-resized.png)
===================================================================
(Binary files differ)


Property changes on: trunk/gforge_base/gforge-4.8/www/images/fusionforge-resized.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream
Name: svn:mergeinfo
   + 

Modified: trunk/gforge_base/gforge-4.8/www/include/features_boxes.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/include/features_boxes.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/include/features_boxes.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -66,7 +66,7 @@
 	$return = "";
 	while ($row_topdown = db_fetch_array($res_topdown)) {
 		if ($row_topdown['downloads'] > 0)
-			$return .= '(' . number_format($row_topdown['downloads']) . ')'
+			$return .= '<strong>(' . number_format($row_topdown['downloads']) . ')</strong> '
 			. util_make_link_g ($row_topdown['unix_group_name'],$row_topdown['group_id'],$row_topdown['group_name'])
 			. "<br />\n";
 	}

Modified: trunk/gforge_base/gforge-4.8/www/include/logger.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/include/logger.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/include/logger.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -112,11 +112,11 @@
 
 $sql =	"INSERT INTO activity_log "
 	. "(day,hour,group_id,browser,ver,platform,time,page,type) "
-	. "VALUES (" . date('Ymd', mktime()) . ",'" . date('H', mktime())
-	. "','$log_group','" . browser_get_agent() . "','" . browser_get_version() 
-	. "','" . browser_get_platform() . "','" . time() . "','".getStringFromServer('PHP_SELF')."','0');";
+	. "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9);";
 
-$res_logger = db_query ( $sql );
+$res_logger = db_query_params ($sql, array(date('Ymd'), date('H'),
+	$log_group, browser_get_agent(), browser_get_version(), browser_get_platform(),
+	time(), getStringFromServer('PHP_SELF'), '0'));
 
 //
 //	temp hack

Modified: trunk/gforge_base/gforge-4.8/www/include/pre.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/include/pre.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/include/pre.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -104,8 +104,8 @@
 //determine if they're logged in
 session_set();
 
+plugin_hook('after_session_set');
 
-
 //mandatory login
 if (!session_loggedin() && $sys_force_login == 1 ) {
 	$expl_pathinfo = explode('/',getStringFromServer('REQUEST_URI'));

Modified: trunk/gforge_base/gforge-4.8/www/include/project_home.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/include/project_home.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/include/project_home.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -101,7 +101,7 @@
 	}
 	print '<br />'._('Activity Percentile:&nbsp;'). substr($actv_res, 0, 5). '%';
 	print '<br />'.sprintf(_('View project <a href="%1$s" >Statistics</a> or <a href="%2$s">Activity</a>'), util_make_url ('/project/stats/?group_id='.$group_id),util_make_url ('/project/report/?group_id='.$group_id));
-	print '<br />'.sprintf(_('View list of <a href="%1$s">RSS feeds</a> available for this project.</a>'), util_make_url ('/export/rss_project.php?group_id='.$group_id)). '&nbsp;' . html_image('ic/rss.png',16,16,array('border'=>'0'));
+	print '<br />'.sprintf(_('View list of <a href="%1$s">RSS feeds</a> available for this project.'), util_make_url ('/export/rss_project.php?group_id='.$group_id)). '&nbsp;' . html_image('ic/rss.png',16,16,array('border'=>'0'));
 }
 
 if($GLOBALS['sys_use_people']) {
@@ -273,7 +273,7 @@
 }
 
 ?>
-<p />
+<p> </p>
 <table width="100%" border="0" cellpadding="0" cellspacing="0">
 	<tr>
 <?php
@@ -321,7 +321,7 @@
 if ($project->usesTracker()) {
 	print '<hr size="1" /><a href="'.util_make_url ('/tracker/?group_id='.$group_id).'">';
 	print html_image('ic/tracker20g.png','20','20',array('alt'=>_('Tracker')));
-	print _('Tracker').'</a>';
+	print '&nbsp;'._('Tracker').'</a>';
 
 	$result=db_query("SELECT agl.*,aca.count,aca.open_count
 	FROM artifact_group_list agl
@@ -335,12 +335,16 @@
 	if (!$result || $rows < 1) {
 		echo '<br /><em>'._('There are no public trackers available').'</em>';
 	} else {
+		echo '<ul>' ;
+		
 		for ($j = 0; $j < $rows; $j++) {
-			echo '<p />
-		&nbsp;-&nbsp;'.util_make_link ('/tracker/?atid='. db_result($result, $j, 'group_artifact_id') . '&amp;group_id='.$group_id.'&amp;func=browse',db_result($result, $j, 'name'))
-		.sprintf(ngettext(' (<strong>%1$s</strong> open / <strong>%2$s</strong> total)', ' (<strong>%1$s</strong> open / <strong>%2$s</strong> total)', (int) db_result($result, $j, 'open_count')), (int) db_result($result, $j, 'open_count'), (int) db_result($result, $j, 'count')) .'<br />'.
-		db_result($result, $j, 'description');
+			echo '<li>' ;
+			print util_make_link ('/tracker/?atid='. db_result($result, $j, 'group_artifact_id') . '&amp;group_id='.$group_id.'&amp;func=browse',db_result($result, $j, 'name')) . ' ' ;
+			printf(ngettext('(<strong>%1$s</strong> open / <strong>%2$s</strong> total)', '(<strong>%1$s</strong> open / <strong>%2$s</strong> total)', (int) db_result($result, $j, 'open_count')), (int) db_result($result, $j, 'open_count'), (int) db_result($result, $j, 'count')) .'<br />'.
+			 db_result($result, $j, 'description');
+			echo '</li>' ;
 		}
+		echo '</ul>' ;
 	}
 }
 
@@ -390,11 +394,13 @@
 	if (!$result || $rows < 1) {
 		echo '<br /><em>'._('There are no public subprojects available').'</em>';
 	} else {
+		echo '<ul>' ;
 		for ($j = 0; $j < $rows; $j++) {
-			echo '
-			<br /> &nbsp; - '.util_make_link ('/pm/task.php?group_project_id='.db_result($result, $j, 'group_project_id').'&amp;group_id='.$group_id.'&amp;func=browse',db_result($result, $j, 'project_name'));
+			echo '<li>' ;
+			print util_make_link ('/pm/task.php?group_project_id='.db_result($result, $j, 'group_project_id').'&amp;group_id='.$group_id.'&amp;func=browse',db_result($result, $j, 'project_name'));
+			echo '</li>' ;
 		}
-
+		echo '</ul>' ;
 	}
 }
 
@@ -403,7 +409,7 @@
 if ($project->usesSCM()) {
 	print '<hr size="1" /><a href="'.util_make_url ('/scm/?group_id='.$group_id).'">';
 	print html_image('ic/cvs16b.png','20','20',array('alt'=>_('SCM')));
-	print " "._('SCM Repository')."</a>";
+	print '&nbsp;'._('SCM Repository')."</a>";
 
 	/*
 	$result = db_query("
@@ -439,7 +445,7 @@
 		print '<hr size="1" />';
 		print '<a href="ftp://' . $project->getUnixName() . '.' . $GLOBALS['sys_default_domain'] . '/pub/'. $project->getUnixName() .'/">';
 		print html_image('ic/ftp16b.png','20','20',array('alt'=>_('Anonymous FTP Space')));
-		print _('Anonymous FTP Space')."</a>";
+		print '&nbsp;'._('Anonymous FTP Space')."</a>";
 	}
 }
 

Modified: trunk/gforge_base/gforge-4.8/www/include/user_home.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/include/user_home.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/include/user_home.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -115,7 +115,7 @@
 } else { // endif no groups
 	print "<p/>"._('This developer is a member of the following groups:')."<br />&nbsp;";
 	while ($row_cat = db_fetch_array($res_cat)) {
-			print ('<br />' . util_make_link_g ($row_cat['unix_group_name'],$row_cat['group_id'],htmlentities($row_cat['group_name'])).' ('.htmlentities($row_cat['role_name']).')');
+			print ('<br />' . util_make_link_g ($row_cat['unix_group_name'],$row_cat['group_id'],$row_cat['group_name']).' ('.$row_cat['role_name'].')');
 	}
 	print '</ul><p/>';
 } // end if groups

Modified: trunk/gforge_base/gforge-4.8/www/my/index.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/my/index.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/my/index.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -341,7 +341,7 @@
 					     '<img src="'.$HTML->imgroot.'ic/'.$img.'" alt="'._('Delete').'" height="16" width="16" border="0" />') ;
 
 			echo '</td>
-			<td>'.util_make_link_g (db_result($result,$i,'unix_group_name'),db_result($result,$i,'group_id'),htmlspecialchars(db_result($result,$i,'group_name'))).'</td>
+			<td>'.util_make_link_g (db_result($result,$i,'unix_group_name'),db_result($result,$i,'group_id'),db_result($result,$i,'group_name')).'</td>
 			<td>'. htmlspecialchars(db_result($result,$i,'role_name')) .'</td></tr>';
 		}
 	}

Modified: trunk/gforge_base/gforge-4.8/www/project/admin/massfinish.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/project/admin/massfinish.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/project/admin/massfinish.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -99,7 +99,7 @@
 
 }
 
-echo '<input type="submit" name="finished" value="Add All">
+echo '<input type="submit" name="finished" value="'._('Add All').'">
 </form>';
 
 project_admin_footer(array());

Modified: trunk/gforge_base/gforge-4.8/www/reporting/toolspie.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/reporting/toolspie.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/reporting/toolspie.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -45,7 +45,11 @@
 	$SPAN=0;
 }
 
-if (!isset($start)) {
+$datatype = getStringFromRequest('datatype');
+$start = getStringFromRequest('start');
+$end = getStringFromRequest('end');
+
+if (!$start) {
 	$z =& $report->getMonthStartArr();
 	$start = $z[count($z)-1];
 }
@@ -54,11 +58,7 @@
 
 echo report_header(_('Tool Pie Graphs'));
 
-$datatype = getStringFromRequest('datatype');
-$start = getStringFromRequest('start');
-$end = getStringFromRequest('end');
-
-if (!isset($datatype)) {
+if (!$datatype) {
 	$datatype=1;
 }
 

Modified: trunk/gforge_base/gforge-4.8/www/reporting/useract_graph.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/reporting/useract_graph.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/reporting/useract_graph.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -37,6 +37,7 @@
 $SPAN = getStringFromRequest('SPAN');
 $start = getStringFromRequest('start');
 $end = getStringFromRequest('end');
+$area = getStringFromRequest('area');
 
 //
 //	Create Report

Modified: trunk/gforge_base/gforge-4.8/www/scm/reporting/commits_graph.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/scm/reporting/commits_graph.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/scm/reporting/commits_graph.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -57,15 +57,13 @@
 	$days=30;
 }
 
-if (!isset($datatype)) {
-	$datatype=1;
-}
-
+$start = getIntFromRequest('start');
 if (!$start) {
 	$start=time() - ($days * 60 * 60 * 24);
 	$formattedmonth = date('Ym',$start);
 }
 
+$end = getIntFromRequest('end');
 if (!$end) {
 	$end=time();
 } else {
@@ -101,7 +99,6 @@
 report_pie_arr(util_result_column_to_array($res,0), util_result_column_to_array($res,1));
 
 $p1  = new PiePlot3D($pie_vals);
-$p1->ExplodeSlice (0);
 $p1->SetLegends($pie_labels);
 $graph->Add( $p1);
 

Modified: trunk/gforge_base/gforge-4.8/www/stats/site_stats_utils.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/stats/site_stats_utils.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/stats/site_stats_utils.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -274,7 +274,7 @@
 			<td colspan="2"><strong><?php echo _('Tasks'); ?></strong></td>
 			<?php } ?>
 			<?php if ($GLOBALS['sys_use_scm']) { ?>
-			<td colspan="3"><strong><?php echo _('CVS'); ?></strong></td>
+			<td colspan="3"><strong><?php echo _('SCM'); ?></strong></td>
 			<?php } ?>
 			<?php plugin_hook('stats_header_table'); ?>
 		</tr>
@@ -406,7 +406,7 @@
 			<td><strong><?php echo _('Support'); ?></strong></td>
 			<td><strong><?php echo _('Patches'); ?></strong></td>
 			<td><strong><?php echo _('Tasks'); ?></strong></td>
-			<td><strong><?php echo _('CVS'); ?></strong></td>
+			<td><strong><?php echo _('SCM'); ?></strong></td>
 			</tr>
 		<?php
 	
@@ -461,7 +461,7 @@
 			<td><strong><?php echo _('Patches'); ?></strong></td>
 			<td><strong><?php echo _('All Trkr'); ?></strong></td>
 			<td><strong><?php echo _('Tasks'); ?></strong></td>
-			<td><strong><?php echo _('CVS'); ?></strong></td>
+			<td><strong><?php echo _('SCM'); ?></strong></td>
 			</tr>
 		<?php
 

Modified: trunk/gforge_base/gforge-4.8/www/themes/css/gforge.css
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/themes/css/gforge.css	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/themes/css/gforge.css	2009-09-21 09:00:23 UTC (rev 154)
@@ -17,7 +17,7 @@
         font-size:13px;
         color: #202020;
         text-decoration: none;
-        font-weight: none
+        font-weight: normal 
         }
 
 
@@ -36,7 +36,7 @@
 
 h1, h2, h3, h4, h5, h6 { 
 	font-family: arialverdana,arial,helvetica,sans-serif; 
-	font-weight:none;
+	font-weight:normal;
 	padding:0;
 }
 
@@ -118,7 +118,7 @@
 /* definition for content table */
 .tableheading {
 	background-color:#D0D0D0; 
-	text-align=center;
+	text-align:center;
 	font-weight:  bold
 	}
 
@@ -136,7 +136,7 @@
 .prev, .next, up, down {
 	font-family: arial,helvetica, sans-serif; 
 	font-size: small; 
-	text-decoration: bold
+	font-weight: bold
 	}
 
 /* top */
@@ -165,7 +165,7 @@
    Use this style if you need to display a warning*/
 
 .warning {
-	color: red: 
+	color: red; 
 	text-decoration: none
 	}
 
@@ -241,12 +241,12 @@
 
 .altRowStyleEven { 
 	background-color: #EAEAEA; 
-	font-weight: none
+	font-weight: normal
 	}
 
 .altRowStyleOdd { 
 	background-color: #E0E0E0; 
-	font-weight: none
+	font-weight: normal
 }
 
 

Modified: trunk/gforge_base/gforge-4.8/www/themes/gforge/Theme.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8~rc2/www/themes/gforge/Theme.class.php	2009-09-07 10:33:06 UTC (rev 152)
+++ trunk/gforge_base/gforge-4.8/www/themes/gforge/Theme.class.php	2009-09-21 09:00:23 UTC (rev 154)
@@ -260,7 +260,7 @@
         return '
         <!-- Box Top Start -->
 
-        <table cellspacing="0" cellpadding="0" width="100%" border="0" background="'.$this->imgroot.'vert-grad.png">
+        <table cellspacing="0" cellpadding="0" style="table-layout:fixed" width="100%" border="0" background="'.$this->imgroot.'vert-grad.png">
         <tr align="center">
             <td valign="top" style="text-align:right" width="10" background="'.$this->imgroot.'box-topleft.png"><img src="'.$this->imgroot.'clear.png" width="10" height="20" /></td>
             <td width="100%" background="'.$this->imgroot.'box-grad.png"><span class="titlebar">'.$title.'</span></td>




More information about the evolvis-commits mailing list