This is a group sort mod. Create groups at myadopts.php, move pets in from their management page, navigate through groups through the drop down.
Screenshots: [NOTE: The way that the pets are shown in the screenshots is not how it will look on your site. It is just the way I want them to be displayed on my site.]
Screenshot1
Screenshot2
For a preview, check out my site at
http://myxiplanet.x10.mx/stable.php.
1. Create a 'adopts_pet_groups' table
Since I have no idea how to do it with a query, go to PhpMyAdmin then go to your database, select the 'Operations' tab then create a table called adopts_pet_groups with 3 columns, replacing 'adopts_' with your prefix. Then fill in the details like this:
2. Create the group row
Go to the {$prefix}owned_adoptables table.. then select the 'structure' tab. Find this and press go:
Then in 'column', put "group", change "type" to "VARCHAR", set "length/values" to 15, set "Default" to "As defined:", "0", and leave all else.
3. Edits
You can close PhpMyAdmin now. Now it's time to edit the files;
In doadopt.php:
At line 60, find:
PHP Code:
"imageurl" => NULL, "usealternates" => $alts, "tradestatus" => 'fortrade', "isfrozen" => 'no', "gender" => $genders[$rand], "lastbred" => 0));
And replace it with
PHP Code:
"imageurl" => NULL, "usealternates" => $alts, "tradestatus" => 'fortrade', "isfrozen" => 'no', "gender" => $genders[$rand], "lastbred" => 0, "group" => 0));
In myadopts.php:
Replace everything with:
PHP Code:
<?php
include("functions/functions.php");
include("functions/functions_users.php");
include("functions/functions_adopts.php");
include("css/pagination.css");
include("inc/lang.php");
//***************//
// START SCRIPT //
//***************//
$id = $_GET["id"];
$act = $_GET["act"];
$more = $_GET["more"];
$page = $_GET["page"];
$group = $_GET["group"];
$submit = $_GET["submit"];
$groupname = $_POST["groupname"];
if($isloggedin == "yes"){
if($act == "" and $groupname == ""){
$article_title = "Your Adoptables";
if(!$group == ""){
if(!is_numeric($group)){
$article_title = "No group";
$article_content = "Group does not exist.";
}
else{
$row = $adopts->select("pet_groups", array(), "user='{$loggedinname}' and id='{$group}'")->fetchObject();
if($row->id == $group and $row->user == $loggedinname){
$groupquery = "AND
".constant("PREFIX")."owned_adoptables.group = {$group}";
}
else{
// Invalid group
$article_title = "No group";
$article_content = "Group does not exist.";
}
}
}
else{
$groupquery = "AND
".constant("PREFIX")."owned_adoptables.group = 0";
$selected = "selected";
}
// We need to get all of the user's adoptables from the database and display them...
$query = "SELECT * FROM ".constant("PREFIX")."owned_adoptables,
".constant("PREFIX")."adoptables,
".constant("PREFIX")."levels WHERE ".constant("PREFIX")."owned_adoptables.owner = '{$loggedinname}'
AND ".constant("PREFIX")."adoptables.type = ".constant("PREFIX")."owned_adoptables.type
AND ".constant("PREFIX")."levels.thisislevel = ".constant("PREFIX")."owned_adoptables.currentlevel
AND ".constant("PREFIX")."levels.adoptiename = ".constant("PREFIX")."adoptables.type
AND ".constant("PREFIX")."levels.adoptiename = ".constant("PREFIX")."adoptables.type
{$groupquery}
ORDER BY ".constant("PREFIX")."owned_adoptables.totalclicks";
$rowsperpage = 10;
$pagination = new Pagination($adopts, $query, $rowsperpage, "http://".constant("DOMAIN").constant("SCRIPTPATH")."/stable.php?group={$group}");
$pagination->setPage($_GET[page]);
$query = "SELECT * FROM ".constant("PREFIX")."owned_adoptables,
".constant("PREFIX")."adoptables,
".constant("PREFIX")."levels WHERE ".constant("PREFIX")."owned_adoptables.owner = '{$loggedinname}'
AND ".constant("PREFIX")."adoptables.type = ".constant("PREFIX")."owned_adoptables.type
AND ".constant("PREFIX")."levels.thisislevel = ".constant("PREFIX")."owned_adoptables.currentlevel
AND ".constant("PREFIX")."levels.adoptiename = ".constant("PREFIX")."adoptables.type
{$groupquery}
ORDER BY ".constant("PREFIX")."owned_adoptables.totalclicks LIMIT {$pagination->getLimit()},{$rowsperpage}";
$stmt = $adopts->query($query);
$groups = ""; // Get groups
$stmt2 = $adopts->select("pet_groups", array(), "user='{$loggedinname}'");
while($row = $stmt2->fetchObject()) {
$id=$row->id;
$name=$row->name;
if($id == $group){
$groups .= "<option value='{$id}' selected>{$name}</option>";
$selected = "";
}
else{
$groups .= "<option value='{$id}'>{$name}</option>";
}
}
$article_content = "
<b>Group:</b><br>
<form method='get' action='myadopts.php'>
<select name='group' id='group'>
<option value='0' {$selected}>Ungrouped</option>
{$groups}
</select><br><input type='submit' value='Go'></form>
<a href='stable.php?act=creategroup'>Create a new group</a>
<br><br><table>
<tr>
<th></th><th>Name and Type</th><th>Image</th><th>Clicks</th>
</tr>";
while($row = $stmt->fetchObject()){
if($row->usealternates == 'yes') $image = $row->alternateimage;
else $image = $row->primaryimage;
if($row->currentlevel == 0) $image = $row->eggimage;
if($image=='') $image = $row->primaryimage;
$article_content .= "<tr>
<td><center><img src='picuploads/{$row->gender}.png'></center></td>
<td><center><em>{$row->name}</em> the {$row->type}</center></td>
<td><center><a href='myadopts.php?act=manage&id={$row->aid}'><img src='{$image}'></a></center></td>
<td><center>{$row->totalclicks}</center></td>
</tr>";
}
$article_content .= "</table><br /><br />{$pagination->showPage()}";
}
elseif($act == "manage"){
// We are managing a specific adoptable
if(!is_numeric($id)){
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
else{
// See if the adoptable actually exists...
$row = $adopts->select("owned_adoptables", array(), "owner='{$loggedinname}' and aid='{$id}'")->fetchObject();
// Check that the adoptable exists for real, or show an error...
if($row->aid == $id){
// The adoptable does exist, so we show the image and junk to the user...
$image = getcurrentimage($id);
$article_title = "Managing {$row->name}";
$article_content = "<img src='{$image}'><br /><br />This page allows you to manage {$row->name}. Click on an option below to change settings.<br /><br />
<b><a href='levelup.php?id={$id}'><img src='templates/icons/add.gif' border=0> Level Up {$row->name}</a><br />
<a href='myadopts.php?act=stats&id={$id}'><img src='templates/icons/stats.gif' border=0> Get Stats for {$row->name}</a><br />
<a href='myadopts.php?act=bbcode&id={$id}'><img src='templates/icons/bbcodes.gif' border=0> Get BBCodes / HTML Codes for {$row->name}</a><br />
<a href='myadopts.php?act=rename&id={$id}'><img src='templates/icons/title.gif' border=0> Rename {$row->name}</a><br />
<a href='myadopts.php?act=trade&id={$id}'><img src='templates/icons/trade.gif' border=0> Change Trade Status {$row->name}</a><br />
<a href='myadopts.php?act=freeze&id={$id}'><img src='templates/icons/freeze.gif' border=0> Freeze or Unfreeze {$row->name}</a><br />
<a href='myadopts.php?act=group&id={$id}'> Group {$row->name}</a><br />
<a href='myadopts.php?act=pound&id={$id}'><img src='templates/icons/delete.gif' border=0> Pound {$row->name}</a></b>";
}
else{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
}
} // End the MANAGE action code
elseif($act == "stats"){
// We are getting the stats for the adoptable
// Check that an ID was submitted...
if(is_numeric($id)){
// Now we see if the adoptable actually exists...
$row = $adopts->select("owned_adoptables", array(), "owner='{$loggedinname}' and aid='{$id}'")->fetchObject();
if($row->aid == $id){
// The adoptable exists, so we show the stats for it...
$image = getcurrentimage($id);
$nextlevelexists = getnextlevelexists($row->type, $row->currentlevel);
// If a higher level exists, get that level's information...
if($nextlevelexists == TRUE){
$nextlevel = $row->currentlevel + 1;
$levels = $adopts->select("levels", array(), "adoptiename='{$row->type}' and thisislevel='{$nextlevel}'")->fetchObject();
$requiredclicks= $levels->requiredclicks; //The adoptable's ID
} // End grab next level info...
// Determine what to show for next level:
if($nextlevelexists == TRUE and $nextlevel != ""){
// See how many more clicks to go
$ctg = $requiredclicks - $row->totalclicks;
$nloutput = "{$nextlevel}<br />Clicks Required for Level Increase: {$ctg}";
}
else $nloutput = "This adoptable is at its maximum level";
$article_title = "{$row->name}'s Statistics:";
$article_content = "<img src='{$image}'><br /><br />
<b>Total Clicks: {$row->totalclicks}<br />
Gender: <img src='picuploads/{$row->gender}.png'><br />
Trade Status: {$row->tradestatus}<br />
Current Level: {$row->currentlevel}<br />
Next Level: {$nloutput}<br /></b>";
// Voters Information...
$article_content .= "<h2>{$row->name}'s Voters:</h2><br />
{$lang_voters_explain}<br /><br />
<table width='450' border='1'>
<tr>
<td width='129'><strong>Username:</strong></td>
<td width='156'><strong>Date Voted: </strong></td>
<td width='82'><strong>Profile:</strong></td>
<td width='55'><strong>PM:</strong></td>
</tr>";
// Select the voters from the DB
$stmt = $adopts->select("vote_voters", array(), "adoptableid='{$id}' ORDER BY date DESC LIMIT 10");
while($row = $stmt->fetchObject()) {
if($row->username == "") $row->username = "Guest";
if($row->username == "Guest"){
$article_content .= "<tr>
<td><div align='left'>Guest</div></td>
<td><div align='left'>{$row->date}</div></td>
<td><div align='center'></div></td>
<td><div align='center'></div></td>
</tr>";
}
else{
$article_content .= "<tr>
<td><div align='left'>{$row->username}</div></td>
<td><div align='left'>{$row->date}</div></td>
<td><div align='center'><a href='profile.php?user={$row->username}' target='_blank'><img src='templates/buttons/profile.gif' border=0></a></div></td>
<td><div align='center'><a href='messages.php?act=newpm&user={$row->username}' target='_blank'><img src='templates/buttons/pm.gif' border=0></a></div></td>
</tr>";
}
}
$article_content .= "</table><br />";
}
else{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
}
else
{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
} // End the STATS code
elseif($act == "bbcode"){
if(is_numeric($id)){
// Now we see if the adoptable actually exists...
$row = $adopts->select("owned_adoptables", array(), "owner='{$loggedinname}' and aid='{$id}'")->fetchObject();
if($row->aid == $id){
$altbb = grabanysetting("usealtbbcode");
// Adoptable exists, so show the BBCode:
$article_title = "Codes for {$row->name}";
$article_content = "{$lang_bbcode_explain}<br />
<p><u>Forum Codes / BBCode: </u></p>
<p>
<textarea name='textarea' cols='50' rows='4'>
[url=http://www.".constant("DOMAIN").constant("SCRIPTPATH")."/levelup.php?id={$row->aid}][img]http://www.".constant("DOMAIN").constant("SCRIPTPATH")."/siggy.php?id={$row->aid}[/img][/url]
</textarea>
</p>";
if($altbb == "yes"){
// Use the seo friendly alternate bbcodes...
$article_content .= "
<p><u>Alternate BBCodes (Use if the above do not work on a forum): </u></p>
<p>
<textarea name='textarea' cols='50' rows='4'>
[url=http://www.".constant("DOMAIN").constant("SCRIPTPATH")."/levelup.php?id={$row->aid}][img]http://www.".constant("DOMAIN").constant("SCRIPTPATH")."/get/{$row->aid}.gif\"[/img][/url]
</textarea>
</p>";
}
$article_content .= "<p><u>HTML Code</u>:</p>
<p>
<textarea name='textarea' cols='50' rows='4'>
<a href=\"http://www.".constant("DOMAIN").constant("SCRIPTPATH")."/levelup.php?id={$row->aid}\" target=\"_blank\">
<img src=\"http://www.".constant("DOMAIN").constant("SCRIPTPATH")."/siggy.php?id={$row->aid}\" border=0>
</a>
</textarea>
</p>";
}
else{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
}
else{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
} // End the BBCODE generation for the adoptable...
elseif($act == "rename"){
// We are renaming an adoptable
if(is_numeric($id)){
// Now we see if the adoptable actually exists...
$row = $adopts->select("owned_adoptables", array(), "owner='{$loggedinname}' and aid='{$id}'")->fetchObject();
if($row->aid == $id){
$image = getcurrentimage($id);
if($row->isfrozen != "yes"){
if($more == ""){
$article_title = "Rename {$row->name}";
$article_content = "<img src='{$image}'><br />{$lang_rename}{$row->name}{$lang_rename2}<br />
<form name='form1' method='get' action='stable.php'>
<p>Adoptable Name:
<input name='more' type='text' id='more'>
<input name='id' type='hidden' id='id' value='{$id}'>
<input name='act' type='hidden' id='act' value='rename'>
</p>
<p>
<input type='submit' name='Submit' value='Rename Adoptable'>
</p>
</form>";
}
else{
// We are renaming the adoptable, lets first check if the user is its original owner.
$row = $adopts->select("pounds", array(), "aid='{$id}'")->fetchObject();
if(!empty($row->firstowner) and $loggedinname != $row->firstowner){
$article_title = "Cannot rename";
$article_content = "The site admin has specified that only original owners can rename their adoptables.";
}
else{
$adopts->update("owned_adoptables", array("name" => $more), "aid='{$id}' and owner='{$loggedinname}'");
$article_title = $lang_rename_success_title;
$article_content = "<img src='{$image}'><br />{$lang_rename_success}{$more}.
You can now manage {$more} in your <a href='myadopts.php?act=manage&id={$id}'>My Adopts</a> page";
}
}
}
else{
// We cannot rename a frozen adoptable...
$article_title = $lang_frozen_title;
$article_content = "{$lang_frozen}<a href='myadopts.php?act=freeze&id={$id}&more=unfreeze'>unfreeze</a> {$lang_frozen2}";
}
}
else{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
}
else{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
}
elseif($act == "trade"){
// We are setting the trade status for an adoptable...
if(is_numeric($id)){
// Now we see if the adoptable actually exists...
$row = $adopts->select("owned_adoptables", array(), "owner='{$loggedinname}' and aid='{$id}'")->fetchObject();
if($row->aid == $id){
$image = getcurrentimage($id); // Get the image for the adopt...
if($more == ""){
$article_title = "Setting trade status for {$row->name}";
$article_content = "Are you sure you wish to change the trade status of this adoptable?
<center><b><a href='stable.php?act=trade&id={$id}&more=confirm'>Yes I'd like to change its trade status</a></b><br /><br />
<b><a href='stable.php'>Nope I change my mind! Go back to the previous page.</a></b></center><br />";
}
elseif($more == "confirm"){
$article_title = "Change trade status successfully";
if($row->tradestatus == "fortrade"){
$adopts->update("owned_adoptables", array("tradestatus" => 'notfortrade'), "aid='{$id}' and owner='{$loggedinname}'");
$article_content = "The adoptable's trade status is now Not for Trade";
}
elseif($row->tradestatus == "notfortrade"){
$adopts->update("owned_adoptables", array("tradestatus" => 'fortrade'), "aid='{$id}' and owner='{$loggedinname}'");
$article_content = "The adoptable's trade status is now For Trade";
}
else{
$article_title = "Something is very very wrong";
$article_content = "Please check phpmyadmin to see if the settings are correct, or report your issue to Mysidia Adoptables support forum";
}
}
else{
$article_title = "Invalid Action";
$article_content = "Invalid Action Specified";
}
}
else{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist;
}
}
else{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
}
elseif($act == "freeze"){
// We are freezing an adoptable here...
if(is_numeric($id)){
// Now we see if the adoptable actually exists...
$row = $adopts->select("owned_adoptables", array(), "owner='{$loggedinname}' and aid='{$id}'")->fetchObject();
if($row->aid == $id){
$image = getcurrentimage($id); // Get the image for the adopt...
if($more == ""){
if($row->isfrozen == "yes"){
$status = "<img src='templates/icons/freeze.gif'> Frozen<br />";
$go = "<a href='stable.php?act=freeze&id={$id}&more=unfreeze'><img src='templates/icons/unfreeze.gif' border=0> Unfreeze This Adoptable</a>";
}
else{
$status = "<img src='templates/icons/unfreeze.gif'> Not Frozen<br />";
$go = "<a href='stable.php?act=freeze&id={$id}&more=freeze'><img src='templates/icons/freeze.gif' border=0> Freeze This Adoptable</a>";
}
$article_title = $lang_freeze_title;
$article_content = "<img src='{$image}'><br /><b>{$row->name}'s Current Status: {$status}</b><br />
{$lang_freeze}<br /><br /><b>{$go}</b><br /><br />
{$lang_freeze_warning}";
}
else{
// We are actually freezing or unfreezing the adopt...
if($more == "freeze"){
$frz = "yes";
$article_title = "{$row->name} Frozen Successfully";
}
elseif($more == "unfreeze"){
$frz = "no";
$article_title = "{$row->name} Unfrozen Successfully";
}
$adopts->update("owned_adoptables", array("isfrozen" => $frz), "aid='{$id}' and owner='{$loggedinname}'");
$article_content = "Action Complete. You may now manage {$row->name} on the <a href='myadopts.php?act=manage&id={$id}'>My Adopts</a> page";
}
}
else{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
}
else
{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
}
elseif($act == "pound"){
if(is_numeric($id)){
// Now we see if the adoptable actually exists...
$row = $adopts->select("owned_adoptables", array(), "owner='{$loggedinname}' and aid='{$id}'")->fetchObject();
if($row->aid == $id){
$image = getcurrentimage($id); // Get the image for the adopt...
if($more == ""){
$article_title = "Pound {$row->name}";
$article_content = "<img src='{$image}'><br />{$lang_pound}<br /><br />{$lang_pound_warning}<br /><br />
<center><b><a href='stable.php?act=pound&id={$id}&more=confirm'>
<img src='templates/icons/delete.gif' border=0> Pound {$row->name} - I dont want it anymore!
<img src='templates/icons/delete.gif' border=0></a></b><br /><br />
<b><a href='myadopts.php'><img src='templates/icons/yes.gif' border=0>
DO NOT Pound {$row->name}! <img src='templates/icons/yes.gif' border=0></a></b></center><br />";
}
elseif($more == "confirm"){
// Validate the pet can be pounded
$adopt = new Pound($row->aid, "pound");
if($adopt->settings->system->active == "no"){
$article_title = "Invalid Action";
$article_content = "The admin has turned off pound feature, please contact him/her for further explanation.";
}
elseif($adopt->validate() == TRUE){
$adopt->dopound();
$article_title = $lang_pound_title_complete;
$article_content = $adopt->message;
}
else{
$article_title = "An error has occurred";
$article_content = $adopt->message;
}
}
else{
$article_title = "Invalid Action";
$article_content = "Invalid Action Specified";
}
}
else{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
}
else{
$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;
}
}
elseif($act == "group"){
if(is_numeric($id)){
$row = $adopts->select("owned_adoptables", array(), "owner='{$loggedinname}' and aid='{$id}'")->fetchObject();
$petname = $row->name;
if($row->aid == $id){
$row = $adopts->select("owned_adoptables", array(), "owner='{$loggedinname}' and aid='{$id}'")->fetchObject();
$article_title = "Group {$row->name}";
if($row->group == 0){
$article_content = "{$row->name} is not in a group. ";
}
else{
$groupname = $row->group;
$row = $adopts->select("pet_groups", array(), "user='{$loggedinname}' and id='{$groupname}'")->fetchObject();
$groupname = $row->name;
$article_content = "{$petname} is in the group '{$groupname}'.";
}
$article_content .= "Select a group to move {$petname} into:<br><br>";
$stmt = $adopts->select("pet_groups", array(), "user='{$loggedinname}'");
while($row = $stmt->fetchObject()) {
$groupid=$row->id;
$name=$row->name;
$groups .= "<option value='{$groupid}'>{$name}</option>";
}
$article_content .= " <form name='form' method='get' action='myadopts.php?'>
<input name='id' type='hidden' id='id' value='{$id}'>
<input name='act' type='hidden' id='act' value='changegroup'>
<select name='group' id='group'>
<option value='none' selected> </option>
{$groups}
</select><br>
<input type='submit' name='submit' value='Move'>
</form>";
}
}
}
elseif($act == "changegroup"){
if($submit == "Move"){
$row = $adopts->select("pet_groups", array(), "user='{$loggedinname}' and id='{$group}'")->fetchObject();
if($row->id == $group and $row->user == $loggedinname){
$row = $adopts->select("owned_adoptables", array(), "owner='{$loggedinname}' and aid='{$id}'")->fetchObject();
if($row->aid == $id){
$adopts->update("owned_adoptables", array("group" => $group), "aid='{$id}' and owner='{$loggedinname}'");
$article_title = "Moved {$row->name}";
$article_content = "{$row->name} was moved to a new group.<br><br>
<a href='myadopts.php?group={$group}'>Check out the new group</a>";
}
else{
$article_title = "No pet";
$article_content = "This pet doesn't exist.";
}
}
else{
$article_title = "No group";
$article_content = "This group doesn't exist.";
}
}
else{
$article_title = "";
$article_content = "";
}
}
elseif($act == "creategroup"){
if($groupname == ""){
$count = $GLOBALS['adopts']->select("pet_groups", array(), "user='{$loggedinname}'")->fetchAll();
if(count($count) > 4) {
$article_title = "Sorry";
$article_content = "You can only have 5 groups. <br><br>
<a href='myadopts.php'>Go back</a>";
}
else{
$article_title = "Create a new group";
$article_content = "
<form name='form1' method='post' action='myadopts.php?act=creategroup'>
<b>Group Name:</b> <br>
Max length is 15.<br>
<input name='groupname' type='text' id='groupname' maxlength='15' /><br>
<input type='submit' name='submit' value='Create'>
</form>";
}
}
else{
$count = $GLOBALS['adopts']->select("pet_groups", array(), "user='{$loggedinname}'")->fetchAll();
if(count($count) > 4) {
$article_title = "Sorry";
$article_content = "You can only have 5 groups. <br><br>
<a href='stable.php'>Go back to your stable</a>";
}
else{
$adopts->insert("pet_groups", array("id" => NULL, "user" => $loggedinname, "name" => $groupname));
$group = $adopts->select("pet_groups", array(), "name='{$groupname}' and user='{$loggedinname}'")->fetchObject();
$id = $group->id;
$article_title = "Created group '{$groupname}'";
$article_content = "You created a new group called '{$groupname}'.<br><br>
<a href='myadopts.php?group={$id}'>Visit it now</a><br><br>
<a href='myadopts.php'>Go back</a>";
}
}
}
else{
// No valid action specified :: show an error
$article_title = $lang_invalid_action_title;
$article_content = $lang_invalid_action;
}
}
else
{
$article_title = $accden;
$article_content = $reqlogin;
} // End is logged in check else
//***************//
// OUTPUT PAGE //
//***************//
echo showpage($article_title, $article_content, $date);
?>
4. Done
That is it! :) I hope it works for you.