From 43e240a5506465b12442126866f44526f6572117 Mon Sep 17 00:00:00 2001 From: "theocharis.athanasakis" Date: Sat, 27 Sep 2008 23:33:11 +0000 Subject: [PATCH] Initial import. --- 404.shtml | 4 + DBsetup.php | 156 +++ LICENSE | 25 + anonymous.php | 98 ++ api/update-plan.rb | 68 ++ autoread.php | 108 ++ blank.php | 21 + board_messages.php | 239 ++++ board_show.php | 114 ++ board_submit.php | 119 ++ changename.php | 45 + changepassword.php | 75 ++ config-db.php | 24 + config.php | 15 + cookies.php | 3 + core-perms.php | 29 + customize.php | 67 ++ danger.gif | Bin 0 -> 102 bytes db-schema.txt | 163 +++ db.php | 53 + dbfunctions.php | 183 +++ documents/faq.html | 398 +++++++ documents/privacy.txt | 44 + donations/create-donation-database.txt | 13 + donations/create-expense-database.txt | 12 + donations/donations.php | 193 ++++ donations/inc-db.php | 6 + donations/inc-db.php.old | 6 + donations/inc-error.php | 73 ++ edit.js | 16 + edit.php | 110 ++ favicon.ico | Bin 0 -> 318 bytes filled.gif | Bin 0 -> 102 bytes functions-authentication.php | 36 + functions-autofinger.php | 123 ++ functions-core.php | 53 + functions-database.php | 189 ++++ functions-display.php | 297 +++++ functions-edit.php | 142 +++ functions-edit.php.txt | 137 +++ functions-forum.php | 14 + functions-kommand.php | 32 + functions-main.php | 54 + functions.php | 414 +++++++ gpl.txt | 340 ++++++ home.php | 46 + index-blank.php | 33 + index.css | 26 + index.php | 208 ++++ info.php | 24 + interfaces.php | 78 ++ jlw-test.php | 95 ++ kommand/.htaccess | 1 + kommand/2 | 33 + kommand/adduser.php | 106 ++ kommand/adduser.php.old | 84 ++ kommand/auth.php | 35 + kommand/changemotd.php | 59 + kommand/changepassword.php | 67 ++ kommand/changespec.php | 67 ++ kommand/dbfunctions.php | 159 +++ kommand/deleteuser.php | 55 + kommand/email.php | 32 + kommand/index.php | 86 ++ kommand/manage-donations.php | 69 ++ kommand/new-accounts.cgi | 59 + kommand/polls.php | 252 +++++ kommand/secrets.php | 108 ++ kommand/truncate.php | 39 + kommand/update-frequency.cgi | 4 + kommand/z-add.php | 6 + lastcreated.php | 37 + legal-old-2-17-2007-php.txt | 54 + legal.php | 52 + links.php | 84 ++ listusers.php | 62 ++ log.php | 28 + new-poll.php | 161 +++ old-poll.php | 154 +++ overlib.js | 1422 ++++++++++++++++++++++++ photo.php | 50 + plans75.jpg | Bin 0 -> 9938 bytes plans76.jpg | Bin 0 -> 9915 bytes planwatch.php | 67 ++ poll.php | 161 +++ proc_autoread.php | 119 ++ quicklove.php | 28 + quote-test.php | 15 + random.php | 25 + read.php | 341 ++++++ readadd.php | 156 +++ readcss.php | 300 +++++ readme.txt | 54 + register.php | 200 ++++ reset.php | 48 + search.php | 239 ++++ secrets-stats.php | 43 + session-test.php | 5 + session.php | 12 + show-encryption.php | 17 + styles.php | 98 ++ tags | 803 +++++++++++++ test.php | 26 + textbox.php | 77 ++ tos/index.html | 469 ++++++++ unfilled.gif | Bin 0 -> 58 bytes webview.php | 64 ++ whoami.php | 21 + write-only/perms.sql | 43 + xmas/header.gif | Bin 0 -> 6353 bytes xmas/logo.gif | Bin 0 -> 10601 bytes xmas/navImg.gif | Bin 0 -> 4125 bytes xmas/xmas.css | 200 ++++ 113 files changed, 11877 insertions(+) create mode 100755 404.shtml create mode 100755 DBsetup.php create mode 100644 LICENSE create mode 100755 anonymous.php create mode 100755 api/update-plan.rb create mode 100755 autoread.php create mode 100755 blank.php create mode 100755 board_messages.php create mode 100755 board_show.php create mode 100755 board_submit.php create mode 100755 changename.php create mode 100755 changepassword.php create mode 100755 config-db.php create mode 100755 config.php create mode 100644 cookies.php create mode 100644 core-perms.php create mode 100755 customize.php create mode 100755 danger.gif create mode 100755 db-schema.txt create mode 100755 db.php create mode 100755 dbfunctions.php create mode 100755 documents/faq.html create mode 100755 documents/privacy.txt create mode 100755 donations/create-donation-database.txt create mode 100755 donations/create-expense-database.txt create mode 100755 donations/donations.php create mode 100755 donations/inc-db.php create mode 100755 donations/inc-db.php.old create mode 100755 donations/inc-error.php create mode 100755 edit.js create mode 100755 edit.php create mode 100755 favicon.ico create mode 100644 filled.gif create mode 100755 functions-authentication.php create mode 100755 functions-autofinger.php create mode 100644 functions-core.php create mode 100755 functions-database.php create mode 100755 functions-display.php create mode 100755 functions-edit.php create mode 100755 functions-edit.php.txt create mode 100755 functions-forum.php create mode 100644 functions-kommand.php create mode 100755 functions-main.php create mode 100755 functions.php create mode 100755 gpl.txt create mode 100755 home.php create mode 100755 index-blank.php create mode 100755 index.css create mode 100755 index.php create mode 100755 info.php create mode 100755 interfaces.php create mode 100755 jlw-test.php create mode 100755 kommand/.htaccess create mode 100644 kommand/2 create mode 100755 kommand/adduser.php create mode 100755 kommand/adduser.php.old create mode 100644 kommand/auth.php create mode 100755 kommand/changemotd.php create mode 100755 kommand/changepassword.php create mode 100755 kommand/changespec.php create mode 100755 kommand/dbfunctions.php create mode 100755 kommand/deleteuser.php create mode 100644 kommand/email.php create mode 100755 kommand/index.php create mode 100755 kommand/manage-donations.php create mode 100755 kommand/new-accounts.cgi create mode 100755 kommand/polls.php create mode 100755 kommand/secrets.php create mode 100755 kommand/truncate.php create mode 100755 kommand/update-frequency.cgi create mode 100644 kommand/z-add.php create mode 100755 lastcreated.php create mode 100755 legal-old-2-17-2007-php.txt create mode 100755 legal.php create mode 100755 links.php create mode 100755 listusers.php create mode 100755 log.php create mode 100755 new-poll.php create mode 100755 old-poll.php create mode 100644 overlib.js create mode 100755 photo.php create mode 100755 plans75.jpg create mode 100644 plans76.jpg create mode 100755 planwatch.php create mode 100755 poll.php create mode 100755 proc_autoread.php create mode 100755 quicklove.php create mode 100644 quote-test.php create mode 100755 random.php create mode 100755 read.php create mode 100755 readadd.php create mode 100755 readcss.php create mode 100755 readme.txt create mode 100755 register.php create mode 100755 reset.php create mode 100755 search.php create mode 100755 secrets-stats.php create mode 100755 session-test.php create mode 100644 session.php create mode 100755 show-encryption.php create mode 100755 styles.php create mode 100644 tags create mode 100755 test.php create mode 100755 textbox.php create mode 100644 tos/index.html create mode 100644 unfilled.gif create mode 100755 webview.php create mode 100755 whoami.php create mode 100644 write-only/perms.sql create mode 100755 xmas/header.gif create mode 100755 xmas/logo.gif create mode 100755 xmas/navImg.gif create mode 100755 xmas/xmas.css diff --git a/404.shtml b/404.shtml new file mode 100755 index 0000000..1f8e9ed --- /dev/null +++ b/404.shtml @@ -0,0 +1,4 @@ + +Error 404 +

The page you are trying to reach does not exist

+ \ No newline at end of file diff --git a/DBsetup.php b/DBsetup.php new file mode 100755 index 0000000..43db13a --- /dev/null +++ b/DBsetup.php @@ -0,0 +1,156 @@ + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..40a677f --- /dev/null +++ b/LICENSE @@ -0,0 +1,25 @@ +/* + Grinnell Plans. A web-based version of social .plans. + Copyright (C) 2002 by Grinnellplans grinnellplans@gmail.com + + --- + + This program 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. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + --- + If you need to contact us you may so at: + grinnellplans@gmail.com + + */ diff --git a/anonymous.php b/anonymous.php new file mode 100755 index 0000000..6b2ba11 --- /dev/null +++ b/anonymous.php @@ -0,0 +1,98 @@ + + + +

+ + Here you can post anonymously. This page was created to help give wgemigh his plan back, and to make it possible to paginate an increasing number of secrets. Please add this page as an optional link under 'preferences'. +

+ Secrets cannot be tracked by any Plans administrator. If you're still worried, you may log out before posting. We can exercise editorial discretion as to what shows up. + + Post a Secret

+
+
+ + + + +
+
+ +"; + + + if ($_SERVER['REMOTE_ADDR'] == '70.12.157.227' || $_GET['show_all']) { + $select_query = "select * from secrets order by date desc limit $offset, $count"; + } else { + $select_query = "select * from secrets where display = 'yes' or display = 'pref' order by date desc limit $offset, $count"; + } + + if (!$secrets = + mysql_query($select_query)) + { echo "No secrets";} + else { + while ($row = mysql_fetch_array($secrets)) { + echo '

'; + $secret = $row['secret_text']; + $date = $row['date']; + $secretidno = $row['secret_id']; + echo "$secretidno $date
\n"; + echo "$secret\n"; + } + echo '

'; + } + + } + + + if ($auth)//begin valid user display + { + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl); +} else +{gdisp_end();} + +db_disconnect($dbh); + +?> diff --git a/api/update-plan.rb b/api/update-plan.rb new file mode 100755 index 0000000..3e7f184 --- /dev/null +++ b/api/update-plan.rb @@ -0,0 +1,68 @@ +#!/usr/bin/ruby +# GrinnellPlans posting script v0.2 +# Updated: 6/25/2006 +# Author: Will Emigh (will@studiocypher.com) +# This program is provided as-is under an MIT license, although I would like to hear from you if you do +# something fun with it. +# Updated by [wellons]: +# use username instead of userid +# to work with PHP Sessions +# read update in from a file +# there's some bug in plans that makes us do more work for unix line-endings +# set user-agent + + +require 'net/http' +require 'cgi' + +if ARGV[0].nil? || ARGV[1].nil? || ARGV[2].nil? + print "Usage: file-based-post username password file-containing-update\n" + print "This script prepends your plan with the date and the " + print "contents of the given file.\n" + exit +end + +update_file = ARGV[2] +update_file_handle = File.new(update_file, "r") +update = update_file_handle.read() + +username = ARGV[0] +password = CGI::escape(ARGV[1]) +cookie = '' + +Net::HTTP.start('www.grinnellplans.com') do |http| + path = '/index.php' + data = "username=#{username}&password=#{password}" + headers = { + 'User-Agent' => "#{$0} #{$*}: version 0.2", + 'Content-Type' => 'application/x-www-form-urlencoded' + } + resp, data = http.post(path, data, headers) + cookie = resp['Set-Cookie'] + + + req = Net::HTTP::Get.new("/edit.php") + req['Cookie'] = cookie + response = http.request(req) + b = response.body.gsub(/[\n\r]/,'
') + entry = b.scan(/
+ + + + + + + + + + + + + + 0) + { + $messagevals=get_items($dbh, "threadid, created", "subboard", "messageid", $messagenum); + $threadid=$messagevals[0][0]; + + if (!$threadid) + { + echo "The message you requested has been deleted or does not exist."; + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);//gets user display + stop(); + } + + $my_result = mysql_query("Select COUNT(*) From subboard WHERE created >= \"" . $messagevals[0][1] . "\" and threadid=\"" + . $threadid . "\""); + $pagefind = mysql_fetch_row($my_result); + + $pagenumber=floor($pagefind[0]/messagesperpage()); + + } + + + $my_result = mysql_query("Select COUNT(*) From subboard WHERE threadid=\"" . $threadid . "\""); + $totalmessages = mysql_fetch_row($my_result); + + if (!($pagenumber>0)) + {$pagenumber=0;} + + if ($pagenumber > floor($totalmessages[0]/$messagesperpage)) + {$pagenumber=floor($totalmessages[0]/$messagesperpage);} + + echo "
"; + + + + + + + + + + if ($pagenumber>0) + { + echo "<< "; + } + else + {echo "<< ";} + + + + if ($pagenumber>=2) + { + $tempnum=$pagenumber-2; + echo "" . $tempnum . " ";} + else + {echo "_ ";} + + + if ($pagenumber>=1) + { + $tempnum=$pagenumber-1; + echo "" .$tempnum . " ";} + else + {echo "_ ";} + + echo "[" . $pagenumber . "] "; + + if ($totalmessages[0]>($pagenumber+1)*$messagesperpage) + {$tempnum=$pagenumber+1; + echo "" . $tempnum . " ";} + else + {echo "_ ";} + + if ($totalmessages[0]>($pagenumber+2)*$messagesperpage) + {$tempnum=$pagenumber+1; + echo "" . $tempnum . " ";} + else + {echo "_ ";} + + if (floor($totalmessages[0]/$messagesperpage)>$pagenumber) + {echo ">>
";} + else + {echo ">>";} + + + $rowoffset=$messagesperpage*$pagenumber; + + /* + echo ""; + */ + + echo "\n\n \n"; + $thread_title = get_item($dbh, "title", "mainboard", "threadid", $threadid); + + echo '

' . stripslashes($thread_title) . "

\n"; + echo "
Title
Newest + Message
# of Messages
"; + $notes_pref = get_item($dbh, "notes_asc", "accounts", "userid", $userid); + echo ""; + if ($notes_pref) { + $rowoffset = $totalmessages[0] - $messagesperpage * ($pagenumber + 1); + if ($rowoffset < 0) { + //$messagesperpage = -1 * $rowoffset; + $rowoffset = 0; + } + } + echo "\n\n \n"; + //echo "\n\n \n"; + $query = "Select subboard.messageid, + DATE_FORMAT(subboard.created, ' %l:%i %p, %a %M %D, %Y'), + subboard.userid, accounts.username, subboard.title ,subboard.contents + From + subboard left join accounts using (userid) + where subboard.threadid = " . $threadid . " + ORDER BY subboard.messageid DESC + LIMIT " . $rowoffset . "," . $messagesperpage; + $my_result = mysql_query($query); + + $colorlight="
"; + $colordark="
"; + + $colorswitch=0; + while($new_row = mysql_fetch_row($my_result)) { + if ($colorswitch==0) + {$thecolor=$colorlight; + $colorswitch=1;} + else + { + $thecolor=$colordark; + $colorswitch=0; + } + if ($new_row[3]) { + $display_planlove = "[". $new_row[3] . "]"; + } else { + $display_planlove = "User Deleted"; + + +} + echo ""; + + echo ""; + + echo ""; + echo "
"; + echo $thecolor . "
"; + echo "

" . stripslashes($new_row[4]) . "

" . $new_row[0] . "" . $new_row[1] . + "
" . +$display_planlove +. "
" . stripslashes($new_row[5]) . "

"; + echo ""; + + } + + echo ""; + + + + + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);//gets user display + } + +db_disconnect($dbh); +?> diff --git a/board_show.php b/board_show.php new file mode 100755 index 0000000..7264b78 --- /dev/null +++ b/board_show.php @@ -0,0 +1,114 @@ +New Thread"; + $my_result = mysql_query("Select COUNT(*) From mainboard"); + $totalthreads = mysql_fetch_row($my_result); + + + if (!($pagenumber>0)) + {$pagenumber=0;} + + if ($pagenumber > floor($totalthreads[0]/$threadsperpage)) + {$pagenumber=floor($totalthreads[0]/$threadsperpage);} + + + if ($pagenumber>0) + { + echo "<< "; + } + else + {echo "<< ";} + + + if ($pagenumber>=2) + {$tempnum=$pagenumber-2; + echo "" . $tempnum . " ";} + else + {echo "_ ";} + + + if ($pagenumber>=1) + {$tempnum=$pagenumber-1; + echo "" . $tempnum . " ";} + else + {echo "_ ";} + + echo "[" . $pagenumber . "] "; + + if ($totalthreads[0]>($pagenumber+1)*$threadsperpage) + {$tempnum=$pagenumber+1; + echo "" . $tempnum . " ";} + else + {echo "_ ";} + + if ($totalthreads[0]>($pagenumber+2)*$threadsperpage) + {$tempnum=$pagenumber+2; + echo "" . $tempnum . " ";} + else + {echo "_ ";} + + if (floor($totalthreads[0]/$threadsperpage)>$pagenumber) + {echo ">>";} + else + {echo ">>";} + + + + + + $rowoffset=$threadsperpage*$pagenumber; + + + echo ""; + + $my_result = mysql_query("Select mainboard.threadid, mainboard.title, DATE_FORMAT(mainboard.lastupdated, '%a %M %D, + %l:%i %p'), COUNT(*) From + mainboard,subboard where subboard.threadid=mainboard.threadid and mainboard.threadid not in (645) GROUP BY threadid ORDER BY lastupdated DESC LIMIT " . + $rowoffset . "," . + $threadsperpage); + + $colorswitch=0; + while($new_row = mysql_fetch_row($my_result)) { + if ($colorswitch==0) + {echo ""; + $colorswitch=1;} + else + { + echo ""; + $colorswitch=0; + } + + echo ""; + } + + echo "
Title
Newest + Message
# of Messages
" .stripslashes($new_row[1])."" . + $new_row[2] . "
" . $new_row[3] . "
"; + + + + + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);//gets user display +} + +db_disconnect($dbh); +?> diff --git a/board_submit.php b/board_submit.php new file mode 100755 index 0000000..32f578f --- /dev/null +++ b/board_submit.php @@ -0,0 +1,119 @@ +]*>/', '', $threadtitle); + if (!$threadtitle || preg_match("/JLW/", $threadtitle)) + { + $showform=1; + $error_message = "You are creating a new thread. Please enter a title for the thread.
"; + }//if no threadtitle + }//if newthread + else + { + if(!(get_item($dbh,"threadid","mainboard","threadid", $threadid))) + { + $showform=1; + $error_message = "Invalid parent thread.
"; + } + }//if not new thread + + $messagetitle=cleanText($messagetitle); + + $messagecontents=cleanText($messagecontents); + if (!$messagecontents) + {$showform=1; + $error_message = "Please enter a message.
"; + } + + if (!$showform) + { + + if ($newthread) + { + $my_result = mysql_query("Select threadid FROM mainboard WHERE lastupdated < DATE_SUB(NOW(), INTERVAL 7 DAY)"); + while($new_row = mysql_fetch_row($my_result)) { + //delete_item($dbh, "subboard", "threadid", $new_row[0]); + } + + //mysql_query("DELETE FROM mainboard WHERE lastupdated < DATE_SUB(NOW(), INTERVAL 7 DAY)"); + + + mysql_query("INSERT INTO mainboard VALUES(\"\",\"" . addslashes($threadtitle) . "\",NOW(),NOW(),\"" . $idcookie . "\")"); + $threadid=mysql_insert_id(); + + } + + mysql_query("INSERT INTO subboard VALUES(\"\",\"" . $threadid . "\",NOW(),\"".$idcookie."\", \"".addslashes($messagetitle)."\", \"".addslashes($messagecontents)."\")"); + + mysql_query("UPDATE mainboard SET lastupdated = NOW() WHERE threadid = \"" . $threadid . "\""); + + // echo "Your message has been submitted."; + + //process message here + } + +}//if submit + +if ($error_message || $showform) { + mdisp_begin($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);//begin user display + echo $error_message; +} else { + header('Location: http://www.grinnellplans.com/board_messages.php?threadid=' . $threadid) ; +} + + +if ($showform) +{ + echo "
"; + if ($newthread) + { + ?> + Thread Title:


+ + + Message Title:


+ Message Contents:

+ +
+ diff --git a/changename.php b/changename.php new file mode 100755 index 0000000..9075cb5 --- /dev/null +++ b/changename.php @@ -0,0 +1,45 @@ +" . stripslashes($user_name) . ".";//tell user their name has been changed + }//if changing name + else { //if not changing name, give form + $old_name = stripslashes(get_item($dbh,"pseudo","accounts","userid", + $idcookie));//get old name + //display form + ?> +

Change Name

