[Fusionforge-commits] r8042 - trunk/gforge/cronjobs

Roland Mas lolando at libremir.placard.fr.eu.org
Sun Aug 30 16:11:04 CEST 2009


Author: lolando
Date: 2009-08-30 16:11:04 +0200 (Sun, 30 Aug 2009)
New Revision: 8042

Modified:
   trunk/gforge/cronjobs/check_stale_tracker_items.php
   trunk/gforge/cronjobs/massmail.php
   trunk/gforge/cronjobs/send_pending_items_mail.php
   trunk/gforge/cronjobs/stats_projects.inc
Log:
A few migrations to db_query_params()

Modified: trunk/gforge/cronjobs/check_stale_tracker_items.php
===================================================================
--- trunk/gforge/cronjobs/check_stale_tracker_items.php	2009-08-27 14:11:31 UTC (rev 8041)
+++ trunk/gforge/cronjobs/check_stale_tracker_items.php	2009-08-30 14:11:04 UTC (rev 8042)
@@ -34,19 +34,24 @@
 require $gfcommon.'include/cron_utils.php';
 
 if ($sys_database_type == 'mysql') {
-	$sql = 'UPDATE artifact NATURAL JOIN artifact_group_list SET status_id = 2
-			WHERE (status_timeout + close_date) < now() AND status_id = 4';
+	$res = db_query_mysql ('UPDATE artifact NATURAL JOIN artifact_group_list SET status_id = 2
+			WHERE (status_timeout + close_date) < now() AND status_id = 4');
 } else {
-	$sql = 'UPDATE artifact SET status_id= 2
+	$res = db_query_params ('UPDATE artifact SET status_id = 2
 			WHERE artifact_id IN (
 				SELECT artifact_id
 				FROM artifact a NATURAL JOIN artifact_group_list agl
-				WHERE (agl.status_timeout + a.close_date) < '.time().'
-				AND a.status_id=4);';
+				WHERE (agl.status_timeout + a.close_date) < $1
+				AND a.status_id=4)',
+				array (time()));
 }
 
-$res = db_query($sql);
 
 cron_entry(2,db_error());
 
+// Local Variables:
+// mode: php
+// c-file-style: "bsd"
+// End:
+
 ?>

Modified: trunk/gforge/cronjobs/massmail.php
===================================================================
--- trunk/gforge/cronjobs/massmail.php	2009-08-27 14:11:31 UTC (rev 8041)
+++ trunk/gforge/cronjobs/massmail.php	2009-08-30 14:11:04 UTC (rev 8042)
@@ -84,10 +84,10 @@
 		util_send_message(
 			"$sys_admin_email",
 			"ATT: Problems with massmail cron script",
-			"This is automatically generated message from\n"
-			."the mass mailing cron script of $sys_name\n"
-			."installation. There was error querying massmail_queue\n"
-			."database table. Please take appropriate actions.\n"
+			"This is automatically generated message from\n
+the mass mailing cron script of $sys_name\n
+installation. There was error querying massmail_queue\n
+database table. Please take appropriate actions.\n"
 		);
 	}
 	m_exit();
@@ -127,9 +127,9 @@
 
 // If no more users left, we've finished with this mailing
 if ($users_res && db_numrows($users_res)==0) {
-	db_query("UPDATE massmail_queue
-		SET failed_date=0,finished_date='".time()."'
-		WHERE id='$mail_id'");
+	db_query_params ('UPDATE massmail_queue SET failed_date=0,finished_date=$1 WHERE id=$2',
+			 array(time(),
+			       $mail_id));
 	m_exit();
 }
 
@@ -158,14 +158,11 @@
 	sleep($SLEEP);
 }
 
-$sql="UPDATE massmail_queue
-		SET failed_date=0,
-		last_userid='$last_userid',
-		finished_date='".time()."'
-		WHERE id='$mail_id'";
+db_query_params ('UPDATE massmail_queue SET failed_date=0, last_userid=$1, finished_date=$2 WHERE id=$3',
+		 array($last_userid,
+		       time (),
+		       $mail_id));
 
-db_query($sql);
-
 if (db_error()) {
 	$err .= $sql.db_error();
 }

Modified: trunk/gforge/cronjobs/send_pending_items_mail.php
===================================================================
--- trunk/gforge/cronjobs/send_pending_items_mail.php	2009-08-27 14:11:31 UTC (rev 8041)
+++ trunk/gforge/cronjobs/send_pending_items_mail.php	2009-08-30 14:11:04 UTC (rev 8042)
@@ -54,8 +54,8 @@
 	$time = time();
 
 	/* first we check the tasks from the project_manager */
