From e0584f6e3e67d22ead9592c2072b88dbf35ac5e8 Mon Sep 17 00:00:00 2001 From: Shish Date: Tue, 24 Nov 2009 14:11:44 +0000 Subject: [PATCH] dos2unix --- contrib/favorites/theme.php | 86 +-- contrib/sitemap/main.php | 108 ++-- contrib/tag_history/main.php | 438 ++++++------- contrib/tips/main.php | 350 +++++------ contrib/tips/theme.php | 198 +++--- lib/adodb/datadict/datadict-sapdb.inc.php | 240 ++++---- lib/akismet.class.php | 712 +++++++++++----------- themes/danbooru/layout.class.php | 436 ++++++------- 8 files changed, 1284 insertions(+), 1284 deletions(-) diff --git a/contrib/favorites/theme.php b/contrib/favorites/theme.php index eb283006..6a45876e 100644 --- a/contrib/favorites/theme.php +++ b/contrib/favorites/theme.php @@ -1,43 +1,43 @@ -id); - if(!$is_favorited) { - $html = "
- - - -
- "; - } - else { - $html = "
- - - -
- "; - } - - return $html; - } - - public function display_people($username_array) { - global $page; - - $i_favorites = count($username_array); - $html = "$i_favorites people:"; - - foreach($username_array as $row) { - $username = html_escape($row['name']); - $html .= "
$username"; - } - - $page->add_block(new Block("Favorited By", $html, "left", 25)); - } -} - -?> +id); + if(!$is_favorited) { + $html = "
+ + + +
+ "; + } + else { + $html = "
+ + + +
+ "; + } + + return $html; + } + + public function display_people($username_array) { + global $page; + + $i_favorites = count($username_array); + $html = "$i_favorites people:"; + + foreach($username_array as $row) { + $username = html_escape($row['name']); + $html .= "
$username"; + } + + $page->add_block(new Block("Favorited By", $html, "left", 25)); + } +} + +?> diff --git a/contrib/sitemap/main.php b/contrib/sitemap/main.php index 8052ce39..306c3085 100644 --- a/contrib/sitemap/main.php +++ b/contrib/sitemap/main.php @@ -1,54 +1,54 @@ - - * License: GPLv2 - * Description: Adds sitemap.xml on request. - * Documentation: - */ - -class XMLSitemap extends SimpleExtension { - public function onPageRequest($event) { - if($event->page_matches("sitemap.xml")) { - $images = Image::find_images(0, 50, array()); - $this->do_xml($images); - } - } - - private function do_xml($images) { - global $page; - $page->set_mode("data"); - $page->set_type("application/xml"); - - $data = ""; - foreach($images as $image) { - $link = make_http(make_link("post/view/{$image->id}")); - $posted = date("Y-m-d", $image->posted_timestamp); - - $data .= " - - $link - $posted - monthly - 0.8 - - "; - } - - $base_href = make_http(make_link("post/list")); - - $xml = "<"."?xml version=\"1.0\" encoding=\"utf-8\"?"."> - - - $base_href - 2009-01-01 - monthly - 1 - - $data - - "; - $page->set_data($xml); - } -} -?> + + * License: GPLv2 + * Description: Adds sitemap.xml on request. + * Documentation: + */ + +class XMLSitemap extends SimpleExtension { + public function onPageRequest($event) { + if($event->page_matches("sitemap.xml")) { + $images = Image::find_images(0, 50, array()); + $this->do_xml($images); + } + } + + private function do_xml($images) { + global $page; + $page->set_mode("data"); + $page->set_type("application/xml"); + + $data = ""; + foreach($images as $image) { + $link = make_http(make_link("post/view/{$image->id}")); + $posted = date("Y-m-d", $image->posted_timestamp); + + $data .= " + + $link + $posted + monthly + 0.8 + + "; + } + + $base_href = make_http(make_link("post/list")); + + $xml = "<"."?xml version=\"1.0\" encoding=\"utf-8\"?"."> + + + $base_href + 2009-01-01 + monthly + 1 + + $data + + "; + $page->set_data($xml); + } +} +?> diff --git a/contrib/tag_history/main.php b/contrib/tag_history/main.php index 2ce64339..6ebe9fe2 100644 --- a/contrib/tag_history/main.php +++ b/contrib/tag_history/main.php @@ -1,219 +1,219 @@ - - * Description: Keep a record of tag changes - */ - -class Tag_History implements Extension { - var $theme; - - public function receive_event(Event $event) { - global $config, $database, $page, $user; - if(is_null($this->theme)) $this->theme = get_theme_object($this); - - if(($event instanceof InitExtEvent)) { - $config->set_default_int("history_limit", -1); - - // shimmie is being installed so call install to create the table. - if($config->get_int("ext_tag_history_version") < 3) { - $this->install(); - } - } - - if(($event instanceof PageRequestEvent) && $event->page_matches("tag_history")) - { - if($event->get_arg(0) == "revert") - { - // this is a request to revert to a previous version of the tags - if($config->get_bool("tag_edit_anon") || !$user->is_anonymous()) { - $this->process_revert_request($_POST['revert']); - } - } - else if($event->count_args() == 1) - { - // must be an attempt to view a tag history - $image_id = int_escape($event->get_arg(0)); - $this->theme->display_history_page($page, $image_id, $this->get_tag_history_from_id($image_id)); - } - else { - $this->theme->display_global_page($page, $this->get_global_tag_history()); - } - } - if(($event instanceof DisplayingImageEvent)) - { - // handle displaying a link on the view page - $this->theme->display_history_link($page, $event->image->id); - } - if(($event instanceof ImageDeletionEvent)) - { - // handle removing of history when an image is deleted - $this->delete_all_tag_history($event->image->id); - } - if(($event instanceof SetupBuildingEvent)) { - $sb = new SetupBlock("Tag History"); - $sb->add_label("Limit to "); - $sb->add_int_option("history_limit"); - $sb->add_label(" entires per image"); - $sb->add_label("
(-1 for unlimited)"); - $event->panel->add_block($sb); - } - if(($event instanceof TagSetEvent)) { - $this->add_tag_history($event->image, $event->tags); - } - } - - protected function install() - { - global $database; - global $config; - - if($config->get_int("ext_tag_history_version") < 1) { - $database->create_table("tag_histories", " - id SCORE_AIPK, - image_id INTEGER NOT NULL, - user_id INTEGER NOT NULL, - user_ip SCORE_INET NOT NULL, - tags TEXT NOT NULL, - date_set DATETIME NOT NULL, - INDEX(image_id), - FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE, - FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE - "); - $config->set_int("ext_tag_history_version", 3); - } - - if($config->get_int("ext_tag_history_version") == 1) { - $database->Execute("ALTER TABLE tag_histories ADD COLUMN user_id INTEGER NOT NULL"); - $database->Execute("ALTER TABLE tag_histories ADD COLUMN date_set DATETIME NOT NULL"); - $config->set_int("ext_tag_history_version", 2); - } - - if($config->get_int("ext_tag_history_version") == 2) { - $database->Execute("ALTER TABLE tag_histories ADD COLUMN user_ip CHAR(15) NOT NULL"); - $config->set_int("ext_tag_history_version", 3); - } - } - - /* - * this function is called when a revert request is received - */ - private function process_revert_request($revert_id) - { - global $page; - // check for the nothing case - if($revert_id=="nothing") - { - // tried to set it too the same thing so ignore it (might be a bot) - // go back to the index page with you - $page->set_mode("redirect"); - $page->set_redirect(make_link()); - return; - } - - $revert_id = int_escape($revert_id); - - // lets get this revert id assuming it exists - $result = $this->get_tag_history_from_revert($revert_id); - - if($result==null) - { - // there is no history entry with that id so either the image was deleted - // while the user was viewing the history, someone is playing with form - // variables or we have messed up in code somewhere. - die("Error: No tag history with specified id was found."); - } - - // lets get the values out of the result - $stored_result_id = $result->fields['id']; - $stored_image_id = $result->fields['image_id']; - $stored_tags = $result->fields['tags']; - - // all should be ok so we can revert by firing the SetUserTags event. - send_event(new TagSetEvent(Image::by_id($stored_image_id), $stored_tags)); - - // all should be done now so redirect the user back to the image - $page->set_mode("redirect"); - $page->set_redirect(make_link("post/view/$stored_image_id")); - } - - public function get_tag_history_from_revert($revert_id) - { - global $database; - $row = $database->execute(" - SELECT tag_histories.*, users.name - FROM tag_histories - JOIN users ON tag_histories.user_id = users.id - WHERE tag_histories.id = ?", array($revert_id)); - return ($row ? $row : null); - } - - public function get_tag_history_from_id($image_id) - { - global $database; - $row = $database->get_all(" - SELECT tag_histories.*, users.name - FROM tag_histories - JOIN users ON tag_histories.user_id = users.id - WHERE image_id = ? - ORDER BY tag_histories.id DESC", - array($image_id)); - return ($row ? $row : array()); - } - - public function get_global_tag_history() - { - global $database; - $row = $database->get_all(" - SELECT tag_histories.*, users.name - FROM tag_histories - JOIN users ON tag_histories.user_id = users.id - ORDER BY tag_histories.id DESC - LIMIT 100"); - return ($row ? $row : array()); - } - - /* - * this function is called when an image has been deleted - */ - private function delete_all_tag_history($image_id) - { - global $database; - $database->execute("DELETE FROM tag_histories WHERE image_id = ?", array($image_id)); - } - - /* - * this function is called just before an images tag are changed - */ - private function add_tag_history($image, $tags) - { - global $database; - global $config; - global $user; - - $new_tags = Tag::implode($tags); - $old_tags = Tag::implode($image->get_tag_array()); - if($new_tags == $old_tags) return; - - // add a history entry - $allowed = $config->get_int("history_limit"); - if($allowed == 0) return; - - $row = $database->execute(" - INSERT INTO tag_histories(image_id, tags, user_id, user_ip, date_set) - VALUES (?, ?, ?, ?, now())", - array($image->id, $new_tags, $user->id, $_SERVER['REMOTE_ADDR'])); - - // if needed remove oldest one - if($allowed == -1) return; - $entries = $database->db->GetOne("SELECT COUNT(*) FROM tag_histories WHERE image_id = ?", array($image->id)); - if($entries > $allowed) - { - // TODO: Make these queries better - $min_id = $database->db->GetOne("SELECT MIN(id) FROM tag_histories WHERE image_id = ?", array($image->id)); - $database->execute("DELETE FROM tag_histories WHERE id = ?", array($min_id)); - } - } -} -add_event_listener(new Tag_History(), 40); // in before tags are actually set, so that "get current tags" works -?> + + * Description: Keep a record of tag changes + */ + +class Tag_History implements Extension { + var $theme; + + public function receive_event(Event $event) { + global $config, $database, $page, $user; + if(is_null($this->theme)) $this->theme = get_theme_object($this); + + if(($event instanceof InitExtEvent)) { + $config->set_default_int("history_limit", -1); + + // shimmie is being installed so call install to create the table. + if($config->get_int("ext_tag_history_version") < 3) { + $this->install(); + } + } + + if(($event instanceof PageRequestEvent) && $event->page_matches("tag_history")) + { + if($event->get_arg(0) == "revert") + { + // this is a request to revert to a previous version of the tags + if($config->get_bool("tag_edit_anon") || !$user->is_anonymous()) { + $this->process_revert_request($_POST['revert']); + } + } + else if($event->count_args() == 1) + { + // must be an attempt to view a tag history + $image_id = int_escape($event->get_arg(0)); + $this->theme->display_history_page($page, $image_id, $this->get_tag_history_from_id($image_id)); + } + else { + $this->theme->display_global_page($page, $this->get_global_tag_history()); + } + } + if(($event instanceof DisplayingImageEvent)) + { + // handle displaying a link on the view page + $this->theme->display_history_link($page, $event->image->id); + } + if(($event instanceof ImageDeletionEvent)) + { + // handle removing of history when an image is deleted + $this->delete_all_tag_history($event->image->id); + } + if(($event instanceof SetupBuildingEvent)) { + $sb = new SetupBlock("Tag History"); + $sb->add_label("Limit to "); + $sb->add_int_option("history_limit"); + $sb->add_label(" entires per image"); + $sb->add_label("
(-1 for unlimited)"); + $event->panel->add_block($sb); + } + if(($event instanceof TagSetEvent)) { + $this->add_tag_history($event->image, $event->tags); + } + } + + protected function install() + { + global $database; + global $config; + + if($config->get_int("ext_tag_history_version") < 1) { + $database->create_table("tag_histories", " + id SCORE_AIPK, + image_id INTEGER NOT NULL, + user_id INTEGER NOT NULL, + user_ip SCORE_INET NOT NULL, + tags TEXT NOT NULL, + date_set DATETIME NOT NULL, + INDEX(image_id), + FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE + "); + $config->set_int("ext_tag_history_version", 3); + } + + if($config->get_int("ext_tag_history_version") == 1) { + $database->Execute("ALTER TABLE tag_histories ADD COLUMN user_id INTEGER NOT NULL"); + $database->Execute("ALTER TABLE tag_histories ADD COLUMN date_set DATETIME NOT NULL"); + $config->set_int("ext_tag_history_version", 2); + } + + if($config->get_int("ext_tag_history_version") == 2) { + $database->Execute("ALTER TABLE tag_histories ADD COLUMN user_ip CHAR(15) NOT NULL"); + $config->set_int("ext_tag_history_version", 3); + } + } + + /* + * this function is called when a revert request is received + */ + private function process_revert_request($revert_id) + { + global $page; + // check for the nothing case + if($revert_id=="nothing") + { + // tried to set it too the same thing so ignore it (might be a bot) + // go back to the index page with you + $page->set_mode("redirect"); + $page->set_redirect(make_link()); + return; + } + + $revert_id = int_escape($revert_id); + + // lets get this revert id assuming it exists + $result = $this->get_tag_history_from_revert($revert_id); + + if($result==null) + { + // there is no history entry with that id so either the image was deleted + // while the user was viewing the history, someone is playing with form + // variables or we have messed up in code somewhere. + die("Error: No tag history with specified id was found."); + } + + // lets get the values out of the result + $stored_result_id = $result->fields['id']; + $stored_image_id = $result->fields['image_id']; + $stored_tags = $result->fields['tags']; + + // all should be ok so we can revert by firing the SetUserTags event. + send_event(new TagSetEvent(Image::by_id($stored_image_id), $stored_tags)); + + // all should be done now so redirect the user back to the image + $page->set_mode("redirect"); + $page->set_redirect(make_link("post/view/$stored_image_id")); + } + + public function get_tag_history_from_revert($revert_id) + { + global $database; + $row = $database->execute(" + SELECT tag_histories.*, users.name + FROM tag_histories + JOIN users ON tag_histories.user_id = users.id + WHERE tag_histories.id = ?", array($revert_id)); + return ($row ? $row : null); + } + + public function get_tag_history_from_id($image_id) + { + global $database; + $row = $database->get_all(" + SELECT tag_histories.*, users.name + FROM tag_histories + JOIN users ON tag_histories.user_id = users.id + WHERE image_id = ? + ORDER BY tag_histories.id DESC", + array($image_id)); + return ($row ? $row : array()); + } + + public function get_global_tag_history() + { + global $database; + $row = $database->get_all(" + SELECT tag_histories.*, users.name + FROM tag_histories + JOIN users ON tag_histories.user_id = users.id + ORDER BY tag_histories.id DESC + LIMIT 100"); + return ($row ? $row : array()); + } + + /* + * this function is called when an image has been deleted + */ + private function delete_all_tag_history($image_id) + { + global $database; + $database->execute("DELETE FROM tag_histories WHERE image_id = ?", array($image_id)); + } + + /* + * this function is called just before an images tag are changed + */ + private function add_tag_history($image, $tags) + { + global $database; + global $config; + global $user; + + $new_tags = Tag::implode($tags); + $old_tags = Tag::implode($image->get_tag_array()); + if($new_tags == $old_tags) return; + + // add a history entry + $allowed = $config->get_int("history_limit"); + if($allowed == 0) return; + + $row = $database->execute(" + INSERT INTO tag_histories(image_id, tags, user_id, user_ip, date_set) + VALUES (?, ?, ?, ?, now())", + array($image->id, $new_tags, $user->id, $_SERVER['REMOTE_ADDR'])); + + // if needed remove oldest one + if($allowed == -1) return; + $entries = $database->db->GetOne("SELECT COUNT(*) FROM tag_histories WHERE image_id = ?", array($image->id)); + if($entries > $allowed) + { + // TODO: Make these queries better + $min_id = $database->db->GetOne("SELECT MIN(id) FROM tag_histories WHERE image_id = ?", array($image->id)); + $database->execute("DELETE FROM tag_histories WHERE id = ?", array($min_id)); + } + } +} +add_event_listener(new Tag_History(), 40); // in before tags are actually set, so that "get current tags" works +?> diff --git a/contrib/tips/main.php b/contrib/tips/main.php index f16e9c1d..859072eb 100644 --- a/contrib/tips/main.php +++ b/contrib/tips/main.php @@ -1,175 +1,175 @@ - - * License: GPLv2 - * Description: Show a random line of text in the subheader space - * Documentation: - * Formatting is done with HTML - */ - -class Tips extends SimpleExtension { - public function onInitExt($event) { - global $config, $database; - - if ($config->get_int("ext_tips_version") < 1){ - $database->create_table("tips", " - id SCORE_AIPK, - enable SCORE_BOOL NOT NULL DEFAULT SCORE_BOOL_N, - image TEXT NOT NULL, - text TEXT NOT NULL, - INDEX (id) - "); - - $database->execute(" - INSERT INTO tips (enable, image, text) - VALUES (?, ?, ?)", - array("Y", "coins.png", "Do you like this extension? Please support us for developing new ones. Donate through paypal.")); - - $config->set_int("ext_tips_version", 1); - log_info("tips", "extension installed"); - } - } - - public function onPageRequest($event) { - global $page, $user; - - $this->getTip(); - - if($event->page_matches("tips")) { - switch($event->get_arg(0)) { - case "list": - { - if($user->is_admin()) { - $this->manageTips(); - $this->getAll(); - } - break; - } - case "new": - { - break; - } - case "save": - { - if($user->is_admin()) { - $this->saveTip(); - - $page->set_mode("redirect"); - $page->set_redirect(make_link("tips/list")); - } - break; - } - case "status": - { - if($user->is_admin()) { - $tipID = int_escape($event->get_arg(1)); - $this->setStatus($tipID); - - $page->set_mode("redirect"); - $page->set_redirect(make_link("tips/list")); - } - break; - } - case "delete": - { - if($user->is_admin()) { - $tipID = int_escape($event->get_arg(1)); - $this->deleteTip($tipID); - - $page->set_mode("redirect"); - $page->set_redirect(make_link("tips/list")); - } - break; - } - } - } - } - - public function onUserBlockBuilding($event) { - global $user; - if($user->is_admin()) { - $event->add_link("Tips Editor", make_link("tips/list")); - } - } - - private function manageTips() { - $data_href = get_base_href(); - $url = $data_href."/ext/tips/images/"; - - $dirPath = dir('./ext/tips/images'); - $images = array(); - while(($file = $dirPath->read()) !== false) { - if($file[0] != ".") { - $images[] = trim($file); - } - } - $dirPath->close(); - sort($images); - - $this->theme->manageTips($url, $images); - } - - private function saveTip() { - global $database; - - $enable = isset($_POST["enable"]) ? "Y" : "N"; - $image = html_escape($_POST["image"]); - $text = $_POST["text"]; - - $database->execute(" - INSERT INTO tips (enable, image, text) - VALUES (?, ?, ?)", - array($enable, $image, $text)); - - } - - private function getTip() { - global $database; - - $data_href = get_base_href(); - $url = $data_href."/ext/tips/images/"; - - $tip = $database->get_row("SELECT * ". - "FROM tips ". - "WHERE enable = 'Y' ". - "ORDER BY RAND() ". - "LIMIT 1"); - - if($tip) { - $this->theme->showTip($url, $tip); - } - } - - private function getAll() { - global $database; - - $data_href = get_base_href(); - $url = $data_href."/ext/tips/images/"; - - $tips = $database->get_all("SELECT * FROM tips ORDER BY id ASC"); - - $this->theme->showAll($url, $tips); - } - - private function setStatus($tipID) { - global $database; - - $tip = $database->get_row("SELECT * FROM tips WHERE id = ? ", array($tipID)); - - if($tip['enable'] == "Y") { - $enable = "N"; - } elseif($tip['enable'] == "N") { - $enable = "Y"; - } - - $database->execute("UPDATE tips SET enable = ? WHERE id = ?", array ($enable, $tipID)); - } - - private function deleteTip($tipID) { - global $database; - $database->execute("DELETE FROM tips WHERE id = ?", array($tipID)); - } -} -?> - + + * License: GPLv2 + * Description: Show a random line of text in the subheader space + * Documentation: + * Formatting is done with HTML + */ + +class Tips extends SimpleExtension { + public function onInitExt($event) { + global $config, $database; + + if ($config->get_int("ext_tips_version") < 1){ + $database->create_table("tips", " + id SCORE_AIPK, + enable SCORE_BOOL NOT NULL DEFAULT SCORE_BOOL_N, + image TEXT NOT NULL, + text TEXT NOT NULL, + INDEX (id) + "); + + $database->execute(" + INSERT INTO tips (enable, image, text) + VALUES (?, ?, ?)", + array("Y", "coins.png", "Do you like this extension? Please support us for developing new ones. Donate through paypal.")); + + $config->set_int("ext_tips_version", 1); + log_info("tips", "extension installed"); + } + } + + public function onPageRequest($event) { + global $page, $user; + + $this->getTip(); + + if($event->page_matches("tips")) { + switch($event->get_arg(0)) { + case "list": + { + if($user->is_admin()) { + $this->manageTips(); + $this->getAll(); + } + break; + } + case "new": + { + break; + } + case "save": + { + if($user->is_admin()) { + $this->saveTip(); + + $page->set_mode("redirect"); + $page->set_redirect(make_link("tips/list")); + } + break; + } + case "status": + { + if($user->is_admin()) { + $tipID = int_escape($event->get_arg(1)); + $this->setStatus($tipID); + + $page->set_mode("redirect"); + $page->set_redirect(make_link("tips/list")); + } + break; + } + case "delete": + { + if($user->is_admin()) { + $tipID = int_escape($event->get_arg(1)); + $this->deleteTip($tipID); + + $page->set_mode("redirect"); + $page->set_redirect(make_link("tips/list")); + } + break; + } + } + } + } + + public function onUserBlockBuilding($event) { + global $user; + if($user->is_admin()) { + $event->add_link("Tips Editor", make_link("tips/list")); + } + } + + private function manageTips() { + $data_href = get_base_href(); + $url = $data_href."/ext/tips/images/"; + + $dirPath = dir('./ext/tips/images'); + $images = array(); + while(($file = $dirPath->read()) !== false) { + if($file[0] != ".") { + $images[] = trim($file); + } + } + $dirPath->close(); + sort($images); + + $this->theme->manageTips($url, $images); + } + + private function saveTip() { + global $database; + + $enable = isset($_POST["enable"]) ? "Y" : "N"; + $image = html_escape($_POST["image"]); + $text = $_POST["text"]; + + $database->execute(" + INSERT INTO tips (enable, image, text) + VALUES (?, ?, ?)", + array($enable, $image, $text)); + + } + + private function getTip() { + global $database; + + $data_href = get_base_href(); + $url = $data_href."/ext/tips/images/"; + + $tip = $database->get_row("SELECT * ". + "FROM tips ". + "WHERE enable = 'Y' ". + "ORDER BY RAND() ". + "LIMIT 1"); + + if($tip) { + $this->theme->showTip($url, $tip); + } + } + + private function getAll() { + global $database; + + $data_href = get_base_href(); + $url = $data_href."/ext/tips/images/"; + + $tips = $database->get_all("SELECT * FROM tips ORDER BY id ASC"); + + $this->theme->showAll($url, $tips); + } + + private function setStatus($tipID) { + global $database; + + $tip = $database->get_row("SELECT * FROM tips WHERE id = ? ", array($tipID)); + + if($tip['enable'] == "Y") { + $enable = "N"; + } elseif($tip['enable'] == "N") { + $enable = "Y"; + } + + $database->execute("UPDATE tips SET enable = ? WHERE id = ?", array ($enable, $tipID)); + } + + private function deleteTip($tipID) { + global $database; + $database->execute("DELETE FROM tips WHERE id = ?", array($tipID)); + } +} +?> + diff --git a/contrib/tips/theme.php b/contrib/tips/theme.php index be5457cd..03b0865b 100644 --- a/contrib/tips/theme.php +++ b/contrib/tips/theme.php @@ -1,99 +1,99 @@ -"; - - foreach($images as $image){ - $select .= "\n"; - } - - $select .= ""; - - $html = " -
- - - - - - - - - - - - - - - - -
Enable:
Image:{$select}
Message:
-
-"; - - $page->set_title("Tips List"); - $page->set_heading("Tips List"); - $page->add_block(new NavBlock()); - $page->add_block(new Block("Add Tip", $html, "main", 10)); - } - - public function showTip($url, $tip) { - global $page; - - $img = ""; - if(!empty($tip['image'])) { - $img = " "; - } - $html = "
".$img.$tip['text']."
"; - $page->add_block(new Block(null, $html, "subheading", 10)); - } - - public function showAll($url, $tips){ - global $user, $page; - - $html = "". - "". - "". - "". - "". - ""; - - if($user->is_admin()){ - $html .= ""; - } - - $html .= ""; - - $n = 0; - foreach ($tips as $tip) - { - $oe = ($n++ % 2 == 0) ? "even" : "odd"; - - $tip_enable = ($tip['enable'] == "Y") ? "Yes" : "No"; - $set_link = "".$tip_enable.""; - - $html .= "". - "". - "". - ( - empty($tip['image']) ? - "" : - "" - ). - ""; - - $del_link = "Delete"; - - if($user->is_admin()){ - $html .= ""; - } - - $html .= ""; - } - $html .= "
IDEnabledImageTextAction
".$tip['id']."".$set_link."".$tip['text']."".$del_link."
"; - - $page->add_block(new Block("All Tips", $html, "main", 20)); - } -} -?> +"; + + foreach($images as $image){ + $select .= "\n"; + } + + $select .= ""; + + $html = " +
+ + + + + + + + + + + + + + + + +
Enable:
Image:{$select}
Message:
+
+"; + + $page->set_title("Tips List"); + $page->set_heading("Tips List"); + $page->add_block(new NavBlock()); + $page->add_block(new Block("Add Tip", $html, "main", 10)); + } + + public function showTip($url, $tip) { + global $page; + + $img = ""; + if(!empty($tip['image'])) { + $img = " "; + } + $html = "
".$img.$tip['text']."
"; + $page->add_block(new Block(null, $html, "subheading", 10)); + } + + public function showAll($url, $tips){ + global $user, $page; + + $html = "". + "". + "". + "". + "". + ""; + + if($user->is_admin()){ + $html .= ""; + } + + $html .= ""; + + $n = 0; + foreach ($tips as $tip) + { + $oe = ($n++ % 2 == 0) ? "even" : "odd"; + + $tip_enable = ($tip['enable'] == "Y") ? "Yes" : "No"; + $set_link = "".$tip_enable.""; + + $html .= "". + "". + "". + ( + empty($tip['image']) ? + "" : + "" + ). + ""; + + $del_link = "Delete"; + + if($user->is_admin()){ + $html .= ""; + } + + $html .= ""; + } + $html .= "
IDEnabledImageTextAction
".$tip['id']."".$set_link."".$tip['text']."".$del_link."
"; + + $page->add_block(new Block("All Tips", $html, "main", 20)); + } +} +?> diff --git a/lib/adodb/datadict/datadict-sapdb.inc.php b/lib/adodb/datadict/datadict-sapdb.inc.php index 37de29ed..9b539efa 100644 --- a/lib/adodb/datadict/datadict-sapdb.inc.php +++ b/lib/adodb/datadict/datadict-sapdb.inc.php @@ -1,121 +1,121 @@ -type; - $len = $fieldobj->max_length; - } - static $maxdb_type2adodb = array( - 'VARCHAR' => 'C', - 'CHARACTER' => 'C', - 'LONG' => 'X', // no way to differ between 'X' and 'B' :-( - 'DATE' => 'D', - 'TIMESTAMP' => 'T', - 'BOOLEAN' => 'L', - 'INTEGER' => 'I4', - 'SMALLINT' => 'I2', - 'FLOAT' => 'F', - 'FIXED' => 'N', - ); - $type = isset($maxdb_type2adodb[$t]) ? $maxdb_type2adodb[$t] : 'C'; - - // convert integer-types simulated with fixed back to integer - if ($t == 'FIXED' && !$fieldobj->scale && ($len == 20 || $len == 3)) { - $type = $len == 20 ? 'I8' : 'I1'; - } - if ($fieldobj->auto_increment) $type = 'R'; - - return $type; - } - - // return string must begin with space - function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) - { - $suffix = ''; - if ($funsigned) $suffix .= ' UNSIGNED'; - if ($fnotnull) $suffix .= ' NOT NULL'; - if ($fautoinc) $suffix .= ' DEFAULT SERIAL'; - elseif (strlen($fdefault)) $suffix .= " DEFAULT $fdefault"; - if ($fconstraint) $suffix .= ' '.$fconstraint; - return $suffix; - } - - function AddColumnSQL($tabname, $flds) - { - $tabname = $this->TableName ($tabname); - $sql = array(); - list($lines,$pkey) = $this->_GenFields($flds); - return array( 'ALTER TABLE ' . $tabname . ' ADD (' . implode(', ',$lines) . ')' ); - } - - function AlterColumnSQL($tabname, $flds) - { - $tabname = $this->TableName ($tabname); - $sql = array(); - list($lines,$pkey) = $this->_GenFields($flds); - return array( 'ALTER TABLE ' . $tabname . ' MODIFY (' . implode(', ',$lines) . ')' ); - } - - function DropColumnSQL($tabname, $flds) - { - $tabname = $this->TableName ($tabname); - if (!is_array($flds)) $flds = explode(',',$flds); - foreach($flds as $k => $v) { - $flds[$k] = $this->NameQuote($v); - } - return array( 'ALTER TABLE ' . $tabname . ' DROP (' . implode(', ',$flds) . ')' ); - } -} - +type; + $len = $fieldobj->max_length; + } + static $maxdb_type2adodb = array( + 'VARCHAR' => 'C', + 'CHARACTER' => 'C', + 'LONG' => 'X', // no way to differ between 'X' and 'B' :-( + 'DATE' => 'D', + 'TIMESTAMP' => 'T', + 'BOOLEAN' => 'L', + 'INTEGER' => 'I4', + 'SMALLINT' => 'I2', + 'FLOAT' => 'F', + 'FIXED' => 'N', + ); + $type = isset($maxdb_type2adodb[$t]) ? $maxdb_type2adodb[$t] : 'C'; + + // convert integer-types simulated with fixed back to integer + if ($t == 'FIXED' && !$fieldobj->scale && ($len == 20 || $len == 3)) { + $type = $len == 20 ? 'I8' : 'I1'; + } + if ($fieldobj->auto_increment) $type = 'R'; + + return $type; + } + + // return string must begin with space + function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + { + $suffix = ''; + if ($funsigned) $suffix .= ' UNSIGNED'; + if ($fnotnull) $suffix .= ' NOT NULL'; + if ($fautoinc) $suffix .= ' DEFAULT SERIAL'; + elseif (strlen($fdefault)) $suffix .= " DEFAULT $fdefault"; + if ($fconstraint) $suffix .= ' '.$fconstraint; + return $suffix; + } + + function AddColumnSQL($tabname, $flds) + { + $tabname = $this->TableName ($tabname); + $sql = array(); + list($lines,$pkey) = $this->_GenFields($flds); + return array( 'ALTER TABLE ' . $tabname . ' ADD (' . implode(', ',$lines) . ')' ); + } + + function AlterColumnSQL($tabname, $flds) + { + $tabname = $this->TableName ($tabname); + $sql = array(); + list($lines,$pkey) = $this->_GenFields($flds); + return array( 'ALTER TABLE ' . $tabname . ' MODIFY (' . implode(', ',$lines) . ')' ); + } + + function DropColumnSQL($tabname, $flds) + { + $tabname = $this->TableName ($tabname); + if (!is_array($flds)) $flds = explode(',',$flds); + foreach($flds as $k => $v) { + $flds[$k] = $this->NameQuote($v); + } + return array( 'ALTER TABLE ' . $tabname . ' DROP (' . implode(', ',$flds) . ')' ); + } +} + ?> \ No newline at end of file diff --git a/lib/akismet.class.php b/lib/akismet.class.php index 5c676f83..84fb2062 100644 --- a/lib/akismet.class.php +++ b/lib/akismet.class.php @@ -1,356 +1,356 @@ -Usage - * - * $comment = array( - * 'author' => 'viagra-test-123', - * 'email' => 'test@example.com', - * 'website' => 'http://www.example.com/', - * 'body' => 'This is a test comment', - * 'permalink' => 'http://yourdomain.com/yourblogpost.url', - * ); - * - * $akismet = new Akismet('http://www.yourdomain.com/', 'YOUR_WORDPRESS_API_KEY', $comment); - * - * if($akismet->isError()) { - * echo"Couldn't connected to Akismet server!"; - * } else { - * if($akismet->isSpam()) { - * echo"Spam detected"; - * } else { - * echo"yay, no spam!"; - * } - * } - * - * - * @author Bret Kuhns {@link www.miphp.net} - * @link http://www.miphp.net/blog/view/php4_akismet_class/ - * @version 0.3.3 - * @license http://www.opensource.org/licenses/mit-license.php MIT License - */ - - - -// Error constants -define("AKISMET_SERVER_NOT_FOUND", 0); -define("AKISMET_RESPONSE_FAILED", 1); -define("AKISMET_INVALID_KEY", 2); - - - -// Base class to assist in error handling between Akismet classes -class AkismetObject { - var $errors = array(); - - - /** - * Add a new error to the errors array in the object - * - * @param String $name A name (array key) for the error - * @param String $string The error message - * @return void - */ - // Set an error in the object - function setError($name, $message) { - $this->errors[$name] = $message; - } - - - /** - * Return a specific error message from the errors array - * - * @param String $name The name of the error you want - * @return mixed Returns a String if the error exists, a false boolean if it does not exist - */ - function getError($name) { - if($this->isError($name)) { - return $this->errors[$name]; - } else { - return false; - } - } - - - /** - * Return all errors in the object - * - * @return String[] - */ - function getErrors() { - return (array)$this->errors; - } - - - /** - * Check if a certain error exists - * - * @param String $name The name of the error you want - * @return boolean - */ - function isError($name) { - return isset($this->errors[$name]); - } - - - /** - * Check if any errors exist - * - * @return boolean - */ - function errorsExist() { - return (count($this->errors) > 0); - } - - -} - - - - - -// Used by the Akismet class to communicate with the Akismet service -class AkismetHttpClient extends AkismetObject { - var $akismetVersion = '1.1'; - var $con; - var $host; - var $port; - var $apiKey; - var $blogUrl; - var $errors = array(); - - - // Constructor - function AkismetHttpClient($host, $blogUrl, $apiKey, $port = 80) { - $this->host = $host; - $this->port = $port; - $this->blogUrl = $blogUrl; - $this->apiKey = $apiKey; - } - - - // Use the connection active in $con to get a response from the server and return that response - function getResponse($request, $path, $type = "post", $responseLength = 1160) { - $this->_connect(); - - if($this->con && !$this->isError(AKISMET_SERVER_NOT_FOUND)) { - $request = - strToUpper($type)." /{$this->akismetVersion}/$path HTTP/1.1\r\n" . - "Host: ".((!empty($this->apiKey)) ? $this->apiKey."." : null)."{$this->host}\r\n" . - "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n" . - "Content-Length: ".strlen($request)."\r\n" . - "User-Agent: Akismet PHP4 Class\r\n" . - "\r\n" . - $request - ; - $response = ""; - - @fwrite($this->con, $request); - - while(!feof($this->con)) { - $response .= @fgets($this->con, $responseLength); - } - - $response = explode("\r\n\r\n", $response, 2); - return $response[1]; - } else { - $this->setError(AKISMET_RESPONSE_FAILED, "The response could not be retrieved."); - } - - $this->_disconnect(); - } - - - // Connect to the Akismet server and store that connection in the instance variable $con - function _connect() { - if(!($this->con = @fsockopen($this->host, $this->port))) { - $this->setError(AKISMET_SERVER_NOT_FOUND, "Could not connect to akismet server."); - } - } - - - // Close the connection to the Akismet server - function _disconnect() { - @fclose($this->con); - } - - -} - - - - - -// The controlling class. This is the ONLY class the user should instantiate in -// order to use the Akismet service! -class Akismet extends AkismetObject { - var $apiPort = 80; - var $akismetServer = 'rest.akismet.com'; - var $akismetVersion = '1.1'; - var $http; - - var $ignore = array( - 'HTTP_COOKIE', - 'HTTP_X_FORWARDED_FOR', - 'HTTP_X_FORWARDED_HOST', - 'HTTP_MAX_FORWARDS', - 'HTTP_X_FORWARDED_SERVER', - 'REDIRECT_STATUS', - 'SERVER_PORT', - 'PATH', - 'DOCUMENT_ROOT', - 'SERVER_ADMIN', - 'QUERY_STRING', - 'PHP_SELF' - ); - - var $blogUrl = ""; - var $apiKey = ""; - var $comment = array(); - - - /** - * Constructor - * - * Set instance variables, connect to Akismet, and check API key - * - * @param String $blogUrl The URL to your own blog - * @param String $apiKey Your wordpress API key - * @param String[] $comment A formatted comment array to be examined by the Akismet service - */ - function Akismet($blogUrl, $apiKey, $comment) { - $this->blogUrl = $blogUrl; - $this->apiKey = $apiKey; - - // Populate the comment array with information needed by Akismet - $this->comment = $comment; - $this->_formatCommentArray(); - - if(!isset($this->comment['user_ip'])) { - $this->comment['user_ip'] = ($_SERVER['REMOTE_ADDR'] != getenv('SERVER_ADDR')) ? $_SERVER['REMOTE_ADDR'] : getenv('HTTP_X_FORWARDED_FOR'); - } - if(!isset($this->comment['user_agent'])) { - $this->comment['user_agent'] = $_SERVER['HTTP_USER_AGENT']; - } - if(!isset($this->comment['referrer'])) { - $this->comment['referrer'] = $_SERVER['HTTP_REFERER']; - } - $this->comment['blog'] = $blogUrl; - - // Connect to the Akismet server and populate errors if they exist - $this->http = new AkismetHttpClient($this->akismetServer, $blogUrl, $apiKey); - if($this->http->errorsExist()) { - $this->errors = array_merge($this->errors, $this->http->getErrors()); - } - - // Check if the API key is valid - if(!$this->_isValidApiKey($apiKey)) { - $this->setError(AKISMET_INVALID_KEY, "Your Akismet API key is not valid."); - } - } - - - /** - * Query the Akismet and determine if the comment is spam or not - * - * @return boolean - */ - function isSpam() { - $response = $this->http->getResponse($this->_getQueryString(), 'comment-check'); - - return ($response == "true"); - } - - - /** - * Submit this comment as an unchecked spam to the Akismet server - * - * @return void - */ - function submitSpam() { - $this->http->getResponse($this->_getQueryString(), 'submit-spam'); - } - - - /** - * Submit a false-positive comment as "ham" to the Akismet server - * - * @return void - */ - function submitHam() { - $this->http->getResponse($this->_getQueryString(), 'submit-ham'); - } - - - /** - * Check with the Akismet server to determine if the API key is valid - * - * @access Protected - * @param String $key The Wordpress API key passed from the constructor argument - * @return boolean - */ - function _isValidApiKey($key) { - $keyCheck = $this->http->getResponse("key=".$this->apiKey."&blog=".$this->blogUrl, 'verify-key'); - - return ($keyCheck == "valid"); - } - - - /** - * Format the comment array in accordance to the Akismet API - * - * @access Protected - * @return void - */ - function _formatCommentArray() { - $format = array( - 'type' => 'comment_type', - 'author' => 'comment_author', - 'email' => 'comment_author_email', - 'website' => 'comment_author_url', - 'body' => 'comment_content' - ); - - foreach($format as $short => $long) { - if(isset($this->comment[$short])) { - $this->comment[$long] = $this->comment[$short]; - unset($this->comment[$short]); - } - } - } - - - /** - * Build a query string for use with HTTP requests - * - * @access Protected - * @return String - */ - function _getQueryString() { - foreach($_SERVER as $key => $value) { - if(!in_array($key, $this->ignore)) { - if($key == 'REMOTE_ADDR') { - $this->comment[$key] = $this->comment['user_ip']; - } else { - $this->comment[$key] = $value; - } - } - } - - $query_string = ''; - - foreach($this->comment as $key => $data) { - if(is_string($data)) { - $query_string .= $key . '=' . urlencode(stripslashes($data)) . '&'; - } - } - - return $query_string; - } - - -} -?> +Usage + * + * $comment = array( + * 'author' => 'viagra-test-123', + * 'email' => 'test@example.com', + * 'website' => 'http://www.example.com/', + * 'body' => 'This is a test comment', + * 'permalink' => 'http://yourdomain.com/yourblogpost.url', + * ); + * + * $akismet = new Akismet('http://www.yourdomain.com/', 'YOUR_WORDPRESS_API_KEY', $comment); + * + * if($akismet->isError()) { + * echo"Couldn't connected to Akismet server!"; + * } else { + * if($akismet->isSpam()) { + * echo"Spam detected"; + * } else { + * echo"yay, no spam!"; + * } + * } + * + * + * @author Bret Kuhns {@link www.miphp.net} + * @link http://www.miphp.net/blog/view/php4_akismet_class/ + * @version 0.3.3 + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ + + + +// Error constants +define("AKISMET_SERVER_NOT_FOUND", 0); +define("AKISMET_RESPONSE_FAILED", 1); +define("AKISMET_INVALID_KEY", 2); + + + +// Base class to assist in error handling between Akismet classes +class AkismetObject { + var $errors = array(); + + + /** + * Add a new error to the errors array in the object + * + * @param String $name A name (array key) for the error + * @param String $string The error message + * @return void + */ + // Set an error in the object + function setError($name, $message) { + $this->errors[$name] = $message; + } + + + /** + * Return a specific error message from the errors array + * + * @param String $name The name of the error you want + * @return mixed Returns a String if the error exists, a false boolean if it does not exist + */ + function getError($name) { + if($this->isError($name)) { + return $this->errors[$name]; + } else { + return false; + } + } + + + /** + * Return all errors in the object + * + * @return String[] + */ + function getErrors() { + return (array)$this->errors; + } + + + /** + * Check if a certain error exists + * + * @param String $name The name of the error you want + * @return boolean + */ + function isError($name) { + return isset($this->errors[$name]); + } + + + /** + * Check if any errors exist + * + * @return boolean + */ + function errorsExist() { + return (count($this->errors) > 0); + } + + +} + + + + + +// Used by the Akismet class to communicate with the Akismet service +class AkismetHttpClient extends AkismetObject { + var $akismetVersion = '1.1'; + var $con; + var $host; + var $port; + var $apiKey; + var $blogUrl; + var $errors = array(); + + + // Constructor + function AkismetHttpClient($host, $blogUrl, $apiKey, $port = 80) { + $this->host = $host; + $this->port = $port; + $this->blogUrl = $blogUrl; + $this->apiKey = $apiKey; + } + + + // Use the connection active in $con to get a response from the server and return that response + function getResponse($request, $path, $type = "post", $responseLength = 1160) { + $this->_connect(); + + if($this->con && !$this->isError(AKISMET_SERVER_NOT_FOUND)) { + $request = + strToUpper($type)." /{$this->akismetVersion}/$path HTTP/1.1\r\n" . + "Host: ".((!empty($this->apiKey)) ? $this->apiKey."." : null)."{$this->host}\r\n" . + "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n" . + "Content-Length: ".strlen($request)."\r\n" . + "User-Agent: Akismet PHP4 Class\r\n" . + "\r\n" . + $request + ; + $response = ""; + + @fwrite($this->con, $request); + + while(!feof($this->con)) { + $response .= @fgets($this->con, $responseLength); + } + + $response = explode("\r\n\r\n", $response, 2); + return $response[1]; + } else { + $this->setError(AKISMET_RESPONSE_FAILED, "The response could not be retrieved."); + } + + $this->_disconnect(); + } + + + // Connect to the Akismet server and store that connection in the instance variable $con + function _connect() { + if(!($this->con = @fsockopen($this->host, $this->port))) { + $this->setError(AKISMET_SERVER_NOT_FOUND, "Could not connect to akismet server."); + } + } + + + // Close the connection to the Akismet server + function _disconnect() { + @fclose($this->con); + } + + +} + + + + + +// The controlling class. This is the ONLY class the user should instantiate in +// order to use the Akismet service! +class Akismet extends AkismetObject { + var $apiPort = 80; + var $akismetServer = 'rest.akismet.com'; + var $akismetVersion = '1.1'; + var $http; + + var $ignore = array( + 'HTTP_COOKIE', + 'HTTP_X_FORWARDED_FOR', + 'HTTP_X_FORWARDED_HOST', + 'HTTP_MAX_FORWARDS', + 'HTTP_X_FORWARDED_SERVER', + 'REDIRECT_STATUS', + 'SERVER_PORT', + 'PATH', + 'DOCUMENT_ROOT', + 'SERVER_ADMIN', + 'QUERY_STRING', + 'PHP_SELF' + ); + + var $blogUrl = ""; + var $apiKey = ""; + var $comment = array(); + + + /** + * Constructor + * + * Set instance variables, connect to Akismet, and check API key + * + * @param String $blogUrl The URL to your own blog + * @param String $apiKey Your wordpress API key + * @param String[] $comment A formatted comment array to be examined by the Akismet service + */ + function Akismet($blogUrl, $apiKey, $comment) { + $this->blogUrl = $blogUrl; + $this->apiKey = $apiKey; + + // Populate the comment array with information needed by Akismet + $this->comment = $comment; + $this->_formatCommentArray(); + + if(!isset($this->comment['user_ip'])) { + $this->comment['user_ip'] = ($_SERVER['REMOTE_ADDR'] != getenv('SERVER_ADDR')) ? $_SERVER['REMOTE_ADDR'] : getenv('HTTP_X_FORWARDED_FOR'); + } + if(!isset($this->comment['user_agent'])) { + $this->comment['user_agent'] = $_SERVER['HTTP_USER_AGENT']; + } + if(!isset($this->comment['referrer'])) { + $this->comment['referrer'] = $_SERVER['HTTP_REFERER']; + } + $this->comment['blog'] = $blogUrl; + + // Connect to the Akismet server and populate errors if they exist + $this->http = new AkismetHttpClient($this->akismetServer, $blogUrl, $apiKey); + if($this->http->errorsExist()) { + $this->errors = array_merge($this->errors, $this->http->getErrors()); + } + + // Check if the API key is valid + if(!$this->_isValidApiKey($apiKey)) { + $this->setError(AKISMET_INVALID_KEY, "Your Akismet API key is not valid."); + } + } + + + /** + * Query the Akismet and determine if the comment is spam or not + * + * @return boolean + */ + function isSpam() { + $response = $this->http->getResponse($this->_getQueryString(), 'comment-check'); + + return ($response == "true"); + } + + + /** + * Submit this comment as an unchecked spam to the Akismet server + * + * @return void + */ + function submitSpam() { + $this->http->getResponse($this->_getQueryString(), 'submit-spam'); + } + + + /** + * Submit a false-positive comment as "ham" to the Akismet server + * + * @return void + */ + function submitHam() { + $this->http->getResponse($this->_getQueryString(), 'submit-ham'); + } + + + /** + * Check with the Akismet server to determine if the API key is valid + * + * @access Protected + * @param String $key The Wordpress API key passed from the constructor argument + * @return boolean + */ + function _isValidApiKey($key) { + $keyCheck = $this->http->getResponse("key=".$this->apiKey."&blog=".$this->blogUrl, 'verify-key'); + + return ($keyCheck == "valid"); + } + + + /** + * Format the comment array in accordance to the Akismet API + * + * @access Protected + * @return void + */ + function _formatCommentArray() { + $format = array( + 'type' => 'comment_type', + 'author' => 'comment_author', + 'email' => 'comment_author_email', + 'website' => 'comment_author_url', + 'body' => 'comment_content' + ); + + foreach($format as $short => $long) { + if(isset($this->comment[$short])) { + $this->comment[$long] = $this->comment[$short]; + unset($this->comment[$short]); + } + } + } + + + /** + * Build a query string for use with HTTP requests + * + * @access Protected + * @return String + */ + function _getQueryString() { + foreach($_SERVER as $key => $value) { + if(!in_array($key, $this->ignore)) { + if($key == 'REMOTE_ADDR') { + $this->comment[$key] = $this->comment['user_ip']; + } else { + $this->comment[$key] = $value; + } + } + } + + $query_string = ''; + + foreach($this->comment as $key => $data) { + if(is_string($data)) { + $query_string .= $key . '=' . urlencode(stripslashes($data)) . '&'; + } + } + + return $query_string; + } + + +} +?> diff --git a/themes/danbooru/layout.class.php b/themes/danbooru/layout.class.php index e76164c5..41801a9c 100644 --- a/themes/danbooru/layout.class.php +++ b/themes/danbooru/layout.class.php @@ -1,218 +1,218 @@ - -* Link: http://trac.shishnet.org/shimmie2/ -* License: GPLv2 -* Description: This is a simple theme changing the css to make shimme -* look more like danbooru as well as adding a custom links -* bar and title to the top of every page. -*/ -//Small changes added by zshall -//Changed CSS and layout to make shimmie look even more like danbooru -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -Danbooru Theme - Notes (Bzchan) - -Files: default.php, sidebar.js, style.css - -How to use a theme -- Copy the danbooru folder with all its contained files into the "themes" - directory in your shimmie installation. -- Log into your shimmie and change the Theme in the Board Config to your - desired theme. - -Changes in this theme include -- Adding and editing various elements in the style.css file. -- $site_name and $front_name retreival from config added. -- $custom_link and $title_link preparation just before html is outputed. -- Altered outputed html to include the custom links and removed heading - from being displayed (subheading is still displayed) -- Note that only the sidebar has been left aligned. Could not properly - left align the main block because blocks without headers currently do - not have ids on there div elements. (this was a problem because - paginator block must be centered and everything else left aligned) - -Tips -- You can change custom links to point to whatever pages you want as well as adding - more custom links. -- The main title link points to the Front Page set in your Board Config options. -- The text of the main title is the Title set in your Board Config options. -- Themes make no changes to your database or main code files so you can switch - back and forward to other themes all you like. - -* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -class Layout { - public function display_page($page) { - global $config; - - $theme_name = $config->get_string('theme'); - $base_href = $config->get_string('base_href'); - $data_href = get_base_href(); - $contact_link = $config->get_string('contact_link'); - $version = "Shimmie-".VERSION; - - - $header_html = ""; - foreach($page->headers as $line) { - $header_html .= "\t\t$line\n"; - } - - $left_block_html = ""; - $user_block_html = ""; - $main_block_html = ""; - - foreach($page->blocks as $block) { - switch($block->section) { - case "left": - $left_block_html .= $this->block_to_html($block, true); - break; - case "user": - $user_block_html .= $block->body; // $this->block_to_html($block, true); - break; - case "main": - if($block->header == "Images") { - $block->header = " "; - } - $main_block_html .= $this->block_to_html($block, false); - break; - default: - print "

error: {$block->header} using an unknown section ({$block->section})"; - break; - } - } - - $debug = get_debug_info(); - - $contact = empty($contact_link) ? "" : "
Contact"; - - if(empty($this->subheading)) { - $subheading = ""; - } - else { - $subheading = "

{$this->subheading}
"; - } - - $site_name = $config->get_string('title'); // bzchan: change from normal default to get title for top of page - $main_page = $config->get_string('main_page'); // bzchan: change from normal default to get main page for top of page - - // bzchan: CUSTOM LINKS are prepared here, change these to whatever you like - $custom_links = ""; - $custom_links .= "
  • My Account
  • "; - $custom_links .= "
  • Posts
  • "; - $custom_links .= "
  • Comments
  • "; - $custom_links .= "
  • Tags
  • "; - $custom_links .= "
  • Upload
  • "; - $custom_links .= "
  • Wiki
  • "; - $custom_links .= "
  • More »
  • "; - - $custom_sublinks = ""; - // hack - global $user; - $username = url_escape($user->name); - // hack - $qp = _get_query_parts(); - // php sucks - switch($qp[0]) { - default: - $custom_sublinks .= $user_block_html; - break; - case "post": - case "comment": - case "upload": - $custom_sublinks .= "
  • All
  • "; - $custom_sublinks .= "
  • My Favorites
  • "; - $custom_sublinks .= "
  • Help
  • "; - break; - case "wiki": - $custom_sublinks .= "
  • Index
  • "; - $custom_sublinks .= "
  • Rules
  • "; - $custom_sublinks .= "
  • Help
  • "; - break; - case "tags": - $custom_sublinks .= "
  • Map
  • "; - $custom_sublinks .= "
  • Alphabetic
  • "; - $custom_sublinks .= "
  • Popularity
  • "; - $custom_sublinks .= "
  • Categories
  • "; - $custom_sublinks .= "
  • Aliases
  • "; - $custom_sublinks .= "
  • Help
  • "; - break; - } - - // bzchan: failed attempt to add heading after title_link (failure was it looked bad) - //if($this->heading==$site_name)$this->heading = ''; - //$title_link = "

    $site_name/$this->heading

    "; - - // bzchan: prepare main title link - $title_link = "

    $site_name

    "; - - if($page->left_enabled) { - $left = ""; - $withleft = "withleft"; - } - else { - $left = ""; - $withleft = "noleft"; - } - - print << - - - {$page->title} - - -$header_html - - - - - - - $subheading - - $left -
    $main_block_html
    - - - - -EOD; - } - - function block_to_html($block, $hidable=false) { - $h = $block->header; - $s = $block->section; - $b = $block->body; - $html = ""; - if($hidable) { - $i = str_replace(' ', '_', $h.$s); - if(!is_null($h)) $html .= "\n

    $h

    \n"; - if(!is_null($b)) $html .= "
    $b
    \n"; - } - else { - $i = str_replace(' ', '_', $h.$s); - if(!is_null($h)) $html .= "\n

    $h

    \n"; - if(!is_null($b)) $html .= "
    $b
    \n"; - } - return $html; - } -} -?> + +* Link: http://trac.shishnet.org/shimmie2/ +* License: GPLv2 +* Description: This is a simple theme changing the css to make shimme +* look more like danbooru as well as adding a custom links +* bar and title to the top of every page. +*/ +//Small changes added by zshall +//Changed CSS and layout to make shimmie look even more like danbooru +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +Danbooru Theme - Notes (Bzchan) + +Files: default.php, sidebar.js, style.css + +How to use a theme +- Copy the danbooru folder with all its contained files into the "themes" + directory in your shimmie installation. +- Log into your shimmie and change the Theme in the Board Config to your + desired theme. + +Changes in this theme include +- Adding and editing various elements in the style.css file. +- $site_name and $front_name retreival from config added. +- $custom_link and $title_link preparation just before html is outputed. +- Altered outputed html to include the custom links and removed heading + from being displayed (subheading is still displayed) +- Note that only the sidebar has been left aligned. Could not properly + left align the main block because blocks without headers currently do + not have ids on there div elements. (this was a problem because + paginator block must be centered and everything else left aligned) + +Tips +- You can change custom links to point to whatever pages you want as well as adding + more custom links. +- The main title link points to the Front Page set in your Board Config options. +- The text of the main title is the Title set in your Board Config options. +- Themes make no changes to your database or main code files so you can switch + back and forward to other themes all you like. + +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +class Layout { + public function display_page($page) { + global $config; + + $theme_name = $config->get_string('theme'); + $base_href = $config->get_string('base_href'); + $data_href = get_base_href(); + $contact_link = $config->get_string('contact_link'); + $version = "Shimmie-".VERSION; + + + $header_html = ""; + foreach($page->headers as $line) { + $header_html .= "\t\t$line\n"; + } + + $left_block_html = ""; + $user_block_html = ""; + $main_block_html = ""; + + foreach($page->blocks as $block) { + switch($block->section) { + case "left": + $left_block_html .= $this->block_to_html($block, true); + break; + case "user": + $user_block_html .= $block->body; // $this->block_to_html($block, true); + break; + case "main": + if($block->header == "Images") { + $block->header = " "; + } + $main_block_html .= $this->block_to_html($block, false); + break; + default: + print "

    error: {$block->header} using an unknown section ({$block->section})"; + break; + } + } + + $debug = get_debug_info(); + + $contact = empty($contact_link) ? "" : "
    Contact"; + + if(empty($this->subheading)) { + $subheading = ""; + } + else { + $subheading = "

    {$this->subheading}
    "; + } + + $site_name = $config->get_string('title'); // bzchan: change from normal default to get title for top of page + $main_page = $config->get_string('main_page'); // bzchan: change from normal default to get main page for top of page + + // bzchan: CUSTOM LINKS are prepared here, change these to whatever you like + $custom_links = ""; + $custom_links .= "
  • My Account
  • "; + $custom_links .= "
  • Posts
  • "; + $custom_links .= "
  • Comments
  • "; + $custom_links .= "
  • Tags
  • "; + $custom_links .= "
  • Upload
  • "; + $custom_links .= "
  • Wiki
  • "; + $custom_links .= "
  • More »
  • "; + + $custom_sublinks = ""; + // hack + global $user; + $username = url_escape($user->name); + // hack + $qp = _get_query_parts(); + // php sucks + switch($qp[0]) { + default: + $custom_sublinks .= $user_block_html; + break; + case "post": + case "comment": + case "upload": + $custom_sublinks .= "
  • All
  • "; + $custom_sublinks .= "
  • My Favorites
  • "; + $custom_sublinks .= "
  • Help
  • "; + break; + case "wiki": + $custom_sublinks .= "
  • Index
  • "; + $custom_sublinks .= "
  • Rules
  • "; + $custom_sublinks .= "
  • Help
  • "; + break; + case "tags": + $custom_sublinks .= "
  • Map
  • "; + $custom_sublinks .= "
  • Alphabetic
  • "; + $custom_sublinks .= "
  • Popularity
  • "; + $custom_sublinks .= "
  • Categories
  • "; + $custom_sublinks .= "
  • Aliases
  • "; + $custom_sublinks .= "
  • Help
  • "; + break; + } + + // bzchan: failed attempt to add heading after title_link (failure was it looked bad) + //if($this->heading==$site_name)$this->heading = ''; + //$title_link = "

    $site_name/$this->heading

    "; + + // bzchan: prepare main title link + $title_link = "

    $site_name

    "; + + if($page->left_enabled) { + $left = ""; + $withleft = "withleft"; + } + else { + $left = ""; + $withleft = "noleft"; + } + + print << + + + {$page->title} + + +$header_html + + + + + + + $subheading + + $left +
    $main_block_html
    + + + + +EOD; + } + + function block_to_html($block, $hidable=false) { + $h = $block->header; + $s = $block->section; + $b = $block->body; + $html = ""; + if($hidable) { + $i = str_replace(' ', '_', $h.$s); + if(!is_null($h)) $html .= "\n

    $h

    \n"; + if(!is_null($b)) $html .= "
    $b
    \n"; + } + else { + $i = str_replace(' ', '_', $h.$s); + if(!is_null($h)) $html .= "\n

    $h

    \n"; + if(!is_null($b)) $html .= "
    $b
    \n"; + } + return $html; + } +} +?>