dos2unix and some other changes...

This commit is contained in:
Shish 2009-12-24 07:36:09 +00:00
parent 1c7ce5a3ac
commit 12745b9309
4 changed files with 3054 additions and 2842 deletions

View File

@ -129,7 +129,11 @@ class Artists implements Extension {
$artistName = $author; $artistName = $author;
} }
$database->execute("UPDATE images SET author = ? WHERE id = ?", array($artistName, $event->image->id)); $database->execute("UPDATE images SET author = ? WHERE id = ?"
, array(
mysql_real_escape_string($artistName)
, $event->image->id
));
} }
public function handle_commands($event) public function handle_commands($event)
{ {
@ -220,8 +224,6 @@ class Artists implements Extension {
$members = $this->get_members($artistID); $members = $this->get_members($artistID);
$urls = $this->get_urls($artistID); $urls = $this->get_urls($artistID);
if(!$user->is_anonymous()){ if(!$user->is_anonymous()){
$this->theme->show_artist_editor($artist, $aliases, $members, $urls); $this->theme->show_artist_editor($artist, $aliases, $members, $urls);
@ -418,17 +420,19 @@ class Artists implements Extension {
private function get_artistName_by_imageID($imageID) private function get_artistName_by_imageID($imageID)
{ {
if(!is_numeric($imageID)) return null;
global $database; global $database;
$result = $database->get_row("SELECT author FROM images WHERE id = ?", array($imageID)); $result = $database->get_row("SELECT author FROM images WHERE id = ?", array($imageID));
return $result['author']; return stripslashes($result['author']);
} }
private function url_exists_by_url($url) private function url_exists_by_url($url)
{ {
global $database; global $database;
$result = $database->db->GetOne("SELECT COUNT(1) FROM artist_urls WHERE url = ?", array($url)); $result = $database->db->GetOne("SELECT COUNT(1) FROM artist_urls WHERE url = ?", array(mysql_real_escape_string($url)));
return ($result != 0); return ($result != 0);
} }
@ -436,7 +440,7 @@ class Artists implements Extension {
{ {
global $database; global $database;
$result = $database->db->GetOne("SELECT COUNT(1) FROM artist_members WHERE name = ?", array($member)); $result = $database->db->GetOne("SELECT COUNT(1) FROM artist_members WHERE name = ?", array(mysql_real_escape_string($member)));
return ($result != 0); return ($result != 0);
} }
@ -444,39 +448,48 @@ class Artists implements Extension {
{ {
global $database; global $database;
$result = $database->db->GetOne("SELECT COUNT(1) FROM artist_alias WHERE alias = ?", array($alias)); $result = $database->db->GetOne("SELECT COUNT(1) FROM artist_alias WHERE alias = ?", array(mysql_real_escape_string($alias)));
return ($result != 0); return ($result != 0);
} }
private function alias_exists($artistID, $alias){ private function alias_exists($artistID, $alias){
if (!is_numeric($artistID)) return;
global $database; global $database;
$result = $database->db->GetOne("SELECT COUNT(1) FROM artist_alias WHERE artist_id = ? AND alias = ?", array($artistID, $alias)); $result = $database->db->GetOne("SELECT COUNT(1) FROM artist_alias WHERE artist_id = ? AND alias = ?", array(
$artistID
, mysql_real_escape_string($alias)
));
return ($result != 0); return ($result != 0);
} }
private function get_artistID_by_url($url) private function get_artistID_by_url($url)
{ {
global $database; global $database;
$result = $database->get_row("SELECT artist_id FROM artist_urls WHERE url = ?", array($url)); $result = $database->get_row("SELECT artist_id FROM artist_urls WHERE url = ?", array(mysql_real_escape_string($url)));
return $result['artist_id']; return $result['artist_id'];
} }
private function get_artistID_by_memberName($member) private function get_artistID_by_memberName($member)
{ {
global $database; global $database;
$result = $database->get_row("SELECT artist_id FROM artist_members WHERE name = ?", array($member)); $result = $database->get_row("SELECT artist_id FROM artist_members WHERE name = ?", array(mysql_real_escape_string($member)));
return $result['artist_id']; return $result['artist_id'];
} }
private function get_artistName_by_artistID($artistID) private function get_artistName_by_artistID($artistID)
{ {
if (!is_numeric($artistID)) return;
global $database; global $database;
$result = $database->get_row("SELECT name FROM artists WHERE id = ?", array($artistID)); $result = $database->get_row("SELECT name FROM artists WHERE id = ?", array($artistID));
return $result['name']; return stripslashes($result['name']);
} }
private function get_artistID_by_aliasID($aliasID) private function get_artistID_by_aliasID($aliasID)
{ {
if (!is_numeric($aliasID)) return;
global $database; global $database;
$result = $database->get_row("SELECT artist_id FROM artist_alias WHERE id = ?", array($aliasID)); $result = $database->get_row("SELECT artist_id FROM artist_alias WHERE id = ?", array($aliasID));
return $result['artist_id']; return $result['artist_id'];
@ -484,6 +497,8 @@ class Artists implements Extension {
private function get_artistID_by_memberID($memberID) private function get_artistID_by_memberID($memberID)
{ {
if (!is_numeric($memberID)) return;
global $database; global $database;
$result = $database->get_row("SELECT artist_id FROM artist_members WHERE id = ?", array($memberID)); $result = $database->get_row("SELECT artist_id FROM artist_members WHERE id = ?", array($memberID));
return $result['artist_id']; return $result['artist_id'];
@ -491,6 +506,8 @@ class Artists implements Extension {
private function get_artistID_by_urlID($urlID) private function get_artistID_by_urlID($urlID)
{ {
if (!is_numeric($urlID)) return;
global $database; global $database;
$result = $database->get_row("SELECT artist_id FROM artist_urls WHERE id = ?", array($urlID)); $result = $database->get_row("SELECT artist_id FROM artist_urls WHERE id = ?", array($urlID));
return $result['artist_id']; return $result['artist_id'];
@ -498,18 +515,24 @@ class Artists implements Extension {
private function delete_alias($aliasID) private function delete_alias($aliasID)
{ {
if (!is_numeric($aliasID)) return;
global $database; global $database;
$database->execute("DELETE FROM artist_alias WHERE id = ?", array($aliasID)); $database->execute("DELETE FROM artist_alias WHERE id = ?", array($aliasID));
} }
private function delete_url($urlID) private function delete_url($urlID)
{ {
if (!is_numeric($urlID)) return;
global $database; global $database;
$database->execute("DELETE FROM artist_urls WHERE id = ?", array($urlID)); $database->execute("DELETE FROM artist_urls WHERE id = ?", array($urlID));
} }
private function delete_member($memberID) private function delete_member($memberID)
{ {
if (!is_numeric($memberID)) return;
global $database; global $database;
$database->execute("DELETE FROM artist_members WHERE id = ?", array($memberID)); $database->execute("DELETE FROM artist_members WHERE id = ?", array($memberID));
} }
@ -517,20 +540,38 @@ class Artists implements Extension {
private function get_alias_by_id($aliasID) private function get_alias_by_id($aliasID)
{ {
if (!is_numeric($aliasID)) return;
global $database; global $database;
return $database->get_row("SELECT * FROM artist_alias WHERE id = ?", array($aliasID)); $result = $database->get_row("SELECT * FROM artist_alias WHERE id = ?", array($aliasID));
$result["alias"] = stripslashes($result["alias"]);
return $result;
} }
private function get_url_by_id($urlID) private function get_url_by_id($urlID)
{ {
if (!is_numeric($urlID)) return;
global $database; global $database;
return $database->get_row("SELECT * FROM artist_urls WHERE id = ?", array($urlID)); $result = $database->get_row("SELECT * FROM artist_urls WHERE id = ?", array($urlID));
$result["url"] = stripslashes($result["url"]);
return $result;
} }
private function get_member_by_id($memberID) private function get_member_by_id($memberID)
{ {
if (!is_numeric($memberID)) return;
global $database; global $database;
return $database->get_row("SELECT * FROM artist_members WHERE id = ?", array($memberID)); $result = $database->get_row("SELECT * FROM artist_members WHERE id = ?", array($memberID));
$result["name"] = stripslashes($result["name"]);
return $result;
} }
private function update_artist() private function update_artist()
@ -541,41 +582,55 @@ class Artists implements Extension {
$notes = $_POST['notes']; $notes = $_POST['notes'];
$userID = $user->id; $userID = $user->id;
$aliasesAsString = $_POST["aliases"]; $aliasesAsString = trim($_POST["aliases"]);
$aliasesIDsAsString = $_POST["aliasesIDs"]; if (strlen($aliasesAsString) == 0) $aliasesAsString = NULL;
$aliasesIDsAsString = trim($_POST["aliasesIDs"]);
if (strlen($aliasesIDsAsString) == 0) $aliasesIDsAsString = NULL;
$membersAsString = $_POST["members"]; $membersAsString = trim($_POST["members"]);
$membersIDsAsString = $_POST["membersIDs"]; if (strlen($membersAsString) == 0) $membersAsString = NULL;
$membersIDsAsString = trim($_POST["membersIDs"]);
if (strlen($membersIDsAsString) == 0) $membersIDsAsString = NULL;
$urlsAsString = $_POST["urls"]; $urlsAsString = trim($_POST["urls"]);
$urlsIDsAsString = $_POST["urlsIDs"]; if (strlen($urlsAsString) == 0) $urlsAsString = NULL;
$urlsIDsAsString = trim($_POST["urlsIDs"]);
if (strlen($urlsIDsAsString) == 0) $urlsIDsAsString = NULL;
if (is_null($artistID) || !is_numeric($artistID)) if (is_null($artistID) || !is_numeric($artistID))
return; return;
if (is_null($userID) || !is_numeric($userID))
return;
if (is_null($name) || strlen($name) == 0 || strpos($name, " ")) if (is_null($name) || strlen($name) == 0 || strpos($name, " "))
return; return;
if (is_null($aliasesAsString) || is_null($aliasesIDsAsString)) //if (is_null($aliasesAsString) || is_null($aliasesIDsAsString))
return; // return;
if (is_null($membersAsString) || is_null($membersIDsAsString)) //if (is_null($membersAsString) || is_null($membersIDsAsString))
return; // return;
if (is_null($urlsAsString) || is_null($urlsIDsAsString)) //if (is_null($urlsAsString) || is_null($urlsIDsAsString))
return; // return;
if (strlen($notes) == 0) if (strlen($notes) == 0)
$notes = NULL; $notes = NULL;
global $database; global $database;
$database->execute("UPDATE artists SET name = ?, notes = ?, updated = now(), user_id = ? WHERE id = ? " $database->execute("UPDATE artists SET name = ?, notes = ?, updated = now(), user_id = ? WHERE id = ? "
, array($name, $notes, $userID, $artistID)); , array(
mysql_real_escape_string($name)
, mysql_real_escape_string($notes)
, $userID
, $artistID
));
// ALIAS MATCHING SECTION // ALIAS MATCHING SECTION
$i = 0; $i = 0;
$aliasesAsArray = explode(" ", $aliasesAsString); $aliasesAsArray = is_null($aliasesAsString) ? array() : explode(" ", $aliasesAsString);
$aliasesIDsAsArray = explode(" ", $aliasesIDsAsString); $aliasesIDsAsArray = is_null($aliasesIDsAsString) ? array() : explode(" ", $aliasesIDsAsString);
while ($i < count($aliasesAsArray)) while ($i < count($aliasesAsArray))
{ {
// if an alias was updated // if an alias was updated
@ -594,8 +649,8 @@ class Artists implements Extension {
// MEMBERS MATCHING SECTION // MEMBERS MATCHING SECTION
$i = 0; $i = 0;
$membersAsArray = explode(" ", $membersAsString); $membersAsArray = is_null($membersAsString) ? array() : explode(" ", $membersAsString);
$membersIDsAsArray = explode(" ", $membersIDsAsString); $membersIDsAsArray = is_null($membersIDsAsString) ? array() : explode(" ", $membersIDsAsString);
while ($i < count($membersAsArray)) while ($i < count($membersAsArray))
{ {
// if a member was updated // if a member was updated
@ -614,19 +669,26 @@ class Artists implements Extension {
// URLS MATCHING SECTION // URLS MATCHING SECTION
$i = 0; $i = 0;
$urlsAsArray = explode("\n", $urlsAsString); $urlsAsString = str_replace("\r\n", "\n", $urlsAsString);
$urlsIDsAsArray = explode(" ", $urlsIDsAsString); $urlsAsString = str_replace("\n\r", "\n", $urlsAsString);
$urlsAsArray = is_null($urlsAsString) ? array() : explode("\n", $urlsAsString);
$urlsIDsAsArray = is_null($urlsIDsAsString) ? array() : explode(" ", $urlsIDsAsString);
while ($i < count($urlsAsArray)) while ($i < count($urlsAsArray))
{ {
// if an URL was updated // if an URL was updated
if ($i < count($urlsIDsAsArray)) if ($i < count($urlsIDsAsArray))
{
// save it // save it
$this->save_existing_url($urlsIDsAsArray[$i], $urlsAsArray[$i], $userID); $this->save_existing_url($urlsIDsAsArray[$i], $urlsAsArray[$i], $userID);
}
else else
{
$this->save_new_url($artistID, $urlsAsArray[$i], $userID); $this->save_new_url($artistID, $urlsAsArray[$i], $userID);
}
$i++; $i++;
} }
// if we have more ids than urls, then some urls have been deleted -- delete them from db // if we have more ids than urls, then some urls have been deleted -- delete them from db
while ($i < count($urlsIDsAsArray)) while ($i < count($urlsIDsAsArray))
$this->delete_url($urlsIDsAsArray[$i++]); $this->delete_url($urlsIDsAsArray[$i++]);
@ -649,9 +711,16 @@ class Artists implements Extension {
private function save_existing_alias($aliasID, $alias, $userID) private function save_existing_alias($aliasID, $alias, $userID)
{ {
if (!is_numeric($userID)) return;
if (!is_numeric($aliasID)) return;
global $database; global $database;
$database->execute("UPDATE artist_alias SET alias = ?, updated = now(), user_id = ? WHERE id = ? " $database->execute("UPDATE artist_alias SET alias = ?, updated = now(), user_id = ? WHERE id = ? "
, array($alias, $userID, $aliasID)); , array(
mysql_real_escape_string($alias)
, $userID
, $aliasID
));
} }
private function update_url() private function update_url()
@ -671,9 +740,16 @@ class Artists implements Extension {
private function save_existing_url($urlID, $url, $userID) private function save_existing_url($urlID, $url, $userID)
{ {
if (!is_numeric($userID)) return;
if (!is_numeric($urlID)) return;
global $database; global $database;
$database->execute("UPDATE artist_urls SET url = ?, updated = now(), user_id = ? WHERE id = ?" $database->execute("UPDATE artist_urls SET url = ?, updated = now(), user_id = ? WHERE id = ?"
, array($url, $userID, $urlID)); , array(
mysql_real_escape_string($url)
, $userID
, $urlID
));
} }
private function update_member() private function update_member()
@ -693,10 +769,17 @@ class Artists implements Extension {
private function save_existing_member($memberID, $memberName, $userID) private function save_existing_member($memberID, $memberName, $userID)
{ {
if (!is_numeric($memberID)) return;
if (!is_numeric($userID)) return;
global $database; global $database;
$database->execute("UPDATE artist_members SET name = ?, updated = now(), user_id = ? WHERE id = ?" $database->execute("UPDATE artist_members SET name = ?, updated = now(), user_id = ? WHERE id = ?"
, array($memberName, $userID, $memberID)); , array(
mysql_real_escape_string($memberName)
, $userID
, $memberID
));
} }
/* /*
@ -747,6 +830,10 @@ class Artists implements Extension {
if (strlen($urls)) if (strlen($urls))
{ {
//delete double "separators"
$urls = str_replace("\r\n", "\n", $urls);
$urls = str_replace("\n\r", "\n", $urls);
$urlsArray = explode("\n", $urls); $urlsArray = explode("\n", $urls);
foreach ($urlsArray as $url) foreach ($urlsArray as $url)
if (!$this->url_exists($artistID, $url)) if (!$this->url_exists($artistID, $url))
@ -764,7 +851,11 @@ class Artists implements Extension {
(user_id, name, notes, created, updated) (user_id, name, notes, created, updated)
VALUES VALUES
(?, ?, ?, now(), now())", (?, ?, ?, now(), now())",
array($user->id, $name, $notes)); array(
$user->id
, mysql_real_escape_string($name)
, mysql_real_escape_string($notes)
));
$result = $database->get_row("SELECT LAST_INSERT_ID() AS artistID", array()); $result = $database->get_row("SELECT LAST_INSERT_ID() AS artistID", array());
@ -777,7 +868,10 @@ class Artists implements Extension {
private function artist_exists($name){ private function artist_exists($name){
global $database; global $database;
$result = $database->db->GetOne("SELECT COUNT(1) FROM artists WHERE name = ?", array($name)); $result = $database->db->GetOne("SELECT COUNT(1) FROM artists WHERE name = ?"
, array(
mysql_real_escape_string($name)
));
return ($result != 0); return ($result != 0);
} }
@ -785,19 +879,54 @@ class Artists implements Extension {
* HERE WE GET THE INFO OF THE ARTIST * HERE WE GET THE INFO OF THE ARTIST
*/ */
private function get_artist($artistID){ private function get_artist($artistID){
if (!is_numeric($artistID)) return;
global $database; global $database;
return $database->get_row("SELECT * FROM artists WHERE id = ?", array($artistID)); $result = $database->get_row("SELECT * FROM artists WHERE id = ?",
array(
$artistID
));
$result["name"] = stripslashes($result["name"]);
$result["notes"] = stripslashes($result["notes"]);
return $result;
} }
private function get_members($artistID) private function get_members($artistID)
{ {
if (!is_numeric($artistID)) return;
global $database; global $database;
return $database->get_all("SELECT * FROM artist_members WHERE artist_id = ?", array($artistID)); $result = $database->get_all("SELECT * FROM artist_members WHERE artist_id = ?"
, array(
$artistID
));
for ($i = 0 ; $i < count($result) ; $i++)
{
$result[$i]["name"] = stripslashes($result[$i]["name"]);
}
return $result;
} }
private function get_urls($artistID) private function get_urls($artistID)
{ {
if (!is_numeric($artistID)) return;
global $database; global $database;
return $database->get_all("SELECT id, url FROM artist_urls WHERE artist_id = ?", array($artistID)); $result = $database->get_all("SELECT id, url FROM artist_urls WHERE artist_id = ?"
, array(
$artistID
));
for ($i = 0 ; $i < count($result) ; $i++)
{
$result[$i]["url"] = stripslashes($result[$i]["url"]);
}
return $result;
} }
/* /*
@ -805,7 +934,10 @@ class Artists implements Extension {
*/ */
private function get_artist_id($name){ private function get_artist_id($name){
global $database; global $database;
$artistID = $database->get_row("SELECT id FROM artists WHERE name = ?", array($name)); $artistID = $database->get_row("SELECT id FROM artists WHERE name = ?"
, array(
mysql_real_escape_string($name)
));
return $artistID['id']; return $artistID['id'];
} }
@ -813,7 +945,10 @@ class Artists implements Extension {
{ {
global $database; global $database;
$artistID = $database->get_row("SELECT artist_id FROM artist_alias WHERE alias = ?", array($alias)); $artistID = $database->get_row("SELECT artist_id FROM artist_alias WHERE alias = ?"
, array(
mysql_real_escape_string($alias)
));
return $artistID["artist_id"]; return $artistID["artist_id"];
} }
@ -823,8 +958,13 @@ class Artists implements Extension {
*/ */
private function delete_artist($artistID) private function delete_artist($artistID)
{ {
if (!is_numeric($artistID)) return;
global $database; global $database;
$database->execute("DELETE FROM artists WHERE id = ? ", array($artistID)); $database->execute("DELETE FROM artists WHERE id = ? "
, array(
$artistID
));
} }
@ -892,7 +1032,17 @@ class Artists implements Extension {
) )
ORDER BY updated DESC ORDER BY updated DESC
LIMIT ?, ? LIMIT ?, ?
", array($pageNumber * $artistsPerPage, $artistsPerPage)); ", array(
$pageNumber * $artistsPerPage
, $artistsPerPage
));
for ($i = 0 ; $i < count($listing) ; $i++)
{
$listing[$i]["name"] = stripslashes($listing[$i]["name"]);
$listing[$i]["user_name"] = stripslashes($listing[$i]["user_name"]);
$listing[$i]["artist_name"] = stripslashes($listing[$i]["artist_name"]);
}
$count = $database->db->GetOne( $count = $database->db->GetOne(
"SELECT COUNT(1) "SELECT COUNT(1)
@ -933,9 +1083,16 @@ class Artists implements Extension {
private function save_new_url($artistID, $url, $userID) private function save_new_url($artistID, $url, $userID)
{ {
if (!is_numeric($artistID)) return;
if (!is_numeric($userID)) return;
global $database; global $database;
$database->execute("INSERT INTO artist_urls (artist_id, created, updated, url, user_id) VALUES (?, now(), now(), ?, ?)" $database->execute("INSERT INTO artist_urls (artist_id, created, updated, url, user_id) VALUES (?, now(), now(), ?, ?)"
, array($artistID, $url, $userID)); , array(
$artistID
, mysql_real_escape_string($url)
, $userID
));
} }
private function add_alias() private function add_alias()
@ -960,9 +1117,16 @@ class Artists implements Extension {
private function save_new_alias($artistID, $alias, $userID) private function save_new_alias($artistID, $alias, $userID)
{ {
if (!is_numeric($artistID)) return;
if (!is_numeric($userID)) return;
global $database; global $database;
$database->execute("INSERT INTO artist_alias (artist_id, created, updated, alias, user_id) VALUES (?, now(), now(), ?, ?)" $database->execute("INSERT INTO artist_alias (artist_id, created, updated, alias, user_id) VALUES (?, now(), now(), ?, ?)"
, array($artistID, $alias, $userID)); , array(
$artistID
, mysql_real_escape_string($alias)
, $userID
));
} }
private function add_members() private function add_members()
@ -986,24 +1150,43 @@ class Artists implements Extension {
private function save_new_member($artistID, $member, $userID) private function save_new_member($artistID, $member, $userID)
{ {
if (!is_numeric($artistID)) return;
if (!is_numeric($userID)) return;
global $database; global $database;
$database->execute("INSERT INTO artist_members (artist_id, name, created, updated, user_id) VALUES (?, ?, now(), now(), ?)" $database->execute("INSERT INTO artist_members (artist_id, name, created, updated, user_id) VALUES (?, ?, now(), now(), ?)"
, array($artistID, $member, $userID)); , array(
$artistID
, mysql_real_escape_string($member)
, $userID
));
} }
private function member_exists($artistID, $member) private function member_exists($artistID, $member)
{ {
if (!is_numeric($artistID)) return;
global $database; global $database;
$result = $database->db->GetOne("SELECT COUNT(1) FROM artist_members WHERE artist_id = ? AND name = ?", array($artistID, $member)); $result = $database->db->GetOne("SELECT COUNT(1) FROM artist_members WHERE artist_id = ? AND name = ?"
, array(
$artistID
, mysql_real_escape_string($member)
));
return ($result != 0); return ($result != 0);
} }
private function url_exists($artistID, $url) private function url_exists($artistID, $url)
{ {
if (!is_numeric($artistID)) return;
global $database; global $database;
$result = $database->db->GetOne("SELECT COUNT(1) FROM artist_urls WHERE artist_id = ? AND url = ?", array($artistID, $url)); $result = $database->db->GetOne("SELECT COUNT(1) FROM artist_urls WHERE artist_id = ? AND url = ?"
, array(
$artistID
, mysql_real_escape_string($url)
));
return ($result != 0); return ($result != 0);
} }
@ -1011,13 +1194,21 @@ class Artists implements Extension {
* HERE WE GET THE INFO OF THE ALIAS * HERE WE GET THE INFO OF THE ALIAS
*/ */
private function get_alias($artistID){ private function get_alias($artistID){
if (!is_numeric($artistID)) return;
global $database; global $database;
return $database->get_all("SELECT id AS alias_id, alias AS alias_name ". $result = $database->get_all("SELECT id AS alias_id, alias AS alias_name ".
"FROM artist_alias ". "FROM artist_alias ".
"WHERE artist_id = ? ". "WHERE artist_id = ? ".
"ORDER BY alias ASC" "ORDER BY alias ASC"
, array($artistID)); , array($artistID));
for ($i = 0 ; $i < count($result) ; $i++)
{
$result[$i]["alias_name"] = stripslashes($result[$i]["alias_name"]);
}
return $result;
} }
} }
add_event_listener(new Artists()); add_event_listener(new Artists());

View File

@ -264,7 +264,7 @@ class Notes extends SimpleExtension {
$noteY1 = int_escape($_POST["note_y1"]); $noteY1 = int_escape($_POST["note_y1"]);
$noteHeight = int_escape($_POST["note_height"]); $noteHeight = int_escape($_POST["note_height"]);
$noteWidth = int_escape($_POST["note_width"]); $noteWidth = int_escape($_POST["note_width"]);
$noteText = html_escape($_POST["note_text"]); $noteText = mysql_real_escape_string(html_escape($_POST["note_text"]));
$database->execute(" $database->execute("
INSERT INTO notes INSERT INTO notes
@ -313,13 +313,13 @@ class Notes extends SimpleExtension {
*/ */
private function update_note() private function update_note()
{ {
$imageID = $_POST["image_id"]; $imageID = int_escape($_POST["image_id"]);
$noteID = $_POST["note_id"]; $noteID = int_escape($_POST["note_id"]);
$noteX1 = $_POST["note_x1"]; $noteX1 = int_escape($_POST["note_x1"]);
$noteY1 = $_POST["note_y1"]; $noteY1 = int_escape($_POST["note_y1"]);
$noteHeight = $_POST["note_height"]; $noteHeight = int_escape($_POST["note_height"]);
$noteWidth = $_POST["note_width"]; $noteWidth = int_escape($_POST["note_width"]);
$noteText = $_POST["note_text"]; $noteText = mysql_real_escape_string(html_escape($_POST["note_text"]));
// validate parameters // validate parameters
if(is_null($imageID) || !is_numeric($imageID)) if(is_null($imageID) || !is_numeric($imageID))
@ -362,8 +362,8 @@ class Notes extends SimpleExtension {
*/ */
private function delete_note() private function delete_note()
{ {
$imageID = $_POST["image_id"]; $imageID = int_escape($_POST["image_id"]);
$noteID = $_POST["note_id"]; $noteID = int_escape($_POST["note_id"]);
// validate parameters // validate parameters
if(is_null($imageID) || !is_numeric($imageID)) if(is_null($imageID) || !is_numeric($imageID))

View File

@ -7,10 +7,8 @@
* Documentation: * Documentation:
*/ */
class PoolCreationException extends SCoreException {
}
class Pools extends SimpleExtension { class Pools extends SimpleExtension {
public function onInitExt($event) { public function onInitExt($event) {
global $config, $database; global $config, $database;
@ -85,23 +83,18 @@ class Pools extends SimpleExtension {
} }
case "create": // ADD _POST case "create": // ADD _POST
{ {
try { if(!$user->is_anonymous()){
if($user->is_anonymous()) {
throw new PoolCreationException("You must be registered and logged in to add a image.");
}
$newPoolID = $this->add_pool(); $newPoolID = $this->add_pool();
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("pool/view/".$newPoolID)); $page->set_redirect(make_link("pool/view/".$newPoolID.""));
} } else {
catch(PoolCreationException $ex) { $this->theme->display_error("You must be registered and logged in to add a image.");
$this->theme->display_error($ex->getMessage());
} }
break; break;
} }
case "view": case "view":
{ {
$poolID = int_escape($event->get_arg(1)); $poolID = $event->get_arg(1);
$this->get_posts($event, $poolID); $this->get_posts($event, $poolID);
break; break;
} }
@ -113,7 +106,7 @@ class Pools extends SimpleExtension {
case "revert": case "revert":
{ {
if(!$user->is_anonymous()) { if(!$user->is_anonymous()) {
$historyID = int_escape($event->get_arg(1)); $historyID = $event->get_arg(1);
$this->revert_history($historyID); $this->revert_history($historyID);
@ -124,7 +117,7 @@ class Pools extends SimpleExtension {
} }
case "edit": case "edit":
{ {
$poolID = int_escape($event->get_arg(1)); $poolID = $event->get_arg(1);
$pools = $this->get_pool($poolID); $pools = $this->get_pool($poolID);
foreach($pools as $pool) { foreach($pools as $pool) {
@ -133,7 +126,7 @@ class Pools extends SimpleExtension {
$this->theme->edit_pool($page, $this->get_pool($poolID), $this->edit_posts($poolID)); $this->theme->edit_pool($page, $this->get_pool($poolID), $this->edit_posts($poolID));
} else { } else {
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("pool/view/".$poolID)); $page->set_redirect(make_link("pool/view/".$poolID.""));
} }
} }
break; break;
@ -142,12 +135,12 @@ class Pools extends SimpleExtension {
{ {
$poolID = int_escape($_POST["pool_id"]); $poolID = int_escape($_POST["pool_id"]);
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("pool/edit/".$poolID)); $page->set_redirect(make_link("pool/edit/".$poolID.""));
break; break;
} }
case "order": case "order":
{ {
$poolID = int_escape($event->get_arg(1)); $poolID = $event->get_arg(1);
$pools = $this->get_pool($poolID); $pools = $this->get_pool($poolID);
foreach($pools as $pool) { foreach($pools as $pool) {
@ -156,7 +149,7 @@ class Pools extends SimpleExtension {
$this->theme->edit_order($page, $this->get_pool($poolID), $this->edit_order($poolID)); $this->theme->edit_order($page, $this->get_pool($poolID), $this->edit_order($poolID));
} else { } else {
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("pool/view/".$poolID)); $page->set_redirect(make_link("pool/view/".$poolID.""));
} }
} }
break; break;
@ -165,7 +158,7 @@ class Pools extends SimpleExtension {
{ {
$poolID = int_escape($_POST["pool_id"]); $poolID = int_escape($_POST["pool_id"]);
$page->set_mode("redirect"); $page->set_mode("redirect");
$page->set_redirect(make_link("pool/order/".$poolID)); $page->set_redirect(make_link("pool/order/".$poolID.""));
break; break;
} }
case "import": case "import":
@ -225,7 +218,7 @@ class Pools extends SimpleExtension {
} }
case "nuke": case "nuke":
{ {
$pool_id = int_escape($event->get_arg(1)); $pool_id = $event->get_arg(1);
$pool = $this->get_single_pool($pool_id); $pool = $this->get_single_pool($pool_id);
// only admins and owners may do this // only admins and owners may do this
@ -269,7 +262,7 @@ class Pools extends SimpleExtension {
foreach ($poolsIDs as $poolID){ foreach ($poolsIDs as $poolID){
$pools = $this->get_pool($poolID['pool_id']); $pools = $this->get_pool($poolID['pool_id']);
foreach ($pools as $pool){ foreach ($pools as $pool){
$linksPools .= "<a href='".make_link("pool/view/".$pool['id'])."'>".$pool['title']."</a>, "; $linksPools .= "<a href='".make_link("pool/view/".$pool['id']."")."'>".$pool['title']."</a>, ";
} }
} }
$linksPools = substr($linksPools, 0, -2); $linksPools = substr($linksPools, 0, -2);
@ -285,7 +278,7 @@ class Pools extends SimpleExtension {
private function list_pools(Page $page, $event){ private function list_pools(Page $page, $event){
global $config, $database; global $config, $database;
$pageNumber = int_escape($event->get_arg(1)); $pageNumber = $event->get_arg(1);
if(is_null($pageNumber) || !is_numeric($pageNumber)) if(is_null($pageNumber) || !is_numeric($pageNumber))
$pageNumber = 0; $pageNumber = 0;
else if ($pageNumber <= 0) else if ($pageNumber <= 0)
@ -319,15 +312,13 @@ class Pools extends SimpleExtension {
global $user, $database; global $user, $database;
$public = html_escape($_POST["public"]); $public = html_escape($_POST["public"]);
$title = html_escape(trim($_POST["title"])); $title = mysql_real_escape_string(html_escape($_POST["title"]));
$description = html_escape(trim($_POST["description"])); $description = mysql_real_escape_string(html_escape($_POST["description"]));
if($public == "") { if($public <> "Y"){
$public = "N"; $public = "N";
} }
if(empty($title)) throw new PoolCreationException("Pool must have a title");
$database->execute(" $database->execute("
INSERT INTO pools INSERT INTO pools
(user_id, public, title, description, date) (user_id, public, title, description, date)
@ -335,7 +326,7 @@ class Pools extends SimpleExtension {
(?, ?, ?, ?, now())", (?, ?, ?, ?, now())",
array($user->id, $public, $title, $description)); array($user->id, $public, $title, $description));
$result = $database->get_row("SELECT LAST_INSERT_ID() AS poolID"); $result = $database->get_row("SELECT LAST_INSERT_ID() AS poolID", array());
log_info("pools", "Pool {$result["poolID"]} created by {$user->name}"); log_info("pools", "Pool {$result["poolID"]} created by {$user->name}");
@ -348,7 +339,8 @@ class Pools extends SimpleExtension {
return $database->get_all("SELECT * FROM pools WHERE id=?", array($poolID)); return $database->get_all("SELECT * FROM pools WHERE id=?", array($poolID));
} }
private function get_single_pool($poolID) { private function get_single_pool($poolID)
{
global $database; global $database;
$poolID = int_escape($poolID); $poolID = int_escape($poolID);
return $database->get_row("SELECT * FROM pools WHERE id=?", array($poolID)); return $database->get_row("SELECT * FROM pools WHERE id=?", array($poolID));
@ -372,11 +364,11 @@ class Pools extends SimpleExtension {
global $page, $config, $database; global $page, $config, $database;
$pool_id = int_escape($_POST["pool_id"]); $pool_id = int_escape($_POST["pool_id"]);
$pool_tag = html_escape($_POST["pool_tag"]);; $pool_tag = mysql_real_escape_string(html_escape($_POST["pool_tag"]));
$poolsMaxResults = $config->get_int("poolsMaxImportResults", 1000); $poolsMaxResults = $config->get_int("poolsMaxImportResults", 1000);
$images = Image::find_images(0, $poolsMaxResults, Tag::explode($pool_tag)); $images = $images = Image::find_images(0, $poolsMaxResults, Tag::explode($pool_tag));
$this->theme->pool_result($page, $images, $pool_id); $this->theme->pool_result($page, $images, $pool_id);
} }
@ -392,6 +384,7 @@ class Pools extends SimpleExtension {
$images = ""; $images = "";
foreach ($_POST['check'] as $imageID){ foreach ($_POST['check'] as $imageID){
if(!$this->check_post($poolID, $imageID)){ if(!$this->check_post($poolID, $imageID)){
$database->execute(" $database->execute("
INSERT INTO pool_images INSERT INTO pool_images
@ -402,6 +395,7 @@ class Pools extends SimpleExtension {
$images .= " ".$imageID; $images .= " ".$imageID;
} }
} }
if(!strlen($images) == 0){ if(!strlen($images) == 0){
@ -441,6 +435,7 @@ class Pools extends SimpleExtension {
foreach ($_POST['check'] as $imageID){ foreach ($_POST['check'] as $imageID){
$database->execute("DELETE FROM pool_images WHERE pool_id = ? AND image_id = ?", array($poolID, $imageID)); $database->execute("DELETE FROM pool_images WHERE pool_id = ? AND image_id = ?", array($poolID, $imageID));
$images .= " ".$imageID; $images .= " ".$imageID;
} }
@ -473,7 +468,7 @@ class Pools extends SimpleExtension {
private function get_posts($event, $poolID){ private function get_posts($event, $poolID){
global $config, $user, $database; global $config, $user, $database;
$pageNumber = int_esscape($event->get_arg(2)); $pageNumber = $event->get_arg(2);
if(is_null($pageNumber) || !is_numeric($pageNumber)) if(is_null($pageNumber) || !is_numeric($pageNumber))
$pageNumber = 0; $pageNumber = 0;
else if ($pageNumber <= 0) else if ($pageNumber <= 0)
@ -486,7 +481,7 @@ class Pools extends SimpleExtension {
$imagesPerPage = $config->get_int("poolsImagesPerPage"); $imagesPerPage = $config->get_int("poolsImagesPerPage");
// WE CHECK IF THE EXTENSION RATING IS INSTALLED, WICH VERSION AND IF IT WORKS TO SHOW/HIDE SAFE, QUESTIONABLE, EXPLICIT AND UNRATED IMAGES FROM USER // WE CHECK IF THE EXTENSION RATING IS INSTALLED, WICH VERSION AND IF IT WORKS TO SHOW/HIDE SAFE, QUESTIONABLE, EXPLICIT AND UNRATED IMAGES FROM USER
if(class_exists("Ratings") && $config->get_int("ext_ratings2_version") < 3) { if($config->get_int("ext_ratings2_version") < 3) {
$result = $database->get_all("SELECT image_id ". $result = $database->get_all("SELECT image_id ".
"FROM pool_images ". "FROM pool_images ".
"WHERE pool_id=? ". "WHERE pool_id=? ".
@ -496,18 +491,31 @@ class Pools extends SimpleExtension {
$totalPages = ceil($database->db->GetOne("SELECT COUNT(*) FROM pool_images WHERE pool_id=?",array($poolID)) / $imagesPerPage); $totalPages = ceil($database->db->GetOne("SELECT COUNT(*) FROM pool_images WHERE pool_id=?",array($poolID)) / $imagesPerPage);
} }
if(class_exists("Ratings") && $config->get_int("ext_ratings2_version") >= 3) { if($config->get_int("ext_ratings2_version") >= 3) {
$rating = Ratings::privs_to_sql(Ratings::get_user_privs($user)); if($user->is_anonymous()) {
$sqes = $config->get_string("ext_rating_anon_privs");
}
else if($user->is_admin()) {
$sqes = $config->get_string("ext_rating_admin_privs");
}
else {
$sqes = $config->get_string("ext_rating_user_privs");
}
$arr = array();
for($i=0; $i<strlen($sqes); $i++) {
$arr[] = "'" . $sqes[$i] . "'";
}
$rating = join(', ', $arr);
$result = $database->get_all("SELECT p.image_id $result = $database->get_all("SELECT p.image_id ".
FROM pool_images AS p "FROM pool_images AS p ".
INNER JOIN images AS i "INNER JOIN images AS i ".
ON i.id = p.image_id "ON i.id = p.image_id ".
WHERE p.pool_id = ? "WHERE p.pool_id = ? ".
AND i.rating IN ($rating) "AND i.rating IN ($rating) ".
ORDER BY p.image_order ASC "ORDER BY p.image_order ASC ".
LIMIT ?, ?", "LIMIT ?, ?"
array($poolID, $pageNumber * $imagesPerPage, $imagesPerPage)); , array($poolID, $pageNumber * $imagesPerPage, $imagesPerPage));
$totalPages = ceil($database->db->GetOne("SELECT COUNT(*) ". $totalPages = ceil($database->db->GetOne("SELECT COUNT(*) ".
"FROM pool_images AS p ". "FROM pool_images AS p ".
@ -663,7 +671,8 @@ class Pools extends SimpleExtension {
global $database; global $database;
$status = $database->get_all("SELECT * FROM pool_history WHERE id=?", array($historyID)); $status = $database->get_all("SELECT * FROM pool_history WHERE id=?", array($historyID));
foreach ($status as $entry) { foreach ($status as $entry)
{
$images = trim($entry['images']); $images = trim($entry['images']);
$images = explode(" ", $images); $images = explode(" ", $images);
$poolID = $entry['pool_id']; $poolID = $entry['pool_id'];

View File

@ -20,7 +20,8 @@ class PoolsTheme extends Themelet {
/* /*
* HERE WE SHOWS THE LIST OF POOLS * HERE WE SHOWS THE LIST OF POOLS
*/ */
public function list_pools(Page $page, $pools, $pageNumber, $totalPages) { public function list_pools(Page $page, $pools, $pageNumber, $totalPages)
{
global $user; global $user;
$html = '<table id="poolsList" class="zebra">'. $html = '<table id="poolsList" class="zebra">'.
@ -36,7 +37,8 @@ class PoolsTheme extends Themelet {
$html .= "</tr></thead>"; $html .= "</tr></thead>";
$n = 0; $n = 0;
foreach ($pools as $pool) { foreach ($pools as $pool)
{
$oe = ($n++ % 2 == 0) ? "even" : "odd"; $oe = ($n++ % 2 == 0) ? "even" : "odd";
$pool_link = '<a href="'.make_link("pool/view/".$pool['id']).'">'.$pool['title']."</a>"; $pool_link = '<a href="'.make_link("pool/view/".$pool['id']).'">'.$pool['title']."</a>";
@ -63,9 +65,6 @@ class PoolsTheme extends Themelet {
} }
if(!$user->is_anonymous()) {
$html .= "<tfoot><tr><td colspan='5'><a href='".make_link("pool/new")."'>Create New</a></td></tr></tfoot>";
}
$html .= "</tbody></table>"; $html .= "</tbody></table>";
$blockTitle = "Pools"; $blockTitle = "Pools";
@ -81,13 +80,14 @@ class PoolsTheme extends Themelet {
/* /*
* HERE WE DISPLAY THE NEW POOL COMPOSER * HERE WE DISPLAY THE NEW POOL COMPOSER
*/ */
public function new_pool_composer(Page $page) { public function new_pool_composer(Page $page)
{
$html = "<form action=".make_link("pool/create")." method='POST'> $html = "<form action=".make_link("pool/create")." method='POST'>
<table> <table>
<tr><td>Title:</td><td><input type='text' name='title'></td></tr> <tr><td>Title:</td><td><input type='text' name='title'></td></tr>
<tr><td>Public?</td><td><input name='public' type='checkbox' value='Y' checked='checked'/></td></tr> <tr><td>Public?</td><td><input name='public' type='checkbox' value='Y' checked='checked'/></td></tr>
<tr><td>Description:</td><td><textarea name='description'></textarea></td></tr> <tr><td>Description:</td><td><textarea name='description'></textarea></td></tr>
<tr><td colspan='2'><input type='submit' value='Create' /></td></tr> <tr><td colspan='2'><input type='submit' value='Submit' /></td></tr>
</table> </table>
"; ";
@ -102,7 +102,8 @@ class PoolsTheme extends Themelet {
/* /*
* HERE WE DISPLAY THE POOL WITH TITLE DESCRIPTION AND IMAGES WITH PAGINATION * HERE WE DISPLAY THE POOL WITH TITLE DESCRIPTION AND IMAGES WITH PAGINATION
*/ */
public function view_pool($pools, $images, $pageNumber, $totalPages) { public function view_pool($pools, $images, $pageNumber, $totalPages)
{
global $user, $page; global $user, $page;
$pool_info = "<table id='poolsList' class='zebra'>". $pool_info = "<table id='poolsList' class='zebra'>".
@ -112,7 +113,8 @@ class PoolsTheme extends Themelet {
"</tr></thead>"; "</tr></thead>";
$n = 0; $n = 0;
foreach ($pools as $pool) { foreach ($pools as $pool)
{
$oe = ($n++ % 2 == 0) ? "even" : "odd"; $oe = ($n++ % 2 == 0) ? "even" : "odd";
$pool_info .= "<tr class='$oe'>". $pool_info .= "<tr class='$oe'>".
@ -126,21 +128,14 @@ class PoolsTheme extends Themelet {
$this->sidebar_options($page, $pool); $this->sidebar_options($page, $pool);
} }
} }
$this->display_paginator($page, "pool/view/".$pool['id'], null, $pageNumber, $totalPages); $this->display_paginator($page, "pool/view/".$pool['id']."", null, $pageNumber, $totalPages);
} }
$pool_info .= "</tbody></table>"; $pool_info .= "</tbody></table>";
if(count($pools) == 1) {
$page->set_title("Pool: ".html_escape($pool['title']));
$page->set_heading(html_escape($pool['title']));
$page->add_block(new Block("Viewing Pool", $pool_info, "main", 10));
}
else {
$page->set_title("Viewing Pool"); $page->set_title("Viewing Pool");
$page->set_heading("Viewing Pool"); $page->set_heading("Viewing Pool");
$page->add_block(new Block("Viewing Pool", $pool_info, "main", 10)); $page->add_block(new Block("Viewing Pool", $pool_info, "main", 10));
}
$pool_images = ''; $pool_images = '';
foreach($images as $pair) { foreach($images as $pair) {
@ -271,7 +266,8 @@ class PoolsTheme extends Themelet {
* HERE WE DISPLAY THE POOL ORDERER * HERE WE DISPLAY THE POOL ORDERER
* WE LIST ALL IMAGES ON POOL WITHOUT PAGINATION AND WITH A TEXT INPUT TO SET A NUMBER AND CHANGE THE ORDER * WE LIST ALL IMAGES ON POOL WITHOUT PAGINATION AND WITH A TEXT INPUT TO SET A NUMBER AND CHANGE THE ORDER
*/ */
public function edit_order(Page $page, $pools, $images) { public function edit_order(Page $page, $pools, $images)
{
global $user; global $user;
$pool_info = "<table id='poolsList' class='zebra'>". $pool_info = "<table id='poolsList' class='zebra'>".
@ -282,7 +278,8 @@ class PoolsTheme extends Themelet {
$n = 0; $n = 0;
foreach ($pools as $pool) { foreach ($pools as $pool)
{
$oe = ($n++ % 2 == 0) ? "even" : "odd"; $oe = ($n++ % 2 == 0) ? "even" : "odd";
$pool_info .= "<tr class='$oe'>". $pool_info .= "<tr class='$oe'>".
@ -301,12 +298,17 @@ class PoolsTheme extends Themelet {
$n = 0; $n = 0;
foreach($images as $pair) { foreach($images as $pair) {
$image = $pair[0]; $image = $pair[0];
$thumb_html = $this->build_thumb_html($image); $thumb_html = $this->build_thumb_html($image);
$pool_images .= '<span class="thumb">'. $pool_images .= '<span class="thumb">'.
'<a href="$image_link">'.$thumb_html.'</a>'; '<a href="$image_link">'.$thumb_html.'</a>';
$pool_images .= '<br><input name="imgs['.$n.'][]" type="text" width="50px" value="'.$image->image_order.'" />'.
$pool_images .= '<br><input name="imgs['.$n.'][]" type="text" style="max-width:50px;" value="'.$image->image_order.'" />'.
'<input name="imgs['.$n.'][]" type="hidden" value="'.$image->id.'" />'; '<input name="imgs['.$n.'][]" type="hidden" value="'.$image->id.'" />';
$n = $n+1; $n = $n+1;
$pool_images .= '</span>'; $pool_images .= '</span>';
} }
@ -324,7 +326,8 @@ class PoolsTheme extends Themelet {
* HERE WE DISPLAY THE POOL EDITOR * HERE WE DISPLAY THE POOL EDITOR
* WE LIST ALL IMAGES ON POOL WITHOUT PAGINATION AND WITH A CHECKBOX TO SELECT WHICH IMAGE WE WANT REMOVE * WE LIST ALL IMAGES ON POOL WITHOUT PAGINATION AND WITH A CHECKBOX TO SELECT WHICH IMAGE WE WANT REMOVE
*/ */
public function edit_pool(Page $page, $pools, $images) { public function edit_pool(Page $page, $pools, $images)
{
global $user; global $user;
$pool_info = "<table id='poolsList' class='zebra'>". $pool_info = "<table id='poolsList' class='zebra'>".
@ -335,7 +338,8 @@ class PoolsTheme extends Themelet {
$n = 0; $n = 0;
foreach ($pools as $pool) { foreach ($pools as $pool)
{
$oe = ($n++ % 2 == 0) ? "even" : "odd"; $oe = ($n++ % 2 == 0) ? "even" : "odd";
$pool_info .= "<tr class='$oe'>". $pool_info .= "<tr class='$oe'>".
@ -374,16 +378,23 @@ class PoolsTheme extends Themelet {
} }
} }
</script> </script>
"; ";
$pool_images .= "<form action='".make_link("pool/remove_posts")."' method='POST' name='checks'>"; $pool_images .= "<form action='".make_link("pool/remove_posts")."' method='POST' name='checks'>";
foreach($images as $pair) { foreach($images as $pair) {
$image = $pair[0]; $image = $pair[0];
$thumb_html = $this->build_thumb_html($image); $thumb_html = $this->build_thumb_html($image);
$pool_images .= '<span class="thumb">'. $pool_images .= '<span class="thumb">'.
'<a href="$image_link">'.$thumb_html.'</a>'; '<a href="$image_link">'.$thumb_html.'</a>';
$pool_images .= '<br><input name="check[]" type="checkbox" value="'.$image->id.'" />'; $pool_images .= '<br><input name="check[]" type="checkbox" value="'.$image->id.'" />';
$pool_images .= '</span>'; $pool_images .= '</span>';
} }
@ -419,7 +430,8 @@ class PoolsTheme extends Themelet {
"</tr></thead>"; "</tr></thead>";
$n = 0; $n = 0;
foreach ($histories as $history) { foreach ($histories as $history)
{
$oe = ($n++ % 2 == 0) ? "even" : "odd"; $oe = ($n++ % 2 == 0) ? "even" : "odd";
$pool_link = "<a href='".make_link("pool/view/".$history['pool_id'])."'>".$history['title']."</a>"; $pool_link = "<a href='".make_link("pool/view/".$history['pool_id'])."'>".$history['title']."</a>";