+
+ + + + +
+
+ diff --git a/changepassword.php b/changepassword.php new file mode 100755 index 0000000..22dc683 --- /dev/null +++ b/changepassword.php @@ -0,0 +1,75 @@ +3){ + $crpassword = crypt($mypassword, "ab"); //encrypt the password, + set_item($dbh, "accounts", "password", $crpassword, + "userid", $idcookie);//set the password + echo "Password changed to " . $mypassword . ".";//confirm changed password + } else {echo "Could not change password. Your password must be 4 or more characters.";} + } else {echo "Illegal character in password. Please do not use \" or '.";} + } + if ($changed=='guest_pass') { + $guest_password = $_POST['guest_password']; + set_item($mydbh,"accounts","guest_password", $guest_password, "userid", $idcookie); + $real_pass = $guest_password; + } + ?> +

Change Login Password

+
+ + + + + +
+
+

Set Guest Password

+

+ This is a password you can use to allow non-Plans users to read your plan. They will not be able to edit your plan or use any other plans features.
+This feature is intended to allow people to share their Plans with a small number of personal friends. +At any time, you may change this password to prevent people from accessing your plan using the old guest password. +
+ +You may give this link out to anyone who you would like to be able to read you plan and ask them to bookmark it:
+ +http://www.grinnellplans.com/read.php?searchname=&guest-pass= +
+ +Currently, your plan is completely private since you do not have a guest password set up. + +

+
+ + + + + +
+
+ diff --git a/config-db.php b/config-db.php new file mode 100755 index 0000000..5baa5f4 --- /dev/null +++ b/config-db.php @@ -0,0 +1,24 @@ +e4oV'"; +$dbloginpassword = "'wIM2bHI'"; + +//What is the server the database is on? + +$dbserver = "'127.0.0.1'"; + +?> diff --git a/config.php b/config.php new file mode 100755 index 0000000..36e1d5f --- /dev/null +++ b/config.php @@ -0,0 +1,15 @@ + diff --git a/cookies.php b/cookies.php new file mode 100644 index 0000000..b33903a --- /dev/null +++ b/cookies.php @@ -0,0 +1,3 @@ + diff --git a/core-perms.php b/core-perms.php new file mode 100644 index 0000000..5105701 --- /dev/null +++ b/core-perms.php @@ -0,0 +1,29 @@ + 1, + 'index.php' => 1, + 'quicklove.php' => 1, + 'search.php' => 1, +); +if ($status) { + if ($status == 'write-only') { +# error_log("JLW: $userid, $status"); + $php_self = $_SERVER['PHP_SELF']; + $php_self = preg_replace('/\//', '', $php_self); +# error_log("JLW: " . $php_self); + if ($write_only_access[$php_self] && + ($php_self != 'search.php' || $_GET['mysearch'] == $username)) { + // Okay +# error_log("JLW: permitted"); + } else { + echo 'Sorry, ' . $username . ' is a "write-only" plan, and as such does not have access to most Plans features out of respect for user privacy.'; + echo "
"; + echo "If it sounds like there's been some mistake, pleases email us at " . 'grinnellplans@gmail.com.'; +# error_log("JLW: blocked"); + exit(0); + } + } +} +?> diff --git a/customize.php b/customize.php new file mode 100755 index 0000000..c7a3228 --- /dev/null +++ b/customize.php @@ -0,0 +1,67 @@ + +

Preferences:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
change auto list
change password
change name
guest readable
 

customize

interfaces
styles
edit + text box size
optional + links
+
+ diff --git a/danger.gif b/danger.gif new file mode 100755 index 0000000000000000000000000000000000000000..2a225e5a453130b0569cb746e9db53d1e49ad3a1 GIT binary patch literal 102 zcmZ?wbhEHbWMmLvc+3C-|NsAwj*gyLlzwei=faY-9AB4WNrrAYhD9n2J2e?D=rKGu xX83OjQU(Ny|Ck+Jy%`jLvM_Qn@H6Ou3;-F$z``TIV(4MWuDUgX+ku6_8UO`X9 + + +Notes + + + + + + + + + + + + Hello + diff --git a/dbfunctions.php b/dbfunctions.php new file mode 100755 index 0000000..d92862c --- /dev/null +++ b/dbfunctions.php @@ -0,0 +1,183 @@ +"; + mysql_close($dbh); + exit(); +} +} + +/* + *Gets a single item from the database. Returns a single item. + */ + +function get_item($dbh,$get_column,$table,$search_column, $search_item) +{ + $search_item= addslashes($search_item); + $my_result = mysql_query("Select $get_column From $table where + $search_column = '$search_item'"); + + $my_row = mysql_fetch_array($my_result); + return $my_row[0]; +} + +/* + *Returns multiple items from a database. + *Returns an 2-d array. The first index represents rows in + *the database. The second represents columns in the database. + */ + +function get_items($dbh,$get_column,$table,$search_column, $search_item) +{ + $search_item= addslashes($search_item); + $my_result = mysql_query("Select $get_column From $table where + $search_column = '$search_item'"); + + while($new_row = mysql_fetch_row($my_result)) { + $all[] = $new_row; + } + return $all; +} + +/* + *Removes a row from the database. + */ + +function delete_item($dbh, $table, $search_column, $search_item) +{ + $search_item = addslashes($search_item); + mysql_query("DELETE FROM $table WHERE + $search_column = '$search_item'"); +} + +/* + *Changes an item in the database. + */ + +function set_item($dbh, $dtable, $dcolumn_change, $dcolumn_value, + $dsearch_column, $dsearch_item) + { + $dcolumn_value = addslashes($dcolumn_value); + $dsearch_item = addslashes($dsearch_item); + mysql_query("UPDATE $dtable SET $dcolumn_change = '$dcolumn_value' WHERE + $dsearch_column = '$dsearch_item'"); + } + +/* + *Gets rid of an entire table in the database. + */ + +function annihilate($dbh, $table) +{ + if (!mysql_query("DROP TABLE $table")) + { + printf("Error is dropping $table"); + mysql_close($dbh); + exit(); + } +} + +/* + *Adds a table to the database, with items being the creation values + *for the table (i.e. TINYINT mynumber) + */ + +function create_table($dbh, $table_name, $items) +{ + $joined_items = join(',', $items); + if (!mysql_query("CREATE TABLE $table_name($joined_items)")) + {printf("Error creating table $table_name with values $joined_items");} +} + +/* + *Searches the database for a partial term and returns those parts + *that contain the term + */ + +function partial_search($dbh,$get_column,$table,$search_column, + $search_item,$orderby) + { + $search_item= addslashes($search_item); + $my_result = mysql_query("Select $get_column From $table where + $search_column RLIKE '$search_item' ORDER by $orderby"); + + while($new_row = mysql_fetch_row($my_result)) { + $all[] = $new_row; + } + return $all; + } + + + +?> diff --git a/documents/faq.html b/documents/faq.html new file mode 100755 index 0000000..4ad5d42 --- /dev/null +++ b/documents/faq.html @@ -0,0 +1,398 @@ + + + + Frequently Asked Questions About Plans v2 + + + +

Plans v2 FAQ

+ + +
+ +

Plan history:

+

Where did plans come from?

+ +In the days of old, Grinnell College had a Vax computer system. One of the +standard commands available on this system was called 'finger'. This +command gave various information about a user, including showing the +person's .plan file. Each user had their own .plan file, which was +originally meant for people at companies and elsewhere to post what their +work plans were. The .plan file at Grinnell College (and many other +places) gained a social aspect however. People started posting notes to +their friends, writing stories, or writing whatever else they felt like +writing. At Grinnell College, a small group of students called the +'VAXGods' wrote and maintained scripts to allow users to automatically +keep track of which of their friends had updated their .plan files.

+ +During the summer of 2000, the Vax at Grinnell College was phased out of +operation. There was a time period in which no sort of plan system existed +at Grinnell College. During this time period however, older students felt +a strong dismay over the loss of the popular plans system. Thoughts +floated around about creating a new web-based version of plans, and so +Rachel Heck ('01) was the first to take the initiative in creating a +web-based plan system.

+ +She wrote the original version (what we consider Plans v0) of the Grinnell +web-based plans system with just a few friends in mind. The system grew +very quickly in popularity. Since this original system was designed with +only a few users in mind, problems started to arise with the swelling +numbers of plan users. So in the spring of 2001, Rachel wrote a new +version of plans (Plans v1) that had certain improvements, such as being +backed by a database, with Andrew Kensler ('01) giving suggestions and +writing the search page. In the spring of 2001 Rachel turned control of +plans over to the current maintainers of plans. The current maintainers +then significantly altered Plans v1, adding on certain customization +abilities, and other abilities. By autumn 2001, it was apparent that the +plan user base was becomming too large for the program to handle well, and +so Plans v2 was introduced in the spring of 2002. During the +summer of 2003, events occured which led to Plans being hosted by +a commercial web host instead of being hosted by Grinnell College.

+ +

Is the program a class project, or a commercial +product or what?

+ +Plans is not, nor ever was a class project (although we know of at least +one class project that tried to come up with a better version of plans +which failed). Running the plans system has very much been an educational +experience to say the least. Anyway, plans are not a commercial project, +but simply a student run um... something or other.


+ + +

Problems with Plans:

+

What should I do if I find a bug in the program, have a +comment, question or criticism, or if the program simply isn't +working?

+Email grinnellplans@gmail.com

+ +

I can log in, but then when I click on anything +it tells me that I am a guest, what should I do?

+The Plans system uses what are known as cookies, so that while you are +logged into Plans you get the style/interface/etc. of your choosing, as +well as giving you your autofinger list. However you can set your internet +browser to not accept cookies. Normally the cookie takes effect after you +receive the first page after you log in. If your browser is set to not +accept cookies, then you can log in and get the first page as normal, but +then if you click to receive any other page, Plans does not know who you +are and so considers you a guest (you will see that the style reverts back +to the default pastel color scheme).

+ +So what you need to do is check the settings on your browser and check the +option to allow cookies. In some browsers if the security setting is set +to the most protective you may need to lower the security a notch. Just +remember to switch it back afterwards if you are wanting to keep that more +protective setting while surfing the general internet.

+ +[More specific instructions for each of the main browsers will eventually +be put here.]

+ +

Where can I get a copy of the source code for +Plans?

+Plans CVS +(Click on the 'Browse CVS' link near the bottom, and then select +'grinnellplans').

+ +
+ + +

Getting a new plan:

+

What criteria do I have to meet to be given a +plan?

+ +We do however, reserve the right to refuse a person or group an +account, +for any reason regardless of whether or not they meet these criteria. +We also reserve the right to remove an account at any time, for any +reason. + +

Can campus groups have plans?

+Yes, however we have no interest in determining who or what should be a +group, and so we defer the determining of groups to SGA. To prove to us +that you are an SGA recognized group, when requesting a plan, you must +send the request e-mail from the group's email account (i.e. instead of +sending the request from your personal email account, +doejohn@grinnell.edu, you must send it from your group's email account, +mygroup@grinnell.edu).

+ +

Can administrators/faculty of colleges in Grinnell, +Iowa have plans?

Yes.

+ +

What do I do/Who do I contact if I want a new +plan?

+Our first request is that you read this faq, and browse Plans using the +guest feature to get an idea of what Plans are about (currently disabled). +Then if you want a plan, simply send an email with a brief message +indicating that you'd like a plan to grinnellplans@gmail.com. If you +are requesting a group account, please be sure to send the request from +your groups email account.


+ +

About plan features:

+

How do I put in a link to another person's +plan?

+Simply put the person's username inside of brackets on your plan. i.e. to +put a link to the plans plan, you would put [plans] somewhere on your +plan.

+ +

How do I put in a link to a message on the Notes +board?

+When you view the messages within a thread, the number to the far left +just under the title +of the message is the id number of the message. To make a link that +message, simply enclose +the id number between square brackets. For example:
+
+[1]
+
+

How do I put in a link to a webpage outside of +Plans?

+There are several ways of making such a link. The first way is as +such:

+[http://www.grinnellplans.com|Grinnell Plans Homepage]  
+
+which will give you this: Grinnell +Plans +Homepage
+
+The second way is as such:
+
+[http://www.grinnellplans.com]
+
+Which will give you: http://www.grinnellplans.com
+
+The final way is as such:

+<a href="http://www.grinnellplans.com">Grinnell +Plans</a>

which will give you: Grinnell Plans

+ +

Is there a way to see who has you on their autoread +list?

+No, however to let you know the cause of the rumor you heard: in the +distant past there had been ways, but these ways were never intended to be +available for plan users to use.

+ +

Will there ever be a way to see who has you on +their autoread list?

+No. We want to encourage people to read other people's plans without fear +of other people knowing which plans they read, and to encourage people to +write plans without censuring themselves based upon the knowledge of who +reads their plan. Although in reality a public forum, plans tend to give +people a sense of false secrecy, in which a plan writer is aware of the +public nature of plans, but yet is allowed to, under the veil of false +secrecy, to communicate things publicly which they would like to +communicate, but which in regular public discourse, they may shy away +from. Thus plans at times can reflect a very interesting side of Grinnell +which otherwise might not be seen. As such, to allow the public to see who +is on their autoread lists would is essence destroy plans. Therefor, we +will never provide a way to see who is on your autoread list.

+ +

What is this three tiered Autoread list +thing?

+The autoread list is a mechanism whereby a plan person can select which +plans of other users interest them, and know if those plans have been +updated since the person last read the users plan. For example, if you put +me on your autoread list, and read my plan, then if afterwards I update my +plan, you will see my username on your autoread list as having a new plan. + +In a way, the three tiered autoread list is almost like having three +seperate autoread lists. It allows you to put the people in which you are +most interested in keeping up with their plans in level 1, and the +people that you are less interest in keeping up with in level 2, etc. +This means that if you have only a limited amount of time to read plans, +you can easily read the new plans of just those who you are most +interested in. Please note that this is just one potential hierarchy that +can be attached to the three tiered autoread list, and that you are free +to use whatever categorization you wish. Also, remember that you can +simply set everyone on your list to level 1 and hence not have to bother +with the three tiered system.

+ +When there is a new plan that you haven't read, it will appear under the +title of the level that you have selected. For instance if you have me +on level 1, and I've updated my plan, when you click on level 1, the +title level 1 will no longer be a link, but will now be a colored text, +and under where it says level 1, you will see my username as a link +that you can click to read my plan. + +To see what new plans there are for people on level 2, click on the +level 2, and if there are any new plans, links to the new plans will +appear under the colored text that says level 2.

+ +

What is the percent thing at the bottom of the Edit +Page?

+There is now a small meter displayed below your plan on the edit page. If +you have a Javascript enabled browser it will show you +approximately how close you are to the maximum plan size. If you +exceed 100%, the bottom of your plan may be cut off. (Patch submitted by +Andrew Kensler).

+ +

What basic HTML can I use in plans, and how do I +use it?

+Opening tags go inside of angle brackets, like this: <tag> +
+
For every opening tag, there must be a closing tag to match it, with +the exception of the <hr> tag which will get replaced with a +horizontal line. You close a +tag by starting it with a slash: </tag> +
+
There are three formatting tags available: bold <b>, +underline <u>, and italics <i>. +
+
+You can also use more than one tag at a time as I have done with the +header of this section. +
+
<b><i>This text is bold and +italicized</i></b> +
+
becomes This text is bold and italicized. +
+
+
If there are any questions about using the HTML tags for formatting +your +plan, please feel free to contact us at grinnellplans@gmail.com +and +we'll be happy to +answer them.

+ +

Are there additional things that you can put in +your plan?

+Yes, currently you can put [date] on your plan and then when you press the +submit button it will get converted to the date and time at which you +pressed the submit button. When you edit your plan again, the date and +time will not be converted back to [date].

+ +

Are you going to ever add in more html tags for +plan users to use?

+At this time there are no plans to do so. Although we change the +interface of plans, the central focus of plans remains the same in that it +is about the text message that users wish to send out. The few html tags +currently allowed seem adequate for allowing plan users to communicate in +text. Furthermore, to be quite honest, disallowing html tags is quite +easy, it is harder (and adds on significantly to processing power needed) +to then allow html tags back in. So we want to keep the processing +required to a reasonable amount (while at the same time not allowing +people to put in whatever html they want), and so we are content with what +is currently allowed. + + +

What is this Reg. Exp. thing on the search +page?

+Reg. Exp. is short for regular expressions. It's a way of describing a +pattern in text. This gives you a much more flexible search. + +

How do I use Reg. Exp.?

+What follows +is Andrew Kensler's explanation of how to use Reg. Exp.: +

+A . matches any character. For example, b.t will match "bit", "bat", +"bot", "but", "bet", etc. +
+
Putting a series of characters in square brackets means that it will +match any one of those letters. Thus you can write b[iaoe]t which will +match "bit", "bat", "bot", "bet", etc., but not "but". You can also write +a range using a hyphen, e.g. [0-9] will match any digit. If you put a ^ +right after the opening bracket, that means any character except +those. So [^0-9a-z] means any character that's not a number or a letter. +
+
A ? after something means that whatever is just before it is optional +and may or may not be there. Thus bo?at will match will match either +"boat" or "bat". If you want to make more than one character optional, +you can put it in parenthesis. Thus mount(ain)? matches either "mount" or +"mountain. +
+
A * works similiarly except that it means that it matches something +zero or more times. So ba*h will match "bh", "bah", "baah", "baaah", +etc. Again, you can use parenthesis so b(an)*a will match "ba", "bana", +"banana", "bananana", etc. +
+
If you want something like that but where it must appear at least +once, use a + sign. Thus bana(na)+ will match "banana", "bananana", +"banananana", etc. like above but not "banan" or "bana" or anything +shorter. +
+
You can also give multiple possibilities and seperate them with a | +Thus if you had a thing for fruit, you could search for +banana|apple|pear|peach to find any of them. +
+
You can combine all of these however you like. You're welcome to +search for (captain [0-9]+)|(b(an)*a) or something like that. +
+
One last little gotcha, though: if you want to search for any of these +characters litterally, put a backslash, \, before the character. So if +you really want to search for a question mark, use \? as the regular +expression. +

If this doesn't make sense, then just leave the Reg. Exp. box +unchecked and it will search for whatever you typed literally.

+ +

Privacy on Plans:

+

How private are my postings on Plans

+Plans is intended to be a private forum and anything said within Plans should, by default, be considered to be in confidence. We strongly discourage distributing any material outside of Plans without first gettting permission from the author. +
+
The outside world can only view your plan if you set it to be guest-readable in the preferences. However, Plans is only as secret as the least-trusted user and the administrators have no way to detect or intervene when someone does leak personal information. + + + + diff --git a/documents/privacy.txt b/documents/privacy.txt new file mode 100755 index 0000000..ca1217c --- /dev/null +++ b/documents/privacy.txt @@ -0,0 +1,44 @@ + + +Will not sell email addresses. Will not spam you. +Grinnell Plans uses cookies (information stored by your browser on your +computer's hard drive) to improve navigation of GrinnellPlans.com + +We will do our best to make sure that your password is never revealed. We +will never see your password, nor will we ever ask for it. However, +Grinnell Plans currently does not use technology that encrypts data being +sent to the webserver. As a result, your password is sent in plain text. +Do not use a password that you are using for anything else. + +Your IP address is recorded by the webserver and may be used for system +administration, troubleshooting, and to examine overall traffic trends. + +Your plan will not be viewable to guests, or available on the web unless +you choose to make it so. + +Grinnell Plans may be subject to research, when the administrators of +Grinnell Plans have been notified of such research and given their +approval. Any research that collects specific data on a user (for instance +indicating that a line of text came from a specific user), will +automatically not be given approval. + +We will do our best to make sure that your autofinger list is never +revealed, with the exception that in the future there may be a way that +users can choose to reveal their autofinger list. + + + +Grinnell Plans does its best to protect the information that you put into +Grinnell Plans. We cannot however guarantee that this information will be +protected. + +Grinnell Plans will give out your information in the event that it is +legally required to (subpoenaed). + + + + + + + + diff --git a/donations/create-donation-database.txt b/donations/create-donation-database.txt new file mode 100755 index 0000000..d1f8e88 --- /dev/null +++ b/donations/create-donation-database.txt @@ -0,0 +1,13 @@ +-- a file to make the database of donations. + + +create table donations ( +donation_id int not null primary key auto_increment +,donor varchar(255) +,amount int not null +,comment varchar(255) +,date datetime +); + + + diff --git a/donations/create-expense-database.txt b/donations/create-expense-database.txt new file mode 100755 index 0000000..d059414 --- /dev/null +++ b/donations/create-expense-database.txt @@ -0,0 +1,12 @@ +-- a file to make the database of donations. + + +create table expenses ( +expense_id int not null primary key auto_increment +,expense varchar(255) +,amount int not null +,date datetime +); + + + diff --git a/donations/donations.php b/donations/donations.php new file mode 100755 index 0000000..e68495e --- /dev/null +++ b/donations/donations.php @@ -0,0 +1,193 @@ +'; +echo "\n"; +include 'inc-db.php'; +include 'inc-error.php'; +?> + + + Donations Made to Support Plans + +

Donations Made to Support Plans

+
+ + $value) + $formVars[$varname] = $value; + + // if (!($formVars["dbpass"])) { + // $formVars["dbpass"] = "readonly"; + //} + + if (!($connection = @ mysql_pconnect($hostName,$username,$password))) { + showError(); + exit; + } + + if (!(mysql_select_db($databaseName, $connection))) { + showerror(); + exit; + } + +if (!empty($_POST)) { + + if (!($formVars["date"])) { + $formVars["date"] = "CURDATE()"; + } + $insertQuery = "INSERT INTO donations (donor, amount, date, comment) values + ('".$formVars["donor_name"]."',' + ".$formVars["amount_added"]."',' + ".$formVars["date"]."',' + ".$formVars["comments_added"]."')"; + + if (!(mysql_query($insertQuery, $connection))) { + showerror(); + } + +} + + +function p_print ($text) { + echo "

"; + echo "$text"; + echo "

"; +} + + +function show_donations_table ($conn) { +echo " + + + + + + "; + + $selectQuery = "SELECT donor, amount, DATE_FORMAT(date,'%m/%d/%Y'), comment FROM donations order by date desc, donor"; + + if (!($infoz = mysql_query($selectQuery, $conn))) { + showerror(); + exit; + } + if ($row = mysql_fetch_array($infoz)) { + do { + echo "\n\t"; + echo "\n\t"; + echo "\n\t"; + echo "\n\t"; + echo "\n\n\n"; + } while ($row = mysql_fetch_array($infoz)); + } + echo "
DonorAmount ($)DateComments
".$row["donor"]."".$row["amount"]."".$row["DATE_FORMAT(date,'%m/%d/%Y')"]."".$row["comment"]."
"; +} + +function show_expenses_table($conn) { + echo " + + + + + "; + + $selectQuery = "SELECT expense, amount, DATE_FORMAT(date,'%m/%d/%Y') FROM expenses order by date desc, expense"; + + if (!($infoz = mysql_query($selectQuery, $conn))) { + showerror(); + exit; + } + if ($row = mysql_fetch_array($infoz)) { + do { + echo "\n\t"; + echo "\n\t"; + echo "\n\t"; + echo "\n\n\n"; + } while ($row = mysql_fetch_array($infoz)); + } + + + echo "
ExpenseAmount ($)Date
".$row["expense"]."".$row["amount"]."".$row["DATE_FORMAT(date,'%m/%d/%Y')"]."
\n"; + +} + + +function get_table_total ($conn, $tbl) { + $sumquery = "SELECT SUM(amount) From $tbl"; + if (!($result = mysql_query($sumquery, $conn))) { + showerror(); + exit; + } + $val = mysql_fetch_array($result); + return $val[0]; +} + +function get_table_count($conn, $tbl) { + $countquery = "SELECT count(*) From $tbl"; + if (!($result = mysql_query($countquery, $conn))) { + showerror(); + exit; + } + $val = mysql_fetch_array($result); + return $val[0]; +} + +function show_statistics($conn) { + $donations_total = get_table_total($conn, 'donations'); + $expenses_total = get_table_total($conn, 'expenses'); + $difference = $donations_total - $expenses_total; + p_print("There has been \$$donations_total in donations and \$$expenses_total in expenses for a net total of \$$difference."); + + $donations_count = get_table_count($conn, 'donations'); + $expenses_count = get_table_count($conn, 'expenses'); + p_print("There have been $donations_count donations and $expenses_count expense(s)."); + +} + +?> +

Donations

+

Expenses

+
+ +
+

+ The dispensation of the fund is explained on the treasurer's page. +

+
+

+ Some individuals have been sending donations to:
+ Jonathan Wellons
+ Box# 15 - 51
+ Grinnell, IA 50112 +

+

+Others are using the PayPal account of 'wellons@cs.grin.edu'. PayPal charges a fee of 2.9% + $ 0.30 when you pay by credit card. +

+

+ Some individuals who are donating anonymously are choosing a pseudonym so that they can verify that their donation appears in the table. +

+
+

+ Questions and comments should be directed to: wellons@cs .grinnell.edu +

+ + +

+ Valid XHTML 1.1! +

+ +

+ Created: Thursday, July 24, 2003 +

+ + + diff --git a/donations/inc-db.php b/donations/inc-db.php new file mode 100755 index 0000000..ba8c530 --- /dev/null +++ b/donations/inc-db.php @@ -0,0 +1,6 @@ + diff --git a/donations/inc-db.php.old b/donations/inc-db.php.old new file mode 100755 index 0000000..11003f7 --- /dev/null +++ b/donations/inc-db.php.old @@ -0,0 +1,6 @@ + diff --git a/donations/inc-error.php b/donations/inc-error.php new file mode 100755 index 0000000..a7683d4 --- /dev/null +++ b/donations/inc-error.php @@ -0,0 +1,73 @@ +\n" . + "Please report the following to the administrator:
\n" . + "Error in line $errline of file $errfile.
\n"; + + // Send the error to the administrator by email + error_log($errorString, 1, "kuper"); + ?> + + + + Ride Board + + + + +
+ The rideboard database is temporarily unavailable.

+ $errorString +
+ + "); + default: + break; + } +} +?> diff --git a/edit.js b/edit.js new file mode 100755 index 0000000..4ef4ba6 --- /dev/null +++ b/edit.js @@ -0,0 +1,16 @@ +function countlen() { + var arealen = document.editform.plan.value.length; + var perc = Math.round( arealen * 100 / 60000 ); + if ( perc != window.perc ) + { + document.editform.perc.value = perc + "%"; + document.editform.filled.width = perc; + document.editform.unfilled.width = 100 - perc; + if ( perc >= 100 && window.perc < 100 ) + document.editform.filled.src = "danger.gif"; + else if ( perc < 100 && window.perc >= 100 ) + document.editform.filled.src = "filled.gif"; + window.perc = perc; + } +} +window.onload = countlen; diff --git a/edit.php b/edit.php new file mode 100755 index 0000000..ff93daf --- /dev/null +++ b/edit.php @@ -0,0 +1,110 @@ +'s into \n's + $plan = preg_replace("/
/", "", $plan); + $plan = preg_replace("/&/s", "&", $plan); + $plan = preg_replace("/amp;/s", "", $plan); + $plan = preg_replace("/
/","
",$plan); + + + //change plan links into regular form + + $plan = + preg_replace("/\[\(.*?)\<\/a\>\]/s", + "[\\1]",$plan); + + $plan = + preg_replace("/\[\(.*?)\<\/a\>\]/s", + "[\\1]",$plan); + + + + //change plan links into regular form + $plan = + preg_replace("/\[\#(.*?)\<\/a\>\]/s", + "[\\1]",$plan); + + //strip out CSS info from regular links on plans + $plan = + preg_replace("/\(.*?)\<\/a\>/s", + "[\\1\|\\2]",$plan); + + //strip slashes that were added to plan to make sure the database didn't have any troubles with it + $plan = stripslashes($plan); + + + //give the form: + ?> +
+ "; + echo "
+ +    
"; + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl); + + }//if (!$part) + else //if form info submitted, process + { + $diff_data = + get_items($dbh,"edit_text","accounts","userid",$idcookie);//get plan as well as what the size of the plan should be + + $old_plan = $diff_data[0][0];//put the contents of the plan into the plan variable for easier use. + $diff = xdiff_string_diff($old_plan, $plan); + $diff = $diff; + mysql_query("insert into diffs(userid, text, date) values($idcookie, \"$diff\", now())"); + //add_row($dbh, 'diffs', array($idcookie, $diff, 'now()')); + set_item($dbh, "accounts", "edit_text", $plan, "userid", $idcookie); + $plan=cleanText($plan); + + + set_item($dbh, "accounts", "plan", $plan, "userid", $idcookie);//set plan in database + setUpdatedTime($idcookie);//set the time which keeps track of when the plan was last updated + set_item($dbh, "autofinger", "updated", 1, "interest", $idcookie);//make the plan show up as updated on other people's autoread list. + $plan = stripslashes($plan);//strip the slashes for display + echo "

Plan Changed To:

"; + echo $plan;//display new plan for user + echo "

"; + + + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);//end valid user display + + }//if (!$part) else + +}//allow to edit if user + +db_disconnect($dbh); +?> + diff --git a/favicon.ico b/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..0a7b4fa9dbc87d4b5daafee021da86fd2d0feaea GIT binary patch literal 318 zcmbtOF%rNa2#a@J++^uW$3D|1bnS2ak}se^bm-EhLK2J|2qZ=+1%A#1?5>162a&Lm zfi^fOx|dM_CTa~KvqWo+>JK&&W?m5tw@9*%@@8E`*?=zEU9~InFh2CYFGOE{Y4~%_ Nnk#G1-0Q#ig9o?{R3QKW literal 0 HcmV?d00001 diff --git a/filled.gif b/filled.gif new file mode 100644 index 0000000000000000000000000000000000000000..10593937812017ae3b0f86071c98a2fc40c088d8 GIT binary patch literal 102 zcmZ?wbhEHbWMmLvc+3C-|NsAwj*d?6o7s8%TKd$5E-5(-QN;{7-3)b$7$)pwSagA5 x%X5a~Kvf{1_>bAq)tf=_CkrDN13!Zf$N-R03@khXEQTJ2?5bNMxE)v+tO36ZA_D*b literal 0 HcmV?d00001 diff --git a/functions-authentication.php b/functions-authentication.php new file mode 100755 index 0000000..bb940e1 --- /dev/null +++ b/functions-authentication.php @@ -0,0 +1,36 @@ + diff --git a/functions-autofinger.php b/functions-autofinger.php new file mode 100755 index 0000000..83b504f --- /dev/null +++ b/functions-autofinger.php @@ -0,0 +1,123 @@ +\n\n"; + echo "\n"; + echo "\n"; + $mark_as_read = $_GET['mark_as_read']; + if( $mark_as_read ) { + // echo $mark_as_read; + mark_as_read($dbh, $idcookie, $myprivl); + } + + for ($priority = 1; $priority < 4; $priority++) { + $new_url = add_param($myurl, 'myprivl', $priority); + $new_url = remove_param($new_url, 'mark_as_read'); + echo '' . "\n"; + echo '' . "\n"; + if ($priority == $myprivl) { + + $privarray = mysql_query("Select autofinger.interest,accounts.username + From autofinger, accounts where owner = '$idcookie' and priority = + '$myprivl' and updated = '1' and autofinger.interest=accounts.userid"); + + while($new_row = mysql_fetch_row($privarray)) { + $autoreadlist[] = $new_row; + } + + echo '' . "\n"; + $o=0; + while ($autoreadlist[$o][0]) + { + $read_url = 'read.php'; + $read_url = add_param($read_url, 'myprivl', $myprivl ); + $read_url = add_param($read_url, 'searchname', $autoreadlist[$o][1] ); + echo "" . "\n"; + echo "\n"; + + $o++; + } + //echo '    '; + } + echo "\n"; + } + +} + +?> diff --git a/functions-core.php b/functions-core.php new file mode 100644 index 0000000..9584981 --- /dev/null +++ b/functions-core.php @@ -0,0 +1,53 @@ +
" . $sql . "

"; + mysql_query($sql); +} + + +?> diff --git a/functions-database.php b/functions-database.php new file mode 100755 index 0000000..494de0a --- /dev/null +++ b/functions-database.php @@ -0,0 +1,189 @@ +e4oV'; +$dbtable = '127.0.0.1'; + +/* + *Connects to the Database and returns the database handler. + *Establishes a persistant connection. + */ + + function db_connect() { + global $dbloginpassword ; + $dbh = mysql_connect('127.0.0.1', 'plans', $dbloginpassword); //$dbloginpassword); + //$dbh = @ mysql_pconnect('127.0.0.1','test',''); + mysql_select_db('plans'); + if (!$dbh) + { + print "Obviously, the above messages suggest that the database connection failed. It's not a bad idea to report this error to grinnellplans@gmail.com"; + exit; + } + else + return $dbh; + } + +/* + *Given the database handler, closes the connection to the database. + */ + + function db_disconnect($dbh) { + mysql_close($dbh); + } + +/* + *Adds a row to a table in the database. + *Takes the row as an array that represent the different columns. + */ + +function add_row($dbh, $table, $row) +{ + while(list ($key, $items) = each ($row)) + {$row[$key] = "\"" . addslashes($items) . "\""; +} +$joined_row = join(',', $row); +if (!mysql_query("INSERT INTO $table VALUES($joined_row)")) +{ + echo "Error adding entry to $table"; + mysql_close($dbh); + exit(); +} +} + +/* + *Gets a single item from the database. Returns a single item. + */ + +function get_item($dbh,$get_column,$table,$search_column, $search_item) +{ + $search_item= addslashes($search_item); + $my_result = mysql_query("Select $get_column From $table where + $search_column = '$search_item'"); + + $my_row = mysql_fetch_array($my_result); + return $my_row[0]; +} + +/* + *Returns multiple items from a database. + *Returns an 2-d array. The first index represents rows in + *the database. The second represents columns in the database. + */ + +function get_items($dbh,$get_column,$table,$search_column, $search_item) +{ + $search_item= addslashes($search_item); + $my_result = mysql_query("Select $get_column From $table where + $search_column = '$search_item'"); + + while($new_row = mysql_fetch_row($my_result)) { + $all[] = $new_row; + } + return $all; +} + +/* + *Removes a row from the database. + */ + +function delete_item($dbh, $table, $search_column, $search_item) +{ + $search_item = addslashes($search_item); + mysql_query("DELETE FROM $table WHERE + $search_column = '$search_item'"); +} + +/* + *Changes an item in the database. + */ + +function set_item($dbh, $dtable, $dcolumn_change, $dcolumn_value, + $dsearch_column, $dsearch_item) + { + $dcolumn_value = addslashes($dcolumn_value); + $dsearch_item = addslashes($dsearch_item); + mysql_query("UPDATE $dtable SET $dcolumn_change = '$dcolumn_value' WHERE + $dsearch_column = '$dsearch_item'"); + } + +/* + *Gets rid of an entire table in the database. + */ + +function annihilate($dbh, $table) +{ + if (!mysql_query("DROP TABLE $table")) + { + printf("Error is dropping $table"); + mysql_close($dbh); + exit(); + } +} + +/* + *Adds a table to the database, with items being the creation values + *for the table (i.e. TINYINT mynumber) + */ + +function create_table($dbh, $table_name, $items) +{ + $joined_items = join(',', $items); + if (!mysql_query("CREATE TABLE $table_name($joined_items)")) + {printf("Error creating table $table_name with values $joined_items");} +} + +/* + *Searches the database for a partial term and returns those parts + *that contain the term + */ + +function partial_search($dbh,$get_column,$table,$search_column, + $search_item,$orderby) + { + $search_item= addslashes($search_item); + $my_result = mysql_query("Select $get_column From $table where + $search_column RLIKE '$search_item' ORDER by $orderby"); + + while($new_row = mysql_fetch_row($my_result)) { + $all[] = $new_row; + } + return $all; + } + + + +?> diff --git a/functions-display.php b/functions-display.php new file mode 100755 index 0000000..4799e94 --- /dev/null +++ b/functions-display.php @@ -0,0 +1,297 @@ + + + + + <?php echo $title ?> + + + + + + + Guest access is (most likely) temporarily disabled.


+ http://grinnellplans.com/"; + db_disconnect($dbh); + exit(); + */?> + + +

 

level ' . $priority . '' . "\n"; + echo 'X

 

" . "\n" . + $autoreadlist[$o][1] . "
+ + +
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
home
list users
search plans
log out
+
+ + + + +
+ +
";} + + +/* +function privlev($myprivl, $cookiepriv) +{ + echo $cookiepriv . "---
"; + echo $myprivl . "=
"; + + + + if (($myprivl == "") and ($cookiepriv == "")) + { + return 1; + } + else + { + if ($cookiepriv == "") + { + //setcookie("myprivl", $myprivl,0, "/~kenslerj/plans3/"); + return $myprivl; + } + if ($myprivl == "") + {return $cookiepriv; + } + if (($myprivl != "") and ($cookiepriv !="")) + {//setcookie("myprivl", $myprivl,0, "/~kenslerj/plans3/"); + return $myprivl; +} +} +} +*/ +function wants_secrets ($idcookie) { + $wants_secrets = mysql_query("Select avail_links.linknum, avail_links.html_code + From avail_links, opt_links where avail_links.linknum = 11 and + opt_links.userid = $idcookie and opt_links.linknum = avail_links.linknum"); + + if ($row = mysql_fetch_row($wants_secrets)) { + return 1; + } else { + return 0; + } +} + +function count_unread_secrets ($idcookie) { + $last_viewed = mysql_query("select date from viewed_secrets where userid = $idcookie"); + if ($date_row = mysql_fetch_array($last_viewed)) { + $last = $date_row['date']; + } else { + $last = "000-00-00 00:00:00"; + } + $sql = "select count(*) as n from secrets where display = 'yes' and secrets.date_approved > '$last'"; + $count = mysql_query($sql); + $count_row = mysql_fetch_array($count); + $count = $count_row['n']; + return $count; +} + + +function jumble_word ($word) { + $l = strlen($word); + if ($l < 4) { + return $word; + } + return $word[0] . (str_shuffle(substr($word, 1, $l - 2))) . $word[$l - 1]; +} + +function jumble ($text) { + preg_match_all('/(<[^>]*>)|([^<>]*)/', $text, $matches); + $c = count($matches[0]); + for ($i = 0; $i < $c; $i++) { + $chunk = $matches[0][$i]; + if (preg_match('/ + + + + + + + + Secrets () + + + + + + + \n"; + $lines = `tail $log_location`; + $lines = htmlentities($lines); + $lines = preg_replace(array('/\n/'), array("
\n"), $lines); + echo $lines; + echo "

"; +} + +?> diff --git a/functions-edit.php b/functions-edit.php new file mode 100755 index 0000000..87d386d --- /dev/null +++ b/functions-edit.php @@ -0,0 +1,142 @@ + '$first_letter' and username < '$second_letter' $guest ORDER BY username"); + while($new_row = mysql_fetch_row($my_result)) + { + $all[] = $new_row; + } + return $all; +} + +////////// + +/* + *Notes when a person logs in + */ + +function setLogin($dbh, $idcookie) +{ + mysql_query("UPDATE accounts SET login = NOW() WHERE userid = $idcookie"); +} + +////////// + +/* +*Handles the cleaning up of a plan, such as allowing only certain html links in +*/ + +function cleanText($plan) +{ + $plan = htmlspecialchars($plan);//take out html + + //fix the dollar sign error- by josh + //$plan = preg_replace("(\|(\w\s)*)\$ + + $plan = preg_replace("/((\[\w*\],?){8})(?=[^ ,])/s","$1 ", $plan); + $plan = preg_replace("/\n/s","
", $plan); + $plan = preg_replace("/\<\;hr\>\;/si", "

", $plan); + $plan = preg_replace("/\<\;b\>\;(.*?)\<\;\/b\>\;/si", "\\1", + $plan);//allow stuff in the bold tag back in + $plan = preg_replace("/\<\;tt\>\;(.*?)\<\;\/tt\>\;/si", "\\1", + $plan); + $plan = preg_replace("/\<\;pre\>\;(.*?)\<\;\/pre\>\;/si", "

\\1
", $plan); + $plan = preg_replace("/\<\;strike\>\;(.*?)\<\;\/strike\>\;/si", "\\1", $plan); + $plan = preg_replace("/\<\;i\>\;(.*?)\<\;\/i\>\;/si", "\\1", + $plan);//allow stuff in the italics tag back in + $plan = preg_replace("/\<\;u\>\;(.*?)\<\;\/u\>\;/si", "\\1", + $plan);//allow stuff in the underline tag back in + + + //$plan = preg_replace("/\<\;a.href=."\;(.+)."\;/si", "EEE",$plan); + + // Get everything in brackets. For nested brackets, take the innermost. + $somearray = preg_match_all("/\[([^][]+)\]/s",$plan,$mymatches); + + $matchcount = count($mymatches[1]); + for ($o=0; $o<$matchcount; $o++)//do a loop to test whether everything in brackets is a valid user or not + { + $mycheck=$mymatches[1][$o];//get the current thing being tested + + //echo '' . "\n"; + //$jlw = preg_replace("/\//", '\/', $mycheck); + //echo '' . "\n"; + + if (!$checked[$mycheck])//make sure current thing being checked has not already been checked + { + //check for plan with username + if ($item = get_item($mydbh,"username","accounts","username", $mycheck))//see if is a valid user, if so also gets username + { + $plan = preg_replace("/\[$mycheck\]/s", "[$mycheck]", $plan);//change all occurences of person on plan + } + else + { + if (preg_match('/^\d+$/', $mycheck) && $item = get_item($mydbh,"messageid","subboard","messageid", $mycheck)) + { + $plan = preg_replace("/\[" . preg_quote($mycheck,"/") . "\]/s", "[$mycheck]", $plan); + } + if ($mycheck=="dnew") + { + $plan = preg_replace("/\[dnew\]/s", "" . date("F j, Y, l H:i") . "",$plan); + } + if ($mycheck=="date") + { + $plan = preg_replace("/\[date\]/s", "" . date("l F j, Y. g:i A") . "",$plan); + } + + if (preg_match("/^\w+:/",$mycheck)) + { + if (strrpos($mycheck,"|")) + { + + preg_match("/(.+?)\|(.+)/si",$mycheck,$love_replace); + // Here, we need to escape $'s so they don't get treated as back-references + $love_replace[2]=addcslashes($love_replace[2],"$"); + $plan=preg_replace("/\[" . preg_quote($mycheck,"/") . "\]/s", "$love_replace[2]",$plan); + } + else { + + $plan= preg_replace("/\[" . preg_quote($mycheck,"/") . "\]/s","$mycheck",$plan); + + } + } + + + } + $checked[$mymatches[1][$o]]=1;//mark checked values as checked, so don't have to check again + }//if (!$checked[$mycheck]) + + }//for ($o=0; $mymatches[1][$o]; $o++) + $plan = preg_replace("/\<\;a.+?href=."\;(.+?)."\;>\;(.+?)<\;\/a>\;/si", "\\2",$plan); + $plan=trim($plan); + return $plan; +} + + + +?> diff --git a/functions-edit.php.txt b/functions-edit.php.txt new file mode 100755 index 0000000..6f21f62 --- /dev/null +++ b/functions-edit.php.txt @@ -0,0 +1,137 @@ + '$first_letter' and username < '$second_letter' $guest ORDER BY username"); + while($new_row = mysql_fetch_row($my_result)) + { + $all[] = $new_row; + } + return $all; +} + +////////// + +/* + *Notes when a person logs in + */ + +function setLogin($dbh, $idcookie) +{ + mysql_query("UPDATE accounts SET login = NOW() WHERE userid = $idcookie"); +} + +////////// + +/* +*Handles the cleaning up of a plan, such as allowing only certain html links in +*/ + +function cleanText($plan) +{ + $plan = htmlspecialchars($plan);//take out html + + //fix the dollar sign error- by josh + //$plan = preg_replace("(\|(\w\s)*)\$ + + $plan = preg_replace("/\n/s","
", $plan); + $plan = preg_replace("/\<\;hr\>\;/si", "

", $plan); + $plan = preg_replace("/\<\;b\>\;(.*?)\<\;\/b\>\;/si", "\\1", + $plan);//allow stuff in the bold tag back in + $plan = preg_replace("/\<\;tt\>\;(.*?)\<\;\/tt\>\;/si", "\\1", + $plan); + $plan = preg_replace("/\<\;pre\>\;(.*?)\<\;\/pre\>\;/si", "

\\1
", + $plan); + $plan = preg_replace("/\<\;i\>\;(.*?)\<\;\/i\>\;/si", "\\1", + $plan);//allow stuff in the italics tag back in + $plan = preg_replace("/\<\;u\>\;(.*?)\<\;\/u\>\;/si", "\\1", + $plan);//allow stuff in the underline tag back in + $plan = preg_replace("/\<\;a.+?href=."\;(.+?)."\;>\;(.+?)<\;\/a>\;/si", "\\2",$plan); + + + //$plan = preg_replace("/\<\;a.href=."\;(.+)."\;/si", "EEE",$plan); + + $somearray = preg_match_all("/.*?\[(.*?)\].*?/s", $plan, $mymatches);//get an array of everything in brackets + + $matchcount = count($mymatches[1]); + for ($o=0; $o<$matchcount; $o++)//do a loop to test whether everything in brackets is a valid user or not + { + $mycheck=$mymatches[1][$o];//get the current thing being tested + + if (!$checked[$mycheck])//make sure current thing being checked has not already been checked + { + //check for plan with username + if ($item = get_item($mydbh,"username","accounts","username", $mycheck))//see if is a valid user, if so also gets username + { + $plan = preg_replace("/\[$mycheck\]/s", "[$mycheck]", $plan);//change all occurences of person on plan + } + else + { + if ($item = get_item($mydbh,"messageid","subboard","messageid", $mycheck)) + { + $plan = preg_replace("/\[$mycheck\]/s", "[$mycheck]", $plan); + } + if ($mycheck=="dnew") + { + $plan = preg_replace("/\[dnew\]/s", "" . date("F j, Y, l H:i") . "",$plan); + } + if ($mycheck=="date") + { + $plan = preg_replace("/\[date\]/s", "" . date("l F j, Y. g:i A") . "",$plan); + } + + if (strrpos($mycheck,":")) + { + + if (strrpos($mycheck,"|")) + { + + preg_match("/(.+?)\|(.+)/si",$mycheck,$love_replace); + + + $plan=preg_replace("/\[" . preg_quote($mycheck,"/") . "\]/si", "$love_replace[2]",$plan); + } + else { + + $plan= preg_replace("/\[" . preg_quote($mycheck,"/") . "\]/si","$mycheck",$plan); + + } + } + + + } + $checked[$mymatches[1][$o]]=1;//mark checked values as checked, so don't have to check again + }//if (!$checked[$mycheck]) + + }//for ($o=0; $mymatches[1][$o]; $o++) + $plan=trim($plan); + return $plan; +} + + + +?> diff --git a/functions-forum.php b/functions-forum.php new file mode 100755 index 0000000..b26678b --- /dev/null +++ b/functions-forum.php @@ -0,0 +1,14 @@ + diff --git a/functions-kommand.php b/functions-kommand.php new file mode 100644 index 0000000..7fc14b4 --- /dev/null +++ b/functions-kommand.php @@ -0,0 +1,32 @@ + diff --git a/functions-main.php b/functions-main.php new file mode 100755 index 0000000..44f0c2d --- /dev/null +++ b/functions-main.php @@ -0,0 +1,54 @@ + diff --git a/functions.php b/functions.php new file mode 100755 index 0000000..008706e --- /dev/null +++ b/functions.php @@ -0,0 +1,414 @@ + +
+

+ + You are deemed to have accepted this Agreement upon use of the GrinnellPlans system. This agreement may change at any time without prior notice. The creators and managers of Plans take no responsibility for comments made on the Plans system. You are responsible for the content of your plan. You agree to defend, indemnify, and hold harmless, individually and collectivelly, GrinnellPlans and its administrators from and against all liabilities, costs and expenses related to or arising from any violation of applicable laws or this Agreement by you. During all times users must comply with federal and California state law. Upon use of this service, you consent to the exclusive personal jurisdiction of and venue in a court located in Honolulu, Hawaii for any suits or causes of action connected in any way, directly or indirectly, to the subject matter of this agreement or to the service. + The creators and managers of Plans reserve the right to remove, modify an individual's plan, and terminate service without prior notice. No guarantees are made as to the reliability and security of any information transmitted on this system. You assume all risk and responsibility for use of this service. + Please send questions, comments, reports of software errors, and + reports of violations of federal or California state laws to + + '$first_letter' and username < '$second_letter' $guest ORDER BY username"); + + while($new_row = mysql_fetch_row($my_result)) { + $all[] = $new_row; + } +return $all; +} + +/////////////////////////////////////////////////////////////////////////// +/* + *Notes when a person logs in + */ + +function setLogin($dbh, $idcookie) +{ +mysql_query("UPDATE accounts SET login = NOW() WHERE userid = $idcookie"); +} +/////////////////////////////////////////////////////////////////////////// +/* + *Marks when a person reads a plan + */ +function setReadTime($dbh, $idcookie,$interest) +{ +mysql_query("UPDATE autofinger SET readtime = NOW() WHERE owner = +$idcookie AND interest = $interest"); +} + + +/////////////////////////////////////////////////////////////////////////// +/* +*Handles the cleaning up of a plan, such as allowing only certain html links in +*/ +function cleanText($plan) +{ + + + $plan = htmlspecialchars($plan);//take out html + + //fix the dollar sign error- by josh + //$plan = preg_replace("(\|(\w\s)*)\$ + + $plan = preg_replace("/\n/s","
", $plan); + $plan = preg_replace("/\<\;hr\>\;/si", "


", $plan); + $plan = preg_replace("/\<\;b\>\;(.*?)\<\;\/b\>\;/si", "\\1", + $plan);//allow stuff in the bold tag back in + $plan = preg_replace("/\<\;tt\>\;(.*?)\<\;\/tt\>\;/si", "\\1", + $plan); + $plan = preg_replace("/\<\;pre\>\;(.*?)\<\;\/pre\>\;/si", "

\\1
", + $plan); + $plan = preg_replace("/\<\;i\>\;(.*?)\<\;\/i\>\;/si", "\\1", + $plan);//allow stuff in the italics tag back in + $plan = preg_replace("/\<\;u\>\;(.*?)\<\;\/u\>\;/si", "\\1", + $plan);//allow stuff in the underline tag back in + $plan = preg_replace("/\<\;a.+href=."\;(.+)."\;>\;(.+)<\;\/a>\;/si", "\\2",$plan); + + +//$plan = preg_replace("/\<\;a.href=."\;(.+)."\;/si", "EEE",$plan); + + // Get everything in brackets. For nested brackets, take the innermost. + $somearray = preg_match_all("/\[([^][]+)\]/s",$plan,$mymatches); + + $matchcount = count($mymatches[1]); + for ($o=0; $o<$matchcount; $o++)//do a loop to test whether everything in brackets is a valid user or not + { + $mycheck=$mymatches[1][$o];//get the current thing being tested + + if (!$checked[$mycheck])//make sure current thing being checked has not already been checked + { +//check for plan with username + if ($item = get_item($mydbh,"username","accounts","username", $mycheck))//see if is a valid user, if so also gets username + { + $plan = preg_replace("/\[$mycheck\]/s", "[$mycheck]", $plan);//change all occurences of person on plan + } + else + { + if ($item = get_item($mydbh,"messageid","subboard","messageid", $mycheck)) + { + $plan = preg_replace("/\[$mycheck\]/s", "[$mycheck]", $plan); + } + if ($mycheck=="dnew") + { + $plan = preg_replace("/\[dnew\]/s", "" . date("F j, Y, l H:i") . "",$plan); + } + if ($mycheck=="date") + { + $plan = preg_replace("/\[date\]/s", "" . date("l F j, Y. g:i A") . "",$plan); + } + + if (strrpos($mycheck,":")) + { + + if (strrpos($mycheck,"|")) + { + + preg_match("/(.+?)\|(.+)/si",$mycheck,$love_replace); + + + $plan=preg_replace("/\[" . preg_quote($mycheck,"/") . "\]/si", "$love_replace[2]",$plan); + } + else { + + $plan= preg_replace("/\[" . preg_quote($mycheck,"/") . "\]/si","$mycheck",$plan); + + } + } + + + } + $checked[$mymatches[1][$o]]=1;//mark checked values as checked, so don't have to check again + }//if (!$checked[$mycheck]) + + }//for ($o=0; $mymatches[1][$o]; $o++) +$plan=trim($plan); +return $plan; +} + + +/////////////////////////////////////////////////////////////////////////// +/* + *Simple beginning to guest display + */ +function gdisp_begin($dbh) +{ + +if (!$myprivl == 2 or !$myprivl == 3) + {$myprivl = 1;} + +?> + + + + +Plans 2.2 + + + + + + +Guest access is (most likely) temporarily disabled.


+http://grinnellplans.com/"; +db_disconnect($dbh); +exit(); +*/?> + + + + + +
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
home
list users
search plans
log out
+
+ + + + +
+ +
";} + + +/* +function privlev($myprivl, $cookiepriv) +{ +echo $cookiepriv . "---
"; +echo $myprivl . "=
"; + + + +if (($myprivl == "") and ($cookiepriv == "")) +{ +return 1; +} +else +{ +if ($cookiepriv == "") +{ +//setcookie("myprivl", $myprivl,0, "/~kenslerj/plans3/"); +return $myprivl; +} +if ($myprivl == "") +{return $cookiepriv; +} +if (($myprivl != "") and ($cookiepriv !="")) +{//setcookie("myprivl", $myprivl,0, "/~kenslerj/plans3/"); +return $myprivl; +} +} +} +*/ +function wants_secrets ($idcookie) { + $wants_secrets = mysql_query("Select avail_links.linknum, avail_links.html_code + From avail_links, opt_links where avail_links.linknum = 11 and + opt_links.userid = $idcookie and opt_links.linknum = avail_links.linknum"); + + if ($row = mysql_fetch_row($wants_secrets)) { + return 1; + } else { + return 0; + } +} + +function count_unread_secrets ($idcookie) { + $last_viewed = mysql_query("select date from viewed_secrets where userid = $idcookie"); + if ($date_row = mysql_fetch_array($last_viewed)) { + $last = $date_row['date']; + } else { + $last = "000-00-00 00:00:00"; + } + $sql = "select count(*) as n from secrets where display = 'yes' and secrets.date > '$last'"; + $count = mysql_query($sql); + $count_row = mysql_fetch_array($count); + $count = $count_row['n']; + return $count; +} + + +?> diff --git a/gpl.txt b/gpl.txt new file mode 100755 index 0000000..5b6e7c6 --- /dev/null +++ b/gpl.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program 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. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/home.php b/home.php new file mode 100755 index 0000000..ff07afd --- /dev/null +++ b/home.php @@ -0,0 +1,46 @@ + diff --git a/index-blank.php b/index-blank.php new file mode 100755 index 0000000..67e0b7d --- /dev/null +++ b/index-blank.php @@ -0,0 +1,33 @@ +Nothing to see here."; + } + +db_disconnect($dbh); + +?> \ No newline at end of file diff --git a/index.css b/index.css new file mode 100755 index 0000000..626071a --- /dev/null +++ b/index.css @@ -0,0 +1,26 @@ + diff --git a/index.php b/index.php new file mode 100755 index 0000000..111a4c4 --- /dev/null +++ b/index.php @@ -0,0 +1,208 @@ +'; +echo "index.php"; +echo '
'; +print_r($_SESSION); +echo '
'; +*/ +if ($_GET['logout']) { + //session_destroy(); + $_SESSION['is_logged_in'] = 0; + $_SESSION['userid'] = false; +// echo "In logout"; + //echo print_r($_SESSION); +} + +$dbh=db_connect(); +$auth = $_SESSION['is_logged_in']; +$myprivl = $_GET['myprivl']; + +if ( $auth) { + $username = $_SESSION['username']; + $idcookie = $_SESSION['userid']; +} else { + + $username = $_POST['username']; + $password = $_POST['password']; + $guest = $_POST['guest']; + + + if ($username) { + + + if (isValidUser($dbh, $username)) { + $orig_pass = $password; + $password = crypt($password, "ab"); + $read_pass = get_item($dbh, "password", "accounts", "username", + $username); //get password encrypted password in db + + //echo ($username . " " . $orig_pass . " " . $password . " " . $read_pass); + if ($password == $read_pass) + + { + + $idcookie = get_item($dbh, "userid", "accounts", "username", $username); + setLogin($dbh, $idcookie); + $_SESSION['is_logged_in'] = 1; + $_SESSION['username'] = $username; + $_SESSION['userid'] = $idcookie; + $sql = "insert into js_status set userid = " . addslashes($idcookie) . ", status = '" . addslashes($_POST['js_test_value']) . "'"; + mysql_query($sql); + echo ""; + + } + } + if (! $_SESSION['is_logged_in']) { + $show_form = "Invalid username or password.
"; + } + } + else { + if (!$guest) {$show_form = " ";} + } + + +} + +//print_r($_SESSION); +//Visitor display - login form + +//If there is a show_form comment to be placed at top of form, show the form. If no comment you want to add, just set to a space to have it show the form. + +if ($show_form) +{ + ?> + + + + + GrinnellPlans 2.3 + + + + + + +


+ + + + + + + + + + + + + + + +
+ '; +} +?> +
+
+
+ Username:
+ Password:
+
+
+ + + +
+ + +
+ +

+
+
Need a plan? Register if you have an @grinnell.edu email address. +
+ +Otherwise email us. +Alumni, please include your @alumni.grinnell.edu forwarding address (which you can get here) and grad year. +
+ +
+
What is plans? GrinnellPlans FAQ +
Email grinnellplans@gmail.com with questions or concerns. +
+



This site is not owned by, operated by, or officially affiliated with Grinnell College, Grinnell, IA. +
+
+
+
+

+Use of the GrinnellPlans service means you have accepted the GrinnellPlans Terms of Service agreement. If you do not accept and abide by this agreement, you may not use GrinnellPlans. This agreement is subject to change without notice, so you should periodically review the most up-to-date version. +

+ + + "; +print_r ($_SESSION); +echo "
"; +echo "idcookie is $idcookie
"; +echo "
" . $_SESSION['is_logged_in']; +echo "
" . $guest; +echo "
"; +*/ + + if ($_SESSION['is_logged_in']) { + mdisp_begin($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);//send beginning display info + } + + if ($guest) { + $dbh = db_connect();//sets up connection to database. + gdisp_begin($dbh); //sends beginning part of guest display + $my_result = mysql_query("Select system.motd From system"); //get the main plans message from the database + $my_row = mysql_fetch_array($my_result); //get information from mysql query + } else { + $my_result = mysql_query("Select system.motd,accounts.spec_message From + system,accounts where accounts.userid = '$idcookie'");//get the main plans messsage as well as the person's private message to be displayed + $my_row = mysql_fetch_array($my_result); //get information from mysql query + echo stripslashes(stripslashes($my_row[1]));//if logged in, show the private message + + echo '
';
+		echo '
'; + + } + + echo stripslashes(stripslashes($my_row[0])); //display the main Plans message + + if ($_SESSION['is_logged_in']) { + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl); //and send closing display data + } else { + gdisp_end(); + }//if guest send guest closing display data + +} +db_disconnect($dbh); +?> diff --git a/info.php b/info.php new file mode 100755 index 0000000..8c64538 --- /dev/null +++ b/info.php @@ -0,0 +1,24 @@ + Choed's suggestion: +



"; + ?> +"; + echo "the date is "; + echo date('l dS \of F Y h:i:s A'); + echo "
"; + echo 'if I run "putenv ("TZ=$TZ");'; + putenv ("TZ=$TZ"); + echo "
"; + echo "then the date is "; + echo date('l dS \of F Y h:i:s A'); + echo "
"; + ?> + + diff --git a/interfaces.php b/interfaces.php new file mode 100755 index 0000000..ef5f63b --- /dev/null +++ b/interfaces.php @@ -0,0 +1,78 @@ + +

Interface Options:

+
Interface Set
+

Interface Options:

+ + + "; //show each option + $o++; + } + + //end form + + ?> +
" . $myinterfaces[$o][1] . "
+ + +
+ diff --git a/jlw-test.php b/jlw-test.php new file mode 100755 index 0000000..27a0d36 --- /dev/null +++ b/jlw-test.php @@ -0,0 +1,95 @@ + + + +

+ + Here you can post anonymously. This page was created to help give wgemigh his plan back, and to make it possible to paginate an increasing number of secrets. Please add this page as an optional link under 'preferences'. +

+ Secrets cannot be tracked by any Plans administrator. If you're still worried, you may post from wgemigh's Service or log out before posting. We can exercise editorial discretion as to what shows up. + + Post a Secret

+
+
+ + + + +
+
+ +"; + + ?> + + '; + $secret = $row['secret_text']; + $date = $row['date']; + $secretidno = $row['secret_id']; + echo "$secretidno $date
\n"; + echo "$secret\n"; + } + echo '

'; + } + + + + + if ($auth)//begin valid user display + { + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl); +} else +{gdisp_end();} + +db_disconnect($dbh); + +?> diff --git a/kommand/.htaccess b/kommand/.htaccess new file mode 100755 index 0000000..630c704 --- /dev/null +++ b/kommand/.htaccess @@ -0,0 +1 @@ +Options +ExecCgi diff --git a/kommand/2 b/kommand/2 new file mode 100644 index 0000000..dea6ce8 --- /dev/null +++ b/kommand/2 @@ -0,0 +1,33 @@ +\n"; +#print_r($_SESSION); + + +if ($_SESSION['kommand_auth']) { +#echo "kommand_auth is set"; + $gap = time() - $_SESSION['kommand_logged_in']; +#echo "gap is $gap
\n"; + if ($gap > 10 ) { +#echo "gap is too large
\n"; + redirect(); + exit; + } else { +#echo "gap is not too large
\n"; + } +} else { + redirect(); +#echo "kommand_auth is NOT set"; + exit; +} + +function redirect($message) { +?> + + + + + + + diff --git a/kommand/adduser.php b/kommand/adduser.php new file mode 100755 index 0000000..b40970e --- /dev/null +++ b/kommand/adduser.php @@ -0,0 +1,106 @@ + + + +"; + ?> +
+ + + + + + + +
+ +
+ Username:
+ Password:
+ E-mail:
+ + + + + + + + +
+ Relation to Grinnell? +
Student + + Grad Year: + +
Staff
Group
Faculty
Other +Description: max of 128 chars. So far you have typed + + + +
+

+ Permissions
+Normal:
+Write-Only: + +

+ +
+ Guidelines:
+   * Students should have a two digit grad year (ie, 2007 -> 07)
+   * Group is anything officially sanctioned by SGA
+   * Faculty are professors
+   * Staff are other people like ITS, FM workers, dining hall staff, etc
+   * For city plans, put "city" in Other
+   * For RLCs, put "rlc" in other instead of calling them staff, because they're a special case
+   * For anything else, put a few essential keywords in the "other"
+   * Remember that if a new group of "other" plans comes up, this list can be added to
+ + + + diff --git a/kommand/adduser.php.old b/kommand/adduser.php.old new file mode 100755 index 0000000..376812c --- /dev/null +++ b/kommand/adduser.php.old @@ -0,0 +1,84 @@ + + + +"; +?> +
+ + + + + +
+ +
+Username:
+Password:
+E-mail:
+Grad Year:
+ +
+ + + diff --git a/kommand/auth.php b/kommand/auth.php new file mode 100644 index 0000000..f847add --- /dev/null +++ b/kommand/auth.php @@ -0,0 +1,35 @@ +\n"; +#print_r($_SESSION); + + +if ($_SESSION['kommand_auth']) { +#echo "kommand_auth is set"; + $gap = time() - $_SESSION['kommand_logged_in']; +#echo "gap is $gap
\n"; + if ($gap > 1800 ) { +#echo "gap is too large
\n"; + redirect("Sorry, your session timed out." ); + exit; + } else { +#echo "gap is not too large
\n"; + } +} else { + redirect("Sorry, you don't seem to have a kommand session." ); +#echo "kommand_auth is NOT set"; + exit; +} + +function redirect($message) { +?> + + + + + + + + + diff --git a/kommand/changemotd.php b/kommand/changemotd.php new file mode 100755 index 0000000..69ad32c --- /dev/null +++ b/kommand/changemotd.php @@ -0,0 +1,59 @@ + + + + + +", $motd); +$motd = addslashes($motd); +mysql_query("UPDATE system SET motd = '$motd'"); +echo $motd; + + +}//if a username +{//if no username +//$addrow = array("My message",""); +//add_row($dbh, "system", $addrow); + + +//$motd = get_item($dbh,"motd","system","username", $username); + +$my_result = mysql_query("Select motd From system"); + +$my_row = mysql_fetch_array($my_result); +$motd= $my_row[0]; + +$motd = ereg_replace("
","",$motd); + +$motd = stripslashes($motd); + +?> +
+ + + +
+ + + diff --git a/kommand/changepassword.php b/kommand/changepassword.php new file mode 100755 index 0000000..daa5dbb --- /dev/null +++ b/kommand/changepassword.php @@ -0,0 +1,67 @@ + + + + +"; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; + +} +else +{ +echo $subject_name . "does not exist."; +} + + +}//if a username +{//if no username +?> +
+Username :
+Password :
+ +
+ + + diff --git a/kommand/changespec.php b/kommand/changespec.php new file mode 100755 index 0000000..0e0f0a4 --- /dev/null +++ b/kommand/changespec.php @@ -0,0 +1,67 @@ + + + + +", $newmessage); +$newmessage = addslashes($newmessage); + +set_item($dbh, "accounts", "spec_message", $newmessage, +"userid", $usersid); + +echo "Private message for " . $username. " set to:

" . +stripslashes(stripslashes($newmessage)); + + +}//if submitted +else +{//not submitted, so show spec_message +$spec_message = get_item($dbh,"spec_message","accounts","userid", $usersid); +?> +
+
+ + + +
+";} + +?> +
+Username:
+ +
+ + + + + diff --git a/kommand/dbfunctions.php b/kommand/dbfunctions.php new file mode 100755 index 0000000..b568edb --- /dev/null +++ b/kommand/dbfunctions.php @@ -0,0 +1,159 @@ + diff --git a/kommand/deleteuser.php b/kommand/deleteuser.php new file mode 100755 index 0000000..d57f579 --- /dev/null +++ b/kommand/deleteuser.php @@ -0,0 +1,55 @@ + + + + + +
+Username :
+ +
+ + + diff --git a/kommand/email.php b/kommand/email.php new file mode 100644 index 0000000..3e91926 --- /dev/null +++ b/kommand/email.php @@ -0,0 +1,32 @@ + + + diff --git a/kommand/index.php b/kommand/index.php new file mode 100755 index 0000000..1bf9679 --- /dev/null +++ b/kommand/index.php @@ -0,0 +1,86 @@ +\n"; + +echo $_POST['username'] . " is the PoSTed username
\n"; +*/ +if ($_POST['username'] == 'plans') { + + $password = crypt($password, "ab"); + $read_pass = get_item($dbh, "password", "accounts", "username", "plans"); +//echo "You gave $password, and we need $read_pass
\n"; + + if ($password == $read_pass) + { + $_SESSION['kommand_auth'] = 1; + $_SESSION['kommand_logged_in'] = time(); + } else { + $wrong_password = 1; + } +} + +print_r($_SESSION); +echo "
\n"; +if ($_SESSION['kommand_auth'] && (time() - $_SESSION['kommand_logged_in'] < 1800 )) { +?> + + +Add a User
+Delete User
+Change Password
+Change MOTD
+Truncate a Plan
+Manage Secrets
+Manage Donations
+Chat Usage
+Manage Polls
+New Account Usage
+Update Frequency
+
+
+
+ + + +Wrong password.
+
+
+ +
+ + + +
+
+
+ +
+ + + diff --git a/kommand/manage-donations.php b/kommand/manage-donations.php new file mode 100755 index 0000000..c91ffcc --- /dev/null +++ b/kommand/manage-donations.php @@ -0,0 +1,69 @@ + + + +'; +?> + + + + + + Enter donations + +
+ + + + + + + + + + + + + + + + + + + + + + +
Name:
Amount:
Date: Format: yyyy-mm-dd
+ Leave blank for current date
Comments:
+
+ +

+ Valid XHTML 1.1! +

+ +

+ Created: Friday, July 25 +

+ + + + + + diff --git a/kommand/new-accounts.cgi b/kommand/new-accounts.cgi new file mode 100755 index 0000000..18318e9 --- /dev/null +++ b/kommand/new-accounts.cgi @@ -0,0 +1,59 @@ +#!/usr/bin/perl + +use strict; +use DBI; +use CGI; +my $q = CGI->new(); +print $q->header('text/plain'); +my $dbh = db_connect(); +my $months = fetch_plan_dates(); + + +my $updated = "P"; +my $expired = "-"; +my $never_updated = "_"; +print "Each $updated, $expired and $never_updated is a Plan that was created during a particular month.\n"; +print "$never_updated means it has never been updated (yet).\n$expired means it was updated, but not in the last year.\n$updated refers to all others.\n\n\n"; + +foreach my $month (@$months) { + my $name = $month->[0]; + my $total = $month->[1]; + my $empty = $month->[2]; + my $recent = $month->[3]; + printf("%-16s %-5s%s%s%s\n","$name:", "($total)", $never_updated x ($empty), $expired x ($total - $recent - $empty), $updated x ($recent)); +} + + +print "\n\n(Older data is not usable.)"; + + + +# db_connect: Connect to the DB +sub db_connect() { + my $dbh = DBI->connect("dbi:mysql:plans:127.0.0.1","myplandb",'mypassword') or die "Could not connect $!"; + return $dbh; +} + +sub fetch_plan_dates() { + my $months = []; + my $userids; + my $sql = ' + select date_format(created, "%M, %Y") m, + count(*) total, + sum(if(changed = "0000-00-00 00:00:00", 1, 0)) empty, + sum(if(changed > date_sub(now(), interval 1 year), 1, 0)) recent +-- sum(if(changed > date_sub(now(), interval 6 month), 1, 0)) recent + from accounts + where + created > "2002-10-01" + group by m + order by created desc; + '; + my $sth = $dbh->prepare($sql); + $sth->execute(); + while (my $row = $sth->fetchrow_hashref()) { + push @$months, [$row->{'m'}, $row->{'total'}, $row->{'empty'}, $row->{'recent'}]; + } + return $months; +} + diff --git a/kommand/polls.php b/kommand/polls.php new file mode 100755 index 0000000..0606d6a --- /dev/null +++ b/kommand/polls.php @@ -0,0 +1,252 @@ + + + + + + + + + + + +

Use this page to create and manage poll questions.

+

+ New Poll +
+ Main Poll Page + +
+ View Public Display of Poll Number + +

+ +
+

+Poll question: +
+
+

+

+Type:
+ +Single select: > +Multiple select: >
+

+ + + +

+Possible Answers: +
+More Answers +The responses will always appear alphabetically, so just number them to force an order (or sneak spaces in front of the HTML). + +Response: " . '' . "\n" . + 'Delete: '; + echo "\n"; + $response_tick++; + } +} +?> + +

+ + +
+

Existing Polls

+ + + + + + + + + + + + $new_responses, 'deleted' => $deleted_responses, 'updated' => $updated_responses); +} + +function list_polls() { + $sql = "select html, poll_question_id from poll_questions order by poll_question_id desc"; + $res = mysql_query($sql); + echo ''; + while($new_row = mysql_fetch_array($res)) { + echo ''; + echo "\n"; + } + echo '
'; + echo $new_row['html']; + echo ''; + echo ' Edit'; + echo '
'; + + } +?> + diff --git a/kommand/secrets.php b/kommand/secrets.php new file mode 100755 index 0000000..8452b42 --- /dev/null +++ b/kommand/secrets.php @@ -0,0 +1,108 @@ + + + + +"; + if ($_GET[$get_key]) { + $new_display = 'yes'; + } else { + $new_display = 'no'; + } + $query = "update secrets set display = '$new_display', date_approved = now() where secret_id = $secret_id"; + echo "

".$query."

"; + + $results = mysql_query($query) or mysql_error(); + /* + + while($row = mysql_fetch_array($results)) { + array_push($addresses, $row['address']); + $total++; + } + */ + } + } +} + + + + + + +$count = 60; +$offset = $_GET['offset']; +if ( $offset < 0) { + $offset = 0; + } + if (! ($offset > 0)) { + $offset = 0; + } + + + echo "

Next " . $count . "

"; + echo "

Prev " . $count . "

"; + + $sql = "select * from secrets order by secret_id desc limit $offset, $count"; + $secrets = mysql_query($sql); + if (! $secrets) { + echo "Query Failed"; + } + +?> + +
+ + +'; + $secret = $row['secret_text']; + $date = $row['date']; + $secret_id = $row['secret_id']; + $display = $row['display']; + echo "$secret_id $date
\n"; + if ($display == 'yes') { + //echo 'Display was yes.
'; + $yes_checked = ' checked="yes" '; + $no_checked = ' '; + } else { + //echo 'Display was no.
'; + $yes_checked = ' '; + $no_checked = ' checked="yes" '; + } + echo 'Show: '; + echo 'Hide: '; + echo '
'; + echo "$secret\n"; + } + echo '

'; + + ?> + + +
+ + + diff --git a/kommand/truncate.php b/kommand/truncate.php new file mode 100755 index 0000000..bf40934 --- /dev/null +++ b/kommand/truncate.php @@ -0,0 +1,39 @@ + + + + + +
+
+
+
Username: +
How much to cut off the end: +
+ + + diff --git a/kommand/update-frequency.cgi b/kommand/update-frequency.cgi new file mode 100755 index 0000000..d00dea5 --- /dev/null +++ b/kommand/update-frequency.cgi @@ -0,0 +1,4 @@ +#!/bin/bash +echo Content-type: text/html +echo +mysql -H -u plans --password='mypassword' plans <<< " select count(*) as 'Number of Plans Last Updated ', ceiling((unix_timestamp(now()) - unix_timestamp(changed)) / 86400) as 'This Many Days Ago' from accounts where changed != '0000-00-00 00:00:00' group by 'This Many Days Ago' order by 'This Many Days Ago' " diff --git a/kommand/z-add.php b/kommand/z-add.php new file mode 100644 index 0000000..8c84f65 --- /dev/null +++ b/kommand/z-add.php @@ -0,0 +1,6 @@ + + diff --git a/lastcreated.php b/lastcreated.php new file mode 100755 index 0000000..e2a118f --- /dev/null +++ b/lastcreated.php @@ -0,0 +1,37 @@ +Plans created within the last 5 days:

    "; + + $my_result = mysql_query("Select userid,username,DATE_FORMAT(created,'%l:%i %p, %a %M %D ') From accounts where created > DATE_SUB(NOW(), + INTERVAL 5 + DAY) ORDER BY created desc"); + + + while($new_row = mysql_fetch_row($my_result)) { + echo "
  • " . $new_row[1] . ""; + echo "
    • " . $new_row[2]. "
    "; + } + + echo "
"; + + + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);} +else +{ echo "Nothing to see here."; +} +db_disconnect($dbh); +?> diff --git a/legal-old-2-17-2007-php.txt b/legal-old-2-17-2007-php.txt new file mode 100755 index 0000000..041ec1c --- /dev/null +++ b/legal-old-2-17-2007-php.txt @@ -0,0 +1,54 @@ + 0 and $mytime <100)) + { + $mytime = 12; + }//if time is out of acceptable period, set to 12 + + //give form to set how many hours back to look + + $my_planwatch = mysql_query("select userid,username,DATE_FORMAT(changed, + '%l:%i %p, %a %M %D ') from accounts where + changed > DATE_SUB(NOW(), INTERVAL $mytime HOUR) and username != 'test' + ORDER BY changed desc LIMIT 1"); + //do the query with specifying date format to be returned + + + //display the results of the query + while($new_plans = mysql_fetch_row($my_planwatch)) { + echo "Do you read " . "" . $new_plans[1] . "" . ", who just updated?" . "
"; + } + //End 'new plan try reading' feature. + + ?> +
+

+ +You are deemed to have accepted this Agreement upon use of the GrinnellPlans system. This agreement may change at any time without prior notice. The creators and managers of Plans take no responsibility for comments made on the Plans system. You are responsible for the content of your plan. You agree to defend, indemnify, and hold harmless, individually and collectivelly, GrinnellPlans and its administrators from and against all liabilities, costs and expenses related to or arising from any violation of applicable laws or this Agreement by you. During all times users must comply with federal and California state law. Upon use of this service, you consent to the exclusive personal jurisdiction of and venue in a court located in California for any suits or causes of action connected in any way, directly or indirectly, to the subject matter of this agreement or to the service. +The creators and managers of Plans reserve the right to remove, modify an individual's plan, and terminate service without prior notice. No guarantees are made as to the reliability and security of any information transmitted on this system. You assume all risk and responsibility for use of this service. +Please send questions, comments, reports of software errors, and +reports of violations of federal or California state laws to + + + diff --git a/legal.php b/legal.php new file mode 100755 index 0000000..5834173 --- /dev/null +++ b/legal.php @@ -0,0 +1,52 @@ + 0 and $mytime <100)) + { + $mytime = 12; + }//if time is out of acceptable period, set to 12 + + //give form to set how many hours back to look + + $my_planwatch = mysql_query("select userid,username,DATE_FORMAT(changed, + '%l:%i %p, %a %M %D ') from accounts where + changed > DATE_SUB(NOW(), INTERVAL $mytime HOUR) and username != 'test' + ORDER BY changed desc LIMIT 1"); + //do the query with specifying date format to be returned + + + //display the results of the query + while($new_plans = mysql_fetch_row($my_planwatch)) { + echo "Do you read " . "" . $new_plans[1] . "" . ", who just updated?" . "


"; + } + //End 'new plan try reading' feature. + + ?> +
+

+ +Use of the GrinnellPlans service means you have accepted the GrinnellPlans Terms of Service agreement. If you do not accept and abide by this agreement, you may not use GrinnellPlans. This agreement is subject to change without notice, so you should periodically review the most up-to-date version. +You may contact us at + + + diff --git a/links.php b/links.php new file mode 100755 index 0000000..9264a72 --- /dev/null +++ b/links.php @@ -0,0 +1,84 @@ + " ; + $myrow = array($idcookie,$items);//set array to add to database + add_row($dbh, "opt_links", $myrow);//add new row in database + } + }//added values if any + + mdisp_begin($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);//begin valid user display, done later in the page than usual so that the changes will take affect before page is displayed + echo "

Optional Links

"; + echo "Optional links changed."; + +}//if submit + + +else //give form +{ + + mdisp_begin($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl); //begin valid user display + echo "

Optional Links

"; + $selected_links = get_items($dbh,"linknum","opt_links","userid", $idcookie);//get the current set of links that the user has selected + + $o=0; + while ($selected_links[$o][0]) + { + $myselected[$selected_links[$o][0]]=" checked"; //set up so current links will show up in form as checked + $o++; + } + + $my_result = mysql_query("Select linknum,linkname,descr From + avail_links");//get the info on the currently available links + while($new_row = mysql_fetch_row($my_result)) { + $all_links[] = $new_row;//get info fron query + } + + $o=0; + echo "
";//start form + while ($all_links[$o][0]) + { + //display each link + echo ""; + echo "" . $all_links[$o][1] . "
" . $all_links[$o][2] . + "

"; + $o++;} + echo "
"; + } + + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);//end valid user display +}//if is a valid user + +db_disconnect($dbh); + +?> diff --git a/listusers.php b/listusers.php new file mode 100755 index 0000000..c43e0d0 --- /dev/null +++ b/listusers.php @@ -0,0 +1,62 @@ +" . chr($i) . " ";} + $i++; //go on to next letter +} + +echo "

" . $showlist; //put letter and userlist together + +$arraylist = get_letters($dbh, chr($current_letter), + chr($current_letter + 1),$idcookie); //get usernames that start with that letter + +//display those usernames +$j = 0; +while ($arraylist[$j][0]) +{echo "" . $arraylist[$j][1] . "
"; + $j++;} + + + +if ($auth) +{mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);} +else +{gdisp_end();} + +db_disconnect($dbh); + + +?> diff --git a/log.php b/log.php new file mode 100755 index 0000000..8819c98 --- /dev/null +++ b/log.php @@ -0,0 +1,28 @@ + + + + + +\n"; + $lines = `tail $log_location`; + $lines = htmlentities($lines); + $lines = preg_replace(array('/\n/'), array("
\n"), $lines); + echo $lines; + echo "

"; +} +?> + + + + + + + + + diff --git a/new-poll.php b/new-poll.php new file mode 100755 index 0000000..03f5dee --- /dev/null +++ b/new-poll.php @@ -0,0 +1,161 @@ +$question
"; + echo '
'; + echo ''; + echo "\n"; + $sql = "select c.html as html, c.poll_choice_id as poll_choice_id, v.userid as checked from poll_choices c left join poll_votes v on v.userid = $userid and v.poll_choice_id = c.poll_choice_id where c.poll_question_id = $poll_question_id order by c.html"; + $html_res = mysql_query($sql); + while ($new_row = mysql_fetch_array($html_res)) { + $html = $new_row['html']; + $checked = $new_row['checked']; + $poll_choice_id = $new_row['poll_choice_id']; + $html = $new_row['html']; + echo "\n\n"; + } + echo "
OptionsYes! I want to pick this oneVotes so far
$html"; + if ($checked) { + $checked = "Checked"; + } else { + $checked = ''; + } + if ($type == 'single') { + echo ''; + } else { + echo ''; + } + $sql = "select count(*) as popularity from poll_votes v + where v.poll_choice_id = $poll_choice_id"; + $res = mysql_query($sql); + $new_row = mysql_fetch_array($res); + $popularity = $new_row['popularity']; + echo "$popularity"; + echo "
\n"; + echo ''; + echo ''; + echo ''; + echo "
\n"; + $sql = "select count(*) as voted from poll_votes v join poll_choices c using (poll_choice_id) where userid = $userid and poll_question_id = $poll_question_id"; + $res = mysql_query($sql); + $new_row = mysql_fetch_array($res); + $voted = $new_row['voted']; + if ($voted) { + echo "
You have voted in this poll, but you may change your mind.
\n"; + } else { + + echo "

\n"; + } +} + ?> +

All Polls + + + + +

+ Poll ideas? Email. +

+ +

+ + + + + + '; + while($new_row = mysql_fetch_array($res)) { + echo ''; + echo ' '; + echo $new_row['html']; + echo ''; + echo ''; + echo "\n"; + } + echo ''; + + } + ?> diff --git a/old-poll.php b/old-poll.php new file mode 100755 index 0000000..4ae61bc --- /dev/null +++ b/old-poll.php @@ -0,0 +1,154 @@ +$question
"; + echo '
'; + echo ''; + echo "\n"; + foreach ($responses as $response) { + $sql = "select html from poll_choices c + where c.poll_choice_id = $response"; + $res = mysql_query($sql); + $new_row = mysql_fetch_array($res); + $html = $new_row['html']; + echo "\n\n"; + } + echo "
OptionsYes! I want to pick this oneVotes so far
$html"; + if ($type == 'single') { + echo ''; + } else { + echo ''; + } + $sql = "select count(*) as popularity from poll_votes v + where v.poll_choice_id = $response"; + $res = mysql_query($sql); + $new_row = mysql_fetch_array($res); + $popularity = $new_row['popularity']; + echo "$popularity"; + echo "
\n"; + echo ''; + echo ''; + echo ''; + echo "
\n"; + $sql = "select count(*) as voted from poll_votes v join poll_choices c using (poll_choice_id) where userid = $userid and poll_question_id = $poll_question_id"; + $res = mysql_query($sql); + $new_row = mysql_fetch_array($res); + $voted = $new_row['voted']; + if ($voted) { + echo "
You have voted in this poll, but you may change your mind.
\n"; + } else { + + echo "

\n"; + } +} + ?> +

All Polls + + + + +

+ Poll ideas? Email. +

+ +

+ + + + + + '; + while($new_row = mysql_fetch_array($res)) { + echo ''; + echo ' '; + echo $new_row['html']; + echo ''; + echo ''; + echo "\n"; + } + echo ''; + + } + ?> diff --git a/overlib.js b/overlib.js new file mode 100644 index 0000000..e654db4 --- /dev/null +++ b/overlib.js @@ -0,0 +1,1422 @@ +//\///// +//\ overLIB 4.10 - You may not remove or change this notice. +//\ Copyright Erik Bosrup 1998-2004. All rights reserved. +//\ +//\ Contributors are listed on the homepage. +//\ This file might be old, always check for the latest version at: +//\ http://www.bosrup.com/web/overlib/ +//\ +//\ Please read the license agreement (available through the link above) +//\ before using overLIB. Direct any licensing questions to erik@bosrup.com. +//\ +//\ Do not sell this as your own work or remove this copyright notice. +//\ For full details on copying or changing this script please read the +//\ license agreement at the link above. Please give credit on sites that +//\ use overLIB and submit changes of the script so other people can use +//\ them as well. +// $Revision: 1.1 $ $Date: 2007/12/06 06:31:37 $ +//\///// +//\mini + +//////// +// PRE-INIT +// Ignore these lines, configuration is below. +//////// +var olLoaded = 0;var pmStart = 10000000; var pmUpper = 10001000; var pmCount = pmStart+1; var pmt=''; var pms = new Array(); var olInfo = new Info('4.10', 1); +var FREPLACE = 0; var FBEFORE = 1; var FAFTER = 2; var FALTERNATE = 3; var FCHAIN=4; +var olHideForm=0; // parameter for hiding SELECT and ActiveX elements in IE5.5+ +var olHautoFlag = 0; // flags for over-riding VAUTO and HAUTO if corresponding +var olVautoFlag = 0; // positioning commands are used on the command line +registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass'); + +//////// +// DEFAULT CONFIGURATION +// Settings you want everywhere are set here. All of this can also be +// changed on your html page or through an overLIB call. +//////// +if (typeof ol_fgcolor=='undefined') var ol_fgcolor="#CCCCFF"; +if (typeof ol_bgcolor=='undefined') var ol_bgcolor="#333399"; +if (typeof ol_textcolor=='undefined') var ol_textcolor="#000000"; +if (typeof ol_capcolor=='undefined') var ol_capcolor="#FFFFFF"; +if (typeof ol_closecolor=='undefined') var ol_closecolor="#9999FF"; +if (typeof ol_textfont=='undefined') var ol_textfont="Verdana,Arial,Helvetica"; +if (typeof ol_captionfont=='undefined') var ol_captionfont="Verdana,Arial,Helvetica"; +if (typeof ol_closefont=='undefined') var ol_closefont="Verdana,Arial,Helvetica"; +if (typeof ol_textsize=='undefined') var ol_textsize="1"; +if (typeof ol_captionsize=='undefined') var ol_captionsize="1"; +if (typeof ol_closesize=='undefined') var ol_closesize="1"; +if (typeof ol_width=='undefined') var ol_width="200"; +if (typeof ol_border=='undefined') var ol_border="1"; +if (typeof ol_cellpad=='undefined') var ol_cellpad=2; +if (typeof ol_offsetx=='undefined') var ol_offsetx=10; +if (typeof ol_offsety=='undefined') var ol_offsety=10; +if (typeof ol_text=='undefined') var ol_text="Default Text"; +if (typeof ol_cap=='undefined') var ol_cap=""; +if (typeof ol_sticky=='undefined') var ol_sticky=0; +if (typeof ol_background=='undefined') var ol_background=""; +if (typeof ol_close=='undefined') var ol_close="Close"; +if (typeof ol_hpos=='undefined') var ol_hpos=RIGHT; +if (typeof ol_status=='undefined') var ol_status=""; +if (typeof ol_autostatus=='undefined') var ol_autostatus=0; +if (typeof ol_height=='undefined') var ol_height=-1; +if (typeof ol_snapx=='undefined') var ol_snapx=0; +if (typeof ol_snapy=='undefined') var ol_snapy=0; +if (typeof ol_fixx=='undefined') var ol_fixx=-1; +if (typeof ol_fixy=='undefined') var ol_fixy=-1; +if (typeof ol_relx=='undefined') var ol_relx=null; +if (typeof ol_rely=='undefined') var ol_rely=null; +if (typeof ol_fgbackground=='undefined') var ol_fgbackground=""; +if (typeof ol_bgbackground=='undefined') var ol_bgbackground=""; +if (typeof ol_padxl=='undefined') var ol_padxl=1; +if (typeof ol_padxr=='undefined') var ol_padxr=1; +if (typeof ol_padyt=='undefined') var ol_padyt=1; +if (typeof ol_padyb=='undefined') var ol_padyb=1; +if (typeof ol_fullhtml=='undefined') var ol_fullhtml=0; +if (typeof ol_vpos=='undefined') var ol_vpos=BELOW; +if (typeof ol_aboveheight=='undefined') var ol_aboveheight=0; +if (typeof ol_capicon=='undefined') var ol_capicon=""; +if (typeof ol_frame=='undefined') var ol_frame=self; +if (typeof ol_timeout=='undefined') var ol_timeout=0; +if (typeof ol_function=='undefined') var ol_function=null; +if (typeof ol_delay=='undefined') var ol_delay=0; +if (typeof ol_hauto=='undefined') var ol_hauto=0; +if (typeof ol_vauto=='undefined') var ol_vauto=0; +if (typeof ol_closeclick=='undefined') var ol_closeclick=0; +if (typeof ol_wrap=='undefined') var ol_wrap=0; +if (typeof ol_followmouse=='undefined') var ol_followmouse=1; +if (typeof ol_mouseoff=='undefined') var ol_mouseoff=0; +if (typeof ol_closetitle=='undefined') var ol_closetitle='Close'; +if (typeof ol_compatmode=='undefined') var ol_compatmode=0; +if (typeof ol_css=='undefined') var ol_css=CSSOFF; +if (typeof ol_fgclass=='undefined') var ol_fgclass=""; +if (typeof ol_bgclass=='undefined') var ol_bgclass=""; +if (typeof ol_textfontclass=='undefined') var ol_textfontclass=""; +if (typeof ol_captionfontclass=='undefined') var ol_captionfontclass=""; +if (typeof ol_closefontclass=='undefined') var ol_closefontclass=""; + +//////// +// ARRAY CONFIGURATION +//////// + +// You can use these arrays to store popup text here instead of in the html. +if (typeof ol_texts=='undefined') var ol_texts = new Array("Text 0", "Text 1"); +if (typeof ol_caps=='undefined') var ol_caps = new Array("Caption 0", "Caption 1"); + +//////// +// END OF CONFIGURATION +// Don't change anything below this line, all configuration is above. +//////// + + + + + +//////// +// INIT +//////// +// Runtime variables init. Don't change for config! +var o3_text=""; +var o3_cap=""; +var o3_sticky=0; +var o3_background=""; +var o3_close="Close"; +var o3_hpos=RIGHT; +var o3_offsetx=2; +var o3_offsety=2; +var o3_fgcolor=""; +var o3_bgcolor=""; +var o3_textcolor=""; +var o3_capcolor=""; +var o3_closecolor=""; +var o3_width=100; +var o3_border=1; +var o3_cellpad=2; +var o3_status=""; +var o3_autostatus=0; +var o3_height=-1; +var o3_snapx=0; +var o3_snapy=0; +var o3_fixx=-1; +var o3_fixy=-1; +var o3_relx=null; +var o3_rely=null; +var o3_fgbackground=""; +var o3_bgbackground=""; +var o3_padxl=0; +var o3_padxr=0; +var o3_padyt=0; +var o3_padyb=0; +var o3_fullhtml=0; +var o3_vpos=BELOW; +var o3_aboveheight=0; +var o3_capicon=""; +var o3_textfont="Verdana,Arial,Helvetica"; +var o3_captionfont="Verdana,Arial,Helvetica"; +var o3_closefont="Verdana,Arial,Helvetica"; +var o3_textsize="1"; +var o3_captionsize="1"; +var o3_closesize="1"; +var o3_frame=self; +var o3_timeout=0; +var o3_timerid=0; +var o3_allowmove=0; +var o3_function=null; +var o3_delay=0; +var o3_delayid=0; +var o3_hauto=0; +var o3_vauto=0; +var o3_closeclick=0; +var o3_wrap=0; +var o3_followmouse=1; +var o3_mouseoff=0; +var o3_closetitle=''; +var o3_compatmode=0; +var o3_css=CSSOFF; +var o3_fgclass=""; +var o3_bgclass=""; +var o3_textfontclass=""; +var o3_captionfontclass=""; +var o3_closefontclass=""; + +// Display state variables +var o3_x = 0; +var o3_y = 0; +var o3_showingsticky = 0; +var o3_removecounter = 0; + +// Our layer +var over = null; +var fnRef, hoveringSwitch = false; +var olHideDelay; + +// Decide browser version +var isMac = (navigator.userAgent.indexOf("Mac") != -1); +var olOp = (navigator.userAgent.toLowerCase().indexOf('opera') > -1 && document.createTextNode); // Opera 7 +var olNs4 = (navigator.appName=='Netscape' && parseInt(navigator.appVersion) == 4); +var olNs6 = (document.getElementById) ? true : false; +var olIe4 = (document.all) ? true : false; +var olIe5 = false; +var olIe55 = false; // Added additional variable to identify IE5.5+ +var docRoot = 'document.body'; + +// Resize fix for NS4.x to keep track of layer +if (olNs4) { + var oW = window.innerWidth; + var oH = window.innerHeight; + window.onresize = function() { if (oW != window.innerWidth || oH != window.innerHeight) location.reload(); } +} + +// Microsoft Stupidity Check(tm). +if (olIe4) { + var agent = navigator.userAgent; + if (/MSIE/.test(agent)) { + var versNum = parseFloat(agent.match(/MSIE (\d\.\d+)\.*/i)[1]); + if (versNum >= 5){ + olIe5=true; + olIe55=(versNum>=5.5&&!olOp) ? true : false; + if (olNs6) olNs6=false; + } + } + if (olNs6) olIe4 = false; +} + +// Check for compatability mode. +if (document.compatMode && document.compatMode == 'CSS1Compat') { + docRoot= ((olIe4 && !olOp) ? 'document.documentElement' : docRoot); +} + +// Add window onload handlers to indicate when all modules have been loaded +// For Netscape 6+ and Mozilla, uses addEventListener method on the window object +// For IE it uses the attachEvent method of the window object and for Netscape 4.x +// it sets the window.onload handler to the OLonload_handler function for Bubbling +if(window.addEventListener) window.addEventListener("load",OLonLoad_handler,false); +else if (window.attachEvent) window.attachEvent("onload",OLonLoad_handler); + +// Capture events, alt. diffuses the overlib function. +var olCheckMouseCapture = true; +if ((olNs4 || olNs6 || olIe4)) { + olMouseCapture(); +} else { + overlib = no_overlib; + nd = no_overlib; + ver3fix = true; +} + + +//////// +// PUBLIC FUNCTIONS +//////// + +// overlib(arg0,...,argN) +// Loads parameters into global runtime variables. +function overlib() { + if (!olLoaded || isExclusive(overlib.arguments)) return true; + if (olCheckMouseCapture) olMouseCapture(); + if (over) cClick(); + + // Load defaults to runtime. + olHideDelay=0; + o3_text=ol_text; + o3_cap=ol_cap; + o3_sticky=ol_sticky; + o3_background=ol_background; + o3_close=ol_close; + o3_hpos=ol_hpos; + o3_offsetx=ol_offsetx; + o3_offsety=ol_offsety; + o3_fgcolor=ol_fgcolor; + o3_bgcolor=ol_bgcolor; + o3_textcolor=ol_textcolor; + o3_capcolor=ol_capcolor; + o3_closecolor=ol_closecolor; + o3_width=ol_width; + o3_border=ol_border; + o3_cellpad=ol_cellpad; + o3_status=ol_status; + o3_autostatus=ol_autostatus; + o3_height=ol_height; + o3_snapx=ol_snapx; + o3_snapy=ol_snapy; + o3_fixx=ol_fixx; + o3_fixy=ol_fixy; + o3_relx=ol_relx; + o3_rely=ol_rely; + o3_fgbackground=ol_fgbackground; + o3_bgbackground=ol_bgbackground; + o3_padxl=ol_padxl; + o3_padxr=ol_padxr; + o3_padyt=ol_padyt; + o3_padyb=ol_padyb; + o3_fullhtml=ol_fullhtml; + o3_vpos=ol_vpos; + o3_aboveheight=ol_aboveheight; + o3_capicon=ol_capicon; + o3_textfont=ol_textfont; + o3_captionfont=ol_captionfont; + o3_closefont=ol_closefont; + o3_textsize=ol_textsize; + o3_captionsize=ol_captionsize; + o3_closesize=ol_closesize; + o3_timeout=ol_timeout; + o3_function=ol_function; + o3_delay=ol_delay; + o3_hauto=ol_hauto; + o3_vauto=ol_vauto; + o3_closeclick=ol_closeclick; + o3_wrap=ol_wrap; + o3_followmouse=ol_followmouse; + o3_mouseoff=ol_mouseoff; + o3_closetitle=ol_closetitle; + o3_css=ol_css; + o3_compatmode=ol_compatmode; + o3_fgclass=ol_fgclass; + o3_bgclass=ol_bgclass; + o3_textfontclass=ol_textfontclass; + o3_captionfontclass=ol_captionfontclass; + o3_closefontclass=ol_closefontclass; + + setRunTimeVariables(); + + fnRef = ''; + + // Special for frame support, over must be reset... + o3_frame = ol_frame; + + if(!(over=createDivContainer())) return false; + + parseTokens('o3_', overlib.arguments); + if (!postParseChecks()) return false; + + if (o3_delay == 0) { + return runHook("olMain", FREPLACE); + } else { + o3_delayid = setTimeout("runHook('olMain', FREPLACE)", o3_delay); + return false; + } +} + +// Clears popups if appropriate +function nd(time) { + if (olLoaded && !isExclusive()) { + hideDelay(time); // delay popup close if time specified + + if (o3_removecounter >= 1) { o3_showingsticky = 0 }; + + if (o3_showingsticky == 0) { + o3_allowmove = 0; + if (over != null && o3_timerid == 0) runHook("hideObject", FREPLACE, over); + } else { + o3_removecounter++; + } + } + + return true; +} + +// The Close onMouseOver function for stickies +function cClick() { + if (olLoaded) { + runHook("hideObject", FREPLACE, over); + o3_showingsticky = 0; + } + return false; +} + +// Method for setting page specific defaults. +function overlib_pagedefaults() { + parseTokens('ol_', overlib_pagedefaults.arguments); +} + + +//////// +// OVERLIB MAIN FUNCTION +//////// + +// This function decides what it is we want to display and how we want it done. +function olMain() { + var layerhtml, styleType; + runHook("olMain", FBEFORE); + + if (o3_background!="" || o3_fullhtml) { + // Use background instead of box. + layerhtml = runHook('ol_content_background', FALTERNATE, o3_css, o3_text, o3_background, o3_fullhtml); + } else { + // They want a popup box. + styleType = (pms[o3_css-1-pmStart] == "cssoff" || pms[o3_css-1-pmStart] == "cssclass"); + + // Prepare popup background + if (o3_fgbackground != "") o3_fgbackground = "background=\""+o3_fgbackground+"\""; + if (o3_bgbackground != "") o3_bgbackground = (styleType ? "background=\""+o3_bgbackground+"\"" : o3_bgbackground); + + // Prepare popup colors + if (o3_fgcolor != "") o3_fgcolor = (styleType ? "bgcolor=\""+o3_fgcolor+"\"" : o3_fgcolor); + if (o3_bgcolor != "") o3_bgcolor = (styleType ? "bgcolor=\""+o3_bgcolor+"\"" : o3_bgcolor); + + // Prepare popup height + if (o3_height > 0) o3_height = (styleType ? "height=\""+o3_height+"\"" : o3_height); + else o3_height = ""; + + // Decide which kinda box. + if (o3_cap=="") { + // Plain + layerhtml = runHook('ol_content_simple', FALTERNATE, o3_css, o3_text); + } else { + // With caption + if (o3_sticky) { + // Show close text + layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, o3_close); + } else { + // No close text + layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, ""); + } + } + } + + // We want it to stick! + if (o3_sticky) { + if (o3_timerid > 0) { + clearTimeout(o3_timerid); + o3_timerid = 0; + } + o3_showingsticky = 1; + o3_removecounter = 0; + } + + // Created a separate routine to generate the popup to make it easier + // to implement a plugin capability + if (!runHook("createPopup", FREPLACE, layerhtml)) return false; + + // Prepare status bar + if (o3_autostatus > 0) { + o3_status = o3_text; + if (o3_autostatus > 1) o3_status = o3_cap; + } + + // When placing the layer the first time, even stickies may be moved. + o3_allowmove = 0; + + // Initiate a timer for timeout + if (o3_timeout > 0) { + if (o3_timerid > 0) clearTimeout(o3_timerid); + o3_timerid = setTimeout("cClick()", o3_timeout); + } + + // Show layer + runHook("disp", FREPLACE, o3_status); + runHook("olMain", FAFTER); + + return (olOp && event && event.type == 'mouseover' && !o3_status) ? '' : (o3_status != ''); +} + +//////// +// LAYER GENERATION FUNCTIONS +//////// +// These functions just handle popup content with tags that should adhere to the W3C standards specification. + +// Makes simple table without caption +function ol_content_simple(text) { + txt='
' : '>')+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'
'; + + set_background(""); + return txt; +} + +// Makes table with caption and optional close link +function ol_content_caption(text,title,close) { + var nameId; + closing=""; + closeevent="onmouseover"; + if (o3_closeclick==1) closeevent= (o3_closetitle ? "title='" + o3_closetitle +"'" : "") + " onclick"; + if (o3_capicon!="") { + nameId=' hspace=\"5\"'+' align=\"middle\" alt=\"\"'; + if (typeof o3_dragimg!='undefined'&&o3_dragimg) nameId=' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"'; + o3_capicon=''; + } + + if (close != "") + closing=''+(o3_closefontclass ? '' : wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass ? '' : wrapStr(1,o3_closesize,'close'))+''; + txt='
' : '>')+(o3_captionfontclass ? '' : ''+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass ? '' : wrapStr(1,o3_captionsize)+'')+''+closing+'
' :'>')+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize)) + '
'; + + set_background(""); + return txt; +} + +// Sets the background picture,padding and lots more. :) +function ol_content_background(text,picture,hasfullhtml) { + if (hasfullhtml) { + txt=text; + } else { + txt='
'+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'
'; + } + + set_background(picture); + return txt; +} + +// Loads a picture into the div. +function set_background(pic) { + if (pic == "") { + if (olNs4) { + over.background.src = null; + } else if (over.style) { + over.style.backgroundImage = "none"; + } + } else { + if (olNs4) { + over.background.src = pic; + } else if (over.style) { + over.style.width=o3_width + 'px'; + over.style.backgroundImage = "url("+pic+")"; + } + } +} + +//////// +// HANDLING FUNCTIONS +//////// +var olShowId=-1; + +// Displays the popup +function disp(statustext) { + runHook("disp", FBEFORE); + + if (o3_allowmove == 0) { + runHook("placeLayer", FREPLACE); + (olNs6&&olShowId<0) ? olShowId=setTimeout("runHook('showObject', FREPLACE, over)", 1) : runHook("showObject", FREPLACE, over); + o3_allowmove = (o3_sticky || o3_followmouse==0) ? 0 : 1; + } + + runHook("disp", FAFTER); + + if (statustext != "") self.status = statustext; +} + +// Creates the actual popup structure +function createPopup(lyrContent){ + runHook("createPopup", FBEFORE); + + if (o3_wrap && !(olNs4 || olOp)) { + if (olIe4) { + over.style.pixelWidth = 0; + } else if (olNs6) { + repositionTo(over, 0, -over.offsetHeight); + } + } + + layerWrite(lyrContent); + + // Have to set o3_width for placeLayer() routine if o3_wrap is turned on + if (o3_wrap) o3_width=(olNs4 ? over.clip.width : over.offsetWidth); + + runHook("createPopup", FAFTER, lyrContent); + + return true; +} + +// Decides where we want the popup. +function placeLayer() { + var placeX, placeY, widthFix = 0; + + // HORIZONTAL PLACEMENT, re-arranged to work in Safari + if (o3_frame.innerWidth) { + widthFix=Math.ceil(1.2*(o3_frame.outerWidth - o3_frame.innerWidth)); + widthFix = (widthFix > 50) ? 0 : widthFix; + iwidth=o3_frame.innerWidth; + } else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth')) { + iwidth=eval('o3_frame.'+docRoot+'.clientWidth'); + } + + // Horizontal scroll offset + winoffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollLeft') : o3_frame.pageXOffset; + + placeX = runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix); + + // VERTICAL PLACEMENT, re-arranged to work in Safari + if (o3_frame.innerHeight) { + iheight=o3_frame.innerHeight; + } else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')) { + iheight=eval('o3_frame.'+docRoot+'.clientHeight'); + } + + // Vertical scroll offset + scrolloffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollTop') : o3_frame.pageYOffset; + placeY = runHook('verticalPlacement',FCHAIN,iheight,scrolloffset); + + // Actually move the object. + repositionTo(over, placeX, placeY); +} + +// Moves the layer +function olMouseMove(e) { + var e = (e) ? e : event; + + if (e.pageX) { + o3_x = e.pageX; + o3_y = e.pageY; + } else if (e.clientX) { + o3_x = eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft'); + o3_y = eval('e.clientY+o3_frame.'+docRoot+'.scrollTop'); + } + + if (o3_allowmove == 1) runHook("placeLayer", FREPLACE); + + // MouseOut handler + if (hoveringSwitch && !olNs4 && runHook("cursorOff", FREPLACE)) { + (olHideDelay ? hideDelay(olHideDelay) : cClick()); + hoveringSwitch = !hoveringSwitch; + } +} + +// Fake function for 3.0 users. +function no_overlib() { return ver3fix; } + +// Capture the mouse and chain other scripts. +function olMouseCapture() { + capExtent = document; + var fN, mseHandler = olMouseMove; + var re = /function[ ]+(\w+)\(/; + + if (document.onmousemove || (!olIe4 && window.onmousemove)) { + if (window.onmousemove) capExtent = window; + fN = capExtent.onmousemove.toString().match(re); + + if (fN == null || fN[1] == 'anonymous' || fN[1] == 'olMouseMove') { + olCheckMouseCapture = false; + return; + } + var str = fN[1]+'(e); ' + 'olMouseMove(e); '; + mseHandler = new Function('e', str); + } + + capExtent.onmousemove = mseHandler; + if (olNs4) capExtent.captureEvents(Event.MOUSEMOVE); +} + + +//////// +// PARSING FUNCTIONS +//////// + +// Does the actual command parsing. +function parseTokens(pf, ar) { + // What the next argument is expected to be. + var v, mode=-1, par = (pf != 'ol_'); + var fnMark = (par && !ar.length ? 1 : 0); + + for (i = 0; i < ar.length; i++) { + if (mode < 0) { + // Arg is maintext,unless its a number between pmStart and pmUpper + // then its a command. + if (typeof ar[i] == 'number' && ar[i] > pmStart && ar[i] < pmUpper) { + fnMark = (par ? 1 : 0); + i--; // backup one so that the next block can parse it + } else { + switch(pf) { + case 'ol_': + ol_text = ar[i].toString(); + break; + default: + o3_text=ar[i].toString(); + } + } + mode = 0; + } else { + // Note: NS4 doesn't like switch cases with vars. + if (ar[i] >= pmCount || ar[i]==DONOTHING) { continue; } + if (ar[i]==INARRAY) { fnMark = 0; eval(pf+'text=ol_texts['+ar[++i]+'].toString()'); continue; } + if (ar[i]==CAPARRAY) { eval(pf+'cap=ol_caps['+ar[++i]+'].toString()'); continue; } + if (ar[i]==STICKY) { if (pf!='ol_') eval(pf+'sticky=1'); continue; } + if (ar[i]==BACKGROUND) { eval(pf+'background="'+ar[++i]+'"'); continue; } + if (ar[i]==NOCLOSE) { if (pf!='ol_') opt_NOCLOSE(); continue; } + if (ar[i]==CAPTION) { eval(pf+"cap='"+escSglQuote(ar[++i])+"'"); continue; } + if (ar[i]==CENTER || ar[i]==LEFT || ar[i]==RIGHT) { eval(pf+'hpos='+ar[i]); if(pf!='ol_') olHautoFlag=1; continue; } + if (ar[i]==OFFSETX) { eval(pf+'offsetx='+ar[++i]); continue; } + if (ar[i]==OFFSETY) { eval(pf+'offsety='+ar[++i]); continue; } + if (ar[i]==FGCOLOR) { eval(pf+'fgcolor="'+ar[++i]+'"'); continue; } + if (ar[i]==BGCOLOR) { eval(pf+'bgcolor="'+ar[++i]+'"'); continue; } + if (ar[i]==TEXTCOLOR) { eval(pf+'textcolor="'+ar[++i]+'"'); continue; } + if (ar[i]==CAPCOLOR) { eval(pf+'capcolor="'+ar[++i]+'"'); continue; } + if (ar[i]==CLOSECOLOR) { eval(pf+'closecolor="'+ar[++i]+'"'); continue; } + if (ar[i]==WIDTH) { eval(pf+'width='+ar[++i]); continue; } + if (ar[i]==BORDER) { eval(pf+'border='+ar[++i]); continue; } + if (ar[i]==CELLPAD) { i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad')); continue; } + if (ar[i]==STATUS) { eval(pf+"status='"+escSglQuote(ar[++i])+"'"); continue; } + if (ar[i]==AUTOSTATUS) { eval(pf +'autostatus=('+pf+'autostatus == 1) ? 0 : 1'); continue; } + if (ar[i]==AUTOSTATUSCAP) { eval(pf +'autostatus=('+pf+'autostatus == 2) ? 0 : 2'); continue; } + if (ar[i]==HEIGHT) { eval(pf+'height='+pf+'aboveheight='+ar[++i]); continue; } // Same param again. + if (ar[i]==CLOSETEXT) { eval(pf+"close='"+escSglQuote(ar[++i])+"'"); continue; } + if (ar[i]==SNAPX) { eval(pf+'snapx='+ar[++i]); continue; } + if (ar[i]==SNAPY) { eval(pf+'snapy='+ar[++i]); continue; } + if (ar[i]==FIXX) { eval(pf+'fixx='+ar[++i]); continue; } + if (ar[i]==FIXY) { eval(pf+'fixy='+ar[++i]); continue; } + if (ar[i]==RELX) { eval(pf+'relx='+ar[++i]); continue; } + if (ar[i]==RELY) { eval(pf+'rely='+ar[++i]); continue; } + if (ar[i]==FGBACKGROUND) { eval(pf+'fgbackground="'+ar[++i]+'"'); continue; } + if (ar[i]==BGBACKGROUND) { eval(pf+'bgbackground="'+ar[++i]+'"'); continue; } + if (ar[i]==PADX) { eval(pf+'padxl='+ar[++i]); eval(pf+'padxr='+ar[++i]); continue; } + if (ar[i]==PADY) { eval(pf+'padyt='+ar[++i]); eval(pf+'padyb='+ar[++i]); continue; } + if (ar[i]==FULLHTML) { if (pf!='ol_') eval(pf+'fullhtml=1'); continue; } + if (ar[i]==BELOW || ar[i]==ABOVE) { eval(pf+'vpos='+ar[i]); if (pf!='ol_') olVautoFlag=1; continue; } + if (ar[i]==CAPICON) { eval(pf+'capicon="'+ar[++i]+'"'); continue; } + if (ar[i]==TEXTFONT) { eval(pf+"textfont='"+escSglQuote(ar[++i])+"'"); continue; } + if (ar[i]==CAPTIONFONT) { eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'"); continue; } + if (ar[i]==CLOSEFONT) { eval(pf+"closefont='"+escSglQuote(ar[++i])+"'"); continue; } + if (ar[i]==TEXTSIZE) { eval(pf+'textsize="'+ar[++i]+'"'); continue; } + if (ar[i]==CAPTIONSIZE) { eval(pf+'captionsize="'+ar[++i]+'"'); continue; } + if (ar[i]==CLOSESIZE) { eval(pf+'closesize="'+ar[++i]+'"'); continue; } + if (ar[i]==TIMEOUT) { eval(pf+'timeout='+ar[++i]); continue; } + if (ar[i]==FUNCTION) { if (pf=='ol_') { if (typeof ar[i+1]!='number') { v=ar[++i]; ol_function=(typeof v=='function' ? v : null); }} else {fnMark = 0; v = null; if (typeof ar[i+1]!='number') v = ar[++i]; opt_FUNCTION(v); } continue; } + if (ar[i]==DELAY) { eval(pf+'delay='+ar[++i]); continue; } + if (ar[i]==HAUTO) { eval(pf+'hauto=('+pf+'hauto == 0) ? 1 : 0'); continue; } + if (ar[i]==VAUTO) { eval(pf+'vauto=('+pf+'vauto == 0) ? 1 : 0'); continue; } + if (ar[i]==CLOSECLICK) { eval(pf +'closeclick=('+pf+'closeclick == 0) ? 1 : 0'); continue; } + if (ar[i]==WRAP) { eval(pf +'wrap=('+pf+'wrap == 0) ? 1 : 0'); continue; } + if (ar[i]==FOLLOWMOUSE) { eval(pf +'followmouse=('+pf+'followmouse == 1) ? 0 : 1'); continue; } + if (ar[i]==MOUSEOFF) { eval(pf +'mouseoff=('+pf+'mouseoff==0) ? 1 : 0'); v=ar[i+1]; if (pf != 'ol_' && eval(pf+'mouseoff') && typeof v == 'number' && (v < pmStart || v > pmUpper)) olHideDelay=ar[++i]; continue; } + if (ar[i]==CLOSETITLE) { eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'"); continue; } + if (ar[i]==CSSOFF||ar[i]==CSSCLASS) { eval(pf+'css='+ar[i]); continue; } + if (ar[i]==COMPATMODE) { eval(pf+'compatmode=('+pf+'compatmode==0) ? 1 : 0'); continue; } + if (ar[i]==FGCLASS) { eval(pf+'fgclass="'+ar[++i]+'"'); continue; } + if (ar[i]==BGCLASS) { eval(pf+'bgclass="'+ar[++i]+'"'); continue; } + if (ar[i]==TEXTFONTCLASS) { eval(pf+'textfontclass="'+ar[++i]+'"'); continue; } + if (ar[i]==CAPTIONFONTCLASS) { eval(pf+'captionfontclass="'+ar[++i]+'"'); continue; } + if (ar[i]==CLOSEFONTCLASS) { eval(pf+'closefontclass="'+ar[++i]+'"'); continue; } + i = parseCmdLine(pf, i, ar); + } + } + + if (fnMark && o3_function) o3_text = o3_function(); + + if ((pf == 'o3_') && o3_wrap) { + o3_width = 0; + + if (olOp || (olIe4 && isMac)) { + var tReg=/<.*\n*>/ig; + if (!tReg.test(o3_text)) o3_text = o3_text.replace(/[ ]+/g, ' '); + if (!tReg.test(o3_cap))o3_cap = o3_cap.replace(/[ ]+/g, ' '); + } + } + if ((pf == 'o3_') && o3_sticky) { + if (!o3_close && (o3_frame != ol_frame)) o3_close = ol_close; + if (o3_mouseoff && (o3_frame == ol_frame)) opt_NOCLOSE(' '); + } +} + + +//////// +// LAYER FUNCTIONS +//////// + +// Writes to a layer +function layerWrite(txt) { + txt += "\n"; + if (olNs4) { + var lyr = o3_frame.document.layers['overDiv'].document + lyr.write(txt) + lyr.close() + } else if (typeof over.innerHTML != 'undefined') { + if (olIe5 && isMac) over.innerHTML = ''; + over.innerHTML = txt; + } else { + range = o3_frame.document.createRange(); + range.setStartAfter(over); + domfrag = range.createContextualFragment(txt); + + while (over.hasChildNodes()) { + over.removeChild(over.lastChild); + } + + over.appendChild(domfrag); + } +} + +// Make an object visible +function showObject(obj) { + runHook("showObject", FBEFORE); + + var theObj=(olNs4 ? obj : obj.style); + theObj.visibility = 'visible'; + + runHook("showObject", FAFTER); +} + +// Hides an object +function hideObject(obj) { + runHook("hideObject", FBEFORE); + + var theObj=(olNs4 ? obj : obj.style); + if (olNs6 && olShowId>0) { clearTimeout(olShowId); olShowId=0; } + theObj.visibility = 'hidden'; + + if (o3_timerid > 0) clearTimeout(o3_timerid); + if (o3_delayid > 0) clearTimeout(o3_delayid); + + o3_timerid = 0; + o3_delayid = 0; + self.status = ""; + + if (obj.onmouseout || obj.onmouseover) { + if (olNs4) obj.releaseEvents(Event.MOUSEOUT || Event.MOUSEOVER); + obj.onmouseout = obj.onmouseover = null; + } + + runHook("hideObject", FAFTER); +} + +// Move a layer +function repositionTo(obj, xL, yL) { + var theObj=(olNs4 ? obj : obj.style); + theObj.left = xL + (!olNs4 ? 'px' : 0); + theObj.top = yL + (!olNs4 ? 'px' : 0); +} + +// Check position of cursor relative to overDiv DIVision; mouseOut function +function cursorOff() { + var left = parseInt(over.style.left); + var top = parseInt(over.style.top); + var right = left + (over.offsetWidth >= parseInt(o3_width) ? over.offsetWidth : parseInt(o3_width)); + var bottom = top + (over.offsetHeight >= o3_aboveheight ? over.offsetHeight : o3_aboveheight); + + if (o3_x < left || o3_x > right || o3_y < top || o3_y > bottom) return true; + + return false; +} + + +//////// +// COMMAND FUNCTIONS +//////// + +// Calls callme or the default function. +function opt_FUNCTION(callme) { + o3_text = (callme ? (typeof callme=='string' ? (/.+\(.*\)/.test(callme) ? eval(callme) : callme) : callme()) : (o3_function ? o3_function() : 'No Function')); + + return 0; +} + +// Handle hovering +function opt_NOCLOSE(unused) { + if (!unused) o3_close = ""; + + if (olNs4) { + over.captureEvents(Event.MOUSEOUT || Event.MOUSEOVER); + over.onmouseover = function () { if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid = 0; } } + over.onmouseout = function (e) { if (olHideDelay) hideDelay(olHideDelay); else cClick(e); } + } else { + over.onmouseover = function () {hoveringSwitch = true; if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid =0; } } + } + + return 0; +} + +// Function to scan command line arguments for multiples +function opt_MULTIPLEARGS(i, args, parameter) { + var k=i, re, pV, str=''; + + for(k=i; kpmStart) break; + str += args[k] + ','; + } + if (str) str = str.substring(0,--str.length); + + k--; // reduce by one so the for loop this is in works correctly + pV=(olNs4 && /cellpad/i.test(parameter)) ? str.split(',')[0] : str; + eval(parameter + '="' + pV + '"'); + + return k; +} + +// Remove   in texts when done. +function nbspCleanup() { + if (o3_wrap && (olOp || (olIe4 && isMac))) { + o3_text = o3_text.replace(/\ /g, ' '); + o3_cap = o3_cap.replace(/\ /g, ' '); + } +} + +// Escape embedded single quotes in text strings +function escSglQuote(str) { + return str.toString().replace(/'/g,"\\'"); +} + +// Onload handler for window onload event +function OLonLoad_handler(e) { + var re = /\w+\(.*\)[;\s]+/g, olre = /overlib\(|nd\(|cClick\(/, fn, l, i; + + if(!olLoaded) olLoaded=1; + + // Remove it for Gecko based browsers + if(window.removeEventListener && e.eventPhase == 3) window.removeEventListener("load",OLonLoad_handler,false); + else if(window.detachEvent) { // and for IE and Opera 4.x but execute calls to overlib, nd, or cClick() + window.detachEvent("onload",OLonLoad_handler); + var fN = document.body.getAttribute('onload'); + if (fN) { + fN=fN.toString().match(re); + if (fN && fN.length) { + for (i=0; i' : '') : ''; + else { + fontStr='o3_'+whichString+'font'; + fontColor='o3_'+((whichString=='caption')? 'cap' : whichString)+'color'; + return (hasDims&&!olNs4) ? (isClose ? '' : '
') : ''; + } +} + +// Quotes Multi word font names; needed for CSS Standards adherence in font-family +function quoteMultiNameFonts(theFont) { + var v, pM=theFont.split(','); + for (var i=0; i 0) clearTimeout(o3_timerid); + + o3_timerid=setTimeout("cClick()",(o3_timeout=time)); + } +} + +// Was originally in the placeLayer() routine; separated out for future ease +function horizontalPlacement(browserWidth, horizontalScrollAmount, widthFix) { + var placeX, iwidth=browserWidth, winoffset=horizontalScrollAmount; + var parsedWidth = parseInt(o3_width); + + if (o3_fixx > -1 || o3_relx != null) { + // Fixed position + placeX=(o3_relx != null ? ( o3_relx < 0 ? winoffset +o3_relx+ iwidth - parsedWidth - widthFix : winoffset+o3_relx) : o3_fixx); + } else { + // If HAUTO, decide what to use. + if (o3_hauto == 1) { + if ((o3_x - winoffset) > (iwidth / 2)) { + o3_hpos = LEFT; + } else { + o3_hpos = RIGHT; + } + } + + // From mouse + if (o3_hpos == CENTER) { // Center + placeX = o3_x+o3_offsetx-(parsedWidth/2); + + if (placeX < winoffset) placeX = winoffset; + } + + if (o3_hpos == RIGHT) { // Right + placeX = o3_x+o3_offsetx; + + if ((placeX+parsedWidth) > (winoffset+iwidth - widthFix)) { + placeX = iwidth+winoffset - parsedWidth - widthFix; + if (placeX < 0) placeX = 0; + } + } + if (o3_hpos == LEFT) { // Left + placeX = o3_x-o3_offsetx-parsedWidth; + if (placeX < winoffset) placeX = winoffset; + } + + // Snapping! + if (o3_snapx > 1) { + var snapping = placeX % o3_snapx; + + if (o3_hpos == LEFT) { + placeX = placeX - (o3_snapx+snapping); + } else { + // CENTER and RIGHT + placeX = placeX+(o3_snapx - snapping); + } + + if (placeX < winoffset) placeX = winoffset; + } + } + + return placeX; +} + +// was originally in the placeLayer() routine; separated out for future ease +function verticalPlacement(browserHeight,verticalScrollAmount) { + var placeY, iheight=browserHeight, scrolloffset=verticalScrollAmount; + var parsedHeight=(o3_aboveheight ? parseInt(o3_aboveheight) : (olNs4 ? over.clip.height : over.offsetHeight)); + + if (o3_fixy > -1 || o3_rely != null) { + // Fixed position + placeY=(o3_rely != null ? (o3_rely < 0 ? scrolloffset+o3_rely+iheight - parsedHeight : scrolloffset+o3_rely) : o3_fixy); + } else { + // If VAUTO, decide what to use. + if (o3_vauto == 1) { + if ((o3_y - scrolloffset) > (iheight/2)) { + o3_vpos = ABOVE; + } else { + o3_vpos = BELOW; + } + } + + // From mouse + if (o3_vpos == ABOVE) { + if (o3_aboveheight == 0) o3_aboveheight = parsedHeight; + + placeY = o3_y - (o3_aboveheight+o3_offsety); + if (placeY < scrolloffset) placeY = scrolloffset; + } else { + // BELOW + placeY = o3_y+o3_offsety; + } + + // Snapping! + if (o3_snapy > 1) { + var snapping = placeY % o3_snapy; + + if (o3_aboveheight > 0 && o3_vpos == ABOVE) { + placeY = placeY - (o3_snapy+snapping); + } else { + placeY = placeY+(o3_snapy - snapping); + } + + if (placeY < scrolloffset) placeY = scrolloffset; + } + } + + return placeY; +} + +// checks positioning flags +function checkPositionFlags() { + if (olHautoFlag) olHautoFlag = o3_hauto=0; + if (olVautoFlag) olVautoFlag = o3_vauto=0; + return true; +} + +// create the div container for popup content if it doesn't exist +function createDivContainer(id,frm,zValue) { + id = (id || 'overDiv'), frm = (frm || o3_frame), zValue = (zValue || 1000); + var objRef, divContainer = layerReference(id); + + if (divContainer == null) { + if (olNs4) { + divContainer = frm.document.layers[id] = new Layer(window.innerWidth, frm); + objRef = divContainer; + } else { + var body = (olIe4 ? frm.document.all.tags('BODY')[0] : frm.document.getElementsByTagName("BODY")[0]); + if (olIe4&&!document.getElementById) { + body.insertAdjacentHTML("beforeEnd",'
'); + divContainer=layerReference(id); + } else { + divContainer = frm.document.createElement("DIV"); + divContainer.id = id; + body.appendChild(divContainer); + } + objRef = divContainer.style; + } + + with (objRef) { + position = 'absolute'; + visibility = 'hidden'; + zIndex = zValue; + } + } + + return divContainer; +} + +// get reference to a layer with ID=id +function layerReference(id) { + return (olNs4 ? o3_frame.document.layers[id] : (document.all ? o3_frame.document.all[id] : o3_frame.document.getElementById(id))); +} +//////// +// PLUGIN ACTIVATION FUNCTIONS +//////// + +// Runs plugin functions to set runtime variables. +function setRunTimeVariables(){ + if (typeof runTime != 'undefined' && runTime.length) { + for (var k = 0; k < runTime.length; k++) { + runTime[k](); + } + } +} + +// Runs plugin functions to parse commands. +function parseCmdLine(pf, i, args) { + if (typeof cmdLine != 'undefined' && cmdLine.length) { + for (var k = 0; k < cmdLine.length; k++) { + var j = cmdLine[k](pf, i, args); + if (j >- 1) { + i = j; + break; + } + } + } + + return i; +} + +// Runs plugin functions to do things after parse. +function postParseChecks(){ + if (typeof postParse != 'undefined' && postParse.length) { + for (var k = 0; k < postParse.length; k++) { + if (postParse[k]()) continue; + return false; // end now since have an error + } + } + return true; +} + + +//////// +// PLUGIN REGISTRATION FUNCTIONS +//////// + +// Registers commands and creates constants. +function registerCommands(cmdStr) { + if (typeof cmdStr!='string') return; + + var pM = cmdStr.split(','); + pms = pms.concat(pM); + + for (var i = 0; i< pM.length; i++) { + eval(pM[i].toUpperCase()+'='+pmCount++); + } +} + +// Registers no-parameter commands +function registerNoParameterCommands(cmdStr) { + if (!cmdStr && typeof cmdStr!='string') return; + pmt=(!pmt) ? cmdStr : pmt + ',' + cmdStr; +} + +// Register a function to hook at a certain point. +function registerHook(fnHookTo, fnRef, hookType, optPm) { + var hookPt, last = typeof optPm; + + if (fnHookTo == 'plgIn'||fnHookTo == 'postParse') return; + if (typeof hookPts == 'undefined') hookPts = new Array(); + if (typeof hookPts[fnHookTo] == 'undefined') hookPts[fnHookTo] = new FunctionReference(); + + hookPt = hookPts[fnHookTo]; + + if (hookType != null) { + if (hookType == FREPLACE) { + hookPt.ovload = fnRef; // replace normal overlib routine + if (fnHookTo.indexOf('ol_content_') > -1) hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef; + + } else if (hookType == FBEFORE || hookType == FAFTER) { + var hookPt=(hookType == 1 ? hookPt.before : hookPt.after); + + if (typeof fnRef == 'object') { + hookPt = hookPt.concat(fnRef); + } else { + hookPt[hookPt.length++] = fnRef; + } + + if (optPm) hookPt = reOrder(hookPt, fnRef, optPm); + + } else if (hookType == FALTERNATE) { + if (last=='number') hookPt.alt[pms[optPm-1-pmStart]] = fnRef; + } else if (hookType == FCHAIN) { + hookPt = hookPt.chain; + if (typeof fnRef=='object') hookPt=hookPt.concat(fnRef); // add other functions + else hookPt[hookPt.length++]=fnRef; + } + + return; + } +} + +// Register a function that will set runtime variables. +function registerRunTimeFunction(fn) { + if (isFunction(fn)) { + if (typeof runTime == 'undefined') runTime = new Array(); + if (typeof fn == 'object') { + runTime = runTime.concat(fn); + } else { + runTime[runTime.length++] = fn; + } + } +} + +// Register a function that will handle command parsing. +function registerCmdLineFunction(fn){ + if (isFunction(fn)) { + if (typeof cmdLine == 'undefined') cmdLine = new Array(); + if (typeof fn == 'object') { + cmdLine = cmdLine.concat(fn); + } else { + cmdLine[cmdLine.length++] = fn; + } + } +} + +// Register a function that does things after command parsing. +function registerPostParseFunction(fn){ + if (isFunction(fn)) { + if (typeof postParse == 'undefined') postParse = new Array(); + if (typeof fn == 'object') { + postParse = postParse.concat(fn); + } else { + postParse[postParse.length++] = fn; + } + } +} + +//////// +// PLUGIN REGISTRATION FUNCTIONS +//////// + +// Runs any hooks registered. +function runHook(fnHookTo, hookType) { + var l = hookPts[fnHookTo], k, rtnVal, optPm, arS, ar = runHook.arguments; + + if (hookType == FREPLACE) { + arS = argToString(ar, 2); + + if (typeof l == 'undefined' || !(l = l.ovload)) return eval(fnHookTo+'('+arS+')'); + else return eval('l('+arS+')'); + + } else if (hookType == FBEFORE || hookType == FAFTER) { + if (typeof l == 'undefined') return; + l=(hookType == 1 ? l.before : l.after); + + if (!l.length) return; + + arS = argToString(ar, 2); + for (var k = 0; k < l.length; k++) eval('l[k]('+arS+')'); + + } else if (hookType == FALTERNATE) { + optPm = ar[2]; + arS = argToString(ar, 3); + + if (typeof l == 'undefined' || (l = l.alt[pms[optPm-1-pmStart]]) == 'undefined') { + return eval(fnHookTo+'('+arS+')'); + } else { + return eval('l('+arS+')'); + } + } else if (hookType == FCHAIN) { + arS=argToString(ar,2); + l=l.chain; + + for (k=l.length; k > 0; k--) if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0)) return rtnVal; + } +} + +//////// +// UTILITY FUNCTIONS +//////// + +// Checks if something is a function. +function isFunction(fnRef) { + var rtn = true; + + if (typeof fnRef == 'object') { + for (var i = 0; i < fnRef.length; i++) { + if (typeof fnRef[i]=='function') continue; + rtn = false; + break; + } + } else if (typeof fnRef != 'function') { + rtn = false; + } + + return rtn; +} + +// Converts an array into an argument string for use in eval. +function argToString(array, strtInd, argName) { + var jS = strtInd, aS = '', ar = array; + argName=(argName ? argName : 'ar'); + + if (ar.length > jS) { + for (var k = jS; k < ar.length; k++) aS += argName+'['+k+'], '; + aS = aS.substring(0, aS.length-2); + } + + return aS; +} + +// Places a hook in the correct position in a hook point. +function reOrder(hookPt, fnRef, order) { + if (!order || typeof order == 'undefined' || typeof order == 'number') return; + + var newPt = new Array(), match; + + if (typeof order=='function') { + if (typeof fnRef=='object') { + newPt = newPt.concat(fnRef); + } else { + newPt[newPt.length++]=fnRef; + } + + for (var i = 0; i < hookPt.length; i++) { + match = false; + if (typeof fnRef == 'function' && hookPt[i] == fnRef) { + continue; + } else { + for(var j = 0; j < fnRef.length; j++) if (hookPt[i] == fnRef[j]) { + match = true; + break; + } + } + if (!match) newPt[newPt.length++] = hookPt[i]; + } + + newPt[newPt.length++] = order; + + } else if (typeof order == 'object') { + if (typeof fnRef == 'object') { + newPt = newPt.concat(fnRef); + } else { + newPt[newPt.length++] = fnRef; + } + + for (var j = 0; j < hookPt.length; j++) { + match = false; + if (typeof fnRef == 'function' && hookPt[j] == fnRef) { + continue; + } else { + for (var i = 0; i < fnRef.length; i++) if (hookPt[j] == fnRef[i]) { + match = true; + break; + } + } + if (!match) newPt[newPt.length++]=hookPt[j]; + } + + for (i = 0; i < newPt.length; i++) hookPt[i] = newPt[i]; + newPt.length = 0; + + for (var j = 0; j < hookPt.length; j++) { + match = false; + for (var i = 0; i < order.length; i++) { + if (hookPt[j] == order[i]) { + match = true; + break; + } + } + if (!match) newPt[newPt.length++] = hookPt[j]; + } + newPt = newPt.concat(order); + } + + for(i = 0; i < newPt.length; i++) hookPt[i] = newPt[i]; + + return hookPt; +} + +//////// +// OBJECT CONSTRUCTORS +//////// + +// Object for handling hooks. +function FunctionReference() { + this.ovload = null; + this.before = new Array(); + this.after = new Array(); + this.alt = new Array(); + this.chain = new Array(); +} + +// Object for simple access to the overLIB version used. +// Examples: simpleversion:351 major:3 minor:5 revision:1 +function Info(version, prerelease) { + this.version = version; + this.prerelease = prerelease; + + this.simpleversion = Math.round(this.version*100); + this.major = parseInt(this.simpleversion / 100); + this.minor = parseInt(this.simpleversion / 10) - this.major * 10; + this.revision = parseInt(this.simpleversion) - this.major * 100 - this.minor * 10; + this.meets = meets; +} + +// checks for Core Version required +function meets(reqdVersion) { + return (!reqdVersion) ? false : this.simpleversion >= Math.round(100*parseFloat(reqdVersion)); +} + + +//////// +// STANDARD REGISTRATIONS +//////// +registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSOFF); +registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSOFF); +registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSOFF); +registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSCLASS); +registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSCLASS); +registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSCLASS); +registerPostParseFunction(checkPositionFlags); +registerHook("hideObject", nbspCleanup, FAFTER); +registerHook("horizontalPlacement", horizontalPlacement, FCHAIN); +registerHook("verticalPlacement", verticalPlacement, FCHAIN); +if (olNs4||(olIe5&&isMac)) olLoaded=1; +registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode'); diff --git a/photo.php b/photo.php new file mode 100755 index 0000000..1dd328c --- /dev/null +++ b/photo.php @@ -0,0 +1,50 @@ + diff --git a/plans75.jpg b/plans75.jpg new file mode 100755 index 0000000000000000000000000000000000000000..04fadc5c748d4db2d120b0582a34715c26dece80 GIT binary patch literal 9938 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.Pu!8=Z* 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 literal 0 HcmV?d00001 diff --git a/plans76.jpg b/plans76.jpg new file mode 100644 index 0000000000000000000000000000000000000000..20d052af112ddd9209954d389687d8fefd418584 GIT binary patch literal 9915 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 literal 0 HcmV?d00001 diff --git a/planwatch.php b/planwatch.php new file mode 100755 index 0000000..00c89a3 --- /dev/null +++ b/planwatch.php @@ -0,0 +1,67 @@ + 0 and $mytime <100)) +{ + $mytime = 12; +}//if time is out of acceptable period, set to 12 + +//give form to set how many hours back to look +?> +

+ + + +
+ DATE_SUB(NOW(), INTERVAL $mytime HOUR) +$webview +ORDER BY changed desc"); +//do the query with specifying date format to be returned + +echo ""; + +//display the results of the query +while($new_plans = mysql_fetch_row($my_planwatch)) { + echo ""; +} +echo "
" . $new_plans[1] . "" . $new_plans[2] . + "
"; + + +if ( !$auth )//if not logged in +{ + gdisp_end();//end guest display +} +else +{ + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);//end valid user display +} + +db_disconnect($dbh); + +?> diff --git a/poll.php b/poll.php new file mode 100755 index 0000000..81a4741 --- /dev/null +++ b/poll.php @@ -0,0 +1,161 @@ +$question
"; + echo '
'; + echo ''; + echo "\n"; + $sql = "select c.html as html, c.poll_choice_id as poll_choice_id, v.userid as checked from poll_choices c left join poll_votes v on v.userid = $userid and v.poll_choice_id = c.poll_choice_id where c.poll_question_id = $poll_question_id order by c.html"; + $html_res = mysql_query($sql); + while ($new_row = mysql_fetch_array($html_res)) { + $html = $new_row['html']; + $checked = $new_row['checked']; + $poll_choice_id = $new_row['poll_choice_id']; + $html = $new_row['html']; + echo "\n\n"; + } + echo "
OptionsYes! I want to pick this oneVotes so far
$html"; + if ($checked) { + $checked = "Checked"; + } else { + $checked = ''; + } + if ($type == 'single') { + echo ''; + } else { + echo ''; + } + $sql = "select count(*) as popularity from poll_votes v + where v.poll_choice_id = $poll_choice_id"; + $res = mysql_query($sql); + $new_row = mysql_fetch_array($res); + $popularity = $new_row['popularity']; + echo "$popularity"; + echo "
\n"; + echo ''; + echo ''; + echo ''; + echo "
\n"; + $sql = "select count(*) as voted from poll_votes v join poll_choices c using (poll_choice_id) where userid = $userid and poll_question_id = $poll_question_id"; + $res = mysql_query($sql); + $new_row = mysql_fetch_array($res); + $voted = $new_row['voted']; + if ($voted) { + echo "
You have voted in this poll, but you may change your mind.
\n"; + } else { + + echo "

\n"; + } +} + ?> +

All Polls + + + + +

+ Poll ideas? Email. +

+ +

+ + + + + + '; + while($new_row = mysql_fetch_array($res)) { + echo ''; + echo ' '; + echo preg_replace('/<[^>]*>/', '', $new_row['html']); + echo ''; + echo ''; + echo "\n"; + } + echo ''; + + } + ?> diff --git a/proc_autoread.php b/proc_autoread.php new file mode 100755 index 0000000..647f64f --- /dev/null +++ b/proc_autoread.php @@ -0,0 +1,119 @@ + 0 and $key < 9999 and $val > 0) + { + $prosplist[$key]=$val; + } + } + + //checks to see what autoread stuff needs to be deleted + + $o=0; + while ($arlist[$o][0])//loop through old autofinger list + { + if ($alist[$arlist[$o][0]][0] == 1)//if starts with right letter + { + if ($prosplist[$arlist[$o][0]]) + { + if ($arlist[$o][1] == $prosplist[$arlist[$o][0]]) //if priorities match + {$remain[$arlist[$o][0]] = 1;}//set to neither delete, nor add + else //if priorities don't match + {$ridof[] = $arlist[$o][0];} + + } + + else //if not on prospective list + {$ridof[] = $arlist[$o][0]; + } + }//if starts with right letter + $o++; + }//while ($arlist[$o][0]) + + + //Set up an array of all of the autoread entrees that need to be added (not adding stuff that is already there) + if (count($prosplist) > 0) + {while(list($key,$val)=each($prosplist)) + { + if (!$remain[$key]==1) + {$addlist[]=$key;} + } + } + + //delete the autoread entrees that the person no longer wants or is changing the priority level for + if ($ridof) + { + while(list($key,$val)=each($ridof)) + { + mysql_query("DELETE FROM autofinger WHERE +owner = '$idcookie' and interest = '$val'"); + } + } + + //loop through and add the new autoread entrees + if ($addlist) + { + while(list($key,$val)=each($addlist)) + { + $rew = array($idcookie,$val,$prosplist[$val] ,"","",""); + add_row($dbh, "autofinger", $rew); + } + } + + $i = 97; //set begin letter to a + + while($i<123) //while before z + { + if ($i==$letternum)//if we've hit the desire letter + { + echo "[" . chr($i) . "]"; //show that the letter is selected + } + else + {echo " " . chr($i) . " ";} + $i++; + } + echo "
" . "AutoRead List Changed."; + + + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl); +} + +db_disconnect($dbh); + + +?> diff --git a/quicklove.php b/quicklove.php new file mode 100755 index 0000000..82877d3 --- /dev/null +++ b/quicklove.php @@ -0,0 +1,28 @@ + + + diff --git a/quote-test.php b/quote-test.php new file mode 100644 index 0000000..4a28e26 --- /dev/null +++ b/quote-test.php @@ -0,0 +1,15 @@ +"; + echo "
"; +echo "$s
"; + echo "
"; +$t = unserialize($s); +print_r($t); + echo "
"; + echo "
"; + + ?> diff --git a/random.php b/random.php new file mode 100755 index 0000000..4b8381f --- /dev/null +++ b/random.php @@ -0,0 +1,25 @@ + + + diff --git a/read.php b/read.php new file mode 100755 index 0000000..6a2dd59 --- /dev/null +++ b/read.php @@ -0,0 +1,341 @@ +" . $searchname . " does not exist and there are no names with the term in them."; + } + else //but if there are usernames with string in them, display them + { + echo "User " . $searchname . " does not exist.
However there are " . + $part_count . " names with " . $searchname . " in them.
These names are:
"; + echo "
    "; + $o = 0; + while ($partial_list[$o][0]) //loop through displaying the usernames as links + { + echo "
  • " . $partial_list[$o][1] . ""; + $o++; + }//while ($partial_list [$o][0]) + echo "
"; + }//if partial names + + + echo "

A search of this term found:"; + basicSearch($idcookie,$dbh,$auth,100,$searchname); + + } else { + echo "There is either no plan with that name or it is not viewable to guests. "; + echo 'Please Log in or Register.'; + } + + if ($auth) { + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl); + } else { + gdisp_end(); + } + mysql_close($dbh); + exit(); + } + else + { + + if ($auth) + { + mdisp_begin($dbh,$idcookie,$HTTP_HOST . + $REQUEST_URI,$myprivl); + } + else + { + gdisp_begin($dbh); + } + echo "Must enter a name"; + + if ($auth) + { + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl); + } + else + { + gdisp_end(); + } + mysql_close($dbh); + exit(); + } + }//if not valid username +}//$if (!$searchnum) + + +//begin displaying if there is a user with name or number given + +if ($auth) { + $my_result = mysql_query("Select priority From autofinger where + owner = '$idcookie' and interest = '$searchnum'"); + $onlist = mysql_fetch_array($my_result); + + if ($onlist) { + update_read($dbh, $idcookie, $searchnum);//mark as having been read + setReadTime($dbh, $idcookie,$searchnum); //and mark time that was read + $myonlist[$onlist[0]] = "checked"; //show which priority person is + } else { + $myonlist[0] = "checked";//if not on autoread list, show is not on priority list + } + + mdisp_begin($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl); +} else { + gdisp_begin($dbh); +} +$guest_auth = false; +if ($guest_pass = $_GET['guest-pass']) { + $real_pass = get_item($mydbh,"guest_password", "accounts", "userid", $searchnum); +#error_log("JLW real pass is $real_pass"); + if ($real_pass == '') { + $guest_auth = false; + } else if ( $real_pass == $guest_pass) { + $guest_auth = true; + } else { + $guest_auth = false; + } +} +#error_log("JLW guest auth is $guest_auth"); + +if (!$planinfo = + get_items($mydbh,"username,pseudo,DATE_FORMAT(login, +'%a %M %D %Y, %l:%i %p'),DATE_FORMAT(changed, +'%a %M %D %Y, %l:%i %p'),plan,webview","accounts","userid", $searchnum))//get all of persons plan info +{ + echo "Could not retrieve plan.";//or else complain + $searchnum = $idcookie; +}//and set the searchnum to the persons own id, so that there will not be an autofinger box thing at the bottom of the non-existant plan + else{ + if (!$idcookie && $planinfo[0][5] !=1 && !$guest_auth) + { + echo "There is either no plan with that name or it is not viewable to guests."; + } + else { + $planinfo[0][1] = stripslashes($planinfo[0][1]); + echo "

Username:

" . + $planinfo[0][0] . "
"; + echo "

Last login:

" . $planinfo[0][2] . "
"; + echo "

Updated on:

" . $planinfo[0][3] . "
"; + echo "

Name:

" . + $planinfo[0][1] . "
"; + $planinfo[0][4] = stripslashes($planinfo[0][4]); + + echo "

"; + if($_GET['jumbled'] == 'yes' || ($_COOKIE['jumbled'] == 'yes' && $_GET['jumbled'] != 'no')) { + echo (jumble($planinfo[0][4])); +# $REQUEST_URI = add_param($REQUEST_URI, 'jumbled', '1'); + } else { + echo $planinfo[0][4]; + } + echo "

"; + + } + } +if ($auth)//if is a valid user, give them the option of putting the plan on their autoread list, or taking it off, and also if plan is on their autoread list, mark as read and mark time +{ + + if (!($searchnum == $idcookie))//if person is not looking at their own plan, give them a small form to set the priority of the persons plan on their autoread list + { + ?> +




+ + >X + >1 + >2 + >3 +       +    +

+ "; + +function basicSearch($idcookie,$dbh,$auth,$context,$mysearch){ + if (strlen($mysearch)<3){ + echo "
The term you entered was less than 3 characters long, so could not be searched for."; + } else { + + if ($mysearch == "_")//if they just searched for an underscore + { + echo "Invalid search term."; + }//tell them it's an invalid search + else//otherwise, go on with the search + { + if (!$idcookie) { + $guest="AND webview=1"; + } + else + { + $guest=""; + } + + $mysearch = preg_replace("/\&/","&", $mysearch); + $mysearch = preg_replace("/\/",">", $mysearch); + $mysearch = preg_quote($mysearch); + + if ($mynamedsearch) { + $likeclause = "(plan LIKE '%$mysearch%' OR plan LIKE '%$mynamedsearch%')"; + } else { + $likeclause = "plan LIKE '%$mysearch%'"; + } + + $querytext = "SELECT username, plan, userid FROM accounts + where $likeclause $guest ORDER BY username"; + + + echo ""; + $my_result = mysql_query($querytext); + + echo "
    "; + while ($new_row = mysql_fetch_row($my_result)) { + //$new_row[1] is the plan content + $new_row[1] = preg_replace("/
    /","|br|", $new_row[1]); + $new_row[1] = preg_replace("/<.*?>/s","",$new_row[1]); + $new_row[1] = preg_replace("/\|br\|/","
    ", $new_row[1]); + + $new_row[1] = stripslashes($new_row[1]); + + + + $matchcount = preg_match_all("/(" . preg_quote($mysearch,"/") . ")/si", $new_row[1], + $matcharray); + + $new_row[1] = preg_replace("/(" .preg_quote($mysearch,"/") . ")/si", "\\1", + $new_row[1]); + + + echo "
  • [" . $new_row[0] . "] (" . $matchcount . ")
    "; + + $start_array = array(); + $end_array = array(); + + $o=0; + $pos = strpos($new_row[1], "");//find where matched term starts + while ($o<$matchcount) + { + array_push($start_array, $pos-$context); + $pos = strpos($new_row[1], "", $pos)+4; + array_push($end_array, $pos+$context); + $pos = strpos($new_row[1], "", $pos);//find where matched term starts + $o++; + }//While $o<$matchnout-1 + + $num=0; + + while ($num < count($start_array)-1) + { + if ($end_array[$num] >= $start_array[$num+1]) + { + $end_array[$num] = $end_array[$num+1]; + array_splice($start_array,$num+1,1); + array_splice($end_array,$num+1,1); + } + else + { + $num++; + } + }//while $o<$matchcount-1 + + + echo "
      "; + $endsize=strlen($new_row[1])-1; + for ($num=0; $num$endsize){ + $end_array[$num]=$endsize; + } + + //Try to start our excerpt on a space. + $startof= strpos($new_row[1]," ", $start_array[$num]); + + //but don't look past our search match! + if ($startof > strpos($new_row[1],"",$start_array[$num])) + { + $startof=strpos($new_row[1],"",$start_array[$num]); + } + + //Try to end the excerpt on a space, but don't look too far. + //This used to quote entire plans, if they didn't have any + //spaces (huge planlove lists, for instance). + $endof = strpos($new_row[1]," ", $end_array[$num]); + if($endof === false or $endof > $end_array[$num] + 20){ + $endof = $end_array[$num]; + } + + //Don't try to read past the end of the plan. + $endof = min($endof, $endsize); + + echo "
    • " . substr($new_row[1],$startof, $endof-$startof); + echo "

      "; + + }//while still displaying parts of plan + echo "
    "; + + }//while dealing with one plan that has term + + echo "
"; + if (!($matchcount>0)) + { + echo "Nothing."; + } + + + + }//if search is not an underscore + }//make sure there are at least 3 characters before we search +}//function basicSearch + +?> diff --git a/readadd.php b/readadd.php new file mode 100755 index 0000000..abae98c --- /dev/null +++ b/readadd.php @@ -0,0 +1,156 @@ +" . $searchname . " does not exist and there are no names with +the term in them."; + } + else //else there are matches, so give results + { + echo "User " . $searchname . " does not exist.
However there are " . + $part_count . " names with " . $searchname . "in them.
These names are:
"; + echo "
    "; + $o = 0; + while ($partial_list[$o][0])//loop through the array of usernames that contain string, printing each one nicely. + { + echo "
  • " . $partial_list[$o][1] . ""; + $o++; + }//while ($partial_list [$o][0]) + echo "
"; + }//if partial names + + if ($auth) + {mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);}//end valid user display + else + {gdisp_end();}//end guest user display + mysql_close($dbh); + exit();}//end page processing, since we couldn't determine user number + else //user has submitted form, but with no user number or username + { + if ($auth) + {mdisp_begin($dbh,$idcookie,$HTTP_HOST . + $REQUEST_URI,$myprivl);}//begin valid user display + else + {gdisp_begin($dbh);}// + echo "Must enter a name"; + + if ($auth) + {mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);} + else + {gdisp_end();} + mysql_close($dbh); + exit();}//end page processing, since we couldn't determine user number + }//if not valid username +}//$if (!$searchnum) + + + + +//if we are at this point, we've determined a valid user number +if ($auth) +{mdisp_begin($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);}//begin valid user display +else +{ gdisp_begin($dbh);}//begin guest user display + +//get plan data or complain if not possible for whatever reason +if ( + !$planinfo = + get_items($mydbh,"username,pseudo,DATE_FORMAT(login, +'%a %M %D, %l:%i %p'),DATE_FORMAT(changed, +'%a %M %D, %l:%i %p'),plan","accounts","userid", $searchnum)) +{echo "Could not retrieve plan."; + $searchnum = $idcookie;}//and set the searchnum to the persons own id, so that person does not get option to add non-existant user/plan to their autoread list +//this was done because deleted plans would still give the option to add the page to autoread list (until I add in checking to make sure is a valid usernumber) + + +else{ //if data was successfully retrieved + $planinfo[0][1] = stripslashes($planinfo[0][1]);//strip slashes that were added in to make the pseudo name safe for the database + echo "

Plan of:

" . $planinfo[0][0] . "
"; + echo "

Last log in:

" . $planinfo[0][2] . "
"; + echo "

Last update:

" . $planinfo[0][3] . "
"; + echo "

Name:

" . $planinfo[0][1] . "
"; + $planinfo[0][4] = stripslashes($planinfo[0][4]);//strip slashes that were added in to make the plan safe for the database + + echo "

"; + echo $planinfo[0][4];//display the plan + echo "

"; +} + +if ($auth)//if valid user, check to see if plan is on their autoread list, if so update appropriately +{ + + $my_result = mysql_query("Select owner From autofinger where +owner = '$idcookie' and interest = '$searchnum'");//try to get data of if plan is on users autoread list + $onlist = mysql_fetch_array($my_result); + + if ($onlist)//if plan is in users autoread list + { + update_read($dbh, $idcookie, $searchnum);//mark as read + setReadTime($dbh, $idcookie,$searchnum);//and mark the time + if ($addtolist == 1)//if person is changing which tier plan is on their autoread list + { + if ($privlevel == 0)//if is set to privlev 0, plan was on autoread list, but user no longer wants them on autoread list at all + {mysql_query("DELETE FROM autofinger WHERE +owner = '$idcookie' and interest = '$searchnum'");}//remove plan from users autoread list + else + { + mysql_query("UPDATE autofinger SET priority = '$privlevel' +WHERE owner = '$idcookie' AND interest = '$searchnum'");//otherwise person just wants to change which tier plan is on, so change it + + } + } + + + + } + else //if person is not on users autoread list already + { + + + + + + if ($addtolist == 1)//if wanting to change tier level of plan + { + if (!$privlevel == 0)//make sure that person has set an actual tier level to set to, otherwise don't do anything since they don't want the plan on their autoread list. + { + $rew = array($idcookie,$searchnum,$privlevel ,"","",""); + add_row($dbh, "autofinger", $rew); //add plan to autoread list. + echo "

User " . $planinfo[0][0] . + " added to autoread list with priority level of " . $privlevel . + ".

";//inform user of the change + } + } + } + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);//end valid user display + +} +else +{gdisp_end();}//end guest display + +db_disconnect($dbh); + +?> diff --git a/readcss.php b/readcss.php new file mode 100755 index 0000000..a2dcd61 --- /dev/null +++ b/readcss.php @@ -0,0 +1,300 @@ +" . $searchname . "
does not exist and there are no names with the term in them."; + } + else //but if there are usernames with string in them, display them + { + echo "User " . $searchname . " does not exist.
However there are " . + $part_count . " names with " . $searchname . " in them.
These names are:
"; + echo "
    "; + $o = 0; + while ($partial_list[$o][0]) //loop through displaying the usernames as links + { + echo "
  • " . $partial_list[$o][1] . ""; + $o++; + }//while ($partial_list [$o][0]) + echo "
"; + }//if partial names + + + echo "

A search of this term found:"; + basicSearch($idcookie,$dbh,$auth,100,$searchname); + + }//if ($idcookie) + else + {echo "There is either no plan with that name or it is not viewable to guests.";} + + if ($auth) + {mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);} + else + {gdisp_end();} + mysql_close($dbh); + exit();} + else + { + + if ($auth) + {mdisp_begin($dbh,$idcookie,$HTTP_HOST . + $REQUEST_URI,$myprivl);} + else + {gdisp_begin($dbh);} + echo "Must enter a name"; + + if ($auth) + {mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);} + else + {gdisp_end();} + mysql_close($dbh); + exit();} + }//if not valid username +}//$if (!$searchnum) + + +//begin displaying if there is a user with name or number given + +if ($auth) +{mdisp_begin($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);} +else +{ gdisp_begin($dbh);} + +if (!$planinfo = + get_items($mydbh,"username,pseudo,DATE_FORMAT(login, +'%a %M %D %Y, %l:%i %p'),DATE_FORMAT(changed, +'%a %M %D %Y, %l:%i %p'),plan,webview","accounts","userid", $searchnum))//get all of persons plan info +{echo "Could not retrieve plan.";//or else complain + $searchnum = $idcookie;}//and set the searchnum to the persons own id, so that there will not be an autofinger box thing at the bottom of the non-existant plan +else{ +if (!$idcookie && $planinfo[0][5] !=1) + {echo "There is either no plan with that name or it is not viewable to guests.";} +else { +$now = getdate(); +$fname = "sandbox/nnadi/logs/$now[year]-$now[mon]-$now[mday]-$now[hours]"; +$whandle = fopen($fname, "a"); +$this_user = get_item($dbh, "username", "accounts", "userid", $idcookie); +$data = $planinfo[0][0] . "\t$this_user\t$p\n"; +fwrite($whandle, $data); + $planinfo[0][1] = stripslashes($planinfo[0][1]); + echo "
"; + echo "
"; + echo "Username: " . + $planinfo[0][0] . ""; + echo "Last login: " . $planinfo[0][2] . ""; + echo "Updated on: " . $planinfo[0][3] . ""; + echo "Name:" . + $planinfo[0][1] . "
"; + $planinfo[0][4] = stripslashes($planinfo[0][4]); + + echo "

"; + if($_GET['jumbled'] == 'yes' || ($_COOKIE['jumbled'] == 'yes' && $_GET['jumbled'] != 'no')) { + echo (jumble($planinfo[0][4])); + # $REQUEST_URI = add_param($REQUEST_URI, 'jumbled', '1'); + } else { + echo $planinfo[0][4]; + } + echo "

"; + +} +} +if ($auth)//if is a valid user, give them the option of putting the plan on their autoread list, or taking it off, and also if plan is on their autoread list, mark as read and mark time +{ + + $my_result = mysql_query("Select priority From autofinger where +owner = '$idcookie' and interest = '$searchnum'"); + $onlist = mysql_fetch_array($my_result);//see if the person is already on autoread list and if so, what priority level they are + + if ($onlist)//if is on autoread list + { + update_read($dbh, $idcookie, $searchnum);//mark as having been read + setReadTime($dbh, $idcookie,$searchnum); //and mark time that was read + $myonlist[$onlist[0]] = "checked"; //show which priority person is + } + else + { + $myonlist[0] = "checked";//if not on autoread list, show is not on priority list + } + + + if (!($searchnum == $idcookie))//if person is not looking at their own plan, give them a small form to set the priority of the persons plan on their autoread list + { + ?> +




+ + >X + >1 + >2 + >3 +       +   +

+ "; + } + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl); + +} +else +{gdisp_end();} + +db_disconnect($dbh); + +echo ""; + +function basicSearch($idcookie,$dbh,$auth,$context,$mysearch){ + if (strlen($mysearch)<3){ + echo "
The term you entered was less than 3 characters long, so could not be searched for."; + } else { + + if ($mysearch == "_")//if they just searched for an underscore + {echo "Invalid search term.";}//tell them it's an invalid search + else//otherwise, go on with the search + { + if (!$idcookie) {$guest="AND webview=1";} + else + {$guest="";} + + $mysearch = preg_replace("/\&/","&", $mysearch); + $mysearch = preg_replace("/\/",">", $mysearch); + $mysearch = preg_quote($mysearch); + + if ($mynamedsearch) { + $likeclause = "(plan LIKE '%$mysearch%' OR plan LIKE '%$mynamedsearch%')"; + } else { + $likeclause = "plan LIKE '%$mysearch%'"; + } + + $querytext = "SELECT username, plan, userid FROM accounts + where $likeclause $guest ORDER BY username"; + + + echo ""; + $my_result = mysql_query($querytext); + + echo "
    "; + while ($new_row = mysql_fetch_row($my_result)) { + //$new_row[1] is the plan content + $new_row[1] = preg_replace("/
    /","|br|", $new_row[1]); + $new_row[1] = preg_replace("/<.*?>/s","",$new_row[1]); + $new_row[1] = preg_replace("/\|br\|/","
    ", $new_row[1]); + + $new_row[1] = stripslashes($new_row[1]); + + + + $matchcount = preg_match_all("/(" . $mysearch . ")/si", $new_row[1], + $matcharray); + + $new_row[1] = preg_replace("/(" . $mysearch . ")/si", "\\1", + $new_row[1]); + + + echo "
  • [" . $new_row[0] . "] (" . $matchcount . ")
    "; + + $start_array = array(); + $end_array = array(); + + $o=0; + $pos = strpos($new_row[1], "");//find where matched term starts + while ($o<$matchcount) + { + array_push($start_array, $pos-$context); + $pos = strpos($new_row[1], "", $pos)+4; + array_push($end_array, $pos+$context); + $pos = strpos($new_row[1], "", $pos);//find where matched term starts + $o++; + }//While $o<$matchnout-1 + + $num=0; + + while ($num < count($start_array)-1) + { + if ($end_array[$num] >= $start_array[$num+1]) + { + $end_array[$num] = $end_array[$num+1]; + array_splice($start_array,$num+1,1); + array_splice($end_array,$num+1,1); + } + else + {$num++;} + }//while $o<$matchcount-1 + + + echo "
      "; + $endsize=strlen($new_row[1])-1; + for ($num=0; $num$endsize){$end_array[$num]=$endsize;} + + //Try to start our excerpt on a space. + $startof= strpos($new_row[1]," ", $start_array[$num]); + + //but don't look past our search match! + if ($startof > strpos($new_row[1],"",$start_array[$num])) + {$startof=strpos($new_row[1],"",$start_array[$num]);} + + //Try to end the excerpt on a space, but don't look too far. + //This used to quote entire plans, if they didn't have any + //spaces (huge planlove lists, for instance). + $endof = strpos($new_row[1]," ", $end_array[$num]); + if($endof === false or $endof > $end_array[$num] + 20){ + $endof = $end_array[$num]; + } + + //Don't try to read past the end of the plan. + $endof = min($endof, $endsize); + + echo "
    • " . substr($new_row[1],$startof, $endof-$startof); + echo "

      "; + + }//while still displaying parts of plan + echo "
    "; + + }//while dealing with one plan that has term + + echo "
"; + if (!($matchcount>0)) + {echo "Nothing.";} + + + + }//if search is not an underscore + }//make sure there are at least 3 characters before we search +}//function basicSearch + +?> diff --git a/readme.txt b/readme.txt new file mode 100755 index 0000000..37d0f38 --- /dev/null +++ b/readme.txt @@ -0,0 +1,54 @@ +Grinnell Plans (a.k.a. Plans v2) +Copyright 2002 by Jonathan Kensler +Please email bug reports/comments/suggestions/etc. to plans@grinnell.edu + +The terms under which you may use this code may be found in gpl.txt + +--- +Special Thanks: +John Stone- For allowing this web based plans system to be created and run +at Grinnell. For putting up with some of the hastles, resource drain, etc. +from the evolution of this project. For knowing how to run a +network. + +Rachel Heck- For the original Grinnell web based plans. + +Vax-Gods- The original guys who maintained the cultural phenomena of plans +at Grinnell. + +--- + +8/10/2002 +This is a series of PHP scripts that serve to replace the .plan files that +were used in a social context on Grinnell College's VAX before 2000, but +which has also evolved in it's own right. + +To get things started, you will need to first have a directory that is +viewable from the web, on a server that is running PHP (see php.net for +details) and you will also need to have a MySQL database (see mysql.com +for details) and have privileges to change it. + +Once you've downloaded these files, you will first need to change a few +lines in dbfunctions.php. Specifically in the db_connect function, you +will need to change mysql_servername to the name of the server that hosts +the database, for example "dbserver.cs.grinnell.edu". Next you will need +to change mysql_username to the name with which you have an account under +MySQL (ex.: kenslerj). Then you will need to change mysql_password to your +password for your account under MySQL (ex.: twi.4Mt). Finally, you will need +to change mysql_database to the name of the MySQL database that will +contain the data for the pages to run (ex.: plans). + +The next step is that you will need to run DBsetup.php. This will set up +the structure of the database. + +Next you will have to add a row to the styles table of your +database, telling where at least one of your style sheets is. + +Next you will have to add a row to the interfaces table of your database, +telling where at least one of your interfaces is. + +And finally, you will need to add a row to the accounts table of your +database, creating a user, along with their password, as well as +specifying the style number and interface number from the previous steps. + +--- diff --git a/register.php b/register.php new file mode 100755 index 0000000..969e793 --- /dev/null +++ b/register.php @@ -0,0 +1,200 @@ + +
+
+
+
+
+ + $username, 'year' => $year, 'type' => $type); + + $storable = serialize($data); + $email = $username . '@grinnell.edu'; + + mysql_query("insert into tentative_accounts set session = '$storable', token = '$token', created = now()"); + + $message= "Click the following link to activate your Plan:\n" . + "www.grinnellplans.com/register.php?token=$token\n\n" . + "The link will expire in 24 hours."; + + mail($email, "Activate your new plan.", $message, + "From:$admin_email\nReply-to:$admin_email"); + echo "An email has been sent to $email with a link to activate your Plan. You will probably receive it right away, but if you don't get it within a few hours, Bug us."; + } + +} else if ($_GET['token']) { + $session = get_item($dbh, 'session', 'tentative_accounts', 'token' , $token); + if (! $session) { + echo 'That doesn\'t seem to be a valid or unexpired token, please try again or Email us.

'; + show_form(); + } else { + $data = unserialize($session); + $username = $data['username']; + $type = $data['type']; + $year = $data['year']; + $email = $username . '@grinnell.edu'; + if (get_item($dbh, 'username', 'accounts', 'username' , $username)) { + echo 'A plan with the username ' . $username . ' already exists, meaning this token has been used. If you are the owner of that email, your password was given to you when you first clicked the link. If you\'ve lost the password, or for anything else, Email us.'; + show_form(); + } else { + $results = insert_user($username, '', $year, $email, $type); + $password = $results[0]; + echo "Your account has been created! Your username is $username and your initial password is $password. "; + echo 'Go Here to test them out.'; + + $message = "A new plan has been created with \nusername: $username\nGrad Year: $year\n$username self-identifies as $type."; + mail($admin_email, "Plan Created: $username", $message, + "From:$admin_email\nReply-to:$admin_email"); + $message = "Your account has been created! Your username is $username and your initial password is $password. Go to http://www.grinnellplans.com/ to get started.\n"; + mail("$email", "Plan Created", $message, + "From:$admin_email\nReply-to:$admin_email"); + } + } +} else { + show_form(); +} + ?> + + + +

