function nr_edit() { global $books; $id = intval($_GET['id']); $book = get_book($id); ?> <div class="wrap nr_edit"> <h2>Edit Book</h2> <?php if ($book->ID) { ?> <form method="post" action=""> <?php wp_nonce_field('nr_edit_' . $book->ID); ?> <img src="<?php echo $book->image; ?> " alt="" /> <p><label for="title">Title:</label></p> <p><input type="text" name="title" id="title" value="<?php echo htmlentities($book->title); ?> " /></p> <p><label for="author">Author:</label></p> <p><input type="text" name="author" id="author" value="<?php echo htmlentities($book->author); ?> " /></p> </form> <?php } else { ?> <p>I can't find that book, sorry.</p> <?php } ?> </div> <?php }
function dk_book_permalink($echo = true, $id = 0) { global $book, $wpdb; $options = get_option(NOW_READING_OPTIONS); if (!empty($book) && empty($id)) { $the_book = $book; } elseif (!empty($id)) { $the_book = get_book(intval($id)); } if ($the_book->id < 1) { return; } $author = $the_book->nice_author; $title = $the_book->nice_title; $url = get_page_link(intval($_GET['page_id'])) . "?ig=ig&dkaction=view&now_reading_author={$author}&now_reading_title={$title}"; $url = apply_filters('book_permalink', $url); if ($echo) { echo $url; } return $url; }
<?php $id = intval($_GET['id']); $existing = get_book($id); $meta = get_book_meta($existing->id); $tags = join(get_book_tags($existing->id), ','); echo ' <div class="wrap dk_single"> <h2>' . __("Edit book", NRTD) . '</h2> <a href = "' . DK_BOOKSHELF_URL . '" >' . __('My bookshelf', NRTD) . ' »</a> <a href = "' . get_page_link(intval($_GET['page_id'])) . '" >' . __("Manage books", NRTD) . ' »</a> <form method="post" action="' . get_option('siteurl') . '/wp-content/plugins/dk_books/functions/edit.php"> '; if (function_exists('wp_nonce_field')) { wp_nonce_field('now-reading-edit'); } if (function_exists('wp_referer_field')) { wp_referer_field(); } echo ' <div class="book-image"> <img style="" id="book-image-0" alt="Book Cover" src="' . $existing->image . '" /> </div> <h3><cite>' . $existing->title . '</cite><br /> by ' . $existing->author . '</h3> <table class="form-table" cellspacing="2" cellpadding="5"> <input type="hidden" name="action" value="update" />
<?php $method = strtolower($_SERVER['REQUEST_METHOD']); switch ($method) { case 'get': // handle a GET request get_book($request); break; case 'post': // handle a POST request post_book($request); break; case 'put': // handle a PUT request put_book($request); break; case 'delete': // handle a DELETE request delete_book($request); break; default: // unimplemented method http_response_code(405); }
/** * Adds our details to the title of the page - book title/author, "Library" etc. */ function nr_page_title( $title ) { global $wp, $wp_query; $wp->parse_request(); $title = ''; if ( get_query_var('now_reading_library') ) $title = 'Library'; if ( get_query_var('now_reading_id') ) { $book = get_book(intval(get_query_var('now_reading_id'))); $title = $book->title . ' by ' . $book->author; } if ( get_query_var('now_reading_tag') ) $title = 'Books tagged with “' . htmlentities(get_query_var('now_reading_tag'), ENT_QUOTES, 'UTF-8') . '”'; if ( get_query_var('now_reading_search') ) $title = 'Library Search'; if ( !empty($title) ) { $title = apply_filters('now_reading_page_title', $title); $separator = apply_filters('now_reading_page_title_separator', ' - '); return $separator.$title; } return ''; }
/** * Creates the manage admin page, and deals with the creation and editing of reviews. */ function dk_book_manage() { global $wpdb, $nr_statuses, $nr_post_options, $userdata; get_currentuserinfo(); $_POST = stripslashes_deep($_POST); $options = get_option(NOW_READING_OPTIONS); if (!$nr_url) { $nr_url = new nr_url(); $nr_url->load_scheme($options['menuLayout']); } if (!empty($_GET['updated'])) { $updated = intval($_GET['updated']); if ($updated == 1) { $updated .= ' book'; } else { $updated .= ' books'; } echo ' <div id="message" class="updated fade"> <p><strong>' . $updated . ' updated.</strong></p> </div> '; } if (!empty($_GET['deleted'])) { $deleted = intval($_GET['deleted']); if ($deleted == 1) { $deleted .= ' book'; } else { $deleted .= ' books'; } echo ' <div id="message" class="updated fade"> <p><strong>' . $deleted . ' deleted.</strong></p> </div> '; } $action = $_GET['action']; nr_reset_vars(array('action')); $options = get_option(NOW_READING_OPTIONS); $dateTimeFormat = 'Y-m-d H:i:s'; if ($options['ignoreTime']) { $dateTimeFormat = 'Y-m-d'; } switch ($action) { // Edit Book. case 'editsingle': $id = intval($_GET['id']); $existing = get_book($id); $meta = get_book_meta($existing->id); $tags = join(get_book_tags($existing->id), ','); echo ' <div class="wrap"> <h2>' . __("Edit Book", NRTD) . '</h2> <a href = "' . get_page_link(intval($_GET['page_id'])) . '" >Manage Books</a> <form method="post" action="' . get_option('siteurl') . '/wp-content/plugins/dk_books/functions/edit.php"> '; if (function_exists('wp_nonce_field')) { wp_nonce_field('now-reading-edit'); } if (function_exists('wp_referer_field')) { wp_referer_field(); } echo ' <div class="book-image"> <img style="float:left; margin-right: 10px;" id="book-image-0" alt="Book Cover" src="' . $existing->image . '" /> </div> <h3><cite>' . $existing->title . '</cite><br /> by ' . $existing->author . '</h3> <table class="form-table" cellspacing="2" cellpadding="5"> <input type="hidden" name="action" value="update" /> <input type="hidden" name="count" value="1" /> <input type="hidden" name="id[]" value="' . $existing->id . '" /> <tbody> '; // Title. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="title-0">' . __("Title", NRTD) . '</label> </th> <td> <input type="text" class="main" id="title-0" name="title[]" value="' . $existing->title . '" /> </td> </tr> '; // Author. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="author-0">' . __("Author", NRTD) . '</label> </th> <td> <input type="text" class="main" id="author-0" name="author[]" value="' . $existing->author . '" /> </td> </tr> '; // ASIN. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="asin-0">' . __("ASIN", NRTD) . '</label> </th> <td> <input type="text" class="main" id="asin-0" name="asin[]" value="' . $existing->asin . '" /> </td> </tr> '; // Status. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="status-0">' . __("Status", NRTD) . '</label> </th> <td> <select name="status[]" id="status-0"> '; foreach ((array) $nr_statuses as $status => $name) { $selected = ''; if ($existing->status == $status) { $selected = ' selected="selected"'; } echo ' <option value="' . $status . '"' . $selected . '>' . $name . '</option> '; } echo ' </select> </td> </tr>'; // Visibility. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="visibility-0">' . __("Visibility", NRTD) . '</label> </th> <td> <select name="visibility[]" id="visibility-0"> '; if ($existing->visibility) { // Public. echo ' <option value="0">Private</option> <option value="1" selected="selected">Public</option> '; } else { // Private. echo ' <option value="0" selected="selected">Private</option> <option value="1">Public</option> '; } echo ' </select> </td> </tr>'; // Added Date. if (!$options['hideAddedDate']) { $added = nr_empty_date($existing->added) ? '' : date($dateTimeFormat, strtotime($existing->added)); echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="added[]">' . __("Added", NRTD) . '</label> </th> <td> <input type="text" id="added-0" name="added[]" value="' . htmlentities($added, ENT_QUOTES, "UTF-8") . '" /> </td> </tr> '; } // Started Reading Date. $started = nr_empty_date($existing->started) ? '' : date($dateTimeFormat, strtotime($existing->started)); // Finished Reading Date. $finished = nr_empty_date($existing->finished) ? '' : date($dateTimeFormat, strtotime($existing->finished)); // Image URL. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="image-0">' . __("Image", NRTD) . '</label> </th> <td> <input type="text" class="main" id="image-0" name="image[]" value="' . htmlentities($existing->image) . '" /> </td> </tr> '; // Tags. // Link to Post. // Rating. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="rating[]"><label for="rating">' . __("Rating", NRTD) . '</label></label> </th> <td> <select name="rating[]" id="rating-' . $i . '" style="width:100px;"> <option value="unrated"> </option> '; for ($i = 10; $i >= 1; $i--) { $selected = $i == $existing->rating ? ' selected="selected"' : ''; echo "\r\r\n\t\t\t\t\t\t\t\t\t\t<option value='{$i}'{$selected}>{$i}</option>"; } echo ' </select> </td> </tr> '; // Review. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="review-0">' . __("Review", NRTD) . '</label> </th> <td> <textarea name="review[]" id="review-' . $i . '" cols="50" rows="10" style="width:97%;height:200px;">' . htmlentities($existing->review, ENT_QUOTES, "UTF-8") . '</textarea> <small> <a accesskey="i" href="#" onclick="reviewBigger(\'' . $i . '\'); return false;">' . __("Increase size", NRTD) . ' (Alt + I)</a> · <a accesskey="d" href="#" onclick="reviewSmaller(\'' . $i . '\'); return false;">' . __("Decrease size", NRTD) . ' (Alt + D)</a> </small> </td> </tr> </tbody> </table> <p class="submit"> <input class="button" type="submit" value="' . __("Save", NRTD) . '" /> </p> </form> </div> '; break; // Book Manager. // Book Manager. default: //depends on multiusermode (B. Spyckerelle) if ($options['multiuserMode']) { $count = total_books(0, 0, $userdata->ID); //counting only current users books } else { $count = total_books(0, 0, $userdata->ID); //counting all books } if ($count) { if (!empty($_GET['q'])) { $search = '&search=' . urlencode($_GET['q']); } else { $search = ''; } if (empty($_GET['p'])) { $page = 1; } else { $page = intval($_GET['p']); } if (empty($_GET['o'])) { $order = 'desc'; } else { $order = urlencode($_GET['o']); } if (empty($_GET['s'])) { $orderby = 'started'; } else { $orderby = urlencode($_GET['s']); } // Filter by Author. if (empty($_GET['author'])) { $author = ''; } else { $author = "&author=" . urlencode($_GET['author']); } // Filter by Status. if (empty($_GET['status'])) { $status = ''; } else { $status = "&status=" . urlencode($_GET['status']); } $perpage = $options['booksPerPage']; $offset = $page * $perpage - $perpage; $num = $perpage; $pageq = "&num={$num}&offset={$offset}"; // Depends on multiuser mode. if ($options['multiuserMode']) { $reader = "&reader=" . $userdata->ID; } else { $reader = ''; } $books = get_books("num=-1&status=all&orderby={$orderby}&order={$order}{$search}{$pageq}{$reader}{$author}{$status}"); $count = count($books); $numpages = ceil(total_books(0, 0, $userdata->ID) / $perpage); $pages = '<span class="displaying-num">' . __("Pages", NRTD) . '</span>'; if ($page > 1) { $previous = $page - 1; $pages .= " <a class='page-numbers prev' href='{$nr_url->urls['manage']}&p={$previous}&s={$orderby}&o={$order}'>«</a>"; } for ($i = 1; $i <= $numpages; $i++) { if ($page == $i) { $pages .= "<span class='page-numbers current'>{$i}</span>"; } else { $pages .= " <a class='page-numbers' href='{$nr_url->urls['manage']}&p={$i}&s={$orderby}&o={$order}'>{$i}</a>"; } } if ($numpages > $page) { $next = $page + 1; $pages .= " <a class='page-numbers next' href='{$nr_url->urls['manage']}&p={$next}&s={$orderby}&o={$order}'>»</a>"; } echo ' <div class="wrap"> <ul> '; if (!empty($_GET['q']) || !empty($_GET['author']) || !empty($_GET['status'])) { echo ' <li><a href="' . $nr_url->urls['manage'] . '">' . __('Show all books', NRTD) . '</a></li> '; } echo ' <li><a href="' . library_url(0) . '">' . __('View library', NRTD) . '</a></li> <li><a href="' . get_page_link(intval($_GET['page_id'])) . '?dkaction=add">' . __('Add New Book', NRTD) . '</a></li> </ul> <div class="tablenav"> <div class="tablenav-pages"> ' . $pages . ' </div> </div> <br style="clear:both;" /> <form method="post" action="' . get_option('siteurl') . '/wp-content/plugins/now-reading-redux/admin/edit.php"> '; if (function_exists('wp_nonce_field')) { wp_nonce_field('now-reading-edit'); } if (function_exists('wp_referer_field')) { wp_referer_field(); } echo ' <input type="hidden" name="action" value="update" /> <input type="hidden" name="count" value="' . $count . '" /> '; $i = 0; if ($order == 'desc') { $new_order = 'asc'; } else { $new_order = 'desc'; } $title_sort_link = "{$nr_url->urls['manage']}&p={$page}&s=book&o={$new_order}{$author}"; $author_sort_link = "{$nr_url->urls['manage']}&p={$page}&s=author&o={$new_order}{$author}"; $added_sort_link = "{$nr_url->urls['manage']}&p={$page}&s=added&o={$new_order}{$author}"; $started_sort_link = "{$nr_url->urls['manage']}&p={$page}&s=started&o={$new_order}{$author}"; $finished_sort_link = "{$nr_url->urls['manage']}&p={$page}&s=finished&o={$new_order}{$author}"; $status_sort_link = "{$nr_url->urls['manage']}&p={$page}&s=status&o={$new_order}{$author}"; echo ' <table class="widefat post fixed" cellspacing="0"> <tbody> '; foreach ((array) $books as $book) { $meta = get_book_meta($book->id); $tags = join(get_book_tags($book->id), ','); $alt = $i % 2 == 0 ? ' alternate' : ''; $delete = get_option('siteurl') . '/wp-content/plugins/dk_books/functions/edit.php?action=delete&id=' . $book->id; $delete = wp_nonce_url($delete, 'now-reading-delete-book_' . $book->id); echo ' <tr class="manage-book' . $alt . '"> <input type="hidden" name="id[]" value="' . $book->id . '" /> <input type="hidden" name="title[]" value="' . $book->title . '" /> <input type="hidden" name="author[]" value="' . $book->author . '" /> <td> <img style="max-width:100px;" id="book-image-' . $i . '" class="small" alt="' . __('Book Cover', NRTD) . '" src="' . $book->image . '" /> </td> <td class="post-title column-title"> <strong>' . stripslashes($book->title) . '</strong> <div class="row-actions"> <a href="' . book_permalink(0, $book->id) . '">' . __('View', NRTD) . '</a> | <a href="' . get_page_link(intval($_GET['page_id'])) . '?dkaction=manage&action=editsingle&id=' . $book->id . '">' . __('Edit', NRTD) . '</a> | <a href="' . $delete . '" onclick="return confirm(\'' . __("Are you sure you wish to delete this book permanently?", NRTD) . '\')">' . __("Delete", NRTD) . '</a> </div> </td> <td> <a href="' . $nr_url->urls['manage'] . '&author=' . $book->author . '">' . $book->author . '</a> </td> <td> <a href="' . $nr_url->urls['manage'] . '&status=' . $book->status . '">' . $book->status . '</a> </td> <td> ' . (nr_empty_date($book->started) ? '' : date($dateTimeFormat, strtotime($book->started))) . ' </td> <td> ' . (nr_empty_date($book->finished) ? '' : date($dateTimeFormat, strtotime($book->finished))) . ' </td>'; echo ' </tr> '; $i++; } echo ' </tbody> </table> </form> '; } else { echo ' <div class="wrap"> <h2>' . __("Manage Books", NRTD) . '</h2> <p>' . sprintf(__("No books to display. To add some books, head over <a href='%s'>here</a>.", NRTD), $nr_url->urls['add']) . '</p> </div> '; } echo ' </div> '; break; } }
/** * Use in the main template loop; if un-fetched, fetches books for given $query and returns true whilst there are still books to loop through. * @param string $query The query string to pass to get_books() * @return boolean True if there are still books to loop through, false at end of loop. */ function have_books($query) { global $books, $current_book; if (!$books) { if (is_numeric($query)) { $GLOBALS['books'] = get_book($query); } else { $GLOBALS['books'] = get_books($query); } } if (is_a($books, 'stdClass')) { $books = array($books); } $have_books = !empty($books[$current_book]); if (!$have_books) { $GLOBALS['books'] = null; $GLOBALS['current_book'] = 0; } return $have_books; }
<input type="hidden" name="amazon" value="1" /> <p><input type="submit" value="Test Amazon" /></p> </form>'; } if ($_GET['books']) { echo "<p>add_book('title=1984&author=George Orwell')"; $id = add_book('title=1984&author=George Orwell'); if ($id > 0) { echo "<br />Successfully created book, ID is {$id}.</p>"; } else { echo "<br />Failure!</p>"; } echo "<p>get_book({$id})"; $book = get_book($id); if ($book->ID == $id) { echo "<br />Successfully fetched book with ID {$id}:<br /><pre>"; var_dump($book); echo "</pre></p>"; } else { echo "<br />Failure!</p>"; } echo "<p>delete_book({$id})"; $del = delete_book($id); if ($wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE ID = %d", $id)) == 0) { echo "<br />Successfully deleted book with ID {$id}.</p>"; } else { echo "<br />Failure!</p>"; } } else {
/** * Creates the manage admin page, and deals with the creation and editing of reviews. */ function nr_manage() { global $wpdb, $nr_statuses, $nr_post_options, $userdata; get_currentuserinfo(); $_POST = stripslashes_deep($_POST); $options = get_option('nowReadingOptions'); if (!$nr_url) { $nr_url = new nr_url(); $nr_url->load_scheme($options['menuLayout']); } if (!empty($_GET['updated'])) { $updated = intval($_GET['updated']); if ( $updated == 1 ) $updated .= ' book'; else $updated .= ' books'; echo ' <div id="message" class="updated fade"> <p><strong>' . $updated . ' updated.</strong></p> </div> '; } if (!empty($_GET['deleted'])) { $deleted = intval($_GET['deleted']); if ($deleted == 1) $deleted .= ' book'; else $deleted .= ' books'; echo ' <div id="message" class="updated fade"> <p><strong>' . $deleted . ' deleted.</strong></p> </div> '; } $action = $_GET['action']; nr_reset_vars(array('action')); $options = get_option('nowReadingOptions'); $dateTimeFormat = 'Y-m-d H:i:s'; if ($options['ignoreTime']) { $dateTimeFormat = 'Y-m-d'; } switch ($action) { // Edit Book. case 'editsingle': { $id = intval($_GET['id']); $existing = get_book($id); $meta = get_book_meta($existing->id); $tags = join(get_book_tags($existing->id), ','); echo ' <div class="wrap"> <h2>' . __("Edit Book", NRTD) . '</h2> <form method="post" action="' . get_option('siteurl') . '/wp-content/plugins/now-reading-redux/admin/edit.php"> '; if ( function_exists('wp_nonce_field') ) wp_nonce_field('now-reading-edit'); if ( function_exists('wp_referer_field') ) wp_referer_field(); echo ' <div class="book-image"> <img style="float:left; margin-right: 10px;" id="book-image-0" alt="Book Cover" src="' . $existing->image . '" /> </div> <h3>' . __("Book", NRTD) . ' ' . $existing->id . ':<br /> <cite>' . $existing->title . '</cite><br /> by ' . $existing->author . '</h3> <table class="form-table" cellspacing="2" cellpadding="5"> <input type="hidden" name="action" value="update" /> <input type="hidden" name="count" value="1" /> <input type="hidden" name="id[]" value="' . $existing->id . '" /> <tbody> '; // Title. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="title-0">' . __("Title", NRTD) . '</label> </th> <td> <input type="text" class="main" id="title-0" name="title[]" value="' . $existing->title . '" /> </td> </tr> '; // Author. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="author-0">' . __("Author", NRTD) . '</label> </th> <td> <input type="text" class="main" id="author-0" name="author[]" value="' . $existing->author . '" /> </td> </tr> '; // ASIN. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="asin-0">' . __("ASIN", NRTD) . '</label> </th> <td> <input type="text" class="main" id="asin-0" name="asin[]" value="' . $existing->asin . '" /> </td> </tr> '; // Status. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="status-0">' . __("Status", NRTD) . '</label> </th> <td> <select name="status[]" id="status-0"> '; foreach ( (array) $nr_statuses as $status => $name ) { $selected = ''; if ( $existing->status == $status ) $selected = ' selected="selected"'; echo ' <option value="' . $status . '"' . $selected . '>' . $name . '</option> '; } echo ' </select> </td> </tr>'; // Visibility. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="visibility-0">' . __("Visibility", NRTD) . '</label> </th> <td> <select name="visibility[]" id="visibility-0"> '; if ($existing->visibility) { // Public. echo ' <option value="0">Private</option> <option value="1" selected="selected">Public</option> '; } else { // Private. echo ' <option value="0" selected="selected">Private</option> <option value="1">Public</option> '; } echo ' </select> </td> </tr>'; // Added Date. if (!$options['hideAddedDate']) { $added = ( nr_empty_date($existing->added) ) ? '' : date($dateTimeFormat, strtotime($existing->added)); echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="added[]">' . __("Added", NRTD) . '</label> </th> <td> <input type="text" id="added-0" name="added[]" value="' . htmlentities($added, ENT_QUOTES, "UTF-8") . '" /> </td> </tr> '; } // Started Reading Date. $started = ( nr_empty_date($existing->started) ) ? '' : date($dateTimeFormat, strtotime($existing->started)); echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="started[]">' . __("Started", NRTD) . '</label> </th> <td> <input type="text" id="started-0" name="started[]" value="' . htmlentities($started, ENT_QUOTES, "UTF-8") . '" /> </td> </tr> '; // Finished Reading Date. $finished = ( nr_empty_date($existing->finished) ) ? '' : date($dateTimeFormat, strtotime($existing->finished)); echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="finished[]">' . __("Finished", NRTD) . '</label> </th> <td> <input type="text" id="finished-0" name="finished[]" value="' . htmlentities($finished, ENT_QUOTES, "UTF-8") . '" /> </td> </tr> '; // Image URL. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="image-0">' . __("Image", NRTD) . '</label> </th> <td> <input type="text" class="main" id="image-0" name="image[]" value="' . htmlentities($existing->image) . '" /> </td> </tr> '; // Tags. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="tags[]">' . __("Tags", NRTD) . '</label> </th> <td> <input type="text" name="tags[]" value="' . htmlspecialchars($tags, ENT_QUOTES, "UTF-8") . '" /><br /> <small>' . __("A comma-separated list of keywords that describe the book.", NRTD) . '</small> </td> </tr> '; // Link to Post. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="posts[]">' . __("Link to post", NRTD) . '</label> </th> <td> <input type="text" name="posts[]" value="' . intval($existing->post) . '" /><br /> <small>' . __("If you wish, you can link this book to a blog entry by entering that entry's ID here. The entry will be linked to from the book's library page.", NRTD) . '</small> </td> </tr>'; // Post Option. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="post_op">' . __("Post Option", NRTD) . '</label> </th> <td> <select name="post_op[]" id="post_op"> '; $post_op_idx = 0; foreach ( (array) $nr_post_options as $post_op => $name ) { $selected = ''; if ($existing->post_op == $post_op_idx) { $selected = ' selected="selected"'; } echo ' <option value="' . $post_op_idx . '"' . $selected . '>' . $name . '</option> '; $post_op_idx++; } echo ' </select> </td> </tr>'; // Meta Data. echo ' <tr class="form-field"> <th valign="top" scope="row"> Meta Data </th> <td> <p><a href="#" onclick="addMeta(\'0\'); return false;">' . __("Add another field", NRTD) . ' +</a></p> <table> <thead> <tr> <th scope="col">' . __("Key", NRTD) . ':</th> <th scope="col">' . __("Value", NRTD) . ':</th> <th scope="col"></th> </tr> </thead> <tbody id="book-meta-table-0" class="book-meta-table"> '; foreach ( (array) $meta as $key => $val ) { $url = get_option('siteurl') . "/wp-content/plugins/now-reading-redux/admin/edit.php?action=deletemeta&id={$existing->id}&key=" . urlencode($key); if ( function_exists('wp_nonce_url') ) $url = wp_nonce_url($url, 'now-reading-delete-meta_' . $existing->id . $key); echo ' <tr> <td><textarea name="keys-0[]" class="key">' . htmlspecialchars($key, ENT_QUOTES, "UTF-8") . '</textarea></td> <td><textarea name="values-0[]" class="value">' . htmlspecialchars($val, ENT_QUOTES, "UTF-8") . '</textarea></td> <td><a href="' . $url . '">' . __("Delete", NRTD) . '</a></td> </tr> '; } echo ' <tr> <td><textarea name="keys-0[]" class="key"></textarea></td> <td><textarea name="values-0[]" class="value"></textarea></td> </tr> </tbody> </table> </td> </tr> '; // Rating. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="rating[]"><label for="rating">' . __("Rating", NRTD) . '</label></label> </th> <td> <select name="rating[]" id="rating-' . $i . '" style="width:100px;"> <option value="unrated"> </option> '; for ($i = 10; $i >=1; $i--) { $selected = ($i == $existing->rating) ? ' selected="selected"' : ''; echo " <option value='$i'$selected>$i</option>"; } echo ' </select> </td> </tr> '; // Review. echo ' <tr class="form-field"> <th valign="top" scope="row"> <label for="review-0">' . __("Review", NRTD) . '</label> </th> <td> <textarea name="review[]" id="review-' . $i . '" cols="50" rows="10" style="width:97%;height:200px;">' . htmlentities($existing->review, ENT_QUOTES, "UTF-8") . '</textarea> <small> <a accesskey="i" href="#" onclick="reviewBigger(\'' . $i . '\'); return false;">' . __("Increase size", NRTD) . ' (Alt + I)</a> · <a accesskey="d" href="#" onclick="reviewSmaller(\'' . $i . '\'); return false;">' . __("Decrease size", NRTD) . ' (Alt + D)</a> </small> </td> </tr> </tbody> </table> <p class="submit"> <input class="button" type="submit" value="' . __("Save", NRTD) . '" /> </p> </form> </div> '; } break; // Book Manager. default: { //depends on multiusermode (B. Spyckerelle) if ($options['multiuserMode']) { $count = total_books(0, 0, $userdata->ID); //counting only current users books } else { $count = total_books(0, 0); //counting all books } if ( $count ) { if ( !empty($_GET['q']) ) $search = '&search=' . urlencode($_GET['q']); else $search = ''; if ( empty($_GET['p']) ) $page = 1; else $page = intval($_GET['p']); if ( empty($_GET['o']) ) $order = 'desc'; else $order = urlencode($_GET['o']); if ( empty($_GET['s']) ) $orderby = 'started'; else $orderby = urlencode($_GET['s']); // Filter by Author. if (empty($_GET['author'])) $author = ''; else $author = "&author=" . urlencode($_GET['author']); // Filter by Status. if (empty($_GET['status'])) $status = ''; else $status = "&status=" . urlencode($_GET['status']); $perpage = $options['booksPerPage']; $offset = ($page * $perpage) - $perpage; $num = $perpage; $pageq = "&num=$num&offset=$offset"; // Depends on multiuser mode. if ($options['multiuserMode']) { $reader = "&reader=".$userdata->ID; } else { $reader = ''; } $books = get_books("num=-1&status=all&orderby={$orderby}&order={$order}{$search}{$pageq}{$reader}{$author}{$status}"); $count = count($books); $numpages = ceil(total_books(0, 0, $userdata->ID) / $perpage); $pages = '<span class="displaying-num">' . __("Pages", NRTD) . '</span>'; if ( $page > 1 ) { $previous = $page - 1; $pages .= " <a class='page-numbers prev' href='{$nr_url->urls['manage']}&p=$previous&s=$orderby&o=$order'>«</a>"; } for ( $i = 1; $i <= $numpages; $i++) { if ( $page == $i ) $pages .= "<span class='page-numbers current'>$i</span>"; else $pages .= " <a class='page-numbers' href='{$nr_url->urls['manage']}&p=$i&s=$orderby&o=$order'>$i</a>"; } if ( $numpages > $page ) { $next = $page + 1; $pages .= " <a class='page-numbers next' href='{$nr_url->urls['manage']}&p=$next&s=$orderby&o=$order'>»</a>"; } echo ' <div class="wrap"> <h2>Now Reading Redux</h2> <form method="get" action="" onsubmit="location.href += \'&q=\' + document.getElementById(\'q\').value; return false;"> <p class="search-box"><label class="hidden" for="q">' . __("Search Books", NRTD) . ':</label> <input type="text" name="q" id="q" value="' . htmlentities($_GET['q']) . '" /> <input class="button" type="submit" value="' . __('Search Books', NRTD) . '" /></p> </form> <ul> '; if (!empty($_GET['q']) || !empty($_GET['author']) || !empty($_GET['status'])) { echo ' <li><a href="' . $nr_url->urls['manage'] . '">' . __('Show all books', NRTD) . '</a></li> '; } echo ' <li><a href="' . library_url(0) . '">' . __('View library', NRTD) . '</a></li> </ul> <div class="tablenav"> <div class="tablenav-pages"> ' . $pages . ' </div> </div> <br style="clear:both;" /> <form method="post" action="' . get_option('siteurl') . '/wp-content/plugins/now-reading-redux/admin/edit.php"> '; if ( function_exists('wp_nonce_field') ) wp_nonce_field('now-reading-edit'); if ( function_exists('wp_referer_field') ) wp_referer_field(); echo ' <input type="hidden" name="action" value="update" /> <input type="hidden" name="count" value="' . $count . '" /> '; $i = 0; if ( $order == 'desc' ) $new_order = 'asc'; else $new_order = 'desc'; $title_sort_link = "{$nr_url->urls['manage']}&p=$page&s=book&o=$new_order$author"; $author_sort_link = "{$nr_url->urls['manage']}&p=$page&s=author&o=$new_order$author"; $added_sort_link = "{$nr_url->urls['manage']}&p=$page&s=added&o=$new_order$author"; $started_sort_link = "{$nr_url->urls['manage']}&p=$page&s=started&o=$new_order$author"; $finished_sort_link = "{$nr_url->urls['manage']}&p=$page&s=finished&o=$new_order$author"; $status_sort_link = "{$nr_url->urls['manage']}&p=$page&s=status&o=$new_order$author"; echo ' <table class="widefat post fixed" cellspacing="0"> <thead> <tr> <th></th> <th class="manage-column column-title"><a class="manage_books" href="'. $title_sort_link .'">Book</a></th> <th class="manage-column column-author"><a class="manage_books" href="'. $author_sort_link .'">Author</a></th> <th><a class="manage_books" href="'. $status_sort_link .'">Status</a></th> <th><a class="manage_books" href="'. $started_sort_link .'">Started</a></th> <th><a class="manage_books" href="'. $finished_sort_link .'">Finished</a></th>'; if (!$options['hideAddedDate']) { echo ' <th><a class="manage_books" href="'. $added_sort_link .'">Added</a></th>'; } echo ' </tr> </thead> <tbody> '; foreach ((array)$books as $book) { $meta = get_book_meta($book->id); $tags = join(get_book_tags($book->id), ','); $alt = ( $i % 2 == 0 ) ? ' alternate' : ''; $delete = get_option('siteurl') . '/wp-content/plugins/now-reading-redux/admin/edit.php?action=delete&id=' . $book->id; $delete = wp_nonce_url($delete, 'now-reading-delete-book_' .$book->id); echo ' <tr class="manage-book' . $alt . '"> <input type="hidden" name="id[]" value="' . $book->id . '" /> <input type="hidden" name="title[]" value="' . $book->title . '" /> <input type="hidden" name="author[]" value="' . $book->author . '" /> <td> <img style="max-width:100px;" id="book-image-' . $i . '" class="small" alt="' . __('Book Cover', NRTD) . '" src="' . $book->image . '" /> </td> <td class="post-title column-title"> <strong>' . stripslashes($book->title) . '</strong> <div class="row-actions"> <a href="' . book_permalink(0, $book->id) . '">' . __('View', NRTD) . '</a> | <a href="' . $nr_url->urls['manage'] . '&action=editsingle&id=' . $book->id . '">' . __('Edit', NRTD) . '</a> | <a href="' . $delete . '" onclick="return confirm(\'' . __("Are you sure you wish to delete this book permanently?", NRTD) . '\')">' . __("Delete", NRTD) . '</a> </div> </td> <td> <a href="' . $nr_url->urls['manage'] . '&author=' . $book->author . '">' . $book->author . '</a> </td> <td> <a href="' . $nr_url->urls['manage'] . '&status=' . $book->status . '">' . $book->status . '</a> </td> <td> ' . ( ( nr_empty_date($book->started) ) ? '' : date($dateTimeFormat, strtotime($book->started)) ) . ' </td> <td> ' .( ( nr_empty_date($book->finished) ) ? '' : date($dateTimeFormat, strtotime($book->finished)) ) . ' </td>'; if (!$options['hideAddedDate']) { echo ' <td> ' . ( ( nr_empty_date($book->added) ) ? '' : date($dateTimeFormat, strtotime($book->added)) ) . ' </td>'; } echo ' </tr> '; $i++; } echo ' </tbody> </table> </form> '; } else { echo ' <div class="wrap"> <h2>' . __("Manage Books", NRTD) . '</h2> <p>' . sprintf(__("No books to display. To add some books, head over <a href='%s'>here</a>.", NRTD), $nr_url->urls['add']) . '</p> </div> '; } echo ' </div> '; } break; } }