<?php
 
/************************************************************* 
 
 * This script is developed by Arturs Sosins aka ar2rsawseen, http://webcodingeasy.com 
 
 * Feel free to distribute and modify code, but keep reference to its creator 
 
 * 
 
 * Gamify class allows to implement game logic into PHP aplications. 
 
 * It can create needed tables for storing information on most popular database platforms using PDO. 
 
 * It also can add users, define levels and achievements and generate user statistics and tops.
 
 * Then it is posible to bind class functions to user actions, to allow them gain experience and achievements.
 
 * 
 
 * For more information, examples and online documentation visit:  
 
 * http://webcodingeasy.com/PHP-classes/Implement-game-logic-to-your-web-application
 
**************************************************************/
 
include("./gamify.php");
 
$g = new gamify("localhost", "root", "password", "gamify");
 
$g->debug();
 
 
//create new user
 
if(isset($_POST["new_user"]) && $_POST["new_user"] != "")
 
{
 
    $g->create_user($_POST["new_user"]);
 
}
 
 
//save edited user info
 
if(isset($_POST["save_user"]))
 
{
 
    $g->edit_user($_POST["save_user"], $_POST["save_username"], $_POST["save_experience"], $_POST["save_level"]);
 
}
 
 
//delete user
 
if(isset($_POST["del_user"]) && $_POST["del_user"] != "")
 
{
 
    $g->delete_user($_POST["del_user"]);
 
}
 
 
//create new level
 
if(isset($_POST["new_level"]) && $_POST["new_level"] != "")
 
{
 
    $g->create_level($_POST["new_level"], $_POST["new_level_exp"]);
 
}
 
//save edited level info
 
if(isset($_POST["save_level"]))
 
{
 
    $g->edit_level($_POST["save_level"], $_POST["save_name"], $_POST["save_experience"]);
 
}
 
//delete level
 
if(isset($_POST["del_level"]) && $_POST["del_level"] != "")
 
{
 
    $g->delete_level($_POST["del_level"]);
 
}
 
 
 
//create new achievement
 
if(isset($_POST["new_ach"]) && $_POST["new_ach"] != "")
 
{
 
    $g->create_achievement($_POST["new_ach"], $_POST["new_ach_amount"], $_POST["new_ach_period"], $_POST["new_ach_badge"]);
 
}
 
//save edited achievement info
 
if(isset($_POST["save_ach"]))
 
{
 
    $g->edit_achievement($_POST["save_ach"], $_POST["save_name"], $_POST["save_badge"], $_POST["save_amount"], $_POST["save_period"], $_POST["status"]);
 
}
 
//delete achievement
 
if(isset($_POST["del_ach"]) && $_POST["del_ach"] != "")
 
{
 
    $g->delete_achievement($_POST["del_ach"]);
 
}
 
/**************************************************
 
* USERS
 
**************************************************/
 
echo "<fieldset><legend>Users</legend>";
 
//create new
 
echo "<form method='post'><p>Enter username: <input type='text' name='new_user'/> <input type='submit' value='Create new user'/></p></form>";
 
//get user info
 
echo "<form method='post'><p>Information about user: <select name='info_user'>";
 
echo "<option value=''>---</option>";
 
$users = $g->get_users();
 
foreach($users as $val)
 
{
 
    echo "<option value='".$val["username"]."'>".$val["username"]."</option>";
 
}
 
echo "</select> <input type='submit' value='Get info'/></p></form>";
 
if(isset($_POST["info_user"]) && $_POST["info_user"] != "")
 
