From 79a8e3d6934fd246f0c6549eed352e1be96ee8c9 Mon Sep 17 00:00:00 2001 From: Tim Clark <eclipse@sucs,org> Date: Thu, 12 Jun 2008 12:23:48 +0000 Subject: [PATCH] Adds the junk system --- components/junk.php | 147 ++++++++++++++++++++++++++++++++++++++++++++ templates/junk.tpl | 106 ++++++++++++++++++++++++++++++++ 2 files changed, 253 insertions(+) create mode 100644 components/junk.php create mode 100644 templates/junk.tpl diff --git a/components/junk.php b/components/junk.php new file mode 100644 index 0000000..28aa99a --- /dev/null +++ b/components/junk.php @@ -0,0 +1,147 @@ +<?php + +// Set defaults +$mode = "list"; +$admin = false; + +$admin_group="staff"; + +$admin = isset($session->groups[$admin_group]); + +// If your an admin and the path ends in Edit/ then a number put it into edit mode +// create canedit rules +$canedit=isset($pathlist[($component[depth]/2)+1]); +$canedit=$canedit && isset($pathlist[($component[depth]/2)+2]); +$canedit=$canedit && $pathlist[($component[depth]/2)+1]=='Edit'; +$canedit=$canedit && is_numeric($pathlist[($component[depth]/2)+2]); +$canedit=$canedit && $admin; +// Apply canedit rules +if ($canedit){ + $id = $pathlist[($component[depth]/2)+2]; + $items = $DB->GetAll("SELECT id, title, category, description, donated_by, status FROM inventory WHERE id=? AND requested_by IS NULL",$id); + if(sizeof($items) === 1){ + $item = $items[0]; + $smarty->assign("item", $item); + $mode = "edit"; + } +} + +// If your an admin and the path ends in Add put it into add mode +// create canadd rules +$canadd=isset($pathlist[($component[depth]/2)+1]); +$canadd=$canadd && $pathlist[($component[depth]/2)+1]=='Add'; +$canadd=$canadd && $admin; +// Apply canadd rules +if ($canadd){$mode = "add";} + + +// Process actions before retriving the data +// List request data +if ($session->loggedin && isset($_REQUEST['action'])) { + // Junk Requests + if ($_REQUEST['action'] == "Request") { + // Request Item if its available + $query = "UPDATE inventory SET requested_by=?, requested_on=now() WHERE id=? AND requested_by IS NULL"; + $DB->Query($query, array($session->username, $_REQUEST['item'])); + } + elseif ($_REQUEST['action'] == "Un-Request") { + // Un-Request Item + if ($admin){ + // if your admin just do it + $query = "UPDATE inventory SET requested_by=null, requested_on=null WHERE id=?"; + $array = array($_REQUEST['item']); + } + else{ + // if not admin check if you requested it first + $query = "UPDATE inventory SET requested_by=null, requested_on=null WHERE id=? AND requested_by=?"; + $array = array($_REQUEST['item'], $session->username); + } + $DB->Query($query, $array); + } + elseif ($_REQUEST['action'] == "Take" && $admin){ + // Take item, if your admin + $query = "UPDATE inventory SET taken_on=now() WHERE id=? AND requested_by IS NOT NULL"; + $DB->Query($query, $_REQUEST['item']); + } + elseif ($_REQUEST['action'] == "Remove" && $admin){ + // Remove item, if your admin and its been taken + $query = "DELETE FROM inventory WHERE id=? AND taken_on IS NOT NULL"; + $DB->Query($query, $_REQUEST['item']); + } + elseif ($_REQUEST['action'] == "Not Junk" && $admin){ + // Mark item as not junk if its not been requested and your admin + $query = "UPDATE inventory SET status='unknown' WHERE id=? AND requested_by IS NULL"; + $DB->Query($query, $_REQUEST['item']); + } + elseif ($_REQUEST['action'] =="Junk" && $admin){ + // Mark item as junk, if your admin + $query = "UPDATE inventory SET status='junk' WHERE id=?"; + $DB->Query($query, $_REQUEST['item']); + } + +} +// Update/Add item +if ($session->loggedin && $admin && (isset($_REQUEST['update']) || isset($_REQUEST['add']))) { + // Update/Add item if title and category are filled in else error + if ($_REQUEST['title'] != "" && $_REQUEST['category'] != "") { + // if the description is blank, return null + if ($_REQUEST['description'] == ""){ + $description = null; + } + else{ + $description = $_REQUEST['description']; + } + // if the donated_by is blank, return null + if ($_REQUEST['donated_by'] == ""){ + $donated_by = null; + } + else{ + $donated_by = $_REQUEST['donated_by']; + } + // run the query + if(isset($_REQUEST['update'])){ + $query = "UPDATE inventory SET title=?, category=?, description=?, donated_by=?, status=? WHERE id=?"; + $array = array($_REQUEST['title'], $_REQUEST['category'], $description, $donated_by, $_REQUEST['status'], $_REQUEST['id']); + message_flash("Item Updated"); + } + elseif(isset($_REQUEST['add'])){ + $query = "INSERT INTO inventory (title, category, description, donated_by, status) VALUES (?, ?, ?, ?, ?)"; + $array = array($_REQUEST['title'], $_REQUEST['category'], $description, $donated_by, $_REQUEST['status']); + message_flash("Item Added"); + } + $DB->Query($query, $array); + } + else{ + trigger_error("Required field(s) missing", E_USER_WARNING); + } +} + + +if ($mode == 'list'){ + // Get junk from database, and give admin the full list + if ($admin == true){ + $junk = $DB->GetAll("SELECT * FROM inventory ORDER BY category"); + } + else{ + $junk = $DB->GetAll("SELECT * FROM inventory WHERE status = 'junk' ORDER BY category"); + } + $smarty->assign("junk", $junk); + + // Check there is some junk + if (sizeof($junk) < 1) { + $mode = "nojunk"; + } +} +// Generate output + +$smarty->assign("statuses",array("unknown", "in use", "wanted", "junk")); +$smarty->assign("componentpath", $baseurl . $component[path]); +$smarty->assign("mode", $mode); +$smarty->assign("admin", $admin); + +$output = $smarty->fetch("junk.tpl"); + +$smarty->assign("title", "Junk List"); +$smarty->assign("body", $output); + +?> diff --git a/templates/junk.tpl b/templates/junk.tpl new file mode 100644 index 0000000..16d5653 --- /dev/null +++ b/templates/junk.tpl @@ -0,0 +1,106 @@ +{if $mode == 'list'} +{foreach name=junk from=$junk item=junk} +<div class="box"> + <div class="boxhead"> + <h3>{$junk.title}</h3> + </div> + <div class="boxcontent"> + <p> + <h3>{$junk.category}</h3> + {$junk.description} + {if $junk.donated_by != null} + <br /><strong>Donated by:</strong>{$junk.donated_by} + {/if} + {if $session->loggedin} + {if $admin || $junk.status=='junk'} + <form action="{$url}" method="POST"> + <input type="hidden" name="item" value="{$junk.id}" /> + {if $junk.status=='junk'} + {if $junk.requested_by==null} + <input type="submit" name="action" value="Request" /> + {elseif ($junk.requested_by==$session->username || $admin) && $junk.taken_on==null} + <input type="submit" name="action" value="Un-Request" /> + {/if} + {if $admin} + {if $junk.requested_by!=null && $junk.taken_on==null} + <input type="submit" name="action" value="Take" /> + {elseif $junk.taken_on!=null} + <input type="submit" name="action" value="Remove" /> + {elseif $junk.requested_by==null} + <input type="submit" name="action" value="Not Junk" /> + {/if} + {/if} + {elseif $admin} + <input type="submit" name="action" value="Junk" /> + {/if} + </form> + {/if} + {/if} + </p> + {if $admin && $junk.requested_by==null} + <div class="edit"> + <a href="{$componentpath}/Edit/{$junk.id}">Edit</a> + <div class="clear"></div> + </div> + {/if} + </div> + <div class="boxfoot"><p> + {if $junk.status!='junk'} + Not Junk + {elseif $junk.requested_by==null} + Available + {elseif $junk.taken_on==null} + Requested by {$junk.requested_by} on {$junk.requested_on|date_format:"%e %b %Y"} + {else} + Taken by {$junk.requested_by} on {$junk.taken_on|date_format:"%e %b %Y"} + {/if} + </p></div> +</div> +{/foreach} +{if $admin} + <div class="edit"> + <a href="{$componentpath}/Add">Add</a> + <div class="clear"></div> + </div> +{/if} +{elseif ($mode == 'edit' || $mode == 'add') && $admin} +<fieldset> + <legend>{if $mode=='edit'}Edit{else}New{/if} Item</legend> + <form action="{$componentpath}" method="POST"> + <input type="hidden" name="id" value="{$item.id}" /> + <div class="row"> + <label for="title">Title*</label> + <span class="textinput"><input type="text" name="title"{if $mode == 'edit'} value="{$item.title}"{/if} /></span> + </div> + <div class="row"> + <label for="category">Category*</label> + <span class="textinput"><input type="text" name="category"{if $mode == 'edit'} value="{$item.category}"{/if} /></span> + </div> + <div class="row"> + <label for="description">Description</label> + <span class="textinput"><textarea name="description" cols="25" rows="3">{if $mode == 'edit'}{$item.description}{/if}</textarea></span> + </div> + <div class="row"> + <label for="donated_by">Donated by</label> + <span class="textinput"><input type="text" name="donated_by"{if $mode == 'edit'} value="{$item.donated_by}"{/if} /></span> + </div> + <div class="row"> + <label for="status">Status</label> + <span class="textinput"> + <select name="status"> + {foreach name=statuses from=$statuses item=status} + <option{if ($status == $item.status) && ($mode == 'edit')} selected="selected"{/if}>{$status}</option> + {foreachelse} + <option>unknown</option> + {/foreach} + </select> + </span> + </div> + <div class="row"> + <span class="textinput"><input type="submit" name="{if $mode == 'edit'}update{else}add{/if}" value="{if $mode == 'edit'}Update{else}Add{/if}" /></span> + <div class="note row">* denotes require fields</div> + </div> + <div class="clear"></div> + </form> +</fieldset> +{/if} -- GitLab