diff --git a/components/libraryadmin.php b/components/libraryadmin.php new file mode 100644 index 0000000000000000000000000000000000000000..b184b748d6cfd12490a5757c4dc3cd7c6f23842d --- /dev/null +++ b/components/libraryadmin.php @@ -0,0 +1,82 @@ +<?php + +// you gotta be this high to enter +$permission="librarian"; + +//include ISBN validation library +require_once('../lib/Validate/ISPN.php'); + +$error = array(); + +function fetch_amazon_data($isbn) { + + $url1 = "http://webservices.amazon.co.uk/onca/xml?Service=AWSECommerceService"; + $url1 .= "&AWSAccessKeyId=02NDPFGZ9A35HRBQ9NG2"; + $url1 .= "&Operation=ItemLookup&IdType=ISBN&SearchIndex=Books&ItemId="; + $url2 = "&ResponseGroup=Medium,Offers"; + + return file_get_contents($url1.$isbn.$url2); +} + +function valid_isbn($isbn) { + + return Validate_ISPN::isbn($isbn); +} + +if ($session->groups[$permission]) { + + if ($_REQUEST['action'] == "search") { + + $isbn = $_REQUEST['isbn']; + $isbn = str_replace(array('ISBN', '-', ' ', "\t", "\n"), '', $isbn); + + if (valid_isbn($isbn)) { + $xmlresult = fetch_amazon_data($isbn); + $simple_xml = simplexml_load_string($xmlresult); + $book['isbn'] = $isbn; + $book['title'] = $simple_xml->Items->Item->ItemAttributes->Title; + $book['author'] = $simple_xml->Items->Item->ItemAttributes->Author; + $book['publisher'] = $simple_xml->Items->Item->ItemAttributes->Publisher; + $book['image_url'] = $simple_xml->Items->Item->MediumImage->URL; + $smarty->assign("book", $book); + } else { + // invalid isbn entered + trigger_error("invalid ISBN number entered", E_USER_WARNING); + } + + + } elseif ($_REQUEST['action'] == "add") { + $book = array(); + $book['isbn'] = $_REQUEST['isbn']; + $book['title'] = $_REQUEST['title']; + $book['author'] = $_REQUEST['author']; + $book['publisher'] = $_REQUEST['publisher']; + $book['image_url'] = $_REQUEST['image_url']; + + // Validate that we have enough info to add + if (($book['isbn'] != "") && (!valid_isbn($book['isbn']))) { + trigger_error("invalid ISBN", E_USER_WARNING); + } elseif (trim($book['title']) == "") { + trigger_error("you must supply a title", E_USER_WARNING); + } elseif (trim($book['author']) == "") { + trigger_error("you must supply an author"); + } else { + $insertdata = array($book['title'], $book['author'], $book['publisher']); + if (valid_isbn($book['isbn'])) { + $book['amazon_data'] = fetch_amazon_data($book['isbn']); + $newinsertdata = array($book['isbn'], $book['image_url'], $book['amazon_data']); + $insertdata = array_merge($insertdata, $newinsertdata); + $DB->Query("INSERT INTO books (title, author, publisher, isbn, image_url, amazon_data) VALUES (?,?,?,?,?,?)", $insertdata); + } else { + $DB->Query("INSERT INTO books (title, author, publisher) VALUES (?,?,?)", $insertdata); + } + } + + } + $result = $smarty->fetch("library-addbook.tpl"); +} + +$smarty->assign("title", "Library Admin"); +$smarty->assign("body", $result); + +?> diff --git a/templates/library-addbook.tpl b/templates/library-addbook.tpl new file mode 100644 index 0000000000000000000000000000000000000000..87ddcc5fcc64b58da8011329ad3cde719ce0bdc1 --- /dev/null +++ b/templates/library-addbook.tpl @@ -0,0 +1,52 @@ + +<fieldset> +<legend>Add Book</legend> +<form action="{$self}" method="POST"> +<input type="hidden" name="action" value="search" /> +<div class="note row">Enter an ISBN to attempt to auto-fill book details</div> +<div class="row"> + <label for="isbn">ISBN</label> + <span class="textinput"><input type="text" name="isbn" /></span> +</div> +<div class="row"> + <span class="textinput"><input type="submit" value="Auto-fill" /></span> +</div> +</form> + +{if isset($book.image_url)} + <div class="emblem"> + <img src="{$book.image_url}" /> + </div> +{/if} + +<div> +<form action="{$self}" method="POST"> + <input type="hidden" name="action" value="add" /> + <input type="hidden" name="image_url" value="{$book.image_url}" /> + <div class="row"> + <label for="isbn">ISBN Number</label> + <span class="textinput"><input type="text" name="isbn" value="{$book.isbn}"/></span> + </div> + + <div class="row"> + <label for="title">Title</label> + <span class="textinput"><input type="text" name="title" width="200" value="{$book.title}" /></span> + </div> + <div class="row"> + <label for="author">Author</label> + <span class="textinput"><input type="text" name="author" value="{$book.author}" /></span> + </div> + <div class="row"> + <label for="publisher">Publisher</label> + <span class="textinput"><input type="text" name="publisher" value="{$book.publisher}" /></span> + </div> + <div class="row"> + <label for="comments">Comments</label> + <span class="textinput"><textarea name="comments"></textarea></span> + </div> + <div class="row"> + <input type="submit" name="add" value="Add Book" /> + </div> +</form> +</div> +</fieldset> diff --git a/templates/library.tpl b/templates/library.tpl index 125c207a0c4bef7d14ebcb44c3661cb1c3b26ba4..ee518cdceee39d19533dc850e66a740631ff73d7 100644 --- a/templates/library.tpl +++ b/templates/library.tpl @@ -4,12 +4,12 @@ <h3>Browse by category</h3> <ul> {foreach name=tags from=$tags item=tag} -<li><a href="/Knowledge/Library/Tags/{$tag.name|escape:'url'}">{$tag.name}</a></li> +<li><a href="{$baseurl}/Knowledge/Library/Tags/{$tag.name|escape:'url'}">{$tag.name}</a></li> {/foreach} </ul> <h3>Random Books</h3> {foreach name=randoms from=$randoms item=randomitem} - <a href="/Knowledge/Library/{$randomitem.id}"><img src="{$randomitem.image_url}" alt="{$randomitem.title}" height="120" /></a> + <a href="{$baseurl}/Knowledge/Library/{$randomitem.id}"><img src="{$randomitem.image_url}" alt="{$randomitem.title}" height="120" /></a> {/foreach} {elseif $mode == 'display'} @@ -33,17 +33,20 @@ {else} <ul> {foreach name=results from=$results item=result} -<li><a href="/Knowledge/Library/{$result.id}">{$result.title}</a>{if $result.onloan} <em>(on loan)</em>{/if} </li> +<li><a href="{$baseurl}/Knowledge/Library/{$result.id}">{$result.title}</a>{if $result.onloan} <em>(on loan)</em>{/if} </li> {/foreach} </ul> {/if} {elseif $mode == 'tagdisplay'} {foreach name=results from=$results item=result} - <li><a href="/Knowledge/Library/{$result.id}">{$result.title}</a> </li> + <li><a href="{$baseurl}/Knowledge/Library/{$result.id}">{$result.title}</a> </li> {/foreach} {elseif $mode == 'bookerror'} <p>The requested book does not exist</p> {elseif $mode == 'tagerror'} <p>The requested tag does not exist</p> {/if} +{if $librarian == true} +<p><a href="{$baseurl}/Knowledge/Library/Admin">Library Admin</a></p> +{/if} <p>Images provided by <a href="http://www.amazon.co.uk">Amazon</a></p>