diff --git a/addcomment.php b/addcomment.php index 1a95b44..05f2c99 100644 --- a/addcomment.php +++ b/addcomment.php @@ -2,6 +2,7 @@ include("path.php"); require(BASE."include/"."incl.php"); +require(BASE."include/"."application.php"); global $current; @@ -29,24 +30,46 @@ if($body) $subject = strip_tags($subject); $subject = mysql_escape_string($subject); - $body = mysql_escape_string($body); + $body1 = mysql_escape_string($body); // get current userid $userId = (loggedin()) ? $current->userid : 0; $result = mysql_query("INSERT INTO appComments VALUES (null, null, $thread, ". "$appId, $versionId, $userId, '$hostname', '$subject', ". - "'$body', 0)"); + "'$body1', 0)"); if (!$result) { errorpage('Internal Database Access Error',mysql_error()); exit; - } - - addmsg("New Comment Posted", "green"); - redirect(apidb_fullurl("appview.php?appId=$appId&versionId=$versionId")); + } else + { + $email = getNotifyEmailAddressList($appId, $versionId); + if($email) + { + $fullAppName = "Application: ".lookupAppName($appId)." Version: ".lookupVersionName($appId, $versionId); + $ms .= apidb_fullurl("appview.php?appId=$appId&versionId=$versionId")."\n"; + $ms .= "\n"; + $ms .= ($current->username ? $current->username : "Anonymous")." added comment to ".$fullAppName."\n"; + $ms .= "\n"; + $ms .= "Subject: ".$subject."\n"; + $ms .= "\n"; + $ms .= $body."\n"; + $ms .= "\n"; + $ms .= STANDARD_NOTIFY_FOOTER; + mail(stripslashes($email), "[AppDB] ".$fullAppName ,$ms); + + } else + { + $email = "no one"; + } + addmsg("mesage sent to: ".$email, green); + + addmsg("New Comment Posted", "green"); + redirect(apidb_fullurl("appview.php?appId=$appId&versionId=$versionId")); + } } else { diff --git a/deletecomment.php b/deletecomment.php index f22a956..3bd7fa8 100644 --- a/deletecomment.php +++ b/deletecomment.php @@ -2,6 +2,8 @@ include("path.php"); require(BASE."include/"."incl.php"); +require(BASE."include/"."application.php"); + $appId = strip_tags($_POST['appId']); $versionId = strip_tags($_POST['versionId']); @@ -31,7 +33,19 @@ if (!$result) $ob = mysql_fetch_object($result); $deletedParentId = $ob->parentId; +/* get the subject and body from the comment */ +$result = mysql_query("select * FROM appComments WHERE commentId = '$commentId'"); +if (!$result) +{ + errorpage('Internal Database Access Error',mysql_error()); + exit; +} +$ob = mysql_fetch_object($result); +$body = $ob->body; +$subject = $ob->subject; + /* delete the comment from the database */ + $result = mysql_query("DELETE FROM appComments WHERE commentId = '$commentId'"); if (!$result) @@ -47,6 +61,27 @@ if(!$result) errorpage('Internal database error fixing up the parentId of child comments'); exit; } +$email = getNotifyEmailAddressList($appId, $versionId); +if($email) +{ + $fullAppName = "Application: ".lookupAppName($appId)." Version: ".lookupVersionName($appId, $versionId); + $ms .= apidb_fullurl("appview.php?appId=$appId&versionId=$versionId")."\n"; + $ms .= "\n"; + $ms .= ($current->username ? $current->username : "Anonymous")." deleted comment from ".$fullAppName."\n"; + $ms .= "\n"; + $ms .= "Subject: ".$subject."\n"; + $ms .= "\n"; + $ms .= $body."\n"; + $ms .= "\n"; + $ms .= STANDARD_NOTIFY_FOOTER; + + mail(stripslashes($email), "[AppDB] ".$fullAppName ,$ms); + +} else +{ + $email = "no one"; +} +addmsg("mesage sent to: ".$email, green); addmsg("Comment deleted", "green"); redirect(apidb_fullurl("appview.php?appId=$appId&versionId=$versionId")); diff --git a/include/application.php b/include/application.php index 087a9a3..3088822 100644 --- a/include/application.php +++ b/include/application.php @@ -76,3 +76,24 @@ class Application { return $list; } } + +function lookupVersionName($appId, $versionId) +{ + $result = mysql_query("SELECT versionName FROM appVersion WHERE versionId = $versionId and appId = $appId"); + if(!$result || mysql_num_rows($result) != 1) + return null; + $ob = mysql_fetch_object($result); + return $ob->versionName; +} + + +function lookupAppName($appId) +{ + $result = mysql_query("SELECT appName FROM appFamily WHERE appId = $appId"); + if(!$result || mysql_num_rows($result) != 1) + return null; + $ob = mysql_fetch_object($result); + return $ob->appName; +} + +?> diff --git a/include/incl.php b/include/incl.php index 03dbe18..72f81d7 100644 --- a/include/incl.php +++ b/include/incl.php @@ -238,4 +238,9 @@ function dumpmsgbuffer() mysql_query("DELETE FROM sessionMessages WHERE sessionId = '$PHPSESSID'"); } +define("STANDARD_NOTIFY_FOOTER","------- You are receiving this mail because: -------\n". + "You are an maintainer of this app or an appdb administrator\n". + "to change your preverences go to: http://appdb.winehq.org/preferences.php\n"); + + ?> diff --git a/include/user.php b/include/user.php index b12cebf..957dcaf 100644 --- a/include/user.php +++ b/include/user.php @@ -351,5 +351,61 @@ function lookupEmail($userid) return $ob->email; } +function UserWantsEmail($userid) +{ + $result = mysql_query("SELECT * FROM user_prefs WHERE userid = $userid AND name = 'send_email'"); + if(!$result || mysql_num_rows($result) == 0) + { + return true; + } + $ob = mysql_fetch_object($result); + return ($ob->value == 'no' ? false : true); +} + +/* + * get the email address of people to notify for this appId and versionId + */ +function getNotifyEmailAddressList($appId, $versionId) +{ + $aUserId = array(); + $c = 0; + $retval = ""; + + $query = "SELECT userId FROM ". + "appMaintainers WHERE appId = '$appId' " . + "AND versionId = '$versionId';"; + $result = mysql_query($query); + if(mysql_num_rows($result) > 0) + { + while($row = mysql_fetch_object($result)) + { + $aUserId[$c] = array($row->userId); + $c++; + } + } + $result = mysql_query("SELECT * FROM user_privs WHERE priv = 'admin'"); + if(mysql_num_rows($result) > 0) + { + while($row = mysql_fetch_object($result)) + { + $i = array_search($row->userid, $aUserId); + if ($aUserId[$i] != array($row->userid)) + { + $aUserId[$c] = array($row->userid); + $c++; + } + } + + } + if ($c > 0) + { + while(list($index, list($userIdValue)) = each($aUserId)) + { + if (UserWantsEmail($userIdValue)) + $retval .= lookupEmail($userIdValue)." "; + } + } + return $retval; +} ?> diff --git a/tables/prefs_list.sql b/tables/prefs_list.sql index 6b02725..a702d75 100644 --- a/tables/prefs_list.sql +++ b/tables/prefs_list.sql @@ -21,3 +21,4 @@ INSERT INTO prefs_list VALUES (0, 'window:offsite', 'no', 'yes|no', 'Display off INSERT INTO prefs_list VALUES (0, 'query:mode', 'view', 'view|edit', 'Default API details mode'); INSERT INTO prefs_list VALUES (0, 'query:hide_header', 'no', 'yes|no', 'Hide apidb header in query results'); INSERT INTO prefs_list VALUES (0, 'query:hide_sidebar', 'no', 'yes|no', 'Hide apidb sidebar in query results'); +INSERT INTO prefs_list VALUES (0, 'send_email', 'yes', 'yes|no', 'Send email notifications');