cvs: php-gtk-web /manual browse-notes.php browse.php

[email protected] ("Steph Fox") Fri, 07 Jul 2006 13:45:44 -0000
Newsgroups php.gtk.webmaster
Message-ID <cvssfox1152279944@cvsserver>
sfox		Fri Jul  7 13:45:44 2006 UTC

  Modified files:              
    /php-gtk-web/manual	browse-notes.php browse.php 
  Log:
  here are the two...
sfox-20060707134544.txt (text/plain, 8.2 KB)
http://cvs.php.net/viewvc.cgi/php-gtk-web/manual/browse-notes.php?r1=1.8&r2=1.9&diff_format=u
Index: php-gtk-web/manual/browse-notes.php
diff -u /dev/null php-gtk-web/manual/browse-notes.php:1.9
--- /dev/null	Fri Jul  7 13:45:44 2006
+++ php-gtk-web/manual/browse-notes.php	Fri Jul  7 13:45:44 2006
@@ -0,0 +1,139 @@
+<?php
+
+require_once 'config.inc';
+require_once 'cvs-auth.inc';
+require_once 'shared-manual.inc';
+
+if (isset($_POST['cancel'])) {
+	header("Location: {$_SERVER['REQUEST_URI']}");
+	exit;
+}
+
+makeAdminOpts();
+
+if ($user = get_user()) {
+	commonHeader("Manual Notes Administration");
+
+	$order = isset($_POST['order']) ? $_POST['order'] : null;
+	if (isset($order)) {
+		if (!isset($_COOKIE['order']) || (isset($_COOKIE['order']) && $order != $_COOKIE['order'])) {
+			setcookie('order', $order, time()+(3600*24), '/');
+		}
+	} else {
+		$order = $_COOKIE['order'];
+	}
+
+	echo "<h1>Manual Notes Administration</h1>\n\n";
+	$admin = true;
+	$id = null;
+
+	if (isset($_GET['delete']) && is_numeric($_GET['delete'])) {
+		$id = $_GET['delete'];
+	}
+
+	if (isset($_GET['reject']) && is_numeric($_GET['reject'])) {
+		$id = $_GET['reject'];
+		$reject_text  = "If you are receiving this email, it is because a note you posted for the\n";
+		$reject_text .= "on-line PHP-GTK manual has been rejected by one of the editors.\n\n";
+		$reject_text .= "The user contributed notes are not an appropriate place to ask questions,\n";
+		$reject_text .= "ask questions, report bugs or suggest new features.\n\n";
+		$reject_text .= "Bug reports and feature requests should be entered as 'PHP-GTK related'\n";
+		$reject_text .= "at <a href = 'http://bugs.php.net'>bugs.php.net</a>.\n";
+		$reject_text .= "Support and ways to find answers to your questions can be found at\n";
+		$reject_text .= "<a href='http://gtk.php.net/resources.php'>gtk.php.net/resources.php</a>.\n\n";
+		$reject_text .= "Your note has been removed from the on-line manual.\n\n";
+	}
+
+	if ($id) {
+		$db = sqlite_open($notesfile);
+		$query = sqlite_query($db, "SELECT * FROM notes WHERE id = '$id'");
+		$row = sqlite_fetch_array($query, SQLITE_ASSOC);
+		if (sqlite_exec($db, "DELETE FROM notes WHERE id = '$id'")) {
+			if (isset($_GET['reject'])) {
+				if (!substr($row['email'], 0, 3) == 'GTK_') {
+					/* email user */
+					//mail($row['email'], "note {$row['id']} rejected: {$row['page']}", $reject_text."----- Copy of your note below -----\n\n".stripslashes($row['comment']), "From: [email protected]");
+				}
+				$actioned = 'rejected';
+			} else {
+				$actioned = 'deleted';
+			}
+			//mail($mailto, "note $id $actioned: {$row['page']}", "Content of note:\n\n".stripslashes($row['comment']), "From: [email protected]");
+			print "<p><b>Note $id deleted successfully</b></p>";
+		} else {
+			print "<p><b>Unable to delete note $id</b></p>";
+		}
+		sqlite_close($db);
+	}
+
+	if (isset($_GET['edit']) && is_numeric($_GET['edit'])) {
+		$db = sqlite_open($notesfile);
+		$query = sqlite_query($db, "SELECT * FROM notes WHERE id = ".$_GET['edit']);
+		$row = sqlite_fetch_array($query, SQLITE_ASSOC);
+		$email = stripslashes($row['email']);
+		$comment = stripslashes($row['comment']);
+		if (substr($email, 0, 3) == 'GTK_') {
+			$email = null;
+		}
+		$get = isset($_GET['let']) ? "?let={$_GET['let']}" : null;
+		if (!$get) {
+			$get = isset($_GET['y']) ? "?y={$_GET['y']}" : null;
+		}
+		echo '<form method="POST" action="'.$_SERVER['PHP_SELF'].$get.'">';
+		echo '<table border="0" cellpadding="5" width="80%" bgcolor="#e0e0e0">';
+		echo '<tr><td align="right">E-mail:<br /></td>' .
+			'<td><input type="text" size="40" name="email" value="'.$email.'" />&nbsp;&nbsp;ID: '.$_GET['edit'].'<br /></td></tr>';
+		echo '<input type="hidden" name="id" value='.$_GET['edit'].' />';
+		echo '<tr valign="top"><td align="right">Note:<br /></td>' .
+				'<td><textarea name="note" rows="15" cols="70">'.$comment.'</textarea><br /></td></tr>';
+		echo '<tr bgcolor="#cccccc"><td colspan="2"></td></tr>';
+		echo '<tr><td colspan="2" align="right"><input type="submit" name="modify" value="Save changes">';
+		echo '&nbsp;&nbsp;<input type="submit" name="cancel" value="Cancel" /></td></tr>';
+		echo "</table>\n</form>\n";
+		sqlite_close($db);
+		commonFooter();
+		exit;
+	}
+
+	if (isset($_POST['modify'])) {
+		$db = sqlite_open($notesfile);
+		$query = sqlite_query($db, "SELECT * FROM notes WHERE id = ".$_POST['id']);
+		$row = sqlite_fetch_array($query, SQLITE_ASSOC);
+		$add_url = "\n\nhttp://gtk.php.net/manual/{$row['lang']}/{$row['page']}\n";
+		$note = htmlentities($_POST['note'], ENT_COMPAT, 'UTF-8');
+		$note = sqlite_escape_string($note);
+		$note = stripslashes($note); // get rid of double slashes
+		$query = "UPDATE notes SET";
+		if (!empty($_POST['email'])) $query .= " email='{$_POST['email']}',";
+		$query .= " comment='$note' WHERE id='{$row['id']}'";
+		if (sqlite_exec($db, $query)) {
+			echo "<p><b>Record {$row['id']} modified successfully</b></p>";
+			//mail($mailto, "note {$row['id']} modified: {$row['page']}", $note.$add_url, "From: [email protected]");
+		} else {
+			echo "<p><b>Record {$row['id']} not modified (query failed)</b></p>";
+		}
+		sqlite_close($db);
+	}
+
+} else {
+	commonHeader("Browse Manual Notes");
+
+	$order = isset($_POST['order']) ? $_POST['order'] : null;
+	if (isset($order)) {
+		if (!isset($_COOKIE['order']) || (isset($_COOKIE['order']) && $order != $_COOKIE['order'])) {
+			setcookie('order', $order, time()+(3600*24), '/');
+		}
+	} else {
+		$order = $_COOKIE['order'];
+	}
+
+	echo '<h1>Browse Manual Notes</h1>';
+	$admin = false;
+}
+
+ob_start();
+include('browse.php');
+
+commonFooter();
+
+?>
http://cvs.php.net/viewvc.cgi/php-gtk-web/manual/browse.php?r1=1.10&r2=1.11&diff_format=u
Index: php-gtk-web/manual/browse.php
diff -u /dev/null php-gtk-web/manual/browse.php:1.11
--- /dev/null	Fri Jul  7 13:45:44 2006
+++ php-gtk-web/manual/browse.php	Fri Jul  7 13:45:44 2006
@@ -0,0 +1,91 @@
+<?php
+
+$last = '';
+$used = array();
+
+$let = isset($_GET['let']) ? $_GET['let'] : 'a';
+if (strlen($let) > 1 || !preg_match("'[a-z]'", $let)) {
+	$let = 'a';
+}
+
+$y = isset($_GET['y']) ? $_GET['y'] : date('Y', time());
+if (strlen($y) != 4 || !preg_match("'[\d]{4}'", $y)) {
+	$y = date('Y', time());
+}
+
+$db = sqlite_open($notesfile);
+$query = sqlite_query($db, "SELECT DISTINCT $order FROM notes");
+
+while ($row = sqlite_fetch_array($query, SQLITE_ASSOC)) {
+	if ($order == 'date') {
+		$year = date('Y', $row['date']);
+		if (!in_array($year, $used)) {
+			$used[] = $year;
+		}
+	} else {
+		$first_letter = strtolower($row[$order][0]);
+		if (!array_key_exists($first_letter, $used)) {
+			$used[$first_letter] = true;
+		}
+	}
+}
+sqlite_close($db);
+
+$links = array();
+
+if ($order == 'date') {
+	rsort($used);
+	foreach ($used as $year) {
+		$links[] = make_link("{$_SERVER['PHP_SELF']}?y=$year", "<b>$year</b>");
+	}
+} else {
+	for ($i = ord('a'); $i <= ord('z'); $i++) {
+		$letter = chr($i);
+		if (isset($used[$letter])) {
+			$links[] = make_link("{$_SERVER['PHP_SELF']}?let=$letter", "<b>$letter</b>");
+		} else {
+			$links[] = $letter;
+		}
+	}
+}
+
+$jumpbar = "<table border='0' cellpadding='4' cellspacing='0' width='100%'>\n".
+	"<tr bgcolor='#d0d0d0' valign='top'>\n".
+	"<td align='right' colspan='2'><small>Jump to: ".
+	implode(" <span style='color:#999999'>|</span> ", $links).
+	"<br /></small></td>\n".
+	"</tr>\n".
+	"</table><br />\n\n";
+
+echo $jumpbar;
+
+echo '<table border="0" cellpadding="4" cellspacing="0" width="100%">';
+
+if (!isset($used[$let]) && $order != 'date') {
+	echo '<tr><td colspan="2">No entries for <b>'.$let.'</b><br /></td></tr>';
+	echo stretchPage(15);
+	echo "&nbsp;</div>";
+} else {
+	$db = sqlite_open($notesfile);
+	if ($order == 'date') {
+		$query = sqlite_query($db, "SELECT * FROM notes WHERE strftime('%Y', date, 'unixepoch') = '$y' ORDER BY date DESC");
+	} else {
+		$query = sqlite_query($db, "SELECT * FROM notes WHERE lower(substr($order, 1, 1)) = '$let' ORDER BY lower($order)");
+	}
+
+	while ($row = sqlite_fetch_array($query, SQLITE_ASSOC)) {
+		if ($order == 'page') {
+			if ($row['page'] != $last) {
+				makeTitle($row['page']);
+				$last = $row['page'];
+			}
+		} else {
+			makeTitle($row['page']);
+		}
+		makeEntry($row, $admin);
+	}
+	sqlite_close($db);
+}
+
+echo '</table>';
+echo $jumpbar;