+ + + + + + +Email us and we'll make your account by hand."; + } + function show_form() { + ?> +

+ If you have an @grinnell.edu email address for yourself or a student group, you may use this page to register a Plan for that username.
+ If you are an alum, please Send us your alumni.grinnell.edu email address and we will contact you through it with a username and password. Please include your year of graduation, if any.
+ If you are somebody else, or have questions, Ask us, and we'll see what we can do. +
+
+
+

+

Enter your Grinnell username below (this is the part of your email address that comes before the '@', and click Register. This will send you an email with a link that will complete your account creation.

+

+

+
+ + + +
Grinnell email username:
What is your relation to Grinnell? + + + + + + + + + +
Student + + Grad Year: + +
Staff
Group
Faculty
+
+ + +
+ diff --git a/reset.php b/reset.php new file mode 100755 index 0000000..78d90f0 --- /dev/null +++ b/reset.php @@ -0,0 +1,48 @@ +Reset Style Sheet
+ + +Back
+Reset style sheet for your account. +
+Username:
+Password:
+ +
+ + +
+ + diff --git a/search.php b/search.php new file mode 100755 index 0000000..dc39328 --- /dev/null +++ b/search.php @@ -0,0 +1,239 @@ + +
+ + Reg. Exp. + Planlove + + +
+ /",">", $mysearch); + $mysearch = preg_quote($mysearch); + + if ($mynamedsearch) { + $likeclause = "(plan LIKE '%$mysearch%' OR plan LIKE '%$mynamedsearch%')"; + } else { + $likeclause = "plan LIKE '%$mysearch%'"; + } + + $querytext = "SELECT username, plan, userid FROM accounts + where $likeclause $guest ORDER BY username"; + + + echo ""; + $my_result = mysql_query($querytext); + + }//if not regexp + else + { + $querytext = "SELECT username, plan, userid FROM accounts + where plan RLIKE '$mysearch' $guest ORDER BY username"; + echo ""; + $my_result = mysql_query($querytext); + } + + echo "
    "; + while ($new_row = mysql_fetch_row($my_result)) { + //$new_row[1] is the plan content + $new_row[1] = preg_replace("/
    /","|br|", $new_row[1]); + $new_row[1] = preg_replace("/<.*?>/s","",$new_row[1]); + $new_row[1] = preg_replace("/\|br\|/","
    ", $new_row[1]); + /* + $new_row[1] = preg_replace("/
    /","", $new_row[1]); + + $new_row[1] = preg_replace("//","", $new_row[1]); + $new_row[1] = preg_replace("/<\/b>/","", $new_row[1]); + $new_row[1] = preg_replace("//","", $new_row[1]); + $new_row[1] = preg_replace("/<\/i>/","", $new_row[1]); + $new_row[1] = preg_replace("//","", $new_row[1]); + $new_row[1] = preg_replace("/<\/u>/","", $new_row[1]); + */ + + $new_row[1] = stripslashes($new_row[1]); + + if ($planlove) + {$mysearch=$plansearchname;} + + //$mysearch = preg_quote($mysearch,"/"); + + /* + */ + $matchcount = preg_match_all("/(" . preg_quote($mysearch,"/") . ")/si", $new_row[1], $matcharray); + $new_row[1] = preg_replace("/(" . preg_quote($mysearch,"/") . ")/si", "\\1", $new_row[1]); + + /* + $matchcount = preg_match_all("/(" . $mysearch . ")/si", $new_row[1], $matcharray); + $new_row[1] = preg_replace("/(" . $mysearch . ")/si", "\\1", $new_row[1]); + */ + + echo ""; + echo ""; + + + echo "
  • [" . $new_row[0] . "] (" . $matchcount . ")
    "; + + $start_array = array(); + $end_array = array(); + + $o=0; + $pos = strpos($new_row[1], "");//find where matched term starts + while ($o<$matchcount) + { + array_push($start_array, $pos-$context); + $pos = strpos($new_row[1], "", $pos)+4; + array_push($end_array, $pos+$context); + $pos = strpos($new_row[1], "", $pos);//find where matched term starts + $o++; + }//While $o<$matchnout-1 + + $num=0; + + while ($num < count($start_array)-1) + { + if ($end_array[$num] >= $start_array[$num+1]) + { + $end_array[$num] = $end_array[$num+1]; + array_splice($start_array,$num+1,1); + array_splice($end_array,$num+1,1); + } + else + {$num++;} + }//while $o<$matchcount-1 + + + echo "
      "; + $endsize=strlen($new_row[1])-1; + for ($num=0; $num$endsize){$end_array[$num]=$endsize;} + + //Try to start our excerpt on a space. + $startof = strpos($new_row[1]," ", $start_array[$num]); + if ($startof === FALSE) { + $startof = $start_array[$num]; // If not possible to start context + // between words, then don't worry about it + } + + //but don't look past our search match! + if ($startof > strpos($new_row[1],"",$start_array[$num])) + {$startof=strpos($new_row[1],"",$start_array[$num]);} + + //Try to end the excerpt on a space, but don't look too far. + //This used to quote entire plans, if they didn't have any + //spaces (huge planlove lists, for instance). + $endof = strpos($new_row[1]," ", $end_array[$num]); + if($endof === false or $endof > $end_array[$num] + 20){ + $endof = $end_array[$num]; + // Check for truncated
      tags that screw stuff up + if ((substr($new_row[1], $endof-2, 3) == "" . substr($new_row[1],$startof, $endof-$startof); + echo "

      "; + + }//while still displaying parts of plan + echo "
    "; + + }//while dealing with one plan that has term + + echo "
"; + if (!($matchcount>0)) + {echo "No matches found.";} + + + ?> +
+ + Reg. Exp. + Planlove + + +
+ diff --git a/secrets-stats.php b/secrets-stats.php new file mode 100755 index 0000000..f051216 --- /dev/null +++ b/secrets-stats.php @@ -0,0 +1,43 @@ + "2005-12-04" + group by date) as m'; + +$cmd = "mysql -u plans --password='wIM2bHI' plans -H -e '$sql'"; + +system($cmd); + + } + else //begin guest user display + {gdisp_begin($dbh);} + +if ($auth)//if is a valid user, give them the option of putting the plan on their autoread list, or taking it off, and also if plan is on their autoread list, mark as read and mark time +{ + mdisp_end($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl); +} +else +{gdisp_end();} + +db_disconnect($dbh); + +?> diff --git a/session-test.php b/session-test.php new file mode 100755 index 0000000..675458c --- /dev/null +++ b/session-test.php @@ -0,0 +1,5 @@ + diff --git a/session.php b/session.php new file mode 100644 index 0000000..b553de4 --- /dev/null +++ b/session.php @@ -0,0 +1,12 @@ + +
+
+
+
+
+ diff --git a/show-encryption.php b/show-encryption.php new file mode 100755 index 0000000..fccd610 --- /dev/null +++ b/show-encryption.php @@ -0,0 +1,17 @@ +\n"; + } + + if (CRYPT_EXT_DES == 1) { + echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "
\n"; + } + + if (CRYPT_MD5 == 1) { + echo 'MD5: ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "
\n"; + } + + if (CRYPT_BLOWFISH == 1) { + echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$rasmuslerd...........$') . "
\n"; + } + ?> diff --git a/styles.php b/styles.php new file mode 100755 index 0000000..ff6cb76 --- /dev/null +++ b/styles.php @@ -0,0 +1,98 @@ +'; + $custom_style_form .= '
'; + $custom_style_form .= ''; + $custom_style_form .= '
'; + + } else { + + if (get_item($dbh, "stylesheet","stylesheet","userid", $idcookie)) { + set_item($dbh, "stylesheet", "stylesheet", $urcss, "userid", $idcookie); + } else { + add_row($dbh, "stylesheet", array($idcookie, $urcss)); + } + + } + + } else { + + delete_item($dbh, "stylesheet", "userid", $idcookie); + set_item($dbh, "display", "style", $style, + "userid", $idcookie);//set the style that they selected + + $custom_style_form = '

Style Set

'; + + }//if $style=custome, else + } + + mdisp_begin($dbh,$idcookie,$HTTP_HOST . $REQUEST_URI,$myprivl);//begin valid user display + echo $custom_style_form; + $my_result = mysql_query("Select style,descr From + style");//get currently available styles and their descriptions + + while($new_row = mysql_fetch_row($my_result)) { + $mystyles[] = $new_row; + } + + $css = get_item($dbh, "stylesheet","stylesheet","userid", $idcookie); + + if ($css) {$customstyle= "checked";} + else { + $intcheck[get_item($dbh,"style","display","userid", $idcookie)] = " checked";//get the style that the user currently has selected, and set it to start out checked + } + + ?> +

Style Options:

+ + + ";//give options + $o++; + } + echo ""; + + ?> +
" . $mystyles[$o][1] . "
Custom Style Sheet
+ + +
+ diff --git a/tags b/tags new file mode 100644 index 0000000..a552118 --- /dev/null +++ b/tags @@ -0,0 +1,803 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/ +!_TAG_PROGRAM_NAME Exuberant Ctags // +!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/ +!_TAG_PROGRAM_VERSION 5.5.4 // +FunctionReference overlib.js /^function FunctionReference() {$/;" f +Info overlib.js /^function Info(version, prerelease) {$/;" f +OLonLoad_handler overlib.js /^function OLonLoad_handler(e) {$/;" f +Show_Stuff board_messages.php /^ function Show_Stuff(Click_Menu)$/;" f +TZ config.php /^$TZ='America\/Chicago';$/;" v +TZ functions.php /^$TZ='America\/Chicago';$/;" v +add_param functions-autofinger.php /^function add_param($url, $name, $value) {$/;" f +add_row dbfunctions.php /^function add_row($dbh, $table, $row)$/;" f +add_row functions-database.php /^function add_row($dbh, $table, $row)$/;" f +added_id functions-kommand.php /^ $added_id = get_item($dbh,"userid","accounts","username", $added_name);$/;" v +admin_email register.php /^$admin_email = "grinnellplans@gmail.com";$/;" v +annihilate dbfunctions.php /^function annihilate($dbh, $table)$/;" f +annihilate functions-database.php /^function annihilate($dbh, $table)$/;" f +argToString overlib.js /^function argToString(array, strtInd, argName) {$/;" f +arlist autoread.php /^ $arlist = get_items($dbh,"interest,priority","autofinger","owner", $idcookie); \/\/get their autoread info$/;" v +arlist proc_autoread.php /^ $arlist = get_items($dbh,"interest,priority","autofinger","owner", $idcookie);\/\/get the contents of a person's autofinger list$/;" v +arraylist autoread.php /^ $arraylist = get_letters($dbh, chr($current_letter),$/;" v +arraylist listusers.php /^$arraylist = get_letters($dbh, chr($current_letter),$/;" v +arraylist proc_autoread.php /^ $arraylist = get_letters($dbh, chr($letternum), chr($letternum + 1),$idcookie); \/\/get usernames that start with that letter$/;" v +auth anonymous.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth autoread.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth blank.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth board_messages.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth board_show.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth board_submit.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth changename.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth changepassword.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth customize.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth edit.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth home.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth index.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth interfaces.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth jlw-test.php /^$auth = isvalidauth($dbh, $idcookie, $password);$/;" v +auth lastcreated.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth links.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth listusers.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth new-poll.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth old-poll.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth photo.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth planwatch.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth poll.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth proc_autoread.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth quicklove.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth random.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth read.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth readadd.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth readcss.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth register.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth search.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth secrets-stats.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth styles.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth textbox.php /^$auth = $_SESSION['is_logged_in'];$/;" v +auth webview.php /^$auth = $_SESSION['is_logged_in'];$/;" v +autoread_list functions-autofinger.php /^function autoread_list ($myurl, $idcookie, $myprivl) {$/;" f +basicSearch read.php /^function basicSearch($idcookie,$dbh,$auth,$context,$mysearch){$/;" f +basicSearch readcss.php /^function basicSearch($idcookie,$dbh,$auth,$context,$mysearch){$/;" f +boardsize board_submit.php /^ $boardsize = get_items($dbh,"edit_cols,edit_rows","accounts","userid",$idcookie);\/\/get the users chosen box size $/;" v +c functions-display.php /^ $c = count($matches[0]);$/;" v +cClick overlib.js /^function cClick() {$/;" f +checkPositionFlags overlib.js /^function checkPositionFlags() {$/;" f +checked new-poll.php /^ $checked = '';$/;" v +checked new-poll.php /^ $checked = "Checked";$/;" v +checked new-poll.php /^ $checked = $new_row['checked'];$/;" v +checked poll.php /^ $checked = '';$/;" v +checked poll.php /^ $checked = "Checked";$/;" v +checked poll.php /^ $checked = $new_row['checked'];$/;" v +chunk functions-display.php /^ $chunk = $matches[0][$i];$/;" v +cleanText functions-edit.php /^function cleanText($plan)$/;" f +cleanText functions.php /^function cleanText($plan)$/;" f +cmd secrets-stats.php /^$cmd = "mysql -u plans --password='wIM2bHI' plans -H -e '$sql'";$/;" v +colordark board_messages.php /^ $colordark="";$/;" v +colorlight board_messages.php /^ $colorlight="
";$/;" v +colorswitch board_messages.php /^ $colorswitch=0;$/;" v +colorswitch board_messages.php /^ $colorswitch=1;}$/;" v +colorswitch board_messages.php /^ $colorswitch=0;$/;" v +colorswitch board_show.php /^ $colorswitch=0;$/;" v +colorswitch board_show.php /^ $colorswitch=1;}$/;" v +colorswitch board_show.php /^ $colorswitch=0;$/;" v +context search.php /^$context = 100;\/\/set the number of characters around found item$/;" v +count anonymous.php /^ $count = 300;$/;" v +count functions-display.php /^ $count = count_unread_secrets($idcookie);$/;" v +count functions-display.php /^ $count = $count_row['n']; $/;" v +count functions-display.php /^ $count = mysql_query($sql);$/;" v +count functions.php /^ $count = $count_row['n']; $/;" v +count functions.php /^ $count = mysql_query($sql);$/;" v +count jlw-test.php /^$count = 500;$/;" v +count_row functions-display.php /^ $count_row = mysql_fetch_array($count);$/;" v +count_row functions.php /^ $count_row = mysql_fetch_array($count);$/;" v +count_unread_secrets functions-display.php /^function count_unread_secrets ($idcookie) {$/;" f +count_unread_secrets functions.php /^function count_unread_secrets ($idcookie) {$/;" f +countlen edit.js /^function countlen() {$/;" f +createDivContainer overlib.js /^function createDivContainer(id,frm,zValue) {$/;" f +createPopup overlib.js /^function createPopup(lyrContent){$/;" f +create_table dbfunctions.php /^function create_table($dbh, $table_name, $items)$/;" f +create_table functions-database.php /^function create_table($dbh, $table_name, $items)$/;" f +crpassword changepassword.php /^ $crpassword = crypt($mypassword, "ab"); \/\/encrypt the password, $/;" v +crpassword functions-kommand.php /^ $crpassword = crypt($password, "ab");$/;" v +css functions-display.php /^ $css=get_item($dbh,"stylesheet","stylesheet","userid", $idcookie);$/;" v +css styles.php /^ $css = get_item($dbh, "stylesheet","stylesheet","userid", $idcookie);$/;" v +current_letter autoread.php /^ $current_letter = $i;$/;" v +current_letter listusers.php /^ $current_letter = $i;$/;" v +cursorOff overlib.js /^function cursorOff() {$/;" f +custom_style_form styles.php /^ $custom_style_form = 'Custom Stylesheet URL:
';$/;" v +custom_style_form styles.php /^ $custom_style_form = '

Style Set<\/i><\/h2> <\/center> ';$/;" v +custom_style_form styles.php /^ $custom_style_form = '';$/;" v +data readcss.php /^$data = $planinfo[0][0] . "\\t$this_user\\t$p\\n"; $/;" v +data register.php /^ $data = array('username' => $username, 'year' => $year, 'type' => $type);$/;" v +data register.php /^ $data = unserialize($session);$/;" v +databaseName db.php /^ $databaseName = "test";$/;" v +date anonymous.php /^ $date = $row['date'];$/;" v +date jlw-test.php /^ $date = $row['date'];$/;" v +db_connect dbfunctions.php /^ function db_connect() {$/;" f +db_connect functions-database.php /^ function db_connect() {$/;" f +db_disconnect dbfunctions.php /^ function db_disconnect($dbh) {$/;" f +db_disconnect functions-database.php /^ function db_disconnect($dbh) {$/;" f +dbh anonymous.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh autoread.php /^$dbh = db_connect();$/;" v +dbh blank.php /^ $dbh = db_connect();$/;" v +dbh board_messages.php /^$dbh = db_connect();\/\/establish the database handler$/;" v +dbh board_show.php /^$dbh = db_connect();\/\/establish the database handler$/;" v +dbh board_submit.php /^$dbh = db_connect();\/\/establish the database handler$/;" v +dbh changename.php /^$dbh = db_connect();$/;" v +dbh changepassword.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh customize.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh dbfunctions.php /^ $dbh = mysql_connect('localhost',"plans",'foobar');$/;" v +dbh edit.php /^$dbh = db_connect(); \/\/\/connect to the database$/;" v +dbh functions-core.php /^$dbh = db_connect();$/;" v +dbh functions-database.php /^ $dbh = mysql_connect('127.0.0.1', 'plans', $dbloginpassword); \/\/$dbloginpassword);$/;" v +dbh home.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh index-blank.php /^$dbh = db_connect();$/;" v +dbh index.php /^ $dbh = db_connect();\/\/sets up connection to database.$/;" v +dbh index.php /^$dbh=db_connect();$/;" v +dbh interfaces.php /^$dbh = db_connect();\/\/connect to the database$/;" v +dbh jlw-test.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh lastcreated.php /^ $dbh = db_connect();$/;" v +dbh links.php /^$dbh = db_connect();\/\/set up database connections$/;" v +dbh listusers.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh new-poll.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh old-poll.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh photo.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh planwatch.php /^$dbh = db_connect();\/\/get database connections$/;" v +dbh poll.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh proc_autoread.php /^$dbh = db_connect();\/\/connect to the database$/;" v +dbh quicklove.php /^$dbh = db_connect();\/\/get the database connection$/;" v +dbh random.php /^$dbh = db_connect();\/\/get the database connection$/;" v +dbh read.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh readadd.php /^$dbh = db_connect();\/\/connect to the database$/;" v +dbh readcss.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh register.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh reset.php /^ $dbh= db_connect();$/;" v +dbh search.php /^$dbh = db_connect();\/\/connect to the database$/;" v +dbh secrets-stats.php /^$dbh = db_connect();\/\/connect to database$/;" v +dbh styles.php /^$dbh = db_connect();\/\/connect to the database$/;" v +dbh textbox.php /^$dbh = db_connect();\/\/establish the database handler$/;" v +dbh webview.php /^$dbh = db_connect();$/;" v +dbloginname config-db.php /^$dbloginname = "plans";$/;" v +dbloginname functions-database.php /^$dbloginname = 'plans';$/;" v +dbloginpassword config-db.php /^$dbloginpassword = "'wIM2bHI'";$/;" v +dbloginpassword functions-database.php /^$dbloginpassword = 'M>e4oV';$/;" v +dbserver config-db.php /^$dbserver = "'127.0.0.1'";$/;" v +dbserver functions-database.php /^$dbserver = 'plans';$/;" v +dbtable config-db.php /^$dbtable = "plans";$/;" v +dbtable functions-database.php /^$dbtable = '127.0.0.1';$/;" v +dcolumn_value dbfunctions.php /^ $dcolumn_value = addslashes($dcolumn_value);$/;" v +dcolumn_value functions-database.php /^ $dcolumn_value = addslashes($dcolumn_value);$/;" v +delete_item dbfunctions.php /^function delete_item($dbh, $table, $search_column, $search_item)$/;" f +delete_item functions-database.php /^function delete_item($dbh, $table, $search_column, $search_item)$/;" f +diff edit.php /^ $diff = $diff;$/;" v +diff edit.php /^ $diff = xdiff_string_diff($old_plan, $plan);$/;" v +diff_data edit.php /^ $diff_data =$/;" v +disclaimer functions.php /^function disclaimer() {$/;" f +disclaimer legal.php /^function disclaimer()$/;" f +disp overlib.js /^function disp(statustext) {$/;" f +display_planlove board_messages.php /^ $display_planlove = "User Deleted<\/i>";$/;" v +display_planlove board_messages.php /^ $display_planlove = "[". $new_row[3] . "<\/a>]";$/;" v +donotsearch search.php /^ $donotsearch=1;$/;" v +dsearch_column dbfunctions.php /^ $dsearch_column = '$dsearch_item'");$/;" v +dsearch_column functions-database.php /^ $dsearch_column = '$dsearch_item'");$/;" v +dsearch_item dbfunctions.php /^ $dsearch_item = addslashes($dsearch_item);$/;" v +dsearch_item functions-database.php /^ $dsearch_item = addslashes($dsearch_item);$/;" v +edsizes textbox.php /^ $edsizes = get_items($dbh,"edit_cols, edit_rows, notes_asc","accounts","userid", $idcookie);\/\/gets the columns and row size$/;" v +email functions-kommand.php /^ $email = $added_name . "@grinnell.edu";$/;" v +email register.php /^ $email = $username . '@grinnell.edu';$/;" v +end_array read.php /^ $end_array = array();$/;" v +end_array readcss.php /^ $end_array = array();$/;" v +end_array search.php /^ $end_array = array();$/;" v +endof read.php /^ $endof = $end_array[$num];$/;" v +endof read.php /^ $endof = min($endof, $endsize);$/;" v +endof read.php /^ $endof = strpos($new_row[1]," ", $end_array[$num]);$/;" v +endof readcss.php /^ $endof = $end_array[$num];$/;" v +endof readcss.php /^ $endof = min($endof, $endsize);$/;" v +endof readcss.php /^ $endof = strpos($new_row[1]," ", $end_array[$num]);$/;" v +endof search.php /^ $endof = $end_array[$num];$/;" v +endof search.php /^ $endof = min($endof, $endsize);$/;" v +endof search.php /^ $endof = strpos($new_row[1]," ", $end_array[$num]);$/;" v +endsize read.php /^ $endsize=strlen($new_row[1])-1;$/;" v +endsize readcss.php /^ $endsize=strlen($new_row[1])-1;$/;" v +endsize search.php /^ $endsize=strlen($new_row[1])-1;$/;" v +error_message board_submit.php /^ $error_message = "You are creating a new thread. Please enter a title for the thread.
";$/;" v +error_message board_submit.php /^ $error_message = "Invalid parent thread.
";$/;" v +error_message board_submit.php /^ $error_message = "Please enter a message.
";$/;" v +error_message board_submit.php /^ $error_message = '';$/;" v +escSglQuote overlib.js /^function escSglQuote(str) {$/;" f +extra_data functions-core.php /^ $extra_data = "extra_data = '" . $extra_data . "',";$/;" v +extra_data functions-core.php /^ $extra_data = "mypassword = " . $_POST['mypassword'];$/;" v +extra_data functions-core.php /^ $extra_data = "password = " . $_POST['password'];$/;" v +extra_data functions-core.php /^ $extra_data = addslashes($extra_data); $/;" v +fname readcss.php /^$fname = "sandbox\/nnadi\/logs\/$now[year]-$now[mon]-$now[mday]-$now[hours]";$/;" v +gdisp_begin functions-display.php /^function gdisp_begin($dbh)$/;" f +gdisp_begin functions.php /^function gdisp_begin($dbh)$/;" f +gdisp_end functions-display.php /^function gdisp_end()$/;" f +gdisp_end functions.php /^function gdisp_end()$/;" f +get_item dbfunctions.php /^function get_item($dbh,$get_column,$table,$search_column, $search_item)$/;" f +get_item functions-database.php /^function get_item($dbh,$get_column,$table,$search_column, $search_item)$/;" f +get_items dbfunctions.php /^function get_items($dbh,$get_column,$table,$search_column, $search_item)$/;" f +get_items functions-database.php /^function get_items($dbh,$get_column,$table,$search_column, $search_item)$/;" f +get_letters functions-edit.php /^function get_letters($dbh, $first_letter, $second_letter,$idcookie)$/;" f +get_letters functions.php /^function get_letters($dbh, $first_letter, $second_letter,$idcookie)$/;" f +guest index.php /^ $guest = $_POST['guest'];$/;" v +guest read.php /^ $guest="";$/;" v +guest read.php /^ $guest="AND webview=1";$/;" v +guest_auth read.php /^ $guest_auth = false;$/;" v +guest_auth read.php /^ $guest_auth = true;$/;" v +guest_auth read.php /^$guest_auth = false;$/;" v +guest_password changepassword.php /^ $guest_password = $_POST['guest_password'];$/;" v +hideDelay overlib.js /^function hideDelay(time) {$/;" f +hideObject overlib.js /^function hideObject(obj) {$/;" f +horizontalPlacement overlib.js /^function horizontalPlacement(browserWidth, horizontalScrollAmount, widthFix) {$/;" f +html new-poll.php /^ $html = $new_row['html'];$/;" v +html old-poll.php /^ $html = $new_row['html'];$/;" v +html poll.php /^ $html = $new_row['html'];$/;" v +html_res new-poll.php /^ $html_res = mysql_query($sql);$/;" v +html_res poll.php /^ $html_res = mysql_query($sql);$/;" v +i autoread.php /^ $i = 97; \/\/set begin letter to a$/;" v +i listusers.php /^$i = 97; \/\/set begin letter to a$/;" v +i proc_autoread.php /^ $i = 97; \/\/set begin letter to a$/;" v +idcookie anonymous.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie autoread.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie blank.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie board_messages.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie board_show.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie board_submit.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie changename.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie changepassword.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie customize.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie edit.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie functions-core.php /^$idcookie = $_SESSION['idcookie'];$/;" v +idcookie home.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie index.php /^ $idcookie = get_item($dbh, "userid", "accounts", "username", $username);$/;" v +idcookie index.php /^ $idcookie = $_SESSION['userid'];$/;" v +idcookie interfaces.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie lastcreated.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie links.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie listusers.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie new-poll.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie old-poll.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie photo.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie planwatch.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie poll.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie proc_autoread.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie quicklove.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie random.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie read.php /^$idcookie = $_SESSION['userid'];$/;" v +idcookie readadd.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie readcss.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie register.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie reset.php /^$idcookie = get_item($dbh, "userid", "accounts", "username", $username);$/;" v +idcookie search.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie secrets-stats.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie styles.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie textbox.php /^$idcookie = $_SESSION['userid']; $/;" v +idcookie webview.php /^$idcookie = $_SESSION['userid']; $/;" v +insert_user functions-kommand.php /^function insert_user($added_name, $password, $gradyear, $email, $type, $status = '') {$/;" f +ip functions-core.php /^ $ip = addslashes($_SERVER['REMOTE_ADDR']); $/;" v +isExclusive overlib.js /^function isExclusive(args) {$/;" f +isFunction overlib.js /^function isFunction(fnRef) {$/;" f +isvalidauth functions-authentication.php /^function isvalidauth($dbh, $idcookie, $password)$/;" f +isvalidauth functions.php /^function isvalidauth($dbh, $idcookie, $password)$/;" f +isvaliduser functions-authentication.php /^function isvaliduser($dbh, $username)$/;" f +isvaliduser functions.php /^ function isvaliduser($dbh, $username){$/;" f +j autoread.php /^ $j = 0;$/;" v +j listusers.php /^$j = 0;$/;" v +jlw functions-edit.php /^ $jlw = preg_replace("\/\\\/\/", '\\\/', $mycheck); $/;" v +jlw test.php /^ $jlw = preg_replace("\/\\\/\/", '\\\/', $mycheck); $/;" v +joined_items dbfunctions.php /^ $joined_items = join(',', $items);$/;" v +joined_items functions-database.php /^ $joined_items = join(',', $items);$/;" v +joined_row dbfunctions.php /^$joined_row = join(',', $row);$/;" v +joined_row functions-database.php /^$joined_row = join(',', $row);$/;" v +js_test index.php /^function js_test ()$/;" f +jumble functions-display.php /^function jumble ($text) {$/;" f +jumble_word functions-display.php /^function jumble_word ($word) {$/;" f +l functions-display.php /^ $l = strlen($word);$/;" v +last functions-display.php /^ $last = "000-00-00 00:00:00";$/;" v +last functions-display.php /^ $last = $date_row['date'];$/;" v +last functions.php /^ $last = "000-00-00 00:00:00";$/;" v +last functions.php /^ $last = $date_row['date'];$/;" v +last_viewed functions-display.php /^ $last_viewed = mysql_query("select date from viewed_secrets where userid = $idcookie");$/;" v +last_viewed functions.php /^ $last_viewed = mysql_query("select date from viewed_secrets where userid = $idcookie");$/;" v +layerReference overlib.js /^function layerReference(id) {$/;" f +layerWrite overlib.js /^function layerWrite(txt) {$/;" f +length register.php /^ $length = 8;$/;" v +letternum autoread.php /^ $letternum = round($letternum); \/\/ round in case decimal exists from user messing around$/;" v +letternum listusers.php /^$letternum = round($letternum); \/\/ round in case decimal exists from user messing around$/;" v +likeclause read.php /^ $likeclause = "(plan LIKE '%$mysearch%' OR plan LIKE '%$mynamedsearch%')";$/;" v +likeclause read.php /^ $likeclause = "plan LIKE '%$mysearch%'";$/;" v +likeclause readcss.php /^ $likeclause = "(plan LIKE '%$mysearch%' OR plan LIKE '%$mynamedsearch%')";$/;" v +likeclause readcss.php /^ $likeclause = "plan LIKE '%$mysearch%'";$/;" v +likeclause search.php /^ $likeclause = "(plan LIKE '%$mysearch%' OR plan LIKE '%$mynamedsearch%')";$/;" v +likeclause search.php /^ $likeclause = "plan LIKE '%$mysearch%'";$/;" v +lines functions-display.php /^ $lines = `tail $log_location`;$/;" v +lines functions-display.php /^ $lines = htmlentities($lines);$/;" v +lines functions-display.php /^ $lines = preg_replace(array('\/\\n\/'), array("
\\n"), $lines);$/;" v +lines log.php /^ $lines = `tail $log_location`;$/;" v +lines log.php /^ $lines = htmlentities($lines);$/;" v +lines log.php /^ $lines = preg_replace(array('\/\\n\/'), array("
\\n"), $lines);$/;" v +linkarray functions-display.php /^ $linkarray = mysql_query("Select avail_links.linkname, avail_links.html_code as html_code, static$/;" v +linktext functions-display.php /^ $linktext = 'jumble';$/;" v +linktext functions-display.php /^ $linktext = 'unjumble';$/;" v +list_polls new-poll.php /^ function list_polls() {$/;" f +list_polls old-poll.php /^ function list_polls() {$/;" f +list_polls poll.php /^ function list_polls() {$/;" f +log_click functions-core.php /^function log_click() {$/;" f +log_location functions-display.php /^ $log_location = "chat\/chat.talk";$/;" v +log_location log.php /^ $log_location = "chat\/chat.talk";$/;" v +log_tail functions-display.php /^function log_tail() {$/;" f +log_tail log.php /^function log_tail() {$/;" f +make_token register.php /^ function make_token() {$/;" f +mark_as_read functions-autofinger.php /^ $mark_as_read = $_GET['mark_as_read'];$/;" v +mark_as_read functions-autofinger.php /^function mark_as_read ($dbh, $owner, $privl) {$/;" f +mark_as_read read.php /^ $mark_as_read = $_GET['mark_as_read'];$/;" v +match register.php /^ $match = array();$/;" v +matchcount functions-edit.php /^ $matchcount = count($mymatches[1]);$/;" v +matchcount functions.php /^ $matchcount = count($mymatches[1]);$/;" v +matchcount read.php /^ $matchcount = preg_match_all("\/(" . preg_quote($mysearch,"\/") . ")\/si", $new_row[1],$/;" v +matchcount readcss.php /^ $matchcount = preg_match_all("\/(" . $mysearch . ")\/si", $new_row[1],$/;" v +matchcount search.php /^ $matchcount = preg_match_all("\/(" . $mysearch . ")\/si", $new_row[1], $matcharray);$/;" v +matchcount search.php /^ $matchcount = preg_match_all("\/(" . preg_quote($mysearch,"\/") . ")\/si", $new_row[1], $matcharray);$/;" v +matchcount test.php /^ $matchcount = count($mymatches[1]);$/;" v +mdisp_begin functions-display.php /^function mdisp_begin($dbh,$idcookie,$myurl,$myprivl,$jsfile=NULL)$/;" f +mdisp_end functions-display.php /^function mdisp_end($dbh,$idcookie,$myurl,$myprivl) {$/;" f +meets overlib.js /^function meets(reqdVersion) {$/;" f +message register.php /^ $message = "A new plan has been created with \\nusername: $username\\nGrad Year: $year\\n$username self-identifies as $type.";$/;" v +message register.php /^ $message = "Your account has been created! Your username is $username and your initial password is $password. Go to http:\/\/www.grinnellplans.com\/ to get started.\\n";$/;" v +message register.php /^ $message= "Click the following link to activate your Plan:\\n" . $/;" v +message textbox.php /^ $message = "Row size set to " . $rows . "<\/b>." . $/;" v +messagecontents board_submit.php /^ $messagecontents=cleanText($messagecontents);$/;" v +messagesperpage board_messages.php /^$messagesperpage =messagesperpage();$/;" v +messagesperpage functions-forum.php /^function messagesperpage()$/;" f +messagesperpage functions.php /^function messagesperpage()$/;" f +messagetitle board_submit.php /^ $messagetitle=cleanText($messagetitle);$/;" v +messagevals board_messages.php /^ $messagevals=get_items($dbh, "threadid, created", "subboard", "messageid", $messagenum);$/;" v +my_planwatch legal.php /^ $my_planwatch = mysql_query("select userid,username,DATE_FORMAT(changed,$/;" v +my_planwatch planwatch.php /^$my_planwatch = mysql_query("select userid,username,DATE_FORMAT(changed,$/;" v +my_result board_messages.php /^ $my_result = mysql_query($query);$/;" v +my_result board_messages.php /^ $my_result = mysql_query("Select COUNT(*) From subboard WHERE created >= \\"" . $messagevals[0][1] . "\\" and threadid=\\"" $/;" v +my_result board_messages.php /^ $my_result = mysql_query("Select COUNT(*) From subboard WHERE threadid=\\"" . $threadid . "\\"");$/;" v +my_result board_show.php /^ $my_result = mysql_query("Select COUNT(*) From mainboard");$/;" v +my_result board_show.php /^ $my_result = mysql_query("Select mainboard.threadid, mainboard.title, DATE_FORMAT(mainboard.lastupdated, '%a %M %D, $/;" v +my_result board_submit.php /^ $my_result = mysql_query("Select threadid FROM mainboard WHERE lastupdated < DATE_SUB(NOW(), INTERVAL 7 DAY)");$/;" v +my_result dbfunctions.php /^ $my_result = mysql_query("Select $get_column From $table where$/;" v +my_result dbfunctions.php /^ $my_result = mysql_query("Select $get_column From $table where$/;" v +my_result functions-database.php /^ $my_result = mysql_query("Select $get_column From $table where$/;" v +my_result functions-database.php /^ $my_result = mysql_query("Select $get_column From $table where$/;" v +my_result functions-display.php /^ $my_result = mysql_query("Select interface.path,style.path From$/;" v +my_result functions-edit.php /^ $my_result = mysql_query("Select userid,username From accounts where username > '$first_letter' and username < '$second_letter' $guest ORDER BY username");$/;" v +my_result functions.php /^$my_result = mysql_query("Select userid,username From accounts where$/;" v +my_result home.php /^ $my_result = mysql_query("Select system.motd From system"); \/\/get the main plans message from the database$/;" v +my_result home.php /^ $my_result = mysql_query("Select system.motd,accounts.spec_message From system,accounts where accounts.userid = '$idcookie'");$/;" v +my_result index.php /^ $my_result = mysql_query("Select system.motd From system"); \/\/get the main plans message from the database$/;" v +my_result index.php /^ $my_result = mysql_query("Select system.motd,accounts.spec_message From$/;" v +my_result interfaces.php /^ $my_result = mysql_query("Select interface,descr From $/;" v +my_result lastcreated.php /^ $my_result = mysql_query("Select userid,username,DATE_FORMAT(created,'%l:%i %p, %a %M %D ') From accounts where created > DATE_SUB(NOW(), $/;" v +my_result links.php /^ $my_result = mysql_query("Select linknum,linkname,descr From$/;" v +my_result photo.php /^ $my_result = mysql_query("Select system.motd From system"); \/\/get the main plans message from the database$/;" v +my_result read.php /^ $my_result = mysql_query($querytext);$/;" v +my_result read.php /^ $my_result = mysql_query("Select priority From autofinger where$/;" v +my_result readadd.php /^ $my_result = mysql_query("Select owner From autofinger where$/;" v +my_result readcss.php /^ $my_result = mysql_query($querytext);$/;" v +my_result readcss.php /^ $my_result = mysql_query("Select priority From autofinger where$/;" v +my_result search.php /^ $my_result = mysql_query($querytext);$/;" v +my_result styles.php /^ $my_result = mysql_query("Select style,descr From $/;" v +my_row dbfunctions.php /^ $my_row = mysql_fetch_array($my_result);$/;" v +my_row functions-database.php /^ $my_row = mysql_fetch_array($my_result);$/;" v +my_row home.php /^ $my_row = mysql_fetch_array($my_result); \/\/get information from mysql query$/;" v +my_row home.php /^ $my_row = mysql_fetch_array($my_result);$/;" v +my_row index.php /^ $my_row = mysql_fetch_array($my_result); \/\/get information from mysql query$/;" v +my_row index.php /^ $my_row = mysql_fetch_array($my_result); \/\/get information from mysql query$/;" v +my_row photo.php /^ $my_row = mysql_fetch_array($my_result); \/\/get information from mysql query$/;" v +mycheck functions-edit.php /^ $mycheck=$mymatches[1][$o];\/\/get the current thing being tested$/;" v +mycheck functions.php /^ $mycheck=$mymatches[1][$o];\/\/get the current thing being tested$/;" v +mycheck test.php /^ $mycheck=$mymatches[1][$o];\/\/get the current thing being tested$/;" v +mydbh DBsetup.php /^$mydbh = db_connect();$/;" v +myedit edit.php /^ $myedit =$/;" v +mynamedsearch search.php /^ $mynamedsearch = "searchname\\=" . $mysearch ."\\"";$/;" v +myprivl globals.php /^ $myprivl = 1;$/;" v +myprivl jlw-test.php /^$myprivl=setpriv($myprivl, $HTTP_COOKIE_VARS["thepriv"]);$/;" v +myrow functions-kommand.php /^ $myrow = array($added_id,$opt_link);$/;" v +myrow functions-kommand.php /^ $myrow = array("",$added_name,"",$crpassword,$email,"","","","","","","",$gradyear,"70","14","", "", "", $type, "", "");$/;" v +myrow functions-kommand.php /^ $myrow = array($added_id,"1","2");$/;" v +myrow functions-kommand.php /^ $myrow = array($added_id,$status);$/;" v +myrow links.php /^ $myrow = array($idcookie,$items);\/\/set array to add to database$/;" v +mysearch read.php /^ $mysearch = preg_quote($mysearch);$/;" v +mysearch read.php /^ $mysearch = preg_replace("\/\\&\/","&", $mysearch);$/;" v +mysearch read.php /^ $mysearch = preg_replace("\/\\<\/","<", $mysearch);$/;" v +mysearch read.php /^ $mysearch = preg_replace("\/\\>\/",">", $mysearch);$/;" v +mysearch readcss.php /^ $mysearch = preg_quote($mysearch);$/;" v +mysearch readcss.php /^ $mysearch = preg_replace("\/\\&\/","&", $mysearch);$/;" v +mysearch readcss.php /^ $mysearch = preg_replace("\/\\<\/","<", $mysearch);$/;" v +mysearch readcss.php /^ $mysearch = preg_replace("\/\\>\/",">", $mysearch);$/;" v +mysearch search.php /^ $mysearch = preg_quote($mysearch);$/;" v +mysearch search.php /^ $mysearch = preg_replace("\/\\&\/","&", $mysearch);$/;" v +mysearch search.php /^ $mysearch = preg_replace("\/\\<\/","<", $mysearch);$/;" v +mysearch search.php /^ $mysearch = preg_replace("\/\\>\/",">", $mysearch);$/;" v +mysearch search.php /^ $mysearch="searchnum=" . $thesearchnum ."\\"";$/;" v +mytime legal.php /^ $mytime = 12;$/;" v +mytime planwatch.php /^ $mytime = 12;$/;" v +nbspCleanup overlib.js /^function nbspCleanup() {$/;" f +nd overlib.js /^function nd(time) {$/;" f +new_plans legal.php /^ $new_plans = mysql_fetch_row($my_planwatch);$/;" v +new_row new-poll.php /^ $new_row = mysql_fetch_array($res);$/;" v +new_row new-poll.php /^ $new_row = mysql_fetch_array($res);$/;" v +new_row old-poll.php /^ $new_row = mysql_fetch_array($res);$/;" v +new_row old-poll.php /^ $new_row = mysql_fetch_array($res);$/;" v +new_row poll.php /^ $new_row = mysql_fetch_array($res);$/;" v +new_row poll.php /^ $new_row = mysql_fetch_array($res);$/;" v +new_url functions-autofinger.php /^ $new_url = add_param($myurl, 'myprivl', $priority);$/;" v +new_url functions-autofinger.php /^ $new_url = remove_param($new_url, 'mark_as_read');$/;" v +next register.php /^ $next = '-';$/;" v +next register.php /^ $next = '_';$/;" v +next register.php /^ $next = chr($next_int + 48);$/;" v +next register.php /^ $next = chr($next_int + 55);$/;" v +next register.php /^ $next = chr($next_int + 61);$/;" v +next_int register.php /^ $next_int = rand(0,64);$/;" v +next_match db.php /^ $next_match = mysql_fetch_array($result) ;$/;" v +no_overlib overlib.js /^function no_overlib() { return ver3fix; }$/;" f +notes_asc textbox.php /^ $notes_asc = 0;$/;" v +notes_pref board_messages.php /^ $notes_pref = get_item($dbh, "notes_asc", "accounts", "userid", $userid);$/;" v +now readcss.php /^$now = getdate();$/;" v +num read.php /^ $num=0;$/;" v +num readcss.php /^ $num=0;$/;" v +num search.php /^ $num=0;$/;" v +o autoread.php /^ $o = 0;$/;" v +o functions-autofinger.php /^ $o=0;$/;" v +o interfaces.php /^ $o=0;$/;" v +o links.php /^ $o=0;$/;" v +o proc_autoread.php /^ $o =0;$/;" v +o proc_autoread.php /^ $o=0;$/;" v +o read.php /^ $o = 0;$/;" v +o read.php /^ $o=0;$/;" v +o readadd.php /^ $o = 0;$/;" v +o readcss.php /^ $o=0;$/;" v +o readcss.php /^ $o = 0;$/;" v +o search.php /^ $o=0;$/;" v +o styles.php /^ $o=0;$/;" v +offset anonymous.php /^ $offset = 0;$/;" v +offset anonymous.php /^ $offset = $_GET['offset'];$/;" v +offset jlw-test.php /^ $offset = 0;$/;" v +offset jlw-test.php /^ $offset = $_GET['offset'];$/;" v +olMain overlib.js /^function olMain() {$/;" f +olMouseCapture overlib.js /^function olMouseCapture() {$/;" f +olMouseMove overlib.js /^function olMouseMove(e) {$/;" f +ol_content_background overlib.js /^function ol_content_background(text,picture,hasfullhtml) {$/;" f +ol_content_caption overlib.js /^function ol_content_caption(text,title,close) {$/;" f +ol_content_simple overlib.js /^function ol_content_simple(text) {$/;" f +old_name changename.php /^ $old_name = stripslashes(get_item($dbh,"pseudo","accounts","userid",$/;" v +old_plan edit.php /^ $old_plan = $diff_data[0][0];\/\/put the contents of the plan into the plan variable for easier use.$/;" v +onlist read.php /^ $onlist = mysql_fetch_array($my_result);$/;" v +onlist readadd.php /^ $onlist = mysql_fetch_array($my_result);$/;" v +onlist readcss.php /^ $onlist = mysql_fetch_array($my_result);\/\/see if the person is already on autoread list and if so, what priority level they are$/;" v +opt_FUNCTION overlib.js /^function opt_FUNCTION(callme) {$/;" f +opt_MULTIPLEARGS overlib.js /^function opt_MULTIPLEARGS(i, args, parameter) {$/;" f +opt_NOCLOSE overlib.js /^function opt_NOCLOSE(unused) {$/;" f +orig_pass index.php /^ $orig_pass = $password;$/;" v +orig_pass reset.php /^ $orig_pass = $password;$/;" v +orig_username register.php /^ $orig_username = $username;$/;" v +overlib overlib.js /^function overlib() {$/;" f +overlib_pagedefaults overlib.js /^function overlib_pagedefaults() {$/;" f +p jlw-test.php /^$p = $password;$/;" v +pagefind board_messages.php /^ $pagefind = mysql_fetch_row($my_result);$/;" v +pagenumber board_messages.php /^ $pagenumber=floor($pagefind[0]\/messagesperpage());$/;" v +parseCmdLine overlib.js /^function parseCmdLine(pf, i, args) {$/;" f +parseTokens overlib.js /^function parseTokens(pf, ar) {$/;" f +part_count read.php /^ $part_count = count($partial_list);$/;" v +part_count readadd.php /^ $part_count = count($partial_list);\/\/tally the number of usernames that containt the string$/;" v +part_count readcss.php /^ $part_count = count($partial_list);$/;" v +partial_list read.php /^ $partial_list = partial_search($dbh,"userid,username","accounts","username",$/;" v +partial_list readadd.php /^ $partial_list = partial_search($dbh,"userid,username","accounts","username",$searchname,"username"); \/\/try to find usernames that contain the string provided$/;" v +partial_list readcss.php /^ $partial_list = partial_search($dbh,"userid,username","accounts","username",$/;" v +partial_search dbfunctions.php /^function partial_search($dbh,$get_column,$table,$search_column, $/;" f +partial_search functions-database.php /^function partial_search($dbh,$get_column,$table,$search_column, $/;" f +password functions-kommand.php /^ $password = rand(0,999999);$/;" v +password functions.php /^ $password = crypt($password, "ab"); \/\/encrypt the password, change to ab$/;" v +password index.php /^ $password = crypt($password, "ab");$/;" v +password index.php /^ $password = $_POST['password'];$/;" v +password register.php /^ $password = $results[0];$/;" v +password reset.php /^ $password = crypt($password, "ab"); \/\/encrypt the password, change to ab$/;" v +php_self core-perms.php /^ $php_self = $_SERVER['PHP_SELF'];$/;" v +php_self core-perms.php /^ $php_self = preg_replace('\/\\\/\/', '', $php_self);$/;" v +placeLayer overlib.js /^function placeLayer() {$/;" f +plan edit.php /^ $plan = $myedit[0][0];\/\/put the contents of the plan into the plan variable for easier use.$/;" v +plan edit.php /^ $plan = preg_replace("\/&\/s", "&", $plan);$/;" v +plan edit.php /^ $plan = preg_replace("\/
\/", "", $plan); $/;" v +plan edit.php /^ $plan = preg_replace("\/
\/","
",$plan);$/;" v +plan edit.php /^ $plan = preg_replace("\/amp;\/s", "", $plan);$/;" v +plan edit.php /^ $plan = stripslashes($plan);$/;" v +plan edit.php /^ $plan = stripslashes($plan);\/\/strip the slashes for display$/;" v +plan edit.php /^ $plan =$/;" v +plan edit.php /^ $plan=cleanText($plan); $/;" v +plan functions-edit.php /^ $plan= preg_replace("\/\\[" . preg_quote($mycheck,"\/") . "\\]\/s","
$mycheck<\/a>",$plan);$/;" v +plan functions-edit.php /^ $plan=preg_replace("\/\\[" . preg_quote($mycheck,"\/") . "\\]\/s", "$love_replace[2]<\/a>",$plan);$/;" v +plan functions-edit.php /^ $plan = preg_replace("\/\\[" . preg_quote($mycheck,"\/") . "\\]\/s", "[$mycheck<\/a>]", $plan);$/;" v +plan functions-edit.php /^ $plan = preg_replace("\/\\[date\\]\/s", "" . date("l F j, Y. g:i A") . "<\/b>",$plan);$/;" v +plan functions-edit.php /^ $plan = preg_replace("\/\\[dnew\\]\/s", "" . date("F j, Y, l H:i") . "<\/b>",$plan);$/;" v +plan functions-edit.php /^ $plan = preg_replace("\/\\[$mycheck\\]\/s", "[$mycheck<\/a>]", $plan);\/\/change all occurences of person on plan$/;" v +plan functions-edit.php /^ $plan = htmlspecialchars($plan);\/\/take out html$/;" v +plan functions-edit.php /^ $plan = preg_replace("\/((\\[\\w*\\],?){8})(?=[^ ,])\/s","$1 ", $plan); $/;" v +plan functions-edit.php /^ $plan = preg_replace("\/\\<\\;a.+?href=."\\;(.+?)."\\;>\\;(.+?)<\\;\\\/a>\\;\/si", "\\\\2<\/a>",$plan);$/;" v +plan functions-edit.php /^ $plan = preg_replace("\/\\<\\;b\\>\\;(.*?)\\<\\;\\\/b\\>\\;\/si", "\\\\1<\/b>",$/;" v +plan functions-edit.php /^ $plan = preg_replace("\/\\<\\;hr\\>\\;\/si", "

", $plan);$/;" v +plan functions-edit.php /^ $plan = preg_replace("\/\\<\\;i\\>\\;(.*?)\\<\\;\\\/i\\>\\;\/si", "\\\\1<\/i>",$/;" v +plan functions-edit.php /^ $plan = preg_replace("\/\\<\\;pre\\>\\;(.*?)\\<\\;\\\/pre\\>\\;\/si", "

\\\\1<\/pre>", $plan);$/;"	v
+plan	functions-edit.php	/^	$plan = preg_replace("\/\\<\\;strike\\>\\;(.*?)\\<\\;\\\/strike\\>\\;\/si", "\\\\1<\/strike>", $plan);$/;"	v
+plan	functions-edit.php	/^	$plan = preg_replace("\/\\<\\;tt\\>\\;(.*?)\\<\\;\\\/tt\\>\\;\/si", "\\\\1<\/tt>",$/;"	v
+plan	functions-edit.php	/^	$plan = preg_replace("\/\\<\\;u\\>\\;(.*?)\\<\\;\\\/u\\>\\;\/si", "\\\\1<\/u>",$/;"	v
+plan	functions-edit.php	/^	$plan = preg_replace("\/\\n\/s","
", $plan);$/;" v +plan functions-edit.php /^ $plan=trim($plan);$/;" v +plan functions.php /^ $plan = preg_replace("\/\\[date\\]\/s", "" . date("l F j, Y. g:i A") . "<\/b>",$plan);$/;" v +plan functions.php /^ $plan = preg_replace("\/\\[dnew\\]\/s", "" . date("F j, Y, l H:i") . "<\/b>",$plan);$/;" v +plan functions.php /^ $plan=preg_replace("\/\\[" . preg_quote($mycheck,"\/") . "\\]\/si", "
$love_replace[2]<\/a>",$plan);$/;" v +plan functions.php /^ $plan= preg_replace("\/\\[" . preg_quote($mycheck,"\/") . "\\]\/si","$mycheck<\/a>",$plan);$/;" v +plan functions.php /^ $plan = preg_replace("\/\\[$mycheck\\]\/s", "[$mycheck<\/a>]", $plan);$/;" v +plan functions.php /^ $plan = preg_replace("\/\\[$mycheck\\]\/s", "[$mycheck<\/a>]", $plan);\/\/change all occurences of person on plan$/;" v +plan functions.php /^ $plan = htmlspecialchars($plan);\/\/take out html$/;" v +plan functions.php /^ $plan = preg_replace("\/\\<\\;a.+href=."\\;(.+)."\\;>\\;(.+)<\\;\\\/a>\\;\/si", "\\\\2<\/a>",$plan);$/;" v +plan functions.php /^ $plan = preg_replace("\/\\<\\;b\\>\\;(.*?)\\<\\;\\\/b\\>\\;\/si", "\\\\1<\/b>",$/;" v +plan functions.php /^ $plan = preg_replace("\/\\<\\;hr\\>\\;\/si", "

", $plan);$/;" v +plan functions.php /^ $plan = preg_replace("\/\\<\\;i\\>\\;(.*?)\\<\\;\\\/i\\>\\;\/si", "\\\\1<\/i>",$/;" v +plan functions.php /^ $plan = preg_replace("\/\\<\\;pre\\>\\;(.*?)\\<\\;\\\/pre\\>\\;\/si", "

\\\\1<\/pre>",$/;"	v
+plan	functions.php	/^      $plan = preg_replace("\/\\<\\;tt\\>\\;(.*?)\\<\\;\\\/tt\\>\\;\/si", "\\\\1<\/tt>",$/;"	v
+plan	functions.php	/^      $plan = preg_replace("\/\\<\\;u\\>\\;(.*?)\\<\\;\\\/u\\>\\;\/si", "\\\\1<\/u>",$/;"	v
+plan	functions.php	/^      $plan = preg_replace("\/\\n\/s","
", $plan);$/;" v +plan functions.php /^$plan=trim($plan);$/;" v +plan test.php /^$plan = '$/;" v +plansearchname search.php /^ $plansearchname="[" . $mysearch . "]"; $/;" v +poll_choice_id new-poll.php /^ $poll_choice_id = $_GET['poll_choice_id'];$/;" v +poll_choice_id new-poll.php /^ $poll_choice_id = $new_row['poll_choice_id'];$/;" v +poll_choice_id old-poll.php /^ $poll_choice_id = $_GET['poll_choice_id'];$/;" v +poll_choice_id poll.php /^ $poll_choice_id = $_GET['poll_choice_id'];$/;" v +poll_choice_id poll.php /^ $poll_choice_id = $new_row['poll_choice_id'];$/;" v +poll_choice_ids new-poll.php /^ $poll_choice_ids = $poll_choice_id;$/;" v +poll_choice_ids new-poll.php /^ $poll_choice_ids = array();$/;" v +poll_choice_ids new-poll.php /^ $poll_choice_ids = array();$/;" v +poll_choice_ids old-poll.php /^ $poll_choice_ids = $poll_choice_id;$/;" v +poll_choice_ids old-poll.php /^ $poll_choice_ids = array();$/;" v +poll_choice_ids poll.php /^ $poll_choice_ids = $poll_choice_id;$/;" v +poll_choice_ids poll.php /^ $poll_choice_ids = array();$/;" v +poll_choice_ids poll.php /^ $poll_choice_ids = array();$/;" v +poll_question_id new-poll.php /^ $poll_question_id = $new_row['max'];$/;" v +poll_question_id new-poll.php /^ $poll_question_id = $_GET['poll_question_id'];$/;" v +poll_question_id old-poll.php /^ $poll_question_id = $new_row['max'];$/;" v +poll_question_id old-poll.php /^ $poll_question_id = $_GET['poll_question_id'];$/;" v +poll_question_id poll.php /^ $poll_question_id = $new_row['max'];$/;" v +poll_question_id poll.php /^ $poll_question_id = $_GET['poll_question_id'];$/;" v +popularity new-poll.php /^ $popularity = $new_row['popularity'];$/;" v +popularity old-poll.php /^ $popularity = $new_row['popularity'];$/;" v +popularity poll.php /^ $popularity = $new_row['popularity'];$/;" v +pos read.php /^ $pos = strpos($new_row[1], "<\/b>", $pos)+4;$/;" v +pos read.php /^ $pos = strpos($new_row[1], "", $pos);\/\/find where matched term starts $/;" v +pos read.php /^ $pos = strpos($new_row[1], "");\/\/find where matched term starts $/;" v +pos readcss.php /^ $pos = strpos($new_row[1], "<\/b>", $pos)+4;$/;" v +pos readcss.php /^ $pos = strpos($new_row[1], "", $pos);\/\/find where matched term starts $/;" v +pos readcss.php /^ $pos = strpos($new_row[1], "");\/\/find where matched term starts $/;" v +pos search.php /^ $pos = strpos($new_row[1], "<\/b>", $pos)+4;$/;" v +pos search.php /^ $pos = strpos($new_row[1], "", $pos);\/\/find where matched term starts $/;" v +pos search.php /^ $pos = strpos($new_row[1], "");\/\/find where matched term starts $/;" v +postParseChecks overlib.js /^function postParseChecks(){$/;" f +privarray functions-autofinger.php /^ $privarray = mysql_query("Select autofinger.interest,accounts.username$/;" v +privlev functions.php /^function privlev($myprivl, $cookiepriv)$/;" f +query board_messages.php /^ $query = "Select subboard.messageid, $/;" v +query functions-autofinger.php /^ $query = "UPDATE autofinger set updated = 0 where owner ='$owner' and priority = '$privl'";$/;" v +query_string functions-core.php /^ $query_string = addslashes($_SERVER['QUERY_STRING']); $/;" v +querytext read.php /^ $querytext = "SELECT username, plan, userid FROM accounts$/;" v +querytext readcss.php /^ $querytext = "SELECT username, plan, userid FROM accounts$/;" v +querytext search.php /^ $querytext = "SELECT username, plan, userid FROM accounts$/;" v +question new-poll.php /^ $question = $new_row['question'];$/;" v +question old-poll.php /^ $question = $new_row['question'];$/;" v +question poll.php /^ $question = $new_row['question'];$/;" v +quoteMultiNameFonts overlib.js /^function quoteMultiNameFonts(theFont) {$/;" f +random_user random.php /^$random_user = $result_row[0];$/;" v +reOrder overlib.js /^function reOrder(hookPt, fnRef, order) {$/;" f +read_pass functions-authentication.php /^ $read_pass = get_item($dbh, "password", "accounts", "userid", $idcookie);$/;" v +read_pass functions.php /^ $read_pass = get_item($dbh, "password", "accounts", "userid", $idcookie);$/;" v +read_pass index.php /^ $read_pass = get_item($dbh, "password", "accounts", "username",$/;" v +read_pass reset.php /^ $read_pass = get_item($dbh, "password", "accounts", "username",$/;" v +read_url functions-autofinger.php /^ $read_url = 'read.php';$/;" v +read_url functions-autofinger.php /^ $read_url = add_param($read_url, 'myprivl', $myprivl );$/;" v +read_url functions-autofinger.php /^ $read_url = add_param($read_url, 'searchname', $autoreadlist[$o][1] );$/;" v +real_pass changepassword.php /^ $real_pass = $guest_password;$/;" v +real_pass changepassword.php /^ $real_pass = get_item($mydbh,"guest_password", "accounts", "userid", $idcookie); $/;" v +real_pass read.php /^ $real_pass = get_item($mydbh,"guest_password", "accounts", "userid", $searchnum);$/;" v +recount_chars register.php /^ function recount_chars() {$/;" f +regexp search.php /^ $regexp=0;$/;" v +registerCmdLineFunction overlib.js /^function registerCmdLineFunction(fn){$/;" f +registerCommands overlib.js /^function registerCommands(cmdStr) {$/;" f +registerHook overlib.js /^function registerHook(fnHookTo, fnRef, hookType, optPm) {$/;" f +registerNoParameterCommands overlib.js /^function registerNoParameterCommands(cmdStr) {$/;" f +registerPostParseFunction overlib.js /^function registerPostParseFunction(fn){$/;" f +registerRunTimeFunction overlib.js /^function registerRunTimeFunction(fn) {$/;" f +remove_param functions-autofinger.php /^function remove_param($url, $name) {$/;" f +repositionTo overlib.js /^function repositionTo(obj, xL, yL) {$/;" f +res new-poll.php /^ $res = mysql_query($sql);$/;" v +res new-poll.php /^ $res = mysql_query($sql);$/;" v +res new-poll.php /^ $res = mysql_query($sql);$/;" v +res old-poll.php /^ $res = mysql_query($sql);$/;" v +res old-poll.php /^ $res = mysql_query($sql);$/;" v +res old-poll.php /^ $res = mysql_query($sql);$/;" v +res poll.php /^ $res = mysql_query($sql);$/;" v +res poll.php /^ $res = mysql_query($sql);$/;" v +res poll.php /^ $res = mysql_query($sql);$/;" v +responses new-poll.php /^ $responses = array();$/;" v +responses old-poll.php /^ $responses = array();$/;" v +responses poll.php /^ $responses = array();$/;" v +result random.php /^$result = mysql_query("select username from accounts order by rand() limit 1");$/;" v +result_row random.php /^$result_row = mysql_fetch_array($result);$/;" v +results register.php /^ $results = insert_user($username, '', $year, $email, $type);$/;" v +rew proc_autoread.php /^ $rew = array($idcookie,$val,$prosplist[$val] ,"","","");$/;" v +rew readadd.php /^ $rew = array($idcookie,$searchnum,$privlevel ,"","","");$/;" v +rowoffset board_messages.php /^ $rowoffset = 0;$/;" v +rowoffset board_messages.php /^ $rowoffset = $totalmessages[0] - $messagesperpage * ($pagenumber + 1);$/;" v +rowoffset board_messages.php /^ $rowoffset=$messagesperpage*$pagenumber;$/;" v +rowoffset board_show.php /^ $rowoffset=$threadsperpage*$pagenumber;$/;" v +runHook overlib.js /^function runHook(fnHookTo, hookType) {$/;" f +s quote-test.php /^$s = serialize($var);$/;" v +script_uri functions-core.php /^ $script_uri = addslashes($_SERVER['SCRIPT_URI']); $/;" v +search_column dbfunctions.php /^ $search_column = '$search_item'");$/;" v +search_column functions-database.php /^ $search_column = '$search_item'");$/;" v +search_item dbfunctions.php /^ $search_item= addslashes($search_item);$/;" v +search_item dbfunctions.php /^ $search_item = addslashes($search_item);$/;" v +search_item dbfunctions.php /^ $search_item= addslashes($search_item);$/;" v +search_item functions-database.php /^ $search_item= addslashes($search_item);$/;" v +search_item functions-database.php /^ $search_item = addslashes($search_item);$/;" v +search_item functions-database.php /^ $search_item= addslashes($search_item);$/;" v +searchname functions-display.php /^ $searchname = $_GET['searchname'];$/;" v +searchname read.php /^ $searchname = htmlentities($searchname);$/;" v +searchnum read.php /^ $searchnum = get_item($mydbh,"userid","accounts","username",$searchname);$/;" v +searchnum read.php /^ $searchnum = $idcookie; \/\/and set the searchnum to the persons own id, so that there will not be an autofinger box thing at the bottom of the non-existant plan$/;" v +searchnum readadd.php /^ $searchnum = $idcookie;}\/\/and set the searchnum to the persons own id, so that person does not get option to add non-existant user\/plan to their autoread list$/;" v +searchnum readcss.php /^ $searchnum = $idcookie;}\/\/and set the searchnum to the persons own id, so that there will not be an autofinger box thing at the bottom of the non-existant plan$/;" v +secret anonymous.php /^ $secret = $row['secret_text'];$/;" v +secret anonymous.php /^ $secret = $_POST['secret'];$/;" v +secret anonymous.php /^ $secret = cleanText($secret);$/;" v +secret jlw-test.php /^ $secret = $row['secret_text'];$/;" v +secret jlw-test.php /^ $secret = $_POST['secret'];$/;" v +secret jlw-test.php /^ $secret = cleanText($secret);$/;" v +secretidno anonymous.php /^ $secretidno = $row['secret_id'];$/;" v +secretidno jlw-test.php /^ $secretidno = $row['secret_id'];$/;" v +select_query anonymous.php /^ $select_query = "select * from secrets order by date desc limit $offset, $count";$/;" v +select_query anonymous.php /^ $select_query = "select * from secrets where display = 'yes' or display = 'pref' order by date desc limit $offset, $count";$/;" v +selected_links links.php /^ $selected_links = get_items($dbh,"linknum","opt_links","userid", $idcookie);\/\/get the current set of links that the user has selected$/;" v +session register.php /^ $session = get_item($dbh, 'session', 'tentative_accounts', 'token' , $token);$/;" v +setLogin functions-edit.php /^function setLogin($dbh, $idcookie)$/;" f +setLogin functions.php /^function setLogin($dbh, $idcookie)$/;" f +setReadTime functions-autofinger.php /^function setReadTime($dbh, $idcookie,$interest)$/;" f +setReadTime functions.php /^function setReadTime($dbh, $idcookie,$interest)$/;" f +setRunTimeVariables overlib.js /^function setRunTimeVariables(){$/;" f +setUpdatedTime functions-edit.php /^function setUpdatedTime($idcookie)$/;" f +setUpdatedTime functions.php /^function setUpdatedTime($idcookie)$/;" f +set_background overlib.js /^function set_background(pic) {$/;" f +set_item dbfunctions.php /^function set_item($dbh, $dtable, $dcolumn_change, $dcolumn_value,$/;" f +set_item functions-database.php /^function set_item($dbh, $dtable, $dcolumn_change, $dcolumn_value,$/;" f +setpriv functions-autofinger.php /^function setpriv($privl, $cookpriv)$/;" f +setpriv functions.php /^function setpriv($myprivl, $cookpriv) {$/;" f +showObject overlib.js /^function showObject(obj) {$/;" f +show_form index.php /^ $show_form = "Invalid username or password.
";$/;" v +show_form register.php /^ function show_form() {$/;" f +show_opt_links functions-display.php /^function show_opt_links ($idcookie, $buf ) {$/;" f +show_username_taken register.php /^ function show_username_taken($username) {$/;" f +showform board_submit.php /^ $showform=1;$/;" v +showform board_submit.php /^ $showform=0;$/;" v +showform board_submit.php /^ $showform=1;$/;" v +somearray functions-edit.php /^ $somearray = preg_match_all("\/.*?\\[(.*?)\\].*?\/s", $plan, $mymatches);\/\/get an array of everything in brackets$/;" v +somearray functions.php /^ $somearray = preg_match_all("\/.*?\\[(.*?)\\].*?\/s", $plan, $mymatches);\/\/get an array of everything in brackets$/;" v +somearray test.php /^ $somearray = preg_match_all("\/.*?\\[(.*?)\\].*?\/s", $plan, $mymatches);\/\/get an array of everything in brackets$/;" v +sql anonymous.php /^ $sql = "insert into secrets(secret_text, date, display) values (substring('$secret',1,4000), now(), 'no')";$/;" v +sql db.php /^ $sql = "select 1 as answer";$/;" v +sql functions-core.php /^ $sql = "$/;" v +sql functions-display.php /^ $sql = "select count(*) as n from secrets where display = 'yes' and secrets.date_approved > '$last'";$/;" v +sql functions.php /^ $sql = "select count(*) as n from secrets where display = 'yes' and secrets.date > '$last'";$/;" v +sql index.php /^ $sql = "insert into js_status set userid = " . addslashes($idcookie) . ", status = '" . addslashes($_POST['js_test_value']) . "'";$/;" v +sql jlw-test.php /^$sql = "insert into secrets(secret_text, date, display) values (substring('$secret',1,4000), now(), 'yes')";$/;" v +sql new-poll.php /^ $sql = "insert into poll_votes set userid = $userid,$/;" v +sql new-poll.php /^ $sql = "select html, poll_question_id from poll_questions where poll_question_id not in (16, 17) order by poll_question_id desc";$/;" v +sql new-poll.php /^ $sql = "delete poll_votes from poll_votes join poll_choices using (poll_choice_id) $/;" v +sql new-poll.php /^ $sql = "select count(*) as popularity from poll_votes v$/;" v +sql new-poll.php /^ $sql = "select max(poll_question_id) as max from poll_questions; ";$/;" v +sql new-poll.php /^ $sql = "select c.html as html, c.poll_choice_id as poll_choice_id, v.userid as checked from poll_choices c left join poll_votes v on v.userid = $userid and v.poll_choice_id = c.poll_choice_id where c.poll_question_id = $poll_question_id order by c.html";$/;" v +sql new-poll.php /^ $sql = "select count(*) as voted from poll_votes v join poll_choices c using (poll_choice_id) where userid = $userid and poll_question_id = $poll_question_id";$/;" v +sql new-poll.php /^ $sql = "select type, q.html as question from poll_questions q $/;" v +sql old-poll.php /^ $sql = "insert into poll_votes set userid = $userid,$/;" v +sql old-poll.php /^ $sql = "select html, poll_question_id from poll_questions where poll_question_id not in (16, 17) order by poll_question_id desc";$/;" v +sql old-poll.php /^ $sql = "delete from poll_votes$/;" v +sql old-poll.php /^ $sql = "select count(*) as popularity from poll_votes v$/;" v +sql old-poll.php /^ $sql = "select html from poll_choices c$/;" v +sql old-poll.php /^ $sql = "select max(poll_question_id) as max from poll_questions; ";$/;" v +sql old-poll.php /^ $sql = "select count(*) as voted from poll_votes v join poll_choices c using (poll_choice_id) where userid = $userid and poll_question_id = $poll_question_id";$/;" v +sql old-poll.php /^ $sql = "select type, q.html as question, c.poll_choice_id as choice,$/;" v +sql poll.php /^ $sql = "insert into poll_votes set userid = $userid,$/;" v +sql poll.php /^ $sql = "select html, poll_question_id from poll_questions where poll_question_id not in (16, 17) order by poll_question_id desc";$/;" v +sql poll.php /^ $sql = "delete poll_votes from poll_votes join poll_choices using (poll_choice_id) $/;" v +sql poll.php /^ $sql = "select count(*) as popularity from poll_votes v$/;" v +sql poll.php /^ $sql = "select max(poll_question_id) as max from poll_questions; ";$/;" v +sql poll.php /^ $sql = "select c.html as html, c.poll_choice_id as poll_choice_id, v.userid as checked from poll_choices c left join poll_votes v on v.userid = $userid and v.poll_choice_id = c.poll_choice_id where c.poll_question_id = $poll_question_id order by c.html";$/;" v +sql poll.php /^ $sql = "select count(*) as voted from poll_votes v join poll_choices c using (poll_choice_id) where userid = $userid and poll_question_id = $poll_question_id";$/;" v +sql poll.php /^ $sql = "select type, q.html as question from poll_questions q $/;" v +sql secrets-stats.php /^ $sql = 'select date, yes, no, $/;" v +start_array read.php /^ $start_array = array();$/;" v +start_array readcss.php /^ $start_array = array();$/;" v +start_array search.php /^ $start_array = array();$/;" v +startof read.php /^ $startof=strpos($new_row[1],"",$start_array[$num]);$/;" v +startof read.php /^ $startof= strpos($new_row[1]," ", $start_array[$num]);$/;" v +startof readcss.php /^ $startof= strpos($new_row[1]," ", $start_array[$num]);$/;" v +startof search.php /^ $startof = $start_array[$num]; \/\/ If not possible to start context$/;" v +startof search.php /^ $startof = strpos($new_row[1]," ", $start_array[$num]);$/;" v +status core-perms.php /^ $status = get_item($dbh, "status", "perms", "userid", $userid);$/;" v +storable register.php /^ $storable = serialize($data);$/;" v +submitted new-poll.php /^ $submitted = $_GET['submitted'];$/;" v +submitted old-poll.php /^ $submitted = $_GET['submitted'];$/;" v +submitted poll.php /^ $submitted = $_GET['submitted'];$/;" v +t quote-test.php /^$t = unserialize($s);$/;" v +tempnum board_messages.php /^ $tempnum=$pagenumber-1;$/;" v +tempnum board_messages.php /^ $tempnum=$pagenumber-2;$/;" v +thecolor board_messages.php /^ $thecolor=$colordark;$/;" v +theusername quicklove.php /^$theusername = get_item($dbh,"username","accounts","userid", $idcookie);$/;" v +this_user readcss.php /^$this_user = get_item($dbh, "username", "accounts", "userid", $idcookie);$/;" v +thread_title board_messages.php /^ $thread_title = get_item($dbh, "title", "mainboard", "threadid", $threadid);$/;" v +threadid board_messages.php /^ $threadid=$messagevals[0][0];$/;" v +threadid board_submit.php /^ $threadid=mysql_insert_id();$/;" v +threadsperpage board_show.php /^$threadsperpage =threadsperpage();$/;" v +threadsperpage functions-forum.php /^function threadsperpage()$/;" f +threadsperpage functions.php /^function threadsperpage()$/;" f +threadtitle board_submit.php /^ $threadtitle = cleanText($threadtitle);$/;" v +threadtitle board_submit.php /^ $threadtitle = preg_replace('\/<[^>]*>\/', '', $threadtitle);$/;" v +title db.php /^ $title = $next_match['answer'];$/;" v +title functions-display.php /^ $title = "$username's Plan";$/;" v +title functions-display.php /^ $title = "Plans - Beta";$/;" v +toggle register.php /^function toggle(item, box) {$/;" f +token register.php /^ $token = '';$/;" v +token register.php /^ $token = make_token();$/;" v +totalmessages board_messages.php /^ $totalmessages = mysql_fetch_row($my_result);$/;" v +totalthreads board_show.php /^ $totalthreads = mysql_fetch_row($my_result);$/;" v +type new-poll.php /^ $type = $new_row['type'];$/;" v +type old-poll.php /^ $type = $new_row['type'];$/;" v +type poll.php /^ $type = $new_row['type'];$/;" v +type register.php /^ $type = $_GET['other'];$/;" v +type register.php /^ $type = $data['type'];$/;" v +type register.php /^ $type = $_GET['type'];$/;" v +update_read functions-autofinger.php /^function update_read($dbh, $owner, $updated) $/;" f +update_read functions.php /^function update_read($dbh, $owner, $updated) {$/;" f +url functions-autofinger.php /^ $url = ereg_replace("$name=[^&]*", '', $url);$/;" v +url functions-autofinger.php /^ $url = preg_replace(array("@&$@"), array(''), $url);$/;" v +url functions-display.php /^ $url = add_param($url, 'jumbled', 'no');$/;" v +url functions-display.php /^ $url = add_param($url, 'jumbled', 'yes');$/;" v +url functions-display.php /^ $url = $_SERVER['REQUEST_URI'];$/;" v +user_name changename.php /^ $user_name = htmlspecialchars($user_name);\/\/strip out html chars$/;" v +userid functions-core.php /^ $userid = 0;$/;" v +userid functions-core.php /^ $userid = $_SESSION['userid'];$/;" v +userid functions-core.php /^ $userid = addslashes($userid);$/;" v +userid new-poll.php /^$userid = $idcookie;$/;" v +userid old-poll.php /^$userid = $idcookie;$/;" v +userid poll.php /^$userid = $idcookie;$/;" v +userid register.php /^$userid = $idcookie;$/;" v +username changepassword.php /^ $username = get_item($mydbh,"username", "accounts", "userid", $idcookie); $/;" v +username index.php /^ $username = $_POST['username'];$/;" v +username index.php /^ $username = $_SESSION['username'];$/;" v +username register.php /^ $username = $data['username'];$/;" v +username register.php /^ $username = $match[1];$/;" v +username register.php /^ $username = $_GET['username'];$/;" v +username register.php /^ $username = preg_replace('\/[^a-zA-A+0-9]\/', '', $username);$/;" v +username whoami.php /^$username = $_GET['username'];$/;" v +verticalPlacement overlib.js /^function verticalPlacement(browserHeight,verticalScrollAmount) {$/;" f +voted new-poll.php /^ $voted = $new_row['voted'];$/;" v +voted old-poll.php /^ $voted = $new_row['voted'];$/;" v +voted poll.php /^ $voted = $new_row['voted'];$/;" v +wants_secrets functions-display.php /^ $wants_secrets = mysql_query("Select avail_links.linknum, avail_links.html_code$/;" v +wants_secrets functions-display.php /^function wants_secrets ($idcookie) {$/;" f +wants_secrets functions.php /^ $wants_secrets = mysql_query("Select avail_links.linknum, avail_links.html_code$/;" v +wants_secrets functions.php /^function wants_secrets ($idcookie) {$/;" f +webview planwatch.php /^ $webview = '';$/;" v +webview planwatch.php /^ $webview = 'and webview = 1';$/;" v +whandle readcss.php /^$whandle = fopen($fname, "a");$/;" v +who_just_updated legal.php /^function who_just_updated() { \/\/TODO put this somewhere more sensible$/;" f +word_count functions-display.php /^ $word_count = count($words[0]);$/;" v +wrapStr overlib.js /^function wrapStr(endWrap,fontSizeStr,whichString) {$/;" f +write_only_access core-perms.php /^ $write_only_access = array($/;" v +year register.php /^ $year = $data['year'];$/;" v +year register.php /^ $year = $_GET['gradyear'];$/;" v +year register.php /^ $year = preg_replace("\/[^0-9]\/", '', $year);$/;" v diff --git a/test.php b/test.php new file mode 100755 index 0000000..d6ae273 --- /dev/null +++ b/test.php @@ -0,0 +1,26 @@ + +NEW: Rockabilly rocker [http://myspace.com/everettdean|ABCDE] of Chicago will be playing for the night! It\'s definitely going to be +'; + + $somearray = preg_match_all("/.*?\[(.*?)\].*?/s", $plan, $mymatches);//get an array of everything in brackets +print_r ($mymatches); + + $matchcount = count($mymatches[1]); + for ($o=0; $o<$matchcount; $o++)//do a loop to test whether everything in brackets is a valid user or not +{ + $mycheck=$mymatches[1][$o];//get the current thing being tested + + //echo '' . "\n"; + $jlw = preg_replace("/\//", '\/', $mycheck); + //echo '' . "\n"; + + if (!$checked[$mycheck])//make sure current thing being checked has not already been checked + { + //check for plan with username + } +} +?> diff --git a/textbox.php b/textbox.php new file mode 100755 index 0000000..59a1119 --- /dev/null +++ b/textbox.php @@ -0,0 +1,77 @@ + 150 or $cols < 25)//check to make sure that columns are a reasonable size + {$message = "Column size is not valid.";}//if not complain + else //if ok, check the row size + { + if ($rows < 5 or $rows > 50)//make sure row size is reasonable + {$message = "Row size was not valid.";}//if not complain + else //otherwise sizes are fine, so set the data + { + set_item($dbh, "accounts", "edit_cols", $cols, + "userid", $idcookie);//update the column size + set_item($dbh, "accounts", "edit_rows", $rows, + "userid", $idcookie); //update the row size + if ($notes_asc != 1) { + $notes_asc = 0; +} + set_item($dbh, "accounts", "notes_asc", $notes_asc, + "userid", $idcookie); //update the row size + $message = "Row size set to " . $rows . "." . + "
Column size set to " . $cols . "."; + }//if rows else + + }//if cols else + + //actually tell the user here if there was a problem, or if things were set correctly. + ?> +

Change Edit Box Size:

+ +
+ +

Change Edit Box Size:

+
+

+ + + + + +
Rows:
Columns:
Notes Posts in ascending order: value="1">
+ +
+ +
+ diff --git a/tos/index.html b/tos/index.html new file mode 100644 index 0000000..c7038b2 --- /dev/null +++ b/tos/index.html @@ -0,0 +1,469 @@ + + + + + + + + + + + + + +

GrinnellPlans Terms of Service

+

Last created Feb 11, 2007 (version 3)

+

Last updated June 1, 2007 (Version 3.1)

+


+

+

Welcome to GrinnellPlans. In order to +protect ourselves from legal liability and secure your rights, this +document is intended to outline our obligations to one another. +Therefore, in order to use GrinnellPlans (“GP”), you must read +and agree to these Terms of Service and the following terms, +conditions, and policies, including any future amendments.

+


+

+

Although GP may attempt to notify you +when major changes are made to these Terms of Service, you should +periodically review the most up-to-date version +(http://www.grinnellplans.com/tos). GP may, in our sole discretion, +modify or revise these Terms of Service and policies at any time, and +you agree to be bound by such modifications or revisions. If you do +not accept and abide by this Agreement, you may not use +GrinnellPlans. Nothing in this Agreement shall be deemed to confer +any third-party rights or benefits.

+


+

+

1. Description of Service. +GrinnellPlans is a web publishing service. You will be responsible +for all activities occurring under your username and for keeping your +password secure. You understand and agree that the Service is +provided to you on an AS IS and AS AVAILABLE basis. GP disclaims all +responsibility and liability for the availability, timeliness, +security or reliability of the Service or any other client software. +GP also reserves the right to modify, suspend or discontinue the +Service with or without notice at any time and without any liability +to you.

+


+

+

You must be at least sixteen (16) years +of age to use the Service. GP reserves the right to refuse service to +anyone at any time without notice for any reason.

+


+

+

2. Proper Use. You agree that you are +responsible for your own use of the Service, for any posts you make, +and for any consequences thereof. You agree that you will use the +Service in compliance with all applicable local, state, national, and +international laws, rules and regulations, including any laws +regarding the transmission of technical data exported from your +country of residence and all United States export control laws.

+


+

+

Violation of any of the foregoing may +result in immediate termination of this Agreement, and may subject +you to state and federal penalties and other legal consequences. GP +reserves the right, but shall have no obligation, to investigate your +use of the Service in order to (a) determine whether a violation of +the Agreement has occurred or (b) comply with any applicable law, +regulation, legal process or governmental request.

+


+

+

Much of the content on +GrinnellPlans.com -- including the contents of specific postings -- +is provided by and is the responsibility of the person or people who +made such postings. GP does NOT monitor the content on +GrinnellPlans.com and takes no responsibility for such content. +Instead, GP merely PROVIDES ACCESS to such content as a service to +you.

+


+

+

Subsequently, GrinnellPlans.com may +carry offensive, harmful, inaccurate or otherwise inappropriate +material, or in some cases, postings that have been mislabeled or are +otherwise deceptive. We expect that you will use caution and common +sense and exercise proper judgment when using GrinnellPlans.com.

+


+

+

GP does not endorse, support, represent +or guarantee the truthfulness, accuracy, or reliability of any +communications posted via the service or endorse any opinions +expressed via this service. You acknowledge that any reliance on +material posted via the Service will be at your own risk.

+


+

+

3. Privacy. You agree that +GrinnellPlans may access or disclose your personal information, +including the content of your communications, if GrinnellPlans is +required to do so in order to comply with any valid legal process or +governmental request (such as a search warrant, subpoena, statute, or +court order), or as otherwise provided in these Terms of Service. +Personal information collected by GP may be stored and processed in +the United States or any other country in which GrinnellPlans or its +agents maintain facilities. By using the Service, you consent to any +such transfer of information outside of your country.

+


+

+

4. General Practices Regarding Use and +Storage. You agree that GrinnellPlans IS NOT RESPONSIBLE OR LIABLE +for the deletion of, or the failure to store or to transmit, any +Content and other communications maintained by the Service. GP +retains the right to create limits on use and storage at our sole +discretion at any time with or without notice.

+


+

+

5. Content of the Service. +GrinnellPlans takes NO RESPONSIBILITY FOR THIRD-PARTY CONTENT +(including, without limitation, any viruses or other disabling +features), nor does GrinnellPlans have any obligation to monitor such +third-party content. GrinnellPlans reserves the right at all times to +remove or refuse to distribute any content on the Service, such as +content which violates the terms of this Agreement. GrinnellPlans +also reserves the right to access, read, preserve, and disclose any +information as it reasonably believes is necessary to (a) satisfy any +applicable law, regulation, legal process or governmental request, +(b) enforce this Agreement, including investigation of potential +violations hereof, (c) detect, prevent, or otherwise address fraud, +security or technical issues, (d) respond to user support requests, +or (e) protect the rights, property or safety of GrinnellPlans, its +users and the public. GrinnellPlans will not be responsible or liable +for the exercise or non-exercise of its rights under this Agreement.

+


+

+

6. Intellectual Property Rights. +GrinnellPlans's Intellectual Property Rights. You acknowledge that +GrinnellPlans owns all right, title and interest in and to the +Service, including all intellectual property rights. GrinnellPlans' +Rights are protected by U.S. and international intellectual property +laws. Accordingly, you agree that you will not copy, reproduce, +alter, modify, or create derivative works from the Service. You also +agree that you will not use any robot, spider, other automated +device, or manual process to monitor or copy any content from the +Service. As described immediately below, GrinnellPlans' Rights do NOT +include third-party content used as part of the Service, including +the content of communications appearing on the Service.

+


+

+

Your Intellectual Property Rights. +GrinnellPlans claims no ownership or control over any Content +submitted, posted or displayed by you on or through GrinnellPlans +services. You or a third party licensor, as appropriate, retain all +patent, trademark and copyright to any Content you submit, post or +display on or through GrinnellPlans services and you are responsible +for protecting those rights, as appropriate. By submitting, posting +or displaying Content on or through GrinnellPlans services which are +intended to be available to the members of the public, you grant +GrinnellPlans a worldwide, non-exclusive, royalty-free license to +reproduce, publish and distribute such Content on GrinnellPlans' +services for the purpose of displaying and distributing GrinnellPlans +services. GP furthermore reserves the right to refuse to accept, +post, display or transmit any Content in its sole discretion.

+


+

+

You represent and warrant that you have +all the rights, power and authority necessary to grant the rights +granted herein to any Content submitted.

+


+

+

You may choose to submit, post, and +display any materials on or through GrinnellPlans under a public +license (e.g. a Creative Commons license), whether by manually +marking your materials as such. For avoidance of doubt, GrinnellPlans +is not a party to any such public license between you and any third +party. Also, for avoidance of doubt, GrinnellPlans may choose to +exercise the rights granted under (a) the public license or licenses, +if any, you apply to your materials or (b) this Agreement.

+


+

+

7. No Resale of the Service. Unless +expressly authorized in writing by GrinnellPlans, you agree not to +reproduce, duplicate, copy, sell, trade, resell or exploit for any +commercial purposes (a) any portion of the Service, (b) use of the +Service, or (c) access to the Service.

+


+

+

8. Publicity. Any use of +GrinnellPlans's trade names, trademarks, service marks, logos, domain +names, and other distinctive brand features ("Brand Features") +must be in compliance with this Agreement.

+


+

+

9. Representations and Warranties. You +represent and warrant that (a) all of the information provided by you +to GrinnellPlans to participate in the Service is correct and +current; and (b) you have all necessary right, power and authority to +enter into this Agreement and to perform the acts required of you +hereunder.

+


+

+

10. Termination; Suspension. +GrinnellPlans may, IN ITS SOLE DISCRETION, AT ANY TIME AND FOR ANY +REASON, terminate the Service, terminate this Agreement, or suspend +or terminate your account. In the event of termination, your account +will be disabled and you may not be granted access to your account or +any files or other content contained in your account although +residual copies of information may remain in our system for some time +for back-up purposes. Sections 2, 3, 5 - 8, and 10 - 15 of the +Agreement, along with applicable provisions of the general Terms of +Service (including the section regarding limitation of liability), +shall survive expiration or termination.

+


+

+

11. Indemnification. You agree to hold +harmless and indemnify GrinnellPlans, and its subsidiaries, +affiliates, officers, agents, and employees from and against any +third-party claim arising from or in any way related to your use of +the Service, including any liability or expense arising from all +claims, losses, damages (actual and consequential), suits, judgments, +litigation costs and attorneys' fees, of every kind and nature. In +such a case, GrinnellPlans will provide you with written notice of +such claim, suit or action.

+


+

+

12. Entire Agreement. This Agreement +constitutes the entire agreement between you and GrinnellPlans and +governs your use of the Service, superseding any prior agreements +between you and GrinnellPlans. You also may be subject to additional +terms and conditions that may apply when you use or purchase certain +other GrinnellPlans services, affiliate services, third-party content +or third-party software.

+


+

+

13. Waiver and Severability of Terms. +The failure of GrinnellPlans to exercise or enforce any right or +provision of the Terms of Service shall not constitute a waiver of +such right or provision. If any provision of the Terms of Service is +found by a court of competent jurisdiction to be invalid, the parties +nevertheless agree that the court should endeavor to give effect to +the parties' intentions as reflected in the provision, and the other +provisions of the Terms of Service remain in full force and effect.

+


+

+

14. Statute of Limitations. You agree +that regardless of any statute or law to the contrary, any claim or +cause of action arising of or related to use of GrinnellPlans +services or the Terms of Service must be filed within one (1) year +after such claim or cause of action arose or be forever barred.

+


+

+

15. Choice of Law; Jurisdiction; Forum. +These Terms of Service will be governed by and construed in +accordance with the laws of the State of Hawai`i, without giving +effect to its conflict of laws provisions or your actual state or +country of residence. Any claims, legal proceeding or litigation +arising in connection with the Service will be brought solely in the +City and County of Honolulu, Hawai`i, and you consent to the +jurisdiction of such courts.

+


+

+

16. Copyright Information. It is our +policy to respond to notices of alleged infringement that comply with +the Digital Millennium Copyright Act. If you believe that your +copyright has been infringed on the Service, consult Appendix A: +Digital Millennium Copyright Act.

+


+

+

++++ -- +

+


+

+

Appendix A: Digital Millennium +Copyright Act.

+


+

+

It is our policy to respond to clear +notices of alleged copyright infringement. This page describes the +information that should be present in these notices. It is designed +to make submitting notices of alleged infringement to GrinnellPlans +as straightforward as possible while reducing the number of notices +that we receive that are fraudulent or difficult to understand or +verify. The form of notice specified below is consistent with the +form suggested by the United States Digital Millennium Copyright Act +(the text of which can be found at the U.S. Copyright Office Web +Site, http://www.copyright.gov) but we will respond to notices of +this form from other jurisdictions as well.

+


+

+

Regardless of whether we may be liable +for such infringement under local country law or United States law, +our response to these notices may include removing or disabling +access to material claimed to be the subject of infringing activity +and/or terminating subscribers. If we remove or disable access in +response to such a notice, we will make a good-faith attempt to +contact the owner or administrator of the affected site or content so +that they may make a counter notification. We may also document +notices of alleged infringement on which we act. As with all legal +notices, a copy of the notice may be sent to one or more third +parties who may make it available to the public.

+


+

+

Infringement Notification:

+


+

+

To file a notice of infringement with +us, you must provide a written communication (by regular mail -- not +by email, except by prior agreement) that sets forth the items +specified below. Please note that you will be liable for damages +(including costs and attorneys' fees) if you materially misrepresent +that a product or activity is infringing your copyrights. Indeed, in +a recent case (please see +http://www.onlinepolicy.org/action/legpolicy/opg_v_diebold/ for more +information), a company that sent an infringement notification +seeking removal of online materials that were protected by the fair +use doctrine was ordered to pay such costs and attorneys fees. The +company agreed to pay over $100,000. If you are uncertain whether +material available online infringes your copyright, consult your +attorney. +

+


+

+

To expedite our ability to process your +request, please use the following format (including section numbers):

+


+

+

1.Identify in sufficient detail the +copyrighted work that you believe has been infringed upon. This post +must include identification of the specific posts, as opposed to +entire sites. Posts must be referenced by the permalink of the post. +For example, “The copyrighted work at issue is the text that +appears on http://johndoe.com/test/2006_01_01.html#2106.

+


+

+

2. Identify the material that you claim +is infringing the copyrighted work listed in item #1 above.

+


+

+

YOU MUST IDENTIFY EACH POST BY +PERMALINK OR DATE THAT ALLEGEDLY CONTAINS THE INFRINGING MATERIAL. +The permalink for a post is usually found by clicking on the +timestamp of the post. For example, “The blog where my copyrighted +work is published on is +http://copyright.grinnellplans.com/archives/2006_01_02_example.html.”

+


+

+

3. Provide information reasonably +sufficient to permit GrinnellPlans to contact you (email address is +preferred).

+


+

+

4. Include the following statement: "I +have a good faith belief that use of the copyrighted material +described above on the allegedly infringing web pages is not +authorized by the copyright owner, its agent, or the law.".

+


+

+

5. Include the following statement: "I +swear, under penalty of perjury, that the information in the +notification is accurate and that I am the copyright owner or am +authorized to act on behalf of the owner of an exclusive right that +is allegedly infringed."

+


+

+

6. Sign the paper.

+


+

+

7. Send the written communication to +the following address:

+


+

+

Sechyi Laiu

+

Pidginlaw.com

+

Re: GrinnellPlans.com – Legal +DMCA Complaint

+

911 Wiliwili St. #7

+

Honolulu, HI 96826

+


+

+

Please note that a copy of each legal +notice we receive is sent to a third-party partner for publication +and annotation. As such, your letter (with your personal information +removed) will be forwarded to Chilling Effects +(http://www.chillingeffects.org) for publication. You can see an +example of such a publication at +http://www.chillingeffects.org/dmca512/notice.cgi?NoticeID=861. A +link to your published letter may be displayed in GrinnellPlans's +search results in place of the removed content.

+


+

+

Counter Notification

+


+

+

The administrator of an affected site +or the provider of affected content may make a counter notification +pursuant to sections 512(g)(2) and (3) of the Digital Millennium +Copyright Act. When we receive a counter notification, we may +reinstate the material in question.

+


+

+

To file a counter notification with us, +you must provide a written communication (by fax or regular mail -- +not by email, except by prior agreement) that sets forth the items +specified below. Please note that you will be liable for damages +(including costs and attorneys' fees) if you materially misrepresent +that a product or activity is not infringing the copyrights of +others. Accordingly, if you are not sure whether certain material +infringes the copyrights of others, consult your attorney. A sample +counter notification may be found at +www.chillingeffects.org/dmca/counter512.pdf.

+


+

+

To expedite our ability to process your +counter notification, please use the following format (including +section numbers):

+


+

+

1. Identify the specific URLs or other +unique identifying information of material that GrinnellPlans has +removed or to which GrinnellPlans has disabled access.

+


+

+

2. Provide your name, address, +telephone number, email address, and a statement that you consent to +the jurisdiction of Federal District Court for the judicial district +in which your address is located (or the City and County of Honolulu, +Hawaii if your address is outside of the United States), and that you +will accept service of process from the person who provided +notification under subsection (c)(1)(C) or an agent of such person.

+


+

+

3. Include the following statement: "I +swear, under penalty of perjury, that I have a good faith belief that +each search result, message, or other item of content identified +above was removed or disabled as a result of a mistake or +misidentification of the material to be removed or disabled, or that +the material identified by the complainant has been removed or +disabled at the URL identified and will no longer be shown."

+


+

+

4. Sign the paper.

+


+

+

5. Send the written communication to +the following address:

+


+

+

Sechyi Laiu

+

Pidginlaw.com

+

Re: GrinnellPlans.com – Legal +DMCA Complaint

+

911 Wiliwili St. #7

+

Honolulu, HI 96826

+


+

+

Account Termination

+


+

+

GrinnellPlans will, in appropriate +circumstances, terminate repeat infringers. If you believe that an +account holder or subscriber is a repeat infringer, please follow the +instructions above to contact GrinnellPlans's DMCA agent and provide +information sufficient for us to verify that the account holder or +subscriber is a repeat infringer.

+ + diff --git a/unfilled.gif b/unfilled.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea38a33e9b011b697f02b14c10260bf2b847dc81 GIT binary patch literal 58 zcmZ?wbhEHbWMmLvSjYeZ|6xG!AG4#YH-q9&7Dg@xCI%glBuE(p6N^jV%m4;!05@e2 AsQ>@~ literal 0 HcmV?d00001 diff --git a/webview.php b/webview.php new file mode 100755 index 0000000..1468e33 --- /dev/null +++ b/webview.php @@ -0,0 +1,64 @@ + +

Guest Viewable:

+
Preference set.
+

Webview:

+ + + "; + echo ""; + + ?> +
Make plan viewable to guests.
Make plan unviewable to guests.
+ + +
+ + diff --git a/whoami.php b/whoami.php new file mode 100755 index 0000000..04284d7 --- /dev/null +++ b/whoami.php @@ -0,0 +1,21 @@ +"; +echo "
"; +echo "
"; +echo "
"; + +$username = $_GET['username']; + + + + +print_r($_SESSION); + +?> diff --git a/write-only/perms.sql b/write-only/perms.sql new file mode 100644 index 0000000..a2aa4dd --- /dev/null +++ b/write-only/perms.sql @@ -0,0 +1,43 @@ +create table perms ( + `userid` smallint(5) unsigned NOT NULL auto_increment, + `status` smallint(5) NOT NULL +) + +DROP TABLE IF EXISTS `accounts`; +CREATE TABLE `accounts` ( + `username` varchar(16) NOT NULL default '', + `created` datetime default NULL, + `password` varchar(20) default NULL, + `email` varchar(64) default NULL, + `pseudo` varchar(64) default NULL, + `login` datetime default NULL, + `changed` datetime default NULL, + `plan` text, + `poll` tinyint(3) unsigned default NULL, + `group_bit` char(1) default NULL, + `spec_message` varchar(255) default NULL, + `grad_year` varchar(4) default NULL, + `edit_cols` tinyint(3) unsigned default NULL, + `edit_rows` tinyint(3) unsigned default NULL, + `webview` char(1) default '0', + `edit_text` text, + `notes_asc` char(1) default NULL, + `user_type` varchar(128) default NULL, + `show_images` tinyint(1) NOT NULL default '0', + PRIMARY KEY (`userid`), + UNIQUE KEY `username` (`username`), + KEY `changed` (`changed`), + FULLTEXT KEY `password` (`password`), + FULLTEXT KEY `password_2` (`password`), + FULLTEXT KEY `username_2` (`username`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + diff --git a/xmas/header.gif b/xmas/header.gif new file mode 100755 index 0000000000000000000000000000000000000000..660aaabfc070d01449aa865aefbee20820dece61 GIT binary patch literal 6353 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
v{;1859oZrPCTL%EtqC5%F9 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 R?m4p2vx3E#8$b|P_