-	$sql='select project_task.project_task_id, project_task.group_project_id, project_group_list.group_project_id, group_id, project_task.summary,project_task.created_by, project_task.status_id, project_task_vw.user_name, project_task_vw.status_name, project_task_vw.percent_complete from project_task, project_group_list natural join project_task_vw where project_task.end_date >0 and project_task.end_date<'.$time.' and project_task.group_project_id=project_group_list.group_project_id and project_task.status_id=1;';
-	$res = db_query($sql);
+	$res = db_query_params ('SELECT project_task.project_task_id, project_task.group_project_id, project_group_list.group_project_id, group_id, project_task.summary,project_task.created_by, project_task.status_id, project_task_vw.user_name, project_task_vw.status_name, project_task_vw.percent_complete FROM project_task, project_group_list NATURAL JOIN project_task_vw WHERE project_task.end_date > 0 AND project_task.end_date < $1 AND project_task.group_project_id=project_group_list.group_project_id AND project_task.status_id=1;',
+			array($time));
 	for($i = 0; $i < db_numrows($res); $i++) {
 		$summary= db_result($res,$i,'summary');
 		$status_name=db_result($res,$i,'status_name');
@@ -63,8 +63,11 @@
 		$project_task_id=db_result($res,$i,'project_task_id');
 		$hyperlink=util_make_url('/pm/task.php?func=detailtask&project_task_id='.db_result($res,$i,"project_task_id").'&group_id='.db_result($res,$i,"group_id")
 					 .'&group_project_id='.db_result($res,$i,"group_project_id"));
-		$sql="select * from users where users.status='A' and user_id in (".db_result($res,$i,"created_by").", (select assigned_to_id from project_assigned_to where project_task_id=".db_result($res,$i,"project_task_id")."))";			
-		$userres=db_query($sql);
+
+		$userres = db_query_params ('SELECT * FROM users WHERE users.status=$1 AND (user_id = $2 OR user_id IN (SELECT assigned_to_id FROM project_assigned_to WHERE project_task_id = $3))',
+					    array ('A',
+						   db_result($res,$i,"created_by"),
+						   db_result($res,$i,"project_task_id")));
 		/* now, for each user, send the mail */
 		for ($usercount=0;$usercount<db_numrows($userres);$usercount++){
 			$mailto=db_result($userres,$usercount,"email");
@@ -89,8 +92,8 @@
 function send_pending_tracker_items_mail(){
 	/* first, get all the items that are considered overdue */
 	$time = time();
-	$sql = 	'SELECT artifact_id, submitted_by, group_id, assigned_to, summary,  details, description,  assigned_realname, submitted_realname, status_name, category_name, group_name, group_artifact_id, open_date	FROM artifact_vw a NATURAL JOIN artifact_group_list agl	WHERE (agl.due_period+a.open_date) < '.$time.' AND	a.status_id=1';	
-	$res=db_query($sql);
+	$res = db_query_params ('SELECT artifact_id, submitted_by, group_id, assigned_to, summary,  details, description,  assigned_realname, submitted_realname, status_name, category_name, group_name, group_artifact_id, open_date	FROM artifact_vw a NATURAL JOIN artifact_group_list agl	WHERE (agl.due_period+a.open_date) < $1 AND a.status_id=1',
+			array($time));
 	
 	for ($tmp=0; $tmp<db_numrows($res); $tmp++) {
 		$realopendate=date(_('Y-m-d H:i'), db_result($res,$tmp,'open_date'));
@@ -104,8 +107,8 @@
 		$opendate=db_result($res,$tmp,"open_date");
 
 		/* now, get all the users */
-		$sql2='select * from users where user_id in '.$users.' and user_id>100';
-		$userres=db_query($sql2);
+		$userres = db_query_params ('SELECT * FROM users WHERE user_id = ANY ($1) AND user_id > 100',
+					    array(db_int_array_to_any_clause ($users)));
 		for ($usercount=0;$usercount<db_numrows($userres);$usercount++){
 			$mailto=db_result($userres,$usercount,"email");
 			$language=db_result($userres,$usercount,"language");
@@ -128,5 +131,9 @@
 	cron_entry(19,db_error());
 }
 
+// Local Variables:
+// mode: php
+// c-file-style: "bsd"
+// End:
 
 ?>

Modified: trunk/gforge/cronjobs/stats_projects.inc
===================================================================
--- trunk/gforge/cronjobs/stats_projects.inc	2009-08-27 14:11:31 UTC (rev 8041)
+++ trunk/gforge/cronjobs/stats_projects.inc	2009-08-30 14:11:04 UTC (rev 8042)
@@ -35,25 +35,17 @@
 
 #	echo "Stats_project: $datetime::$day_begin::$day_end::".date('Ymd',$day_begin)."::".date('Ymd',$day_end)."--> $i\n";
 
-	db_query("DELETE FROM stats_project WHERE month='$year$month' AND day='$day'");
+	db_query_params ('DELETE FROM stats_project WHERE month=$1 AND day=$2',
+			 array ("$year$month",
+				$day));
 
-$sql="INSERT INTO stats_project ";
 	if ($sys_database_type == "mysql") {
-
-		$sql.="
-SELECT 
+		db_query_mysql ("INSERT INTO stats_project
+SELECT
 '$year$month' AS month,
 '$day' AS day,
-mess.* FROM (";
-	} else {
-		$sql="
-SELECT 
-'$year$month'::int AS month,
-'$day'::int AS day,
-* FROM (";
-	}
-	$sql .= "
-SELECT 
+mess.* FROM (
+SELECT
 	groups.group_id,
 	r.count AS release_count,
 	fmcount.count AS msg_posted,
@@ -78,35 +70,35 @@
 LEFT JOIN (
 	SELECT group_id,COUNT(release_id) AS count
 	FROM frs_release,frs_package
-	WHERE 
-		frs_release.release_date > '$day_begin' 
-		AND frs_release.release_date < '$day_end' 
+	WHERE
+		frs_release.release_date > '$day_begin'
+		AND frs_release.release_date < '$day_end'
 		AND frs_release.package_id = frs_package.package_id
-	GROUP BY group_id 
+	GROUP BY group_id
 	) r USING (group_id)
 
 --
 --	Create tmp table of groups that had any forum posts
 --
-LEFT JOIN ( 
+LEFT JOIN (
 	SELECT forum_group_list.group_id,COUNT(forum.msg_id) AS count
 	FROM forum_group_list, forum
-	WHERE 
-		forum_group_list.group_forum_id = forum.group_forum_id 
-		AND forum.post_date > '$day_begin' 
-		AND forum.post_date < '$day_end' 
+	WHERE
+		forum_group_list.group_forum_id = forum.group_forum_id
+		AND forum.post_date > '$day_begin'
+		AND forum.post_date < '$day_end'
 	GROUP BY forum_group_list.group_id
 	) fmcount USING (group_id)
 
 --
 --	Create tmp table of groups and unique posters to forums
 --
-LEFT JOIN ( 
+LEFT JOIN (
 	SELECT forum_group_list.group_id,COUNT( DISTINCT(forum.posted_by) ) AS count
 	FROM forum_group_list, forum
-	WHERE 
-		forum_group_list.group_forum_id = forum.group_forum_id 
-		AND forum.post_date > '$day_begin' 
+	WHERE
+		forum_group_list.group_forum_id = forum.group_forum_id
+		AND forum.post_date > '$day_begin'
 		AND forum.post_date < '$day_end'
 	GROUP BY group_id
 	) fucount USING (group_id)
@@ -225,10 +217,10 @@
 --	Create tmp table of groups that opened tasks
 --
 LEFT JOIN (
-	SELECT pgl.group_id,count(pt.project_task_id) AS count 
+	SELECT pgl.group_id,count(pt.project_task_id) AS count
 	FROM project_group_list pgl, project_task pt
-	WHERE 
-		pgl.group_project_id=pt.group_project_id 
+	WHERE
+		pgl.group_project_id=pt.group_project_id
 		AND pt.start_date > '$day_begin'
 		AND pt.start_date < '$day_end'
 	GROUP BY pgl.group_id
@@ -238,10 +230,10 @@
 --	Create tmp table of groups that closed tasks
 --
 LEFT JOIN (
-	SELECT pgl.group_id,count(pt.project_task_id) AS count 
+	SELECT pgl.group_id,count(pt.project_task_id) AS count
 	FROM project_group_list pgl, project_task pt
-	WHERE 
-		pgl.group_project_id=pt.group_project_id 
+	WHERE
+		pgl.group_project_id=pt.group_project_id
 		AND pt.end_date > '$day_begin'
 		AND pt.end_date < '$day_end'
 	GROUP BY pgl.group_id
@@ -253,8 +245,8 @@
 LEFT JOIN (
 	SELECT group_id,COUNT(job_id) AS count
 	FROM people_job
-	WHERE 
-		post_date > '$day_begin' 
+	WHERE
+		post_date > '$day_begin'
 		AND post_date < '$day_end'
 	GROUP BY group_id
 	) helpr USING (group_id)
@@ -265,7 +257,7 @@
 --	We really only want the rows that have any content
 --
 WHERE
-release_count > 0 
+release_count > 0
 OR msg_posted > 0
 OR msg_uniq_auth > 0
 OR bugs_opened > 0
@@ -278,14 +270,260 @@
 OR artifacts_closed > 0
 OR tasks_opened > 0
 OR tasks_closed > 0
-OR help_requests > 0;";
+OR help_requests > 0;");
+	} else {
 
-	db_query($sql);
-	//echo $sql;
+	db_query_params ('INSERT INTO stats_project
+SELECT
+'$1'::int AS month,
+'$2'::int AS day,
+* FROM (
+SELECT
+	groups.group_id,
+	r.count AS release_count,
+	fmcount.count AS msg_posted,
+	fucount.count AS msg_uniq_auth,
+	obug.count AS bugs_opened,
+	cbug.count AS bugs_closed,
+	osupport.count AS support_opened,
+	csupport.count AS support_closed,
+	opatches.count AS patches_opened,
+	cpatches.count AS patches_closed,
+	oartifact.count AS artifacts_opened,
+	cartifact.count AS artifacts_closed,
+	otask.count AS tasks_opened,
+	ctask.count AS tasks_closed,
+	helpr.count AS help_requests
+
+FROM groups
+
+--
+--	Create tmp table of groups that made any releases
+--
+LEFT JOIN (
+	SELECT group_id,COUNT(release_id) AS count
+	FROM frs_release,frs_package
+	WHERE
+		frs_release.release_date > $3
+		AND frs_release.release_date < $4
+		AND frs_release.package_id = frs_package.package_id
+	GROUP BY group_id
+	) r USING (group_id)
+
+--
+--	Create tmp table of groups that had any forum posts
+--
+LEFT JOIN (
+	SELECT forum_group_list.group_id,COUNT(forum.msg_id) AS count
+	FROM forum_group_list, forum
+	WHERE
+		forum_group_list.group_forum_id = forum.group_forum_id
+		AND forum.post_date > $3
+		AND forum.post_date < $4
+	GROUP BY forum_group_list.group_id
+	) fmcount USING (group_id)
+
+--
+--	Create tmp table of groups and unique posters to forums
+--
+LEFT JOIN (
+	SELECT forum_group_list.group_id,COUNT( DISTINCT(forum.posted_by) ) AS count
+	FROM forum_group_list, forum
+	WHERE
+		forum_group_list.group_forum_id = forum.group_forum_id
+		AND forum.post_date > $3
+		AND forum.post_date < $4
+	GROUP BY group_id
+	) fucount USING (group_id)
+
+--
+--	Create tmp table of groups and opened bugs
+--
+LEFT JOIN (
+	SELECT agl.group_id,count(*) AS count
+	FROM artifact_group_list agl,artifact a
+	WHERE
+		a.open_date > $3
+		AND a.open_date < $4
+		AND a.group_artifact_id=agl.group_artifact_id
+		AND agl.datatype=$5
+	GROUP BY agl.group_id
+	) obug USING (group_id)
+
+--
+--	Create tmp table of groups and closed bugs
+--
+LEFT JOIN (
+	SELECT agl.group_id,count(*) AS count
+	FROM artifact_group_list agl,artifact a
+	WHERE
+		a.close_date > $3
+		AND a.close_date < $4
+		AND a.group_artifact_id=agl.group_artifact_id
+		AND agl.datatype=$6
+	GROUP BY agl.group_id
+	) cbug USING (group_id)
+
+--
+--	Create tmp table of groups and opened support
+--
+LEFT JOIN (
+	SELECT agl.group_id,count(*) AS count
+	FROM artifact_group_list agl,artifact a
+	WHERE
+		a.open_date > $3
+		AND a.open_date < $4
+		AND a.group_artifact_id=agl.group_artifact_id
+		AND agl.datatype=$7
+	GROUP BY agl.group_id
+	) osupport USING (group_id)
+
+--
+--	Create tmp table of groups and closed support
+--
+LEFT JOIN (
+	SELECT agl.group_id,count(*) AS count
+	FROM artifact_group_list agl,artifact a
+	WHERE
+		a.close_date > $3
+		AND a.close_date < $4
+		AND a.group_artifact_id=agl.group_artifact_id
+		AND agl.datatype=$8
+	GROUP BY agl.group_id
+	) csupport USING (group_id)
+
+--
+--	Create tmp table of groups and opened patches
+--
+LEFT JOIN (
+	SELECT agl.group_id,count(*) AS count
+	FROM artifact_group_list agl,artifact a
+	WHERE
+		a.open_date > $3
+		AND a.open_date < $4
+		AND a.group_artifact_id=agl.group_artifact_id
+		AND agl.datatype=$9
+	GROUP BY agl.group_id
+	) opatches USING (group_id)
+
+--
+--	Create tmp table of groups and closed patches
+--
+LEFT JOIN (
+	SELECT agl.group_id,count(*) AS count
+	FROM artifact_group_list agl,artifact a
+	WHERE
+		a.close_date > $3
+		AND a.close_date < $4
+		AND a.group_artifact_id=agl.group_artifact_id
+		AND agl.datatype=$10
+	GROUP BY agl.group_id
+	) cpatches USING (group_id)
+
+--
+--	Create tmp table of groups and opened total artifacts
+--
+LEFT JOIN (
+	SELECT agl.group_id,count(*) AS count
+	FROM artifact_group_list agl,artifact a
+	WHERE
+		a.open_date > $3
+		AND a.open_date < $4
+		AND a.group_artifact_id=agl.group_artifact_id
+	GROUP BY agl.group_id
+	) oartifact USING (group_id)
+
+--
+--	Create tmp table of groups and closed total artifacts
+--
+LEFT JOIN (
+	SELECT agl.group_id,count(*) AS count
+	FROM artifact_group_list agl,artifact a
+	WHERE
+		a.close_date > $3
+		AND a.close_date < $4
+		AND a.group_artifact_id=agl.group_artifact_id
+	GROUP BY agl.group_id
+	) cartifact USING (group_id)
+
+--
+--	Create tmp table of groups that opened tasks
+--
+LEFT JOIN (
+	SELECT pgl.group_id,count(pt.project_task_id) AS count
+	FROM project_group_list pgl, project_task pt
+	WHERE
+		pgl.group_project_id=pt.group_project_id
+		AND pt.start_date > $3
+		AND pt.start_date < $4
+	GROUP BY pgl.group_id
+	) otask USING (group_id)
+
+--
+--	Create tmp table of groups that closed tasks
+--
+LEFT JOIN (
+	SELECT pgl.group_id,count(pt.project_task_id) AS count
+	FROM project_group_list pgl, project_task pt
+	WHERE
+		pgl.group_project_id=pt.group_project_id
+		AND pt.end_date > $3
+		AND pt.end_date < $4
+	GROUP BY pgl.group_id
+	) ctask USING (group_id)
+
+--
+--	Create tmp table of groups that closed tasks
+--
+LEFT JOIN (
+	SELECT group_id,COUNT(job_id) AS count
+	FROM people_job
+	WHERE
+		post_date > $3
+		AND post_date < $4
+	GROUP BY group_id
+	) helpr USING (group_id)
+
+) mess
+
+--
+--	We really only want the rows that have any content
+--
+WHERE
+release_count > 0
+OR msg_posted > 0
+OR msg_uniq_auth > 0
+OR bugs_opened > 0
+OR bugs_closed > 0
+OR support_opened > 0
+OR support_closed > 0
+OR patches_opened > 0
+OR patches_closed > 0
+OR artifacts_opened > 0
+OR artifacts_closed > 0
+OR tasks_opened > 0
+OR tasks_closed > 0
+OR help_requests > 0;',
+			array("$year$month",
+			      $day,
+			      $day_begin,
+			      $day_end,
+			      '1',
+			      '1',
+			      '2',
+			      '2',
+			      '3',
+			      '3'));
+
 	echo db_error();
 
 	db_commit();
 
 }
 
+// Local Variables:
+// mode: php
+// c-file-style: "bsd"
+// End:
+
 ?>




More information about the Fusionforge-commits mailing list