{
 
    $info = $g->get_user($_POST["info_user"]);
 
    echo "<fieldset><legend>Info about ".$info["username"]."</legend>";
 
    echo "<p>Username: ".$info["username"]."</p>";
 
    echo "<p>Experience: ".$info["experience"]."</p>";
 
    echo "<p>Level: ".$info["level"]."</p>";
 
    echo "<p>Achievements: <ul>";
 
    foreach($info["achievements"] as $val)
 
    {
 
        if($val["status"] == "completed")
 
        {
 
            echo "<li>".$val["achievement_name"]." - Badge: <img src='".$val["badge_src"]."' width='50px' border='0'/>. Earned : ".date("r", $val["time"]).". Status: Completed</li>";
 
        }
 
        else
 
        {
 
            echo "<li>".$val["achievement_name"]." - Badge: <img src='".$val["badge_src"]."' width='50px' border='0'/>. Earned : ".date("r", $val["time"]).". Status: ".$val["amount_got"]." out of ".$val["amount_needed"]."</li>";
 
        }
 
    }
 
    echo "</ul></p>";
 
    echo "</fieldset>";
 
}
 
 
//edit users
 
echo "<form method='post'><p>Edit users: <select name='edit_user'>";
 
echo "<option value=''>---</option>";
 
$users = $g->get_users();
 
foreach($users as $val)
 
{
 
    echo "<option value='".$val["username"]."'>".$val["username"]."</option>";
 
}
 
echo "</select> <input type='submit' value='Edit'/></p></form>";
 
//edit user
 
if(isset($_POST["edit_user"]) && $_POST["edit_user"] != "")
 
{
 
    $arr = $g->get_user($_POST["edit_user"]);
 
    echo "<fieldset><legend>Edit user ".$arr["username"]."</legend>";
 
    echo "<form method='post'>";
 
    echo "<p>Username: <input type='text' name='save_username' value='".$arr["username"]."'/></p>";
 
    echo "<p>Experience: <input type='text' name='save_experience' value='".$arr["experience"]."'/></p>";
 
    echo "<p>Level: <select name='save_level'>";
 
    $levels = $g->get_levels("experience_needed");
 
    foreach($levels as $val)
 
    {    if($val["ID"] == $arr["level"])
 
        {
 
            echo "<option value='".$val["ID"]."' selected>".$val["level_name"]."</option>";
 
        }
 
        else
 
        {    
 
            echo "<option value='".$val["ID"]."'>".$val["level_name"]."</option>";
 
        }
 
    }
 
    echo "</select></p>";
 
    echo "<input type='hidden' name='save_user' value='".$arr["ID"]."'/>";
 
    echo "<p><input type='submit' value='Save'/></p>";
 
    echo "</form>";
 
    echo "</fieldset>";
 
}
 
//delete users
 
echo "<form method='post'><p>Delete users: <select name='del_user'>";
 
echo "<option value=''>---</option>";
 
$users = $g->get_users();
 
foreach($users as $val)
 
{
 
    echo "<option value='".$val["username"]."'>".$val["username"]."</option>";
 
}
 
echo "</select> <input type='submit' value='Delete'/></p></form>";
 
echo "</fieldset>";
 
 
/**************************************************
 
* LEVELS
 
**************************************************/
 
echo "<fieldset><legend>Levels</legend>";
 
//create new
 
echo "<form method='post'><p>Enter level name: <input type='text' name='new_level'/> and experience needed for level <input type='text' name='new_level_exp'/> <input type='submit' value='Create new level'/></p></form>";
 
//edit level
 
echo "<form method='post'><p>Edit level: <select name='edit_level'>";
 
$levels = $g->get_levels("experience_needed");
 
foreach($levels as $val)
 
{
 
    echo "<option value='".$val["ID"]."'>".$val["level_name"]."</option>";
 
}
 
echo "</select> <input type='submit' value='Edit'/></p></form>";
 
//edit level
 
if(isset($_POST["edit_level"]) && $_POST["edit_level"] != "")
 
