diff options
Diffstat (limited to 'lib/deck')
-rw-r--r-- | lib/deck/add.php | 5 | ||||
-rw-r--r-- | lib/deck/addent.php | 46 | ||||
-rw-r--r-- | lib/deck/edent.php | 44 | ||||
-rw-r--r-- | lib/deck/edit.php | 42 | ||||
-rw-r--r-- | lib/deck/index.php | 25 | ||||
-rw-r--r-- | lib/deck/mvent.php | 32 | ||||
-rw-r--r-- | lib/deck/new.php | 32 | ||||
-rw-r--r-- | lib/deck/rment.php | 18 | ||||
-rw-r--r-- | lib/deck/view.php | 34 |
9 files changed, 278 insertions, 0 deletions
diff --git a/lib/deck/add.php b/lib/deck/add.php new file mode 100644 index 0000000..d7f8e9f --- /dev/null +++ b/lib/deck/add.php @@ -0,0 +1,5 @@ +<?php + +$title = "olol"; +$message = 'Placeholder. Go to <a href="deck">study decks</a>.'; +require("tpl/general/empty.php"); diff --git a/lib/deck/addent.php b/lib/deck/addent.php new file mode 100644 index 0000000..a860df1 --- /dev/null +++ b/lib/deck/addent.php @@ -0,0 +1,46 @@ +<?php + +require("lib/markdown.php"); + +assert_redir(count($args) == 3, 'deck'); +$deckid = intval($args[2]); + +$deck = mysql_fetch_assoc(sql( + "SELECT decks.id AS id, decks.name AS name, decks.comment_md AS comment, decks.owner AS owner_id ". + "FROM decks ". + "WHERE decks.id = $deckid")); +assert_error($deck && $deck['owner_id'] == $user['id'], + "This deck does not exist, or you are not allowed to edit it."); + +$card_name = ""; +$card_text = ""; +if (isset($_POST['name']) && isset($_POST['text'])) { + $card_name = esca($_POST['name']); + $card_text = esca($_POST['text']); + $card_text_html = Markdown($card_text); + if ($card_name == "") { + $error = "You must give your card a name."; + } else if ($card_text == "") { + $error = "You must put some text in your card."; + } else if (mysql_fetch_assoc(sql("SELECT id FROM cards WHERE deck = $deckid AND name = '" . escs($card_name)."'"))) { + $error = "You already have a card using that name."; + } else { + $n = mysql_fetch_assoc(sql("SELECT MAX(number) AS n FROM cards WHERE deck = $deckid")); + $number = $n['n'] + 1; + sql( + "INSERT INTO cards(deck, number, name, text_md, text_html) ". + "VALUES($deckid, $number, '" . escs($card_name) . "', '" . escs($card_text) . "', '" . escs($card_text_html). "')"); + header("Location: view-deck-$deckid"); + die(); + } +} + +$title = "Add card to " . $deck['name']; +$message = "Your card will be added at the end of the deck. You can always move it afterwards."; +$fields = array( + array("label" => "Name : ", "name" => "name", "value" => $card_name), + array("label" => "Text : ", "name" => "text", "type" => "textarea", "value" => $card_text), +); +$validate = "Add card"; + +require("tpl/deck/ef.php"); diff --git a/lib/deck/edent.php b/lib/deck/edent.php new file mode 100644 index 0000000..8bdfac3 --- /dev/null +++ b/lib/deck/edent.php @@ -0,0 +1,44 @@ +<?php + +require("lib/markdown.php"); + +assert_redir(count($args) == 3, 'deck'); +$cardid = intval($args[2]); + +$card = mysql_fetch_assoc(sql( + "SELECT decks.id AS deckid, decks.owner AS deckowner, decks.name AS deckname, cards.name AS name, cards.text_md AS text ". + "FROM cards LEFT JOIN decks ON decks.id = cards.deck ". + "WHERE cards.id = $cardid")); +assert_error($card && $card["deckowner"] == $user['id'], + "This card does not exist, or you are not allowed to edit it."); +$deck = array("id" => $card['deckid'], 'name' => $card['deckname']); + +$card_name = $card['name']; +$card_text = $card['text']; +if (isset($_POST['name']) && isset($_POST['text'])) { + $card_name = esca($_POST['name']); + $card_text = esca($_POST['text']); + $card_text_html = Markdown($card_text); + if ($card_name == "") { + $error = "You must give your card a name."; + } else if ($card_text == "") { + $error = "You must put some text in your card."; + } else if (mysql_fetch_assoc(sql("SELECT id FROM cards WHERE deck = " . $deck['id'] . " AND name = '" . escs($card_name)."' AND id != $cardid"))) { + $error = "You already have a card using that name."; + } else { + sql("UPDATE cards SET name = '" . escs($card_name) . "', text_md = '" . escs($card_text) . "', text_html = '" . escs($card_text_html) . "'" . + " WHERE id = $cardid"); + header("Location: view-deck-" . $deck['id']); + die(); + } +} + +$title = "Edit card in " . $deck['name']; +$fields = array( + array("label" => "Name : ", "name" => "name", "value" => $card_name), + array("label" => "Text : ", "name" => "text", "type" => "textarea", "value" => $card_text), +); +$validate = "Edit card"; + +require("tpl/deck/ef.php"); + diff --git a/lib/deck/edit.php b/lib/deck/edit.php new file mode 100644 index 0000000..3d893a2 --- /dev/null +++ b/lib/deck/edit.php @@ -0,0 +1,42 @@ +<?php + +require("lib/markdown.php"); + +assert_redir(count($args) == 3, 'deck'); +$deckid = intval($args[2]); + +$deck = mysql_fetch_assoc(sql( + "SELECT decks.id AS id, decks.name AS name, decks.comment_md AS comment, account.id AS owner_id ". + "FROM decks LEFT JOIN account ON account.id = decks.owner ". + "WHERE decks.id = $deckid")); +assert_error($deck && $deck['owner_id'] == $user['id'], + "This deck does not exist, or you are not allowed to edit it."); + +$deck_name = $deck['name']; +$deck_comment = $deck['comment']; +if (isset($_POST['name']) && isset($_POST['comment'])) { + $deck_name = esca($_POST['name']); + $deck_comment = esca($_POST['comment']); + $deck_comment_html = Markdown($deck_comment); + if ($deck_name == "") { + $error = "You must enter a name for your deck."; + } else if (mysql_fetch_assoc(sql("SELECT id FROM decks WHERE owner = " . $user['id'] . " AND name = '" . escs($deck_name) . "' AND id != $deckid"))) { + $error = "You already have a deck with that title."; + } else if ($deck_comment == "") { + $error = "Please enter a comment on your deck."; + } else { + sql("UPDATE decks SET name = '" . escs($deck_name) . "', comment_md = '" . escs($deck_comment) . + "', comment_html = '" . escs($deck_comment_html) . "' WHERE id = $deckid"); + header("Location: view-deck-" . $deckid); + die(); + } +} + +$title = "Edit : " . $deck['name']; +$fields = array( + array("label" => "Name : ", "name" => "name", "value" => $deck_name), + array("label" => "Comment : ", "name" => "comment", "type" => "textarea", "value" => $deck_comment), +); +$validate = "Edit deck"; + +require("tpl/deck/ef.php"); diff --git a/lib/deck/index.php b/lib/deck/index.php new file mode 100644 index 0000000..7a125e2 --- /dev/null +++ b/lib/deck/index.php @@ -0,0 +1,25 @@ +<?php + +$filters = array ( + "order" => array ( + "nbUsers" => "popularity", + "name" => "name", + "owner" => "author", + ), + "way" => $ord_ways, +); +$fdefaults = array ( + "order" => "nbUsers", + "way" => "DESC", +); + +$decks = array(); +$n = sql( + "SELECT decks.id AS id, decks.name AS name, account.login AS owner, 0 AS nbUsers ". + "FROM decks LEFT JOIN account ON decks.owner = account.id ". + "ORDER BY " . get_filter("order") . " " . get_filter("way") + ); +while ($nn = mysql_fetch_assoc($n)) $decks[] = $nn; + +require("tpl/deck/index.php"); + diff --git a/lib/deck/mvent.php b/lib/deck/mvent.php new file mode 100644 index 0000000..d4571e9 --- /dev/null +++ b/lib/deck/mvent.php @@ -0,0 +1,32 @@ +<?php + +require("lib/markdown.php"); + +assert_redir(count($args) == 4, 'deck'); +$cardid = intval($args[2]); +$pos = intval($args[3]); + +$card = mysql_fetch_assoc(sql( + "SELECT decks.id AS deckid, decks.owner AS deckowner, decks.name AS deckname, cards.name AS name, cards.text_md AS text, cards.number AS number ". + "FROM cards LEFT JOIN decks ON decks.id = cards.deck ". + "WHERE cards.id = $cardid")); +assert_error($card && $card["deckowner"] == $user['id'], + "This card does not exist, or you are not allowed to edit it."); +$deck = array("id" => $card['deckid'], 'name' => $card['deckname']); +$deckid = $card['deckid']; + +$mn = mysql_fetch_assoc(sql("SELECT COUNT(*) AS c FROM cards WHERE deck = $deckid")); +$mn = $mn['c']; +if ($pos > $mn) { + $error = "That number is too big. You don't even have that much cards in your deck."; +} else if ($pos < 1) { + $error = "A position is at least one..."; +} else { + sql("UPDATE cards SET number = 0 WHERE id = $cardid"); + sql("UPDATE cards SET number = number - 1 WHERE number > " . $card['number']); + sql("UPDATE cards SET number = number + 1 WHERE number >= $pos"); + sql("UPDATE cards SET number = $pos WHERE id = $cardid"); + header("Location: view-deck-$deckid"); +} + +require("tpl/deck/ef.php"); diff --git a/lib/deck/new.php b/lib/deck/new.php new file mode 100644 index 0000000..2ff1b50 --- /dev/null +++ b/lib/deck/new.php @@ -0,0 +1,32 @@ +<?php + +require("lib/markdown.php"); + +$deck_name = ""; +$deck_comment = ""; +if (isset($_POST["name"]) && isset($_POST['comment'])) { + $deck_name = esca($_POST['name']); + $deck_comment = esca($_POST['comment']); + $deck_comment_html = Markdown($deck_comment); + if ($deck_name == "") { + $error = "You must enter a name for your deck."; + } else if (mysql_fetch_assoc(sql("SELECT id FROM decks WHERE owner = " . $user['id'] . " AND name = '" . escs($deck_name) . "'"))) { + $error = "You already have a deck with that title."; + } else if ($deck_comment == "") { + $error = "Please enter a comment on your deck."; + } else { + sql("INSERT INTO decks(owner, name, comment_md, comment_html) ". + "VALUES(" . $user['id'] . ", '" . escs($deck_name) . "', '" . escs($deck_comment) . "', '" . escs($deck_comment_html) . "')"); + header("Location: view-deck-" . mysql_insert_id()); + die(); + } +} + +$title = "Create deck"; +$fields = array( + array("label" => "Name : ", "name" => "name", "value" => $deck_name), + array("label" => "Comment : ", "name" => "comment", "type" => "textarea", "value" => $deck_comment), + ); +$validate = "Create deck"; + +require("tpl/deck/new.php"); diff --git a/lib/deck/rment.php b/lib/deck/rment.php new file mode 100644 index 0000000..d3a87e0 --- /dev/null +++ b/lib/deck/rment.php @@ -0,0 +1,18 @@ +<?php + +require("lib/markdown.php"); + +assert_redir(count($args) >= 3, 'deck'); +$cardid = intval($args[2]); + +$card = mysql_fetch_assoc(sql( + "SELECT decks.id AS deckid, decks.owner AS deckowner, decks.name AS deckname, cards.name AS name, cards.text_md AS text, cards.number AS number ". + "FROM cards LEFT JOIN decks ON decks.id = cards.deck ". + "WHERE cards.id = $cardid")); +assert_error($card && $card["deckowner"] == $user['id'], + "This card does not exist, or you are not allowed to edit it."); + +token_validate("Do you really want to delete this card ?", "view-deck-". $card['deckid']); +sql("DELETE FROM cards WHERE id = $cardid"); +sql("UPDATE cards SET number = number - 1 WHERE number > " . $card['number'] . " AND deck = " . $card['deckid']); +header("Location: view-deck-" . $card['deckid']); diff --git a/lib/deck/view.php b/lib/deck/view.php new file mode 100644 index 0000000..eda2ca0 --- /dev/null +++ b/lib/deck/view.php @@ -0,0 +1,34 @@ +<?php + +assert_redir(count($args) == 3, 'deck'); +$deckid = intval($args[2]); + +$deck = mysql_fetch_assoc(sql( + "SELECT decks.id AS id, decks.name AS name, decks.comment_html AS comment, account.login AS owner, account.id AS owner_id ". + "FROM decks LEFT JOIN account ON account.id = decks.owner ". + "WHERE decks.id = $deckid")); +assert_error($deck, "This deck does not exist."); + +$filters = array ( + "order" => array ( + "name" => "card name", + "number" => "card number", + ), + "way" => $ord_ways, +); +$fdefaults = array ( + "order" => "number", + "way" => "ASC", +); + +$cards = array(); +$n = sql( + "SELECT id, number, name, text_html AS text FROM cards WHERE deck = $deckid ". + "ORDER BY " . get_filter("order") . " " . get_filter("way") + ); +while ($nn = mysql_fetch_assoc($n)) $cards[] = $nn; + +$can_edit = false; +if ($deck["owner_id"] == $user['id']) $can_edit = true; + +require("tpl/deck/view.php"); |