Pet Sorting mod (Mys 1.3.4)
Description: A non-invasive and minimal mod that allows users to sort their pets according to total clicks, gender, level, and name; without the use of javascript or ajax. This can easily be extended on to allow more sorting options as well (like species).
-Step 1-
Go into phpMyAdmin and add a new column in users_options:
-Step 2-
Open up myadopts.php and replace the entire public function index with this:
PHP Code:
public function index(){
$mysidia = Registry::get("mysidia");
$total = $mysidia->db->select("owned_adoptables", array("aid"), "owner = '{$mysidia->user->username}'")->rowCount();
$pagination = new Pagination($total, 10, "myadopts");
$pagination->setPage($mysidia->input->get("page"));
//Attempting to sort!
$sort = $mysidia->db->select("users_options", array("petsort"), "username = '{$mysidia->user->username}'")->fetchColumn();
switch ($sort){
case 'clicks':
$stmt = $mysidia->db->select("owned_adoptables", array("aid"), "owner = '{$mysidia->user->username}' ORDER BY totalclicks LIMIT {$pagination->getLimit()},{$pagination->getRowsperPage()}");
break;
case 'gender':
$stmt = $mysidia->db->select("owned_adoptables", array("aid"), "owner = '{$mysidia->user->username}' ORDER BY gender LIMIT {$pagination->getLimit()},{$pagination->getRowsperPage()}");
break;
case 'level':
$stmt = $mysidia->db->select("owned_adoptables", array("aid"), "owner = '{$mysidia->user->username}' ORDER BY currentlevel LIMIT {$pagination->getLimit()},{$pagination->getRowsperPage()}");
break;
case 'name':
$stmt = $mysidia->db->select("owned_adoptables", array("aid"), "owner = '{$mysidia->user->username}' ORDER BY name LIMIT {$pagination->getLimit()},{$pagination->getRowsperPage()}");
break;
}
//Sorting ends here!
$this->setField("pagination", $pagination);
$this->setField("stmt", new DatabaseStatement($stmt));
}
-Step 3-
Finally, open myadoptsview.php and place this wherever you want the dropdown to be (I placed it above the table for adopts)
PHP Code:
//This is for sorting!
if($mysidia->input->post("sortpets")){
$choice = $mysidia->input->post("sortlist");
$mysidia->db->update("users_options", array("petsort" => $choice), "username = '{$mysidia->user->username}'");
$document->add(new Comment("<meta http-equiv='refresh' content='0;url=/myadopts' />"));
}
$sortForm = new Form("sortform", "", "post");
$sort_list = new DropdownList("sortlist");
$sort_list->add(new Option("Clicks", "clicks"));
$sort_list->add(new Option("Gender", "gender"));
$sort_list->add(new Option("Level", "level"));
$sort_list->add(new Option("Name", "name"));
$sortForm->add(new Comment("<b>Sort by:</b>", FALSE));
$sortForm->add($sort_list);
$sortForm->add(new Button("Sort Pets", "sortpets", "submit"));
$document->add($sortForm);
//Sorting ends here!!!
It is also possible to refresh the page with:
PHP Code:
header("Location: $root/myadopts");
exit;
Or:
PHP Code:
header("Location: /myadopts");
exit;
But this might not work for everyone
(Also if anyone knows how to safely place the button next to the dropdown box that would be great!)