{
 
    $arr = $g->get_level($_POST["edit_level"]);
 
    echo "<fieldset><legend>Edit level ".$arr["level_name"]."</legend>";
 
    echo "<form method='post'>";
 
    echo "<p>Level name: <input type='text' name='save_name' value='".$arr["level_name"]."'/></p>";
 
    echo "<p>Experience: <input type='text' name='save_experience' value='".$arr["experience_needed"]."'/></p>";
 
    echo "<input type='hidden' name='save_level' value='".$arr["ID"]."'/>";
 
    echo "<p><input type='submit' value='Save'/></p>";
 
    echo "</form>";
 
    echo "</fieldset>";
 
}
 
//delete level
 
echo "<form method='post'><p>Delete level: <select name='del_level'>";
 
$levels = $g->get_levels("experience_needed");
 
foreach($levels as $val)
 
{
 
    echo "<option value='".$val["ID"]."'>".$val["level_name"]."</option>";
 
}
 
echo "</select> <input type='submit' value='Delete'/></p></form>";
 
echo "</fieldset>";
 
 
/**************************************************
 
* ACHIEVEMENTS
 
**************************************************/
 
echo "<fieldset><legend>Achievements</legend>";
 
//create new
 
echo "<form method='post'><p>Enter achievement name: <input type='text' name='new_ach'/><br/>Link to badge image: <input type='text' name='new_ach_badge'/><br/>Amount of actions for achievement: <input type='text' name='new_ach_amount'/><br/>Period of time in seconds between actions: <input type='text' name='new_ach_period'/><br/> <input type='submit' value='Create new achievement'/></p></form>";
 
//edit level
 
echo "<form method='post'><p>Edit achievement: <select name='edit_ach'>";
 
echo "<option value=''>---</option>";
 
$ach = $g->get_achievements();
 
foreach($ach as $val)
 
{
 
    echo "<option value='".$val["ID"]."'>".$val["achievement_name"]."</option>";
 
}
 
echo "</select> <input type='submit' value='Edit'/></p></form>";
 
//edit level
 
if(isset($_POST["edit_ach"]) && $_POST["edit_ach"] != "")
 
{
 
    $arr = $g->get_achievement($_POST["edit_ach"]);
 
    echo "<fieldset><legend>Edit achievement ".$arr["achievement_name"]."</legend>";
 
    echo "<form method='post'>";
 
    echo "<p>Achievement name: <input type='text' name='save_name' value='".$arr["achievement_name"]."'/></p>
 
    <p>Link to badge image: <input type='text' name='save_badge' value='".$arr["badge_src"]."'/></p>
 
    <p>Amount of actions for achievement: <input type='text' name='save_amount' value='".$arr["amount_needed"]."'/></p>
 
    <p>Period of time in seconds between actions: <input type='text' name='save_period' value='".$arr["time_period"]."'/></p>";
 
    echo "<select name='save_status'>";
 
    echo "<option value='active'>Active</option>";
 
    if($arr["status"] == "inactive")
 
    {
 
        echo "<option value='inactive' selected>Inactive</option>";
 
    }
 
    else
 
    {
 
        echo "<option value='inactive'>Inactive</option>";
 
    }
 
    echo "</select>";
 
    echo "<input type='hidden' name='save_ach' value='".$arr["ID"]."'/>";
 
    echo "<p><input type='submit' value='Save'/></p>";
 
    echo "</form>";
 
    echo "</fieldset>";
 
}
 
//delete users
 
echo "<form method='post'><p>Delete achievements: <select name='del_ach'>";
 
echo "<option value=''>---</option>";
 
$ach = $g->get_achievements();
 
foreach($ach as $val)
 
{
 
    echo "<option value='".$val["ID"]."'>".$val["achievement_name"]."</option>";
 
}
 
echo "</select> <input type='submit' value='Delete'/></p></form>";
 
echo "</fieldset>";
 
 
//errors
 
echo "<fieldset><legend>Errors</legend>";
 
$err = $g->get_errors();
 
foreach($err as $val)
 
{
 
    echo "<p>".$val."</p>";
 
}
 
echo "</fieldset>";
 
?>
 
 |