This page contains the hooks for Achievements plugin developed for AMS.
Global Variables:
$global_name = array();
This variable will contain the Achievements data and will be returned after going through all hooks.
Local Variables:
$local_name = array();
This variable will contains the data which are going to be used in hook actions and storing POST and GET data or other server requests.
Global Hooks:
Now, here comes the Global hooks working in Achievements plugin with description.
................................................................................................................................................................................
/**
* Display hook for Achievements plugin
*/
function achievements_hook_display()
{
global $global_name;
// to display plugin name in menu bar
$global_name['menu_display'] = 'Achievements';
}
................................................................................................................................................................................
/**
* Global Hook to interact with the REST api
* Pass the variables in the REST object to
* make request
*
* variables REST object expects
* url --> on which request is to be made
* appkey --> app key for authentication
* host --> host from which request have been sent
*
* @return $return_set global array returns the template data
*/
function achievements_hook_call_rest()
{
// defined the variables
global $local_name;
global $global_name;
if request is sent from server to interact with REST
call local hook to set data getting through request
hook_local_name();
.........................................
// here we have created the REST connection
$object = new REST class();
............................................
//sending data using REST by calling it's request function
$(Response from REST) = $(REST object) -> (REST function request)( 'url' , 'app_key' , 'host' , 'items' );
............................................
// here we store the response we get from the server
$global_name[ identifier ] = $Response is then set to global variable ;
}
}
/**
* Global Hook to interact with the database
*/
function achievements_hook_get_db()
{
global $global_name;
if (session is set for user)
{
$db = new DBLayer( 'lib' );
// getting content for selecting characters
$sth = $db -> selectWithParameter( 'UserCharacter', 'ams_api_keys', array( 'User' => $_SESSION['user'] ) , 'User = :User' );
$row = $sth -> fetch();
$return_set['Character'] = $row;
}
}
/**
* Global Hook to return global variables which contains
* the content to use in the smarty templates
*
* @return $return_set global array returns the template data
*/
function achievements_hook_return_global()
{
global $return_set;
return $return_set;
}
/**
* Local Hook to get database content
* which is called by the global hook
* by passing a parameter
*
* This hook returns the api keys registerd with
* the logged in user
*
* @param $data array with respective information
* @return $row extracted db content wrt $data
*/
function hook_get_db_content( $data )
{
$db = new DBLayer( 'lib' );
$sth = $db -> select( 'ams_api_keys', $data , 'User = :User AND UserCharacter = :UserCharacter' );
$row = $sth -> fetchAll();
return $row;
}
/**
* Local Hook to get database content
* which is called by the global hook
* by passing a parameter
*
* This hook returns the id of the character
* whose achivements we have to get
*
* @param $data array with respective information
* @return $row extracted db content wrt $data
*/
function hook_get_char_id( $data )
{
// returns the character id with respect to the character name in the ring_tool->characters
$db = new DBLayer( 'ring' );
$sth = $db -> selectWithParameter( 'char_id', 'characters' , array( 'char_name' => $data ), 'char_name=:char_name' );
$row = $sth -> fetch();
return $row['char_id'];
}
/**
* Local Hook to get database content
* which is called by the global hook
* by passing a parameter
*
* Hook to get the player stats of the character
*
* @param $data array with respective information
* @return $row extracted db content wrt $data
*/
function hook_get_player_stat( $data )
{
// returns the character id with respect to the character name in the ring_tool->characters
$db = new DBLayer( 'webig' );
$sth = $db -> select( 'players' , array( 'name' => $data ), 'name=:name' );
$row = $sth -> fetch();
return $row;
}
/**
* Local Hook to set variables which contains
* the content to use during the plugin functionality.
*/
function hook_variable_set()
{
global $return_set;
global $var_set;
if ( isset( $_POST['Character'] ) && !empty( $_POST['Character'] ) )
{
$var_set['character'] = $_POST['Character'];
// get char id from ring_open table
if ( $var_set['character'] != 'All Characters' )
{
$var_set['char_id'] = hook_get_char_id( $var_set['character'] );
}
// get db content for variable set
$row = hook_get_db_content( array( 'User' => $_SESSION['user'], 'UserCharacter' => $var_set['character'] ) );
// access key automatically taken from the database wrt user and character
@$var_set['app_key'] = $row['AccessToken'];
// here you can set the host where this plugin is set
$var_set['host'] = 'localhost';
// here we get the stats of the character
$ref_set = hook_get_player_stat( $var_set['character'] );
// here we have set items that are required to get the achivements
// these are player stats from webig->players table
@$var_set['items'] = json_encode( array( 'dev_shard' => $ref_set['dev_shard'] , 'name' => $ref_set['name'] , 'cid' => $ref_set['cid'] , 'lang' => 'en' , 'translater_mode' => '', 'last_played_date' => $ref_set['last_login'] ) );
// url where we have to make request for achievements
// it sends get parameter search(what to search) and format(in which format data exchange takes place)
$var_set['url'] = 'http://localhost6/?search=achievements&&format=json';
}
else
{
$return_set['no_char'] = "Please Generate key for a character before requesting for achievements";
}
}