cvs: php-master-web /entry user-note.php /include alert_lib.inc /manage notes-alert.php user-notes.php /scripts alert_cvsusers.schemas
populate_cvsusers.php

From: Date: Thu, 04 Oct 2001 01:11:34 +0000
Subject: cvs: php-master-web /entry user-note.php /include alert_lib.inc /manage notes-alert.php user-notes.php /scripts alert_cvsusers.schemas
populate_cvsusers.php
Groups: php.mirrors 
Request: Send a blank email to php-mirrors+get-6851@lists.php.net to get a copy of this message
jmcastagnetto Wed Oct 3 21:11:34 2001 EDT Added files: /php-master-web/include alert_lib.inc /php-master-web/manage notes-alert.php /php-master-web/scripts alert_cvsusers.schemas populate_cvsusers.php Modified files: /php-master-web/entry user-note.php /php-master-web/manage user-notes.php Log: Added initial support for email alerts to notes admins, still not integrated

Index: php-master-web/entry/user-note.php diff -u php-master-web/entry/user-note.php:1.5 php-master-web/entry/user-note.php:1.6 --- php-master-web/entry/user-note.php:1.5 Mon Oct 1 23:02:33 2001 +++ php-master-web/entry/user-note.php Wed Oct 3 21:11:34 2001 @@ -1,4 +1,6 @@ <?php +// ** alerts ** remove comment when alerts are on-line +//require_once 'alert_lib.inc'; $mailto = 'php-notes@lists.php.net'; $failto = 'jimw@php.net'; @@ -28,6 +30,9 @@ $msg .= "http://master.php.net/manage/user-notes.php?action=reject+$new_id\n"; # make sure we have a return address. if (!$user) $user = "php-general@lists.php.net"; + // see who requested an alert + // ** alerts ** + //$mailto .= get_emails_for_sect($sect); mail($mailto,"note $new_id added to $sect",$msg,"From: $user\r\nMessage-ID: <note-$new_id@php.net>"); } else { // mail it. Index: php-master-web/manage/user-notes.php diff -u php-master-web/manage/user-notes.php:1.7 php-master-web/manage/user-notes.php:1.8 --- php-master-web/manage/user-notes.php:1.7 Wed Sep 26 16:07:54 2001 +++ php-master-web/manage/user-notes.php Wed Oct 3 21:11:34 2001 @@ -2,6 +2,8 @@ require_once 'cvs-auth.inc'; require_once 'email-validation.inc'; +// ** alerts ** remove comment when alerts are on-line +//require_once 'alert_lib.inc'; $reject_text = 'If you are receiving this email is because your note posted @@ -80,7 +82,10 @@ if ($result = mysql_query("SELECT * FROM note WHERE id=$id")) { $row = mysql_fetch_array($result); if (!$row['removed'] && mysql_query("UPDATE note SET removed=1 WHERE id=$id")) { - mail("php-notes@lists.php.net","note $row[id] ".($action == "reject" ? "rejected" : "deleted")." from $row[sect] by $user",$row['note'],"From: $user@php.net\r\nIn-Reply-To: <note-$id@php.net>"); + $mailto = "php-notes@lists.php.net"; + // ** alerts ** + //$mailto .= get_emails_for_sect($row["sect"]); + mail($mailto,"note $row[id] ".($action == "reject" ? "rejected" : "deleted")." from $row[sect] by $user",$row['note'],"From: $user@php.net\r\nIn-Reply-To: <note-$id@php.net>"); if ($action == 'reject') { $email = clean_antispam($row['user']); if (is_emailable_address($email)) { @@ -114,7 +119,10 @@ if (isset($note) && $action == "edit") { if (@mysql_query("UPDATE note SET note='$note',user='$email',updated=NOW() WHERE id=$id")) { - mail("php-notes@lists.php.net","note $row[id] modified in $row[sect] by $user",stripslashes($note)."\n\n--was--\n$row[note]\n\nhttp://www.php.net/manual/en/$row[sect].php","From: $user@php.net\r\nIn-Reply-To: <note-$id@php.net>"); + $mailto = "php-notes@lists.php.net"; + // ** alerts ** + //$mailto .= get_emails_for_sect($row["sect"]); + mail($mailto,"note $row[id] modified in $row[sect] by $user",stripslashes($note)."\n\n--was--\n$row[note]\n\nhttp://www.php.net/manual/en/$row[sect].php","From: $user@php.net\r\nIn-Reply-To: <note-$id@php.net>"); echo "<p>note $id edited.</p>"; } else { Index: php-master-web/include/alert_lib.inc +++ php-master-web/include/alert_lib.inc <?php $alink = mysql_connect("localhost","nobody","") or die("failed to connect to database"); @mysql_select_db("php3", $alink) or die("failed to select database"); /*{{{ show_alert_form */ function show_alert_form($user, $sect) { $PAGE_ALERT = has_alert($user, $sect); $form = "<form name=\"alertme\" method=\"post\" action=\"/manual/notes_alert.php\" target=\"_blank\">\n"; $form .= "<input type=\"hidden\" name=\"user\" value=\"$user\">\n"; $form .= "<input type=\"hidden\" name=\"sect\" value=\"$sect\">\n"; $form .= "<input type=\"hidden\" name=\"alert_action\" value=\""; $form .= ($PAGE_ALERT) ? "del_alert\">\n" : "add_alert\">\n"; $form .= "<input type=\"submit\" name=\""; $form .= ($PAGE_ALERT) ? "del_alert\" value=\"Remove alert" : "add_alert\" value=\"Add alert"; $form .= " for this page\">\n</form>\n"; echo $form; return true; }/*}}}*/ /*{{{ has_alert */ function has_alert($user, $sect) { global $alink, $alert_table; $sql = "select * from alerts where user='$user' and sect='$sect'"; $r = mysql_query($sql, $alink); $found = $r && mysql_num_rows($r) == 1; return $found; } /*}}}*/ /*{{{ do_alert_action */ function do_alert_action($sql) { global $alink; $r = @mysql_query($sql, $alink); $success = ($r && mysql_affected_rows($c) > 0); if (!$success) echo "<b>Error performing sql: ".mysql_error()." ( in do_alert_action() )"; return $success; } /*}}}*/ /*{{{ print_alerts */ function print_alerts($user) { global $alink; $sql = "select page,UNIX_TIMESTAMP(updated) as ts from alerts where user='$user' order by sect"; $r = mysql_query($sql, $alink); if (!$r) { echo "ERROR: ".mysql_error(); return false; } else { $n = mysql_num_rows($r); echo "You have alerts for $n pages:<br />\n<ul>\n"; while ($row = mysql_fetch_assoc($r)) { $date = date("Y/m/d h:i:s", $row["ts"]); echo "<li>".$row["page"]." ($date)</li>\n"; } echo "</ul>\n"; return true; } } /*}}}*/ /*{{{ get_emails_for_sect */ function get_emails_for_sect($sect) { global $alink; $sql = "select cvsusers.email from alerts,cvsusers "; $sql .= "alerts.sect = '$sect' and alerts.user = cvsusers.user"; $r = mysql_query($sql, $alink); if (!$r) { return ""; } else { while ($row = mysql_fetch_assoc($r)) $elist[] = $row["email"]; return ",".implode(",",$elist); } } /*}}}*/ ?> Index: php-master-web/manage/notes-alert.php +++ php-master-web/manage/notes-alert.php <?php require_once "cvs-auth.inc"; require_once "alerts_lib.inc"; if($user && $pass) { setcookie("MAGIC_COOKIE",base64_encode("$user:$pass"),time()+3600*24*12,'/','.php.net'); } if (!$user && isset($MAGIC_COOKIE)) { list($user, $pass) = explode(":", base64_decode($MAGIC_COOKIE)); } if (!$user || !$pass || !verify_password($user,$pass)) { head(); ?> <p> <b>You need to login first</b> </p> <form method="post" action="<?php echo $PHP_SELF;?>"> <input type="hidden" name="sect" value="<?php echo clean($sect);?>" /> <input type="hidden" name="alert_action" value="<?php echo clean($alert_action);?>" /> <table> <tr> <th align="right">CVS username:</th> <td><input type="text" name="user" value="<?php echo clean($user);?>" size="10" maxlength="32" /></td> </tr> <tr> <th align="right">CVS password:</th> <td><input type="password" name="pass" value="<?php echo clean($pass);?>" size="10" maxlength="32" /></td> </tr> <tr> <td align="center" colspan="2"> <input type="submit" value="Log in" /> </td> </tr> </table> </form> </p> <?php foot(); exit; } switch ($alert_action) { case "add_alert" : $sql = "insert into alerts values ('$user', '$sect', now())"; if (has_alert($user, $sect)) echo "<b>You already have an alert for this page</b><br />\n"; else if(do_alert_action($sql)) echo "<b>Alert for page \"$sect\", added to your list</b></ br>"; else echo "Unknown error while adding alert<br />\n"; break; case "del_alert" : $sql = "delete from alerts where admin='$user' and page='$sect'"; if (has_alert($user, $sect)) if(do_alert_action($sql)) echo "<b>Alert for page \"$sect\", deleted from your list</b></ br>"; else echo "Unknown error while deleting alert<br />\n"; else echo "<b>You do not have an alert for this page</b><br />\n"; break; default : echo "<b>Your alerts</b>< br/>"; break; } echo "<hr>"; print_alerts($user); // functions "borrowed" from user-notes.php function head() {?> <html> <head> <title>Notes Alert system</title> <link rel="stylesheet" type="text/css" href="http://www.php.net/style.css" /> </head> <body class="popup"> <?php } function foot() {?> <hr> <a href="javascript:self.close();">Close Window</a> </body> </html> <?php } function clean($var) { return htmlspecialchars(get_magic_quotes_gpc() ? stripslashes($var) : $var); } ?> Index: php-master-web/scripts/alert_cvsusers.schemas +++ php-master-web/scripts/alert_cvsusers.schemas # # Table structure for table 'alerts' # CREATE TABLE alerts ( user varchar(80) not NULL, sect varchar(80) not NULL, updated timestamp(14) not NULL ); # # Table structure for table 'cvsusers' # CREATE TABLE cvsusers ( user varchar(20) default NULL, name varchar(80) default NULL, email varchar(80) default NULL, work varchar(120) default NULL ); Index: php-master-web/scripts/populate_cvsusers.php +++ php-master-web/scripts/populate_cvsusers.php #! /usr/local/bin/php -q <?php $regex = "/(\w+) (.+) ([^ ]+@[^ ]+) (.+)/"; // Change to path for the CVS $data = file("/repository/CVSROOT/cvsusers"); $c = mysql_connect(); mysql_select_db("php3", $c); // table cvsusers must be there $sql = "insert into cvsusers values "; for ($i=0; $i < count($data); $i++) { preg_match($regex, trim($data[$i]), $user); list(,$nick,$name,$email,$work) = $user; if ($nick && $name && $email && $work) { $values = "('$nick','$name','$email','$work')"; $r = mysql_query($sql.$values, $c); if (mysql_affected_rows($c) == 0) echo "Error inserting: $nick:$name:$email:$work (".mysql_error().")\n"; else echo "OK $nick:$name:$email:$work\n"; } else { echo "<ERROR> Missing information in line $i: ".trim($data[$i])."\n"; } } mysql_close($c); ?>
« previous php.mirrors (#6851) next »