Merged in Gsoc14-ryzomAppImprovements (pull request #1)

Merging Gsoc 14 branch with default
hg/feature/cdb-packed
shubham_meena 11 years ago
commit 2a2c2b1d67

@ -80,9 +80,9 @@ class Assigned{
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
//check if ticket is already assigned //check if ticket is already assigned
if($user_id == 0 && $dbl->execute(" SELECT * FROM `assigned` WHERE `Ticket` = :ticket_id", array('ticket_id' => $ticket_id) )->rowCount() ){ if($user_id == 0 && $dbl->select("`assigned`", array('ticket_id' => $ticket_id), "`Ticket` = :ticket_id")->rowCount() ){
return true; return true;
}else if( $dbl->execute(" SELECT * FROM `assigned` WHERE `Ticket` = :ticket_id and `User` = :user_id", array('ticket_id' => $ticket_id, 'user_id' => $user_id) )->rowCount()){ }else if( $dbl->select("`assigned`", array('ticket_id' => $ticket_id, 'user_id' => $user_id), "`Ticket` = :ticket_id and `User` = :user_id")->rowCount() ){
return true; return true;
}else{ }else{
return false; return false;
@ -115,9 +115,7 @@ class Assigned{
*/ */
public function create() { public function create() {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "INSERT INTO `assigned` (`User`,`Ticket`) VALUES (:user, :ticket)"; $dbl->insert("`assigned`", Array('User' => $this->getUser(), 'Ticket' => $this->getTicket());
$values = Array('user' => $this->getUser(), 'ticket' => $this->getTicket());
$dbl->execute($query, $values);
} }
@ -127,9 +125,7 @@ class Assigned{
*/ */
public function delete() { public function delete() {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "DELETE FROM `assigned` WHERE `User` = :user_id and `Ticket` = :ticket_id"; $dbl->delete("`assigned`", array('user_id' => $this->getUser() ,'ticket_id' => $this->getTicket(), "`User` = :user_id and `Ticket` = :ticket_id");
$values = array('user_id' => $this->getUser() ,'ticket_id' => $this->getTicket());
$dbl->execute($query, $values);
} }
/** /**
@ -139,7 +135,7 @@ class Assigned{
*/ */
public function load($ticket_id) { public function load($ticket_id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM `assigned` WHERE `Ticket` = :ticket_id", Array('ticket_id' => $ticket_id)); $statement = $dbl->select("`assigned`", Array('ticket_id' => $ticket_id), "`Ticket` = :ticket_id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->set($row); $this->set($row);
} }
@ -181,4 +177,4 @@ class Assigned{
} }
} }

@ -1,85 +1,245 @@
<?php <?php
/** /**
* Handles the database connections. It uses PDO to connect to the different databases. It will use the argument of the constructor to setup a connection to the database * Handles the database connections. It uses PDO to connect to the different databases. It will use the argument of the constructor to setup a connection to the database
* with the matching entry in the $cfg global variable. * with the matching entry in the $cfg global variable.
* @author Daan Janssens, mentored by Matthew Lagoe *
* * @author Daan Janssens, mentored by Matthew Lagoe
*/ */
class DBLayer{ class DBLayer {
private $PDO; /**< The PDO object, instantiated by the constructor */ private $PDO;
/**
* *< The PDO object, instantiated by the constructor
*/
/** /**
* The constructor. * The constructor.
* Instantiates the PDO object attribute by connecting to the arguments matching database(the db info is stored in the $cfg global var) * Instantiates the PDO object attribute by connecting to the arguments matching database(the db info is stored in the $cfg global var)
* @param $db String, the name of the databases entry in the $cfg global var. *
*/ * @param $db String, the name of the databases entry in the $cfg global var.
function __construct($db, $dbn = null) */
{ function __construct( $db, $dbn = null )
if ($db != "install"){ {
if ( $db != "install" ) {
global $cfg; global $cfg;
$dsn = "mysql:"; $dsn = "mysql:";
$dsn .= "host=". $cfg['db'][$db]['host'].";"; $dsn .= "host=" . $cfg['db'][$db]['host'] . ";";
$dsn .= "dbname=". $cfg['db'][$db]['name'].";"; $dsn .= "dbname=" . $cfg['db'][$db]['name'] . ";";
$dsn .= "port=". $cfg['db'][$db]['port'].";"; $dsn .= "port=" . $cfg['db'][$db]['port'] . ";";
$opt = array( $opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC PDO :: ATTR_DEFAULT_FETCH_MODE => PDO :: FETCH_ASSOC
); );
$this->PDO = new PDO($dsn,$cfg['db'][$db]['user'],$cfg['db'][$db]['pass'], $opt); $this -> PDO = new PDO( $dsn, $cfg['db'][$db]['user'], $cfg['db'][$db]['pass'], $opt );
} else { } else {
global $cfg; global $cfg;
$dsn = "mysql:"; $dsn = "mysql:";
$dsn .= "host=". $cfg['db'][$dbn]['host'].";"; $dsn .= "host=" . $cfg['db'][$dbn]['host'] . ";";
$dsn .= "port=". $cfg['db'][$dbn]['port'].";"; $dsn .= "port=" . $cfg['db'][$dbn]['port'] . ";";
$opt = array(
PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION,
PDO :: ATTR_DEFAULT_FETCH_MODE => PDO :: FETCH_ASSOC
);
$this -> PDO = new PDO( $dsn, $_POST['Username'], $_POST['Password'], $opt );
}
$opt = array( }
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$this->PDO = new PDO($dsn,$_POST['Username'],$_POST['Password'], $opt);
}
}
/** /**
* execute a query that doesn't have any parameters * execute a query that doesn't have any parameters
* @param $query the mysql query *
* @return returns a PDOStatement object * @param $query the mysql query
*/ * @return returns a PDOStatement object
public function executeWithoutParams($query){ */
$statement = $this->PDO->prepare($query); public function executeWithoutParams( $query ) {
$statement->execute(); $statement = $this -> PDO -> prepare( $query );
return $statement; $statement -> execute();
} return $statement;
}
/** /**
* execute a query that has parameters * execute a query that has parameters
* @param $query the mysql query *
* @param $params the parameters that are being used by the query * @param $query the mysql query
* @return returns a PDOStatement object * @param $params the parameters that are being used by the query
*/ * @return returns a PDOStatement object
public function execute($query,$params){ */
$statement = $this->PDO->prepare($query); public function execute( $query, $params ) {
$statement->execute($params); $statement = $this -> PDO -> prepare( $query );
return $statement; $statement -> execute( $params );
} return $statement;
}
/** /**
* execute a query (an insertion query) that has parameters and return the id of it's insertion * execute a query (an insertion query) that has parameters and return the id of it's insertion
* @param $query the mysql query *
* @param $params the parameters that are being used by the query * @param $query the mysql query
* @return returns the id of the last inserted element. * @param $params the parameters that are being used by the query
*/ * @return returns the id of the last inserted element.
public function executeReturnId($query,$params){ */
$statement = $this->PDO->prepare($query); public function executeReturnId( $tb_name, $data ) {
$this->PDO->beginTransaction(); $field_values = ':' . implode( ',:', array_keys( $data ) );
$statement->execute($params); $field_options = implode( ',', array_keys( $data ) );
$lastId =$this->PDO->lastInsertId(); try {
$this->PDO->commit(); $sth = $this -> PDO -> prepare( "INSERT INTO $tb_name ($field_options) VALUE ($field_values)" );
foreach ( $data as $key => $value )
{
$sth -> bindValue( ":$key", $value );
}
$this -> PDO -> beginTransaction();
$sth -> execute();
$lastId = $this -> PDO -> lastInsertId();
$this -> PDO -> commit();
}
catch ( Exception $e )
{
// for rolling back the changes during transaction
$this -> PDO -> rollBack();
throw new Exception( "error in inseting" );
}
return $lastId; return $lastId;
} }
/**
* Select function using prepared statement
*
* @param string $tb_name Table Name to Select
* @param array $data Associative array
* @param string $where where to select
* @return statement object
*/
public function selectWithParameter( $param, $tb_name, $data, $where )
{
try {
$sth = $this -> PDO -> prepare( "SELECT $param FROM $tb_name WHERE $where" );
$this -> PDO -> beginTransaction();
$sth -> execute( $data );
$this -> PDO -> commit();
}
catch( Exception $e )
{
$this -> PDO -> rollBack();
throw new Exception( "error selection" );
return false;
}
return $sth;
}
} /**
* Select function using prepared statement
*
* @param string $tb_name Table Name to Select
* @param array $data Associative array
* @param string $where where to select
* @return statement object
*/
public function select( $tb_name, $data , $where )
{
try {
$sth = $this -> PDO -> prepare( "SELECT * FROM $tb_name WHERE $where" );
$this -> PDO -> beginTransaction();
$sth -> execute( $data );
$this -> PDO -> commit();
}
catch( Exception $e )
{
$this -> PDO -> rollBack();
throw new Exception( "error selection" );
return false;
}
return $sth;
}
/**
* Update function with prepared statement
*
* @param string $tb_name name of the table
* @param array $data associative array with values
* @param string $where where part
* @throws Exception error in updating
*/
public function update( $tb_name, $data, $where )
{
$field_option_values = null;
foreach ( $data as $key => $value )
{
$field_option_values .= ",$key" . '=:' . $key;
}
$field_option_values = ltrim( $field_option_values, ',' );
try {
$sth = $this -> PDO -> prepare( "UPDATE $tb_name SET $field_option_values WHERE $where " );
foreach ( $data as $key => $value )
{
$sth -> bindValue( ":$key", $value );
}
$this -> PDO -> beginTransaction();
$sth -> execute();
$this -> PDO -> commit();
}
catch ( Exception $e )
{
$this -> PDO -> rollBack();
throw new Exception( 'error in updating' );
return false;
}
return true;
}
/**
* insert function using prepared statements
*
* @param string $tb_name Name of the table to insert in
* @param array $data Associative array of data to insert
*/
public function insert( $tb_name, $data )
{
$field_values = ':' . implode( ',:', array_keys( $data ) );
$field_options = implode( ',', array_keys( $data ) );
try {
$sth = $this -> PDO -> prepare( "INSERT INTO $tb_name ($field_options) VALUE ($field_values)" );
foreach ( $data as $key => $value )
{
$sth -> bindValue( ":$key", $value );
}
$this -> PDO -> beginTransaction();
// execution
$sth -> execute();
$this -> PDO -> commit();
}
catch ( Exception $e )
{
// for rolling back the changes during transaction
$this -> PDO -> rollBack();
throw new Exception( "error in inseting" );
}
}
/**
* Delete database entery using prepared statement
*
* @param string $tb_name
* @param string $where
* @throws error in deleting
*/
public function delete( $tb_name, $data, $where )
{
try {
$sth = $this -> PDO -> prepare( "DELETE FROM $tb_name WHERE $where" );
$this -> PDO -> beginTransaction();
$sth -> execute( $data );
$this -> PDO -> commit();
}
catch ( Exception $e )
{
$this -> PDO -> rollBack();
throw new Exception( "error in deleting" );
}
}
}

@ -55,7 +55,7 @@ class Forwarded{
*/ */
public static function isForwarded( $ticket_id) { public static function isForwarded( $ticket_id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
if( $dbl->execute(" SELECT * FROM `forwarded` WHERE `Ticket` = :ticket_id", array('ticket_id' => $ticket_id))->rowCount()){ if( $dbl->select("`forwarded`", array('ticket_id' => $ticket_id), "`Ticket` = :ticket_id")->rowCount() ){
return true; return true;
}else{ }else{
return false; return false;
@ -90,9 +90,7 @@ class Forwarded{
*/ */
public function create() { public function create() {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "INSERT INTO `forwarded` (`Group`,`Ticket`) VALUES (:group, :ticket)"; $dbl->insert("`forwarded`", Array('Group' => $this->getGroup(), 'Ticket' => $this->getTicket()));
$values = Array('group' => $this->getGroup(), 'ticket' => $this->getTicket());
$dbl->execute($query, $values);
} }
@ -102,9 +100,7 @@ class Forwarded{
*/ */
public function delete() { public function delete() {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "DELETE FROM `forwarded` WHERE `Group` = :group_id and `Ticket` = :ticket_id"; $dbl->delete("`forwarded`", array('group_id' => $this->getGroup() ,'ticket_id' => $this->getTicket(), "`Group` = :group_id and `Ticket` = :ticket_id");
$values = array('group_id' => $this->getGroup() ,'ticket_id' => $this->getTicket());
$dbl->execute($query, $values);
} }
@ -115,7 +111,7 @@ class Forwarded{
*/ */
public function load( $ticket_id) { public function load( $ticket_id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM `forwarded` WHERE `Ticket` = :ticket_id", Array('ticket_id' => $ticket_id)); $statement = $dbl->select("`forwarded`", Array('ticket_id' => $ticket_id), "`Ticket` = :ticket_id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->set($row); $this->set($row);
} }
@ -156,4 +152,4 @@ class Forwarded{
} }
} }

@ -1,229 +1,246 @@
<?php <?php
/** /**
* Helper class for more site specific functions. * Helper class for more site specific functions.
* @author Daan Janssens, mentored by Matthew Lagoe *
* * @author Daan Janssens, mentored by Matthew Lagoe
*/ */
class Helpers{ class Helpers {
/** /**
* workhorse of the website, it loads the template and shows it or returns th html. * workhorse of the website, it loads the template and shows it or returns th html.
* it uses smarty to load the $template, but before displaying the template it will pass the $vars to smarty. Also based on your language settings a matching * it uses smarty to load the $template, but before displaying the template it will pass the $vars to smarty. Also based on your language settings a matching
* array of words & sentences for that page will be loaded. In case the $returnHTML parameter is set to true, it will return the html instead of displaying the template. * array of words & sentences for that page will be loaded. In case the $returnHTML parameter is set to true, it will return the html instead of displaying the template.
* @param $template the name of the template(page) that we want to load. *
* @param $vars an array of variables that should be loaded by smarty before displaying or returning the html. * @param $template the name of the template(page) that we want to load.
* @param $returnHTML (default=false) if set to true, the html that should have been displayed, will be returned. * @param $vars an array of variables that should be loaded by smarty before displaying or returning the html.
* @return in case $returnHTML=true, it returns the html of the template being loaded. * @param $returnHTML (default=false) if set to true, the html that should have been displayed, will be returned.
*/ * @return in case $returnHTML=true, it returns the html of the template being loaded.
public static function loadTemplate( $template, $vars = array (), $returnHTML = false ) */
{ public static function loadTemplate( $template, $vars = array (), $returnHTML = false )
global $AMS_LIB; {
global $AMS_LIB;
global $SITEBASE; global $SITEBASE;
global $AMS_TRANS; global $AMS_TRANS;
global $INGAME_LAYOUT; global $INGAME_LAYOUT;
//define('SMARTY_SPL_AUTOLOAD',1); // define('SMARTY_SPL_AUTOLOAD',1);
require_once $AMS_LIB . '/smarty/libs/Smarty.class.php'; require_once $AMS_LIB . '/smarty/libs/Smarty.class.php';
spl_autoload_register('__autoload'); spl_autoload_register( '__autoload' );
$smarty = new Smarty; $smarty = new Smarty;
$smarty->setCompileDir($SITEBASE.'/templates_c/'); $smarty -> setCompileDir( $SITEBASE . '/templates_c/' );
$smarty->setCacheDir($SITEBASE.'/cache/'); $smarty -> setCacheDir( $SITEBASE . '/cache/' );
$smarty -> setConfigDir($SITEBASE . '/configs/' ); $smarty -> setConfigDir( $SITEBASE . '/configs/' );
// turn smarty debugging on/off // turn smarty debugging on/off
$smarty -> debugging = false; $smarty -> debugging = false;
// caching must be disabled for multi-language support // caching must be disabled for multi-language support
$smarty -> caching = false; $smarty -> caching = false;
$smarty -> cache_lifetime = 5; $smarty -> cache_lifetime = 5;
//needed by smarty. // needed by smarty.
helpers :: create_folders (); helpers :: create_folders ();
global $FORCE_INGAME; global $FORCE_INGAME;
//if ingame, then use the ingame templates // if ingame, then use the ingame templates
if ( helpers::check_if_game_client() or $FORCE_INGAME ){ if ( helpers :: check_if_game_client() or $FORCE_INGAME ) {
$smarty -> template_dir = $AMS_LIB . '/ingame_templates/'; $smarty -> template_dir = $AMS_LIB . '/ingame_templates/';
$smarty -> setConfigDir( $AMS_LIB . '/configs' ); $smarty -> setConfigDir( $AMS_LIB . '/configs' );
$variables = parse_ini_file( $AMS_LIB . '/configs/ingame_layout.ini', true ); $variables = parse_ini_file( $AMS_LIB . '/configs/ingame_layout.ini', true );
foreach ( $variables[$INGAME_LAYOUT] as $key => $value ){ foreach ( $variables[$INGAME_LAYOUT] as $key => $value ) {
$smarty -> assign( $key, $value ); $smarty -> assign( $key, $value );
} }
}else{ } else {
$smarty -> template_dir = $SITEBASE . '/templates/'; $smarty -> template_dir = $SITEBASE . '/templates/';
$smarty -> setConfigDir( $SITEBASE . '/configs' ); $smarty -> setConfigDir( $SITEBASE . '/configs' );
} }
foreach ( $vars as $key => $value ){ foreach ( $vars as $key => $value ) {
$smarty -> assign( $key, $value ); $smarty -> assign( $key, $value );
} }
//load page specific variables that are language dependent // load page specific variables that are language dependent
$variables = Helpers::handle_language(); $variables = Helpers :: handle_language();
foreach ( $variables[$template] as $key => $value ){ if ( $template != 'layout_plugin' )
$smarty -> assign( $key, $value ); {
} foreach ( $variables[$template] as $key => $value ) {
$smarty -> assign( $key, $value );
}
}
// load ams content variables that are language dependent
foreach ( $variables['ams_content'] as $key => $value ) {
$smarty -> assign( $key, $value );
}
//load ams content variables that are language dependent //load ams content variables that are language dependent
foreach ( $variables['ams_content'] as $key => $value){ foreach ( $variables['ams_content'] as $key => $value){
$smarty -> assign( $key, $value); $smarty -> assign( $key, $value);
} }
//smarty inheritance for loading the matching wrapper layout (with the matching menu bar) // smarty inheritance for loading the matching wrapper layout (with the matching menu bar)
if( isset($vars['permission']) && $vars['permission'] == 3 ){ if ( isset( $vars['permission'] ) && $vars['permission'] == 3 ) {
$inherited = "extends:layout_admin.tpl|"; $inherited = "extends:layout_admin.tpl|";
}else if( isset($vars['permission']) && $vars['permission'] == 2){ } else if ( isset( $vars['permission'] ) && $vars['permission'] == 2 ) {
$inherited = "extends:layout_mod.tpl|"; $inherited = "extends:layout_mod.tpl|";
}else if( isset($vars['permission']) && $vars['permission'] == 1){ } else if ( isset( $vars['permission'] ) && $vars['permission'] == 1 ) {
$inherited = "extends:layout_user.tpl|"; $inherited = "extends:layout_user.tpl|";
}else{ } else {
$inherited =""; $inherited = "";
} }
//if $returnHTML is set to true, return the html by fetching the template else display the template. // if $returnHTML is set to true, return the html by fetching the template else display the template.
if($returnHTML == true){ if ( $returnHTML == true ) {
return $smarty ->fetch($inherited . $template . '.tpl' ); return $smarty -> fetch( $inherited . $template . '.tpl' );
}else{ } else {
$smarty -> display( $inherited . $template . '.tpl' ); $smarty -> display( $inherited . $template . '.tpl' );
} }
} }
/** /**
* creates the folders that are needed for smarty. * creates the folders that are needed for smarty.
* @todo for the drupal module it might be possible that drupal_mkdir needs to be used instead of mkdir, also this should be in the install.php instead. *
*/ * @todo for the drupal module it might be possible that drupal_mkdir needs to be used instead of mkdir, also this should be in the install.php instead.
static public function create_folders(){ */
global $AMS_LIB; static public function create_folders() {
global $AMS_LIB;
global $SITEBASE; global $SITEBASE;
$arr = array( $AMS_LIB . '/ingame_templates/', $arr = array( $AMS_LIB . '/ingame_templates/',
$AMS_LIB . '/configs', $AMS_LIB . '/configs',
//$AMS_LIB . '/cache', // $AMS_LIB . '/cache',
$SITEBASE . '/cache/', $SITEBASE . '/cache/',
$SITEBASE . '/templates/', $SITEBASE . '/templates/',
$SITEBASE . '/templates_c/', $SITEBASE . '/templates_c/',
$SITEBASE . '/configs' $SITEBASE . '/configs'
); );
foreach ( $arr as & $value ){ foreach ( $arr as &$value ) {
if ( !file_exists( $value ) ){ if ( !file_exists( $value ) ) {
print($value); print( $value );
mkdir($value); mkdir( $value );
} }
} }
} }
/** /**
* check if the http request is sent ingame or not. * check if the http request is sent ingame or not.
*
* @return returns true in case it's sent ingame, else false is returned. * @return returns true in case it's sent ingame, else false is returned.
*/ */
static public function check_if_game_client() static public function check_if_game_client()
{ {
// if HTTP_USER_AGENT is not set then its ryzom core // if HTTP_USER_AGENT is not set then its ryzom core
global $FORCE_INGAME; global $FORCE_INGAME;
if ( ( isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'],"Ryzom") === 0)) || $FORCE_INGAME || ! isset($_SERVER['HTTP_USER_AGENT']) ){ if ( ( isset( $_SERVER['HTTP_USER_AGENT'] ) && ( strpos( $_SERVER['HTTP_USER_AGENT'], "Ryzom" ) === 0 ) ) || $FORCE_INGAME || ! isset( $_SERVER['HTTP_USER_AGENT'] ) ) {
return true; return true;
}else{ } else {
return false; return false;
} }
} }
/** /**
* Handles the language specific aspect. * Handles the language specific aspect.
* The language can be changed by setting the $_GET['Language'] & $_GET['setLang'] together. This will also change the language entry of the user in the db. * The language can be changed by setting the $_GET['Language'] & $_GET['setLang'] together. This will also change the language entry of the user in the db.
* Cookies are also being used in case the user isn't logged in. * Cookies are also being used in case the user isn't logged in.
*
* @return returns the parsed content of the language .ini file related to the users language setting. * @return returns the parsed content of the language .ini file related to the users language setting.
*/ */
static public function handle_language(){ static public function handle_language() {
global $DEFAULT_LANGUAGE; global $DEFAULT_LANGUAGE;
global $AMS_TRANS; global $AMS_TRANS;
//if user wants to change the language // if user wants to change the language
if(isset($_GET['Language']) && isset($_GET['setLang'])){ if ( isset( $_GET['Language'] ) && isset( $_GET['setLang'] ) ) {
//The ingame client sometimes sends full words, derive those! // The ingame client sometimes sends full words, derive those!
switch($_GET['Language']){ switch ( $_GET['Language'] ) {
case "English": case "English":
$lang = "en"; $lang = "en";
break; break;
case "French": case "French":
$lang = "fr"; $lang = "fr";
break; break;
default: default:
$lang = $_GET['Language']; $lang = $_GET['Language'];
} }
//if the file exists en the setLang = true // if the file exists en the setLang = true
if( file_exists( $AMS_TRANS . '/' . $lang . '.ini' ) && $_GET['setLang'] == "true"){ if ( file_exists( $AMS_TRANS . '/' . $lang . '.ini' ) && $_GET['setLang'] == "true" ) {
//set a cookie & session var and incase logged in write it to the db! // set a cookie & session var and incase logged in write it to the db!
setcookie( 'Language', $lang , time() + 60*60*24*30 ); setcookie( 'Language', $lang , time() + 60 * 60 * 24 * 30 );
$_SESSION['Language'] = $lang; $_SESSION['Language'] = $lang;
if(WebUsers::isLoggedIn()){ if ( WebUsers :: isLoggedIn() ) {
WebUsers::setLanguage($_SESSION['id'],$lang); WebUsers :: setLanguage( $_SESSION['id'], $lang );
} }
}else{ } else {
$_SESSION['Language'] = $DEFAULT_LANGUAGE; $_SESSION['Language'] = $DEFAULT_LANGUAGE;
} }
}else{ } else {
//if the session var is not set yet // if the session var is not set yet
if(!isset($_SESSION['Language'])){ if ( !isset( $_SESSION['Language'] ) ) {
//check if a cookie already exists for it // check if a cookie already exists for it
if ( isset( $_COOKIE['Language'] ) ) { if ( isset( $_COOKIE['Language'] ) ) {
$_SESSION['Language'] = $_COOKIE['Language']; $_SESSION['Language'] = $_COOKIE['Language'];
//else use the default language // else use the default language
}else{ } else {
$_SESSION['Language'] = $DEFAULT_LANGUAGE; $_SESSION['Language'] = $DEFAULT_LANGUAGE;
} }
} }
} }
if ($_SESSION['Language'] == ""){
$_SESSION['Language'] = $DEFAULT_LANGUAGE;
}
return parse_ini_file( $AMS_TRANS . '/' . $_SESSION['Language'] . '.ini', true );
}
/** if ( $_SESSION['Language'] == "" ) {
* Time output function for handling the time display. $_SESSION['Language'] = $DEFAULT_LANGUAGE;
* @return returns the time in the format specified in the $TIME_FORMAT global variable. }
*/ return parse_ini_file( $AMS_TRANS . '/' . $_SESSION['Language'] . '.ini', true );
static public function outputTime($time, $str = 1){
global $TIME_FORMAT; }
if($str){
return date($TIME_FORMAT,strtotime($time));
}else{ /**
return date($TIME_FORMAT,$time); * Time output function for handling the time display.
} *
} * @return returns the time in the format specified in the $TIME_FORMAT global variable.
*/
/** static public function outputTime( $time, $str = 1 ) {
* Auto login function for ingame use. global $TIME_FORMAT;
* This function will allow users who access the website ingame, to log in without entering the username and password. It uses the COOKIE entry in the open_ring db. if ( $str ) {
* it checks if the cookie sent by the http request matches the one in the db. This cookie in the db is changed everytime the user relogs. return date( $TIME_FORMAT, strtotime( $time ) );
* @return returns "FALSE" if the cookies didn't match, else it returns an array with the user's id and name. } else {
*/ return date( $TIME_FORMAT, $time );
static public function check_login_ingame(){ }
if ( helpers :: check_if_game_client () or $forcelibrender = false ){ }
$dbr = new DBLayer("ring");
if (isset($_GET['UserId']) && isset($_COOKIE['ryzomId'])){ /**
$id = $_GET['UserId']; * Auto login function for ingame use.
$statement = $dbr->execute("SELECT * FROM ring_users WHERE user_id=:id AND cookie =:cookie", array('id' => $id, 'cookie' => $_COOKIE['ryzomId'])); * This function will allow users who access the website ingame, to log in without entering the username and password. It uses the COOKIE entry in the open_ring db.
if ($statement->rowCount() ){ * it checks if the cookie sent by the http request matches the one in the db. This cookie in the db is changed everytime the user relogs.
$entry = $statement->fetch(); *
//print_r($entry); * @return returns "FALSE" if the cookies didn't match, else it returns an array with the user's id and name.
return array('id' => $entry['user_id'], 'name' => $entry['user_name']); */
}else{ static public function check_login_ingame() {
return "FALSE"; if ( helpers :: check_if_game_client () or $forcelibrender = false ) {
} $dbr = new DBLayer( "ring" );
}else{ if ( isset( $_GET['UserId'] ) && isset( $_COOKIE['ryzomId'] ) ) {
return "FALSE"; $id = $_GET['UserId'];
}
}else{ $statement = $dbr -> select( "ring_users", array( 'id' => $id, 'cookie' => $_COOKIE['ryzomId'] ), "user_id=:id AND cookie =:cookie" );
return "FALSE";
} // $statement = $dbr->execute("SELECT * FROM ring_users WHERE user_id=:id AND cookie =:cookie", array('id' => $id, 'cookie' => $_COOKIE['ryzomId']));
}
if ( $statement -> rowCount() ) {
$entry = $statement -> fetch();
// print_r($entry);
return array( 'id' => $entry['user_id'], 'name' => $entry['user_name'] );
} else {
return "FALSE";
}
} else {
return "FALSE";
}
} else {
return "FALSE";
}
}
} }

@ -21,7 +21,7 @@ class In_Support_Group{
public static function userExistsInSGroup( $user_id, $group_id) { public static function userExistsInSGroup( $user_id, $group_id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
//check if name is already used //check if name is already used
if( $dbl->execute(" SELECT * FROM `in_support_group` WHERE `User` = :user_id and `Group` = :group_id ", array('user_id' => $user_id, 'group_id' => $group_id) )->rowCount() ){ if( $dbl->select("in_support_group", array('user_id' => $user_id, 'group_id' => $group_id), "`User` = :user_id and `Group` = :group_id")->rowCount() ){
return true; return true;
}else{ }else{
return false; return false;
@ -54,9 +54,7 @@ class In_Support_Group{
*/ */
public function create() { public function create() {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "INSERT INTO `in_support_group` (`User`,`Group`) VALUES (:user, :group)"; $dbl->insert("`in_support_group`", Array('User' => $this->user, 'Group' => $this->group);
$values = Array('user' => $this->user, 'group' => $this->group);
$dbl->execute($query, $values);
} }
@ -66,9 +64,7 @@ class In_Support_Group{
*/ */
public function delete() { public function delete() {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "DELETE FROM `in_support_group` WHERE `User` = :user_id and `Group` = :group_id"; $dbl->delete("`in_support_group`", array('user_id' => $this->getUser() ,'group_id' => $this->getGroup(), "`User` = :user_id and `Group` = :group_id");
$values = array('user_id' => $this->getUser() ,'group_id' => $this->getGroup());
$dbl->execute($query, $values);
} }
/* /*
@ -118,4 +114,4 @@ class In_Support_Group{
} }
} }

@ -118,12 +118,7 @@ class Mail_Handler{
$id_user = $recipient; $id_user = $recipient;
$recipient = NULL; $recipient = NULL;
} }
$db->insert("email", array('Recipient' => $recipient, 'Subject' => $subject, 'Body' => $body, 'Status' => 'NEW', 'Attempts'=> 0, 'Sender' => $from,'UserId' => $id_user, 'MessageId' => 0, 'TicketId'=> $ticket_id));
$query = "INSERT INTO email (Recipient,Subject,Body,Status,Attempts,Sender,UserId,MessageId,TicketId) VALUES (:recipient, :subject, :body, :status, :attempts, :sender, :id_user, :messageId, :ticketId)";
$values = array('recipient' => $recipient, 'subject' => $subject, 'body' => $body, 'status' => 'NEW', 'attempts'=> 0, 'sender' => $from,'id_user' => $id_user, 'messageId' => 0, 'ticketId'=> $ticket_id);
$db = new DBLayer("lib");
$db->execute($query, $values);
} }
@ -173,7 +168,7 @@ class Mail_Handler{
//select all new & failed emails & try to send them //select all new & failed emails & try to send them
//$emails = db_query("select * from email where status = 'NEW' or status = 'FAILED'"); //$emails = db_query("select * from email where status = 'NEW' or status = 'FAILED'");
$statement = $this->db->executeWithoutParams("select * from email where Status = 'NEW' or Status = 'FAILED'"); $statement = $this->db->select("email",array(null), "Status = 'NEW' or Status = 'FAILED'");
$emails = $statement->fetchAll(); $emails = $statement->fetchAll();
foreach($emails as $email) { foreach($emails as $email) {

@ -0,0 +1,269 @@
<?php
/**
* API for loading and interacting with plugins
* contains getters and setters
*
* @author shubham meena mentored by Matthew Lagoe
*/
class Plugincache {
private $id;
private $plugin_name;
private $plugin_type;
private $plugin_permission;
private $plugin_status;
private $plugin_info = array();
private $update_info = array();
/**
* A constructor.
* Empty constructor
*/
public function __construct() {
}
public function set( $values ) {
$this -> setId( $values['Id'] );
$this -> setPluginName( $values['Name'] );
$this -> setPluginType( $values['Type'] );
$this -> setPluginPermission( $values['Permission'] );
$this -> setPluginStatus( $values['Status'] );
$this -> setPluginInfo( json_decode( $values['Info'] ) );
@$this -> setUpdateInfo( json_decode( $values['UpdateInfo'] ) );
}
/**
* loads the object's attributes.
*/
public function load_With_SID() {
$dbl = new DBLayer( "lib" );
$statement = $dbl -> executeWithoutParams( "SELECT * FROM plugins" );
$row = $statement -> fetch();
$this -> set( $row );
}
/**
* get plugin id attribute of the object.
*
* @return integer id
*/
public function getId() {
return $this -> Id;
}
/**
* get plugin permission attribute of the object.
*/
public function getPluginPermission() {
return $this -> plugin_permission;
}
/**
* get plugin Type attribute of the object.
*/
public function getPluginType() {
return $this -> plugin_version;
}
/**
* get plugin status attribute of the object.
*/
public function getPluginStatus() {
return $this -> plugin_status;
}
/**
* get plugin name attribute of the object.
*/
public function getPluginName() {
return $this -> plugin_name;
}
/**
* get plugin info array attribute of the object.
*/
public function getPluginInfo() {
return $this -> plugin_info;
}
/**
* set plugin id attribute of the object.
*
* @param $s integer id
*/
public function setId( $s ) {
$this -> Id = $s;
}
/**
* set plugin permission attribute of the object.
*
* @param $t type of the query, set permission
*/
public function setPluginPermission( $t ) {
$this -> plugin_permission = $t;
}
/**
* set plugin version attribute of the object.
*
* @param $q string to set plugin version
*/
public function setPluginType( $q ) {
$this -> plugin_version = $q;
}
/**
* set plugin status attribute of the object.
*
* @param $d status code type int
*/
public function setPluginStatus( $d ) {
$this -> plugin_status = $d;
}
/**
* set plugin name attribute of the object.
*
* @param $p_n string to set plugin name.
*/
public function setPluginName( $p_n ) {
$this -> plugin_name = $p_n;
}
/**
* set plugin info attribute array of the object.
*
* @param $p_n array
*/
public function setPluginInfo( $p_n ) {
$this -> plugin_info = $p_n;
}
/**
* functionalities for plugin updates
*/
/**
* set update info attribute array of the object.
*
* @param $p_n array
*/
public function setUpdateInfo( $p_n ) {
$this -> update_info = $p_n;
}
/**
* get plugin info array attribute of the object.
*/
public function getUpdateInfo() {
return $this -> update_info;
}
/**
* some more plugin function that requires during plugin operations
*/
/**
* function to remove a non empty directory
*
* @param $dir directory address
* @return boolean
*/
public static function rrmdir( $dir ) {
$result = array_diff( scandir( $dir ), array( '.', '..' ) );
foreach( $result as $item )
{
if ( !@unlink( $dir . '/' . $item ) )
Plugincache :: rrmdir( $dir . '/' . $item );
}
return rmdir( $dir );
}
/**
* function to unzip the zipped files
*
* @param $target_path path to the target zipped file
* @param $destination path to the destination
* @return boolean
*/
public static function zipExtraction( $target_path, $destination )
{
$zip = new ZipArchive();
$x = $zip -> open( $target_path );
if ( $x === true ) {
if ( $zip -> extractTo( $destination ) )
{
$zip -> close();
return true;
}
else
{
$zip -> close();
return false;
}
}
}
/**
* returns plugin information with respect to the id
*
* @param id $ plugin id
* @return field info for the plugin
*/
public static function pluginInfoUsingId( $id, $fieldName )
{
$db = new DBLayer( 'lib' );
$sth = $db -> selectWithParameter( $fieldName, 'plugins', array( 'id' => $id ), 'Id=:id' );
$row = $sth -> fetch();
return $row[$fieldName];
}
/**
* function provides list of active plugins
*
* @return $ac_plugins list of active plugins
*/
public static function activePlugins()
{
$db = new DBLayer( 'lib' );
$sth = $db -> selectWithParameter( 'Id', 'plugins', array( 'status' => 1 ), 'Status=:status' );
$row = $sth -> fetchAll();
return $row;
}
/**
* function to load hooks for the active plugins
* and return the contents in the hooks in an array
*
* @return $content content available in hooks
*/
public static function loadHooks()
{
$content = array();
$ac_arr = Plugincache :: activePlugins();
foreach( $ac_arr as $key => $value )
{
$plugin_path = Plugincache :: pluginInfoUsingId( $value['Id'], 'FileName' );
$template_path = json_decode( Plugincache :: pluginInfoUsingId( $value['Id'], 'Info' ) ) -> TemplatePath;
$plugin_name = explode( '/', $plugin_path )[4];
// calling hooks in the $pluginName.php
include $plugin_path . '/' . $plugin_name . '.php';
$arr = get_defined_functions();
foreach( $arr['user'] as $key => $value )
{
if ( stristr( $value, $plugin_name ) == true )
{
$content['hook_info'][$plugin_name] = call_user_func( $value );
}
}
// path for the template
$content['hook_info'][$plugin_name]['TemplatePath'] = $template_path;
}
return $content;
}
}

@ -47,7 +47,7 @@ class Querycache{
*/ */
public function load_With_SID( $id) { public function load_With_SID( $id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM ams_querycache WHERE SID=:id", array('id' => $id)); $statement = $dbl->select("ams_querycache", array('id' => $id), "SID=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->set($row); $this->set($row);
} }
@ -58,9 +58,7 @@ class Querycache{
*/ */
public function update(){ public function update(){
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "UPDATE ams_querycache SET type= :t, query = :q, db = :d WHERE SID=:id"; $dbl->update("ams_querycache", Array('type' => $this->getType(), 'query' => $this->getQuery(), 'db' => $this->getDb(), "SID=$this->getSID()" );
$values = Array('id' => $this->getSID(), 't' => $this->getType(), 'q' => $this->getQuery(), 'd' => $this->getDb());
$statement = $dbl->execute($query, $values);
} }
////////////////////////////////////////////Getters//////////////////////////////////////////////////// ////////////////////////////////////////////Getters////////////////////////////////////////////////////
@ -127,4 +125,4 @@ class Querycache{
$this->db= $d; $this->db= $d;
} }
} }

@ -0,0 +1,72 @@
<?php
/**
* REST API class
*
* Request for the given url using cURL
* and send the AccessToken for authentication
* to make public access for the user
*
* @author Shubham Meena, mentored by Matthew Lagoe
*/
class Rest_Api {
/**
* Makes a request using cURL with authentication headers and returns the response.
*
* @param $url where request is to be sent
* @param $applicationKey user generated key
* @param $host host for the website
* @return URL response.
*/
public function request( $url , $applicationKey, $host , $data )
{
// Check the referer is the host website
$referer = $_SERVER['HTTP_REFERER'];
$referer_parse = parse_url( $referer );
if ( $referer_parse['host'] == $host ) {
// Initialize the cURL session with the request URL
$session = curl_init( $url );
// Tell cURL to return the request data
curl_setopt( $session, CURLOPT_RETURNTRANSFER, true );
// Set the HTTP request authentication headers
$headers = array(
'AppKey: ' . $applicationKey,
'Timestamp: ' . date( 'Ymd H:i:s', time() ),
'Accept: application/json',
'Content-Type: application/json'
);
curl_setopt( $session, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $session, CURLOPT_CUSTOMREQUEST, "POST" );
curl_setopt( $session, CURLOPT_POSTFIELDS, $data );
// Execute cURL on the session handle
$response = curl_exec( $session );
if ( curl_errno( $session ) ) {
// if request is not sent
die( 'Couldn\'t send request: ' . curl_error( $session ) );
} else {
// check the HTTP status code of the request
$resultStatus = curl_getinfo( $session, CURLINFO_HTTP_CODE );
if ( $resultStatus == 200 ) {
// everything went fine return response
return $response;
} else {
// the request did not complete as expected. common errors are 4xx
// (not found, bad request, etc.) and 5xx (usually concerning
// errors/exceptions in the remote script execution)
die( 'Request failed: HTTP status code: ' . $resultStatus );
}
}
curl_close( $session );
}
else {
return null;
}
}
}

@ -24,7 +24,7 @@ class Support_Group{
*/ */
public static function getGroup($id) { public static function getGroup($id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM support_group WHERE SGroupId = :id", array('id' => $id)); $statement = $dbl->select("support_group", array('id' => $id), "SGroupId = :id");
$row = $statement->fetch(); $row = $statement->fetch();
$instanceGroup = new self(); $instanceGroup = new self();
$instanceGroup->set($row); $instanceGroup->set($row);
@ -102,10 +102,10 @@ class Support_Group{
public static function supportGroup_EntryNotExists( $name, $tag) { public static function supportGroup_EntryNotExists( $name, $tag) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
//check if name is already used //check if name is already used
if( $dbl->execute("SELECT * FROM support_group WHERE Name = :name",array('name' => $name))->rowCount() ){ if( $dbl->select("support_group", array('name' => $name), "Name = :name")->rowCount() ){
return "NAME_TAKEN"; return "NAME_TAKEN";
} }
else if( $dbl->execute("SELECT * FROM support_group WHERE Tag = :tag",array('tag' => $tag))->rowCount() ){ else if( $dbl->select("support_group", array('tag' => $tag), "Tag = :tag")->rowCount() ){
return "TAG_TAKEN"; return "TAG_TAKEN";
}else{ }else{
return "SUCCESS"; return "SUCCESS";
@ -121,7 +121,7 @@ class Support_Group{
public static function supportGroup_Exists( $id) { public static function supportGroup_Exists( $id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
//check if supportgroup id exist //check if supportgroup id exist
if( $dbl->execute("SELECT * FROM support_group WHERE SGroupId = :id",array('id' => $id ))->rowCount() ){ if( $dbl->select("support_group", array('id' => $id ), "SGroupId = :id")->rowCount() ){
return true; return true;
}else{ }else{
return false; return false;
@ -305,9 +305,7 @@ class Support_Group{
*/ */
public function create() { public function create() {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "INSERT INTO support_group (Name, Tag, GroupEmail, IMAP_MailServer, IMAP_Username, IMAP_Password) VALUES (:name, :tag, :groupemail, :imap_mailserver, :imap_username, :imap_password)"; $dbl->insert("support_group", Array('Name' => $this->getName(), 'Tag' => $this->getTag(), 'GroupEmail' => $this->getGroupEmail(), 'IMAP_MailServer' => $this->getIMAP_MailServer(), 'IMAP_Username' => $this->getIMAP_Username(), 'IMAP_Password' => $this->getIMAP_Password()));
$values = Array('name' => $this->getName(), 'tag' => $this->getTag(), 'groupemail' => $this->getGroupEmail(), 'imap_mailserver' => $this->getIMAP_MailServer(), 'imap_username' => $this->getIMAP_Username(), 'imap_password' => $this->getIMAP_Password());
$dbl->execute($query, $values);
} }
@ -318,7 +316,7 @@ class Support_Group{
*/ */
public function load_With_SGroupId( $id) { public function load_With_SGroupId( $id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM `support_group` WHERE `SGroupId` = :id", array('id' => $id)); $statement = $dbl->select("`support_group`", array('id' => $id), "`SGroupId` = :id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->set($row); $this->set($row);
} }
@ -329,9 +327,7 @@ class Support_Group{
*/ */
public function update(){ public function update(){
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "UPDATE `support_group` SET `Name` = :name, `Tag` = :tag, `GroupEmail` = :groupemail, `IMAP_MailServer` = :mailserver, `IMAP_Username` = :username, `IMAP_Password` = :password WHERE `SGroupId` = :id"; $dbl->update("`support_group`", Array('Name' => $this->getName(), 'Tag' => $this->getTag(), 'GroupEmail' => $this->getGroupEmail(), 'IMAP_MailServer' => $this->getIMAP_MailServer(), 'IMAP_Username' => $this->getIMAP_Username(), 'IMAP_password' => $this->getIMAP_Password(), "`SGroupId` = $this->getSGroupId()"));
$values = Array('id' => $this->getSGroupId(), 'name' => $this->getName(), 'tag' => $this->getTag(), 'groupemail' => $this->getGroupEmail(), 'mailserver' => $this->getIMAP_MailServer(), 'username' => $this->getIMAP_Username(), 'password' => $this->getIMAP_Password() );
$statement = $dbl->execute($query, $values);
} }
@ -341,9 +337,7 @@ class Support_Group{
*/ */
public function delete(){ public function delete(){
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "DELETE FROM `support_group` WHERE `SGroupId` = :id"; $dbl->delete("`support_group`", Array('id' => $this->getSGroupId(), "`SGroupId` = :id"));
$values = Array('id' => $this->getSGroupId());
$statement = $dbl->execute($query, $values);
} }
////////////////////////////////////////////Getters//////////////////////////////////////////////////// ////////////////////////////////////////////Getters////////////////////////////////////////////////////
@ -453,4 +447,4 @@ class Support_Group{
public function setIMAP_Password($p){ public function setIMAP_Password($p){
$this->iMap_Password = $p; $this->iMap_Password = $p;
} }
} }

@ -42,34 +42,37 @@ class Sync{
$decode = json_decode($record['query']); $decode = json_decode($record['query']);
$values = array('username' => $decode[0]); $values = array('username' => $decode[0]);
//make connection with and put into shard db & delete from the lib //make connection with and put into shard db & delete from the lib
$sth = $db->execute("SELECT UId FROM user WHERE Login= :username;", $values); $sth=$db->selectWithParameter("UId", "user", $values, "Login= :username" );
$result = $sth->fetchAll(); $result = $sth->fetchAll();
foreach ($result as $UId) { foreach ($result as $UId) {
$ins_values = array('id' => $UId['UId']); $ins_values = array('UId' => $UId['UId']);
$db->execute("INSERT INTO permission (UId, ClientApplication, AccessPrivilege) VALUES (:id, 'r2', 'OPEN');", $ins_values); $ins_values['ClientApplication'] = "r2";
$db->execute("INSERT INTO permission (UId, ClientApplication, AccessPrivilege) VALUES (:id , 'ryzom_open', 'OPEN');", $ins_values); $ins_values['AccessPrivilege'] = "OPEN";
$db->insert("permission", $ins_values);
$ins_values['ClientApplication'] = 'ryzom_open';
$db->insert("permission",$ins_values);
} }
break; break;
case 'change_pass': case 'change_pass':
$decode = json_decode($record['query']); $decode = json_decode($record['query']);
$values = array('user' => $decode[0], 'pass' => $decode[1]); $values = array('Password' => $decode[1]);
//make connection with and put into shard db & delete from the lib //make connection with and put into shard db & delete from the lib
$db->execute("UPDATE user SET Password = :pass WHERE Login = :user",$values); $db->update("user", $values, "Login = $decode[0]");
break; break;
case 'change_mail': case 'change_mail':
$decode = json_decode($record['query']); $decode = json_decode($record['query']);
$values = array('user' => $decode[0], 'mail' => $decode[1]); $values = array('Email' => $decode[1]);
//make connection with and put into shard db & delete from the lib //make connection with and put into shard db & delete from the lib
$db->execute("UPDATE user SET Email = :mail WHERE Login = :user",$values); $db->update("user", $values, "Login = $decode[0]");
break; break;
case 'createUser': case 'createUser':
$decode = json_decode($record['query']); $decode = json_decode($record['query']);
$values = array('login' => $decode[0], 'pass' => $decode[1], 'mail' => $decode[2] ); $values = array('Login' => $decode[0], 'Password' => $decode[1], 'Email' => $decode[2] );
//make connection with and put into shard db & delete from the lib //make connection with and put into shard db & delete from the lib
$db->execute("INSERT INTO user (Login, Password, Email) VALUES (:login, :pass, :mail)",$values); $db->insert("user", $values);
break; break;
} }
$dbl->execute("DELETE FROM ams_querycache WHERE SID=:SID",array('SID' => $record['SID'])); $dbl->delete("ams_querycache", array('SID' => $record['SID']), "SID=:SID");
} }
if ($display == true) { if ($display == true) {
print('Syncing completed'); print('Syncing completed');

@ -27,7 +27,7 @@ class Ticket{
public static function ticketExists($id) { public static function ticketExists($id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
//check if ticket exists //check if ticket exists
if( $dbl->execute(" SELECT * FROM `ticket` WHERE `TId` = :ticket_id", array('ticket_id' => $id) )->rowCount() ){ if( $dbl->select("`ticket`", array('ticket_id' => $id), "`TId` = :ticket_id")->rowCount() ){
return true; return true;
}else{ }else{
return false; return false;
@ -343,9 +343,7 @@ class Ticket{
*/ */
public function create(){ public function create(){
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "INSERT INTO ticket (Timestamp, Title, Status, Queue, Ticket_Category, Author, Priority) VALUES (now(), :title, :status, :queue, :tcat, :author, :priority)"; $this->tId = $dbl->executeReturnId("ticket", Array('Timestamp'=>now(), 'Title' => $this->title, 'Status' => $this->status, 'Queue' => $this->queue, 'Ticket_Category' => $this->ticket_category, 'Author' => $this->author, 'Priority' => $this->priority));
$values = Array('title' => $this->title, 'status' => $this->status, 'queue' => $this->queue, 'tcat' => $this->ticket_category, 'author' => $this->author, 'priority' => $this->priority);
$this->tId = $dbl->executeReturnId($query, $values); ;
} }
@ -356,7 +354,7 @@ class Ticket{
*/ */
public function load_With_TId( $id) { public function load_With_TId( $id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM ticket WHERE TId=:id", array('id' => $id)); $statement = $dbl->select("ticket", array('id' => $id), "TId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->tId = $row['TId']; $this->tId = $row['TId'];
$this->timestamp = $row['Timestamp']; $this->timestamp = $row['Timestamp'];
@ -374,9 +372,7 @@ class Ticket{
*/ */
public function update(){ public function update(){
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "UPDATE ticket SET Timestamp = :timestamp, Title = :title, Status = :status, Queue = :queue, Ticket_Category = :tcat, Author = :author, Priority = :priority WHERE TId=:id"; $dbl->update("ticket", Array('Timestamp' => $this->timestamp, 'Title' => $this->title, 'Status' => $this->status, 'Queue' => $this->queue, 'Ticket_Category' => $this->ticket_category, 'Author' => $this->author, 'Priority' => $this->priority), "TId=$this->tId");
$values = Array('id' => $this->tId, 'timestamp' => $this->timestamp, 'title' => $this->title, 'status' => $this->status, 'queue' => $this->queue, 'tcat' => $this->ticket_category, 'author' => $this->author, 'priority' => $this->priority);
$statement = $dbl->execute($query, $values);
} }
@ -575,4 +571,4 @@ class Ticket{
$this->priority = $p; $this->priority = $p;
} }
} }

@ -16,10 +16,7 @@ class Ticket_Category{
*/ */
public static function createTicketCategory( $name) { public static function createTicketCategory( $name) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "INSERT INTO ticket_category (Name) VALUES (:name)"; $dbl->insert("ticket_category", Array('Name' => $name));
$values = Array('name' => $name);
$dbl->execute($query, $values);
} }
@ -40,7 +37,7 @@ class Ticket_Category{
*/ */
public static function getAllCategories() { public static function getAllCategories() {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->executeWithoutParams("SELECT * FROM ticket_category"); $statement = $dbl->select("ticket_category", array(null), "1");
$row = $statement->fetchAll(); $row = $statement->fetchAll();
$result = Array(); $result = Array();
foreach($row as $category){ foreach($row as $category){
@ -70,7 +67,7 @@ class Ticket_Category{
*/ */
public function load_With_TCategoryId( $id) { public function load_With_TCategoryId( $id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM ticket_category WHERE TCategoryId=:id", array('id' => $id)); $statement = $dbl->select("ticket_category", array('id' => $id), "TCategoryId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->tCategoryId = $row['TCategoryId']; $this->tCategoryId = $row['TCategoryId'];
$this->name = $row['Name']; $this->name = $row['Name'];
@ -82,9 +79,7 @@ class Ticket_Category{
*/ */
public function update(){ public function update(){
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "UPDATE ticket_category SET Name = :name WHERE TCategoryId=:id"; $dbl->update("ticket_category", Array('Name' => $this->name), "TCategoryId = $this->tCategoryId");
$values = Array('id' => $this->tCategoryId, 'name' => $this->name);
$statement = $dbl->execute($query, $values);
} }
////////////////////////////////////////////Getters//////////////////////////////////////////////////// ////////////////////////////////////////////Getters////////////////////////////////////////////////////
@ -126,4 +121,4 @@ class Ticket_Category{
} }
} }

@ -43,9 +43,7 @@ class Ticket_Content{
*/ */
public function create() { public function create() {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "INSERT INTO ticket_content (Content) VALUES (:content)"; $this->tContentId = $dbl->executeReturnId("ticket_content", Array('Content' => $this->content));
$values = Array('content' => $this->content);
$this->tContentId = $dbl->executeReturnId($query, $values); ;
} }
@ -56,7 +54,7 @@ class Ticket_Content{
*/ */
public function load_With_TContentId( $id) { public function load_With_TContentId( $id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM ticket_content WHERE TContentId=:id", array('id' => $id)); $statement = $dbl->select("ticket_content", array('id' => $id), "TContentId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->tContentId = $row['TContentId']; $this->tContentId = $row['TContentId'];
$this->content = $row['Content']; $this->content = $row['Content'];
@ -67,9 +65,7 @@ class Ticket_Content{
*/ */
public function update(){ public function update(){
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "UPDATE ticket_content SET Content = :content WHERE TContentId=:id"; $dbl->update("ticket_content", Array('Content' => $this->content), "TContentId = $this->tContentId");
$values = Array('id' => $this->tContentId, 'content' => $this->content);
$statement = $dbl->execute($query, $values);
} }
////////////////////////////////////////////Getters//////////////////////////////////////////////////// ////////////////////////////////////////////Getters////////////////////////////////////////////////////
@ -110,4 +106,4 @@ class Ticket_Content{
$this->tContentId = $c; $this->tContentId = $c;
} }
} }

@ -52,7 +52,7 @@ class Ticket_Info{
public static function TicketHasInfo($ticket_id) { public static function TicketHasInfo($ticket_id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
//check if ticket is already assigned //check if ticket is already assigned
if( $dbl->execute(" SELECT * FROM `ticket_info` WHERE `Ticket` = :ticket_id", array('ticket_id' => $ticket_id) )->rowCount() ){ if( $dbl->select("`ticket_info`", array('ticket_id' => $ticket_id), "`Ticket` = :ticket_id")->rowCount() ){
return true; return true;
}else{ }else{
return false; return false;
@ -102,7 +102,7 @@ class Ticket_Info{
*/ */
public function load_With_TInfoId( $id) { public function load_With_TInfoId( $id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM ticket_info WHERE TInfoId=:id", array('id' => $id)); $statement = $dbl->select("ticket_info", array('id' => $id), "TInfoId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->set($row); $this->set($row);
} }
@ -115,7 +115,7 @@ class Ticket_Info{
*/ */
public function load_With_Ticket( $id) { public function load_With_Ticket( $id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM ticket_info WHERE Ticket=:id", array('id' => $id)); $statement = $dbl->select("ticket_info", array('id' => $id), "Ticket=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->set($row); $this->set($row);
} }
@ -127,12 +127,10 @@ class Ticket_Info{
*/ */
public function create() { public function create() {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "INSERT INTO ticket_info ( Ticket, ShardId, UserPosition,ViewPosition, ClientVersion, PatchVersion,ServerTick, ConnectState, LocalAddress, Memory, OS, $values = Array('Ticket' => $this->getTicket(), 'ShardId' => $this->getShardId(), 'UserPosition' => $this->getUser_Position(), 'ViewPosition' => $this->getView_Position(), 'ClientVersion' => $this->getClient_Version(),
Processor, CPUID, CpuMask, HT, NeL3D, UserId) VALUES ( :ticket, :shardid, :userposition, :viewposition, :clientversion, :patchversion, :servertick, :connectstate, :localaddress, :memory, :os, :processor, :cpuid, :cpu_mask, :ht, :nel3d, :user_id )"; 'PatchVersion' => $this->getPatch_Version(), 'ServerTick' => $this->getServer_Tick(), 'ConnectState' => $this->getConnect_State(), 'LocalAddress' => $this->getLocal_Address(), 'Memory' => $this->getMemory(), 'OS'=> $this->getOS(), 'Processor' => $this->getProcessor(), 'CPUID' => $this->getCPUId(),
$values = Array('ticket' => $this->getTicket(), 'shardid' => $this->getShardId(), 'userposition' => $this->getUser_Position(), 'viewposition' => $this->getView_Position(), 'clientversion' => $this->getClient_Version(), 'CpuMask' => $this->getCpu_Mask(), 'HT' => $this->getHT(), 'NeL3D' => $this->getNel3D(), 'UserId' => $this->getUser_Id());
'patchversion' => $this->getPatch_Version(), 'servertick' => $this->getServer_Tick(), 'connectstate' => $this->getConnect_State(), 'localaddress' => $this->getLocal_Address(), 'memory' => $this->getMemory(), 'os'=> $this->getOS(), 'processor' => $this->getProcessor(), 'cpuid' => $this->getCPUId(), $dbl->insert("ticket_info",$values);
'cpu_mask' => $this->getCpu_Mask(), 'ht' => $this->getHT(), 'nel3d' => $this->getNel3D(), 'user_id' => $this->getUser_Id());
$dbl->execute($query, $values);
} }
@ -411,4 +409,4 @@ Processor, CPUID, CpuMask, HT, NeL3D, UserId) VALUES ( :ticket, :shardid, :user
} }
} }

@ -82,9 +82,8 @@ class Ticket_Log{
global $TICKET_LOGGING; global $TICKET_LOGGING;
if($TICKET_LOGGING){ if($TICKET_LOGGING){
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "INSERT INTO ticket_log (Timestamp, Query, Ticket, Author) VALUES (now(), :query, :ticket, :author )"; $values = Array('Timestamp'=>now(), 'Query' => json_encode(array($action,$arg)), 'Ticket' => $ticket_id, 'Author' => $author_id);
$values = Array('ticket' => $ticket_id, 'author' => $author_id, 'query' => json_encode(array($action,$arg))); $dbl->insert("ticket_log", $values);
$dbl->execute($query, $values);
} }
} }
@ -148,7 +147,7 @@ class Ticket_Log{
*/ */
public function load_With_TLogId( $id) { public function load_With_TLogId( $id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM ticket_log WHERE TLogId=:id", array('id' => $id)); $dbl->select("ticket_log", array('id' => $id), "TLogId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->set($row); $this->set($row);
} }
@ -159,9 +158,10 @@ class Ticket_Log{
*/ */
public function update(){ public function update(){
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "UPDATE ticket_log SET Timestamp = :timestamp, Query = :query, Author = :author, Ticket = :ticket WHERE TLogId=:id";
$values = Array('id' => $this->getTLogId(), 'timestamp' => $this->getTimestamp(), 'query' => $this->getQuery(), 'author' => $this->getAuthor(), 'ticket' => $this->getTicket() ); $values = Array('timestamp' => $this->getTimestamp(), 'query' => $this->getQuery(), 'author' => $this->getAuthor(), 'ticket' => $this->getTicket() );
$statement = $dbl->execute($query, $values); $dbl->update("ticket_log", $values, "TLogId = $this->getTLogId()");
} }
////////////////////////////////////////////Getters//////////////////////////////////////////////////// ////////////////////////////////////////////Getters////////////////////////////////////////////////////
@ -273,4 +273,4 @@ class Ticket_Log{
} }
} }

@ -123,9 +123,7 @@ class Ticket_Reply{
*/ */
public function create(){ public function create(){
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "INSERT INTO ticket_reply (Ticket, Content, Author, Timestamp, Hidden) VALUES (:ticket, :content, :author, now(), :hidden)"; $this->tReplyId = $dbl->executeReturnId("ticket_reply", Array('Ticket' => $this->ticket, 'Content' => $this->content, 'Author' => $this->author,'Timestamp'=>now(), 'Hidden' => $this->hidden));
$values = Array('ticket' => $this->ticket, 'content' => $this->content, 'author' => $this->author, 'hidden' => $this->hidden);
$this->tReplyId = $dbl->executeReturnId($query, $values);
} }
/** /**
@ -135,7 +133,7 @@ class Ticket_Reply{
*/ */
public function load_With_TReplyId( $id) { public function load_With_TReplyId( $id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM ticket_reply WHERE TReplyId=:id", array('id' => $id)); $statement = $dbl->select("ticket_reply", array('id' => $id), "TReplyId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->tReplyId = $row['TReplyId']; $this->tReplyId = $row['TReplyId'];
$this->ticket = $row['Ticket']; $this->ticket = $row['Ticket'];
@ -150,9 +148,7 @@ class Ticket_Reply{
*/ */
public function update(){ public function update(){
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "UPDATE ticket SET Ticket = :ticket, Content = :content, Author = :author, Timestamp = :timestamp, Hidden = :hidden WHERE TReplyId=:id"; $dbl->update("ticket", Array('Ticket' => $this->ticket, 'Content' => $this->content, 'Author' => $this->author, 'Timestamp' => $this->timestamp, 'Hidden' => $this->hidden), "TReplyId=$this->tReplyId, ");
$values = Array('id' => $this->tReplyId, 'timestamp' => $this->timestamp, 'ticket' => $this->ticket, 'content' => $this->content, 'author' => $this->author, 'hidden' => $this->hidden);
$statement = $dbl->execute($query, $values);
} }
////////////////////////////////////////////Getters//////////////////////////////////////////////////// ////////////////////////////////////////////Getters////////////////////////////////////////////////////
@ -249,4 +245,4 @@ class Ticket_Reply{
public function setHidden($h){ public function setHidden($h){
$this->hidden = $h; $this->hidden = $h;
} }
} }

@ -21,10 +21,7 @@ class Ticket_User{
*/ */
public static function createTicketUser( $extern_id, $permission) { public static function createTicketUser( $extern_id, $permission) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "INSERT INTO ticket_user (Permission, ExternId) VALUES (:perm, :ext_id)"; $dbl->insert("ticket_user",array('Permission' => $permission, 'ExternId' => $extern_id));
$values = Array('perm' => $permission, 'ext_id' => $extern_id);
$dbl->execute($query, $values);
} }
@ -73,7 +70,7 @@ class Ticket_User{
*/ */
public static function getModsAndAdmins() { public static function getModsAndAdmins() {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->executeWithoutParams("SELECT * FROM `ticket_user` WHERE `Permission` > 1"); $statement = $dbl->select("ticket_user", array(null), "`Permission` > 1" );
$rows = $statement->fetchAll(); $rows = $statement->fetchAll();
$result = Array(); $result = Array();
foreach($rows as $user){ foreach($rows as $user){
@ -93,7 +90,7 @@ class Ticket_User{
public static function constr_ExternId( $id) { public static function constr_ExternId( $id) {
$instance = new self(); $instance = new self();
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM ticket_user WHERE ExternId=:id", array('id' => $id)); $statement = $dbl->select("ticket_user" ,array('id'=>$id) ,"ExternId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$instance->tUserId = $row['TUserId']; $instance->tUserId = $row['TUserId'];
$instance->permission = $row['Permission']; $instance->permission = $row['Permission'];
@ -196,7 +193,7 @@ class Ticket_User{
*/ */
public function load_With_TUserId( $id) { public function load_With_TUserId( $id) {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$statement = $dbl->execute("SELECT * FROM ticket_user WHERE TUserId=:id", array('id' => $id)); $statement = $dbl->select("ticket_user" ,array('id'=>$id), "TUserId=:id" );
$row = $statement->fetch(); $row = $statement->fetch();
$this->tUserId = $row['TUserId']; $this->tUserId = $row['TUserId'];
$this->permission = $row['Permission']; $this->permission = $row['Permission'];
@ -209,9 +206,7 @@ class Ticket_User{
*/ */
public function update(){ public function update(){
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$query = "UPDATE ticket_user SET Permission = :perm, ExternId = :ext_id WHERE TUserId=:id"; $dbl->update("ticket_user" ,array('Permission' => $this->permission, 'ExternId' => $this->externId) ,"TUserId=$this->tUserId");
$values = Array('id' => $this->tUserId, 'perm' => $this->permission, 'ext_id' => $this->externId);
$statement = $dbl->execute($query, $values);
} }
////////////////////////////////////////////Getters//////////////////////////////////////////////////// ////////////////////////////////////////////Getters////////////////////////////////////////////////////
@ -266,4 +261,4 @@ class Ticket_User{
} }
} }

@ -289,11 +289,13 @@ class Users{
public static function createUser($values, $user_id){ public static function createUser($values, $user_id){
try { try {
//make connection with and put into shard db //make connection with and put into shard db
$values['user_id']= $user_id;
$dbs = new DBLayer("shard"); $dbs = new DBLayer("shard");
$dbs->execute("INSERT INTO user (Login, Password, Email) VALUES (:name, :pass, :mail)",$values); $dbs->insert("user", $values);
$dbr = new DBLayer("ring"); $dbr = new DBLayer("ring");
$dbr->execute("INSERT INTO ring_users (user_id, user_name, user_type) VALUES (:user_id, :name, 'ut_pioneer')",$values); $valuesRing['user_id'] =$user_id;
$valuesRing['user_name'] = $values['Login'];
$valuesRing['user_type'] = 'ut_pioneer';
$dbr->insert("ring_users", $valuesRing);
ticket_user::createTicketUser( $user_id, 1); ticket_user::createTicketUser( $user_id, 1);
return "ok"; return "ok";
} }
@ -301,8 +303,8 @@ class Users{
//oh noooz, the shard is offline! Put in query queue at ams_lib db! //oh noooz, the shard is offline! Put in query queue at ams_lib db!
try { try {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$dbl->execute("INSERT INTO ams_querycache (type, query, db) VALUES (:type, :query, :db)",array("type" => "createUser", $dbl->insert("ams_querycache", array("type" => "createUser",
"query" => json_encode(array($values["name"],$values["pass"],$values["mail"])), "db" => "shard")); "query" => json_encode(array($values["Login"],$values["Password"],$values["Email"])), "db" => "shard"));
ticket_user::createTicketUser( $user_id , 1 ); ticket_user::createTicketUser( $user_id , 1 );
return "shardoffline"; return "shardoffline";
}catch (PDOException $e) { }catch (PDOException $e) {
@ -323,21 +325,20 @@ class Users{
try { try {
$values = array('username' => $pvalues[0]); $values = array('username' => $pvalues[0]);
$dbs = new DBLayer("shard"); $dbs = new DBLayer("shard");
$sth = $dbs->execute("SELECT UId FROM user WHERE Login= :username;", $values); $sth = $dbs->selectWithParameter("UId", "user", $values, "Login= :username");
$result = $sth->fetchAll(); $result = $sth->fetchAll();
foreach ($result as $UId) { foreach ($result as $UId) {
$ins_values = array('id' => $UId['UId']); $ins_values = array('UId' => $UId['UId'], 'clientApplication' => 'r2', 'AccessPrivilege' => 'OPEN');
$dbs->execute("INSERT INTO permission (UId, ClientApplication, AccessPrivilege) VALUES (:id, 'r2', 'OPEN');", $ins_values); $dbs->insert("permission", $ins_values);
$dbs->execute("INSERT INTO permission (UId, ClientApplication, AccessPrivilege) VALUES (:id , 'ryzom_open', 'OPEN');", $ins_values); $ins_values['clientApplication'] = 'ryzom_open';
$dbs->insert("permission", $ins_values);
} }
} }
catch (PDOException $e) { catch (PDOException $e) {
//oh noooz, the shard is offline! Put it in query queue at ams_lib db! //oh noooz, the shard is offline! Put it in query queue at ams_lib db!
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$dbl->execute("INSERT INTO ams_querycache (type, query, db) VALUES (:type, :query, :db)",array("type" => "createPermissions", $dbl->insert("ams_querycache", array("type" => "createPermissions",
"query" => json_encode(array($pvalues[0])), "db" => "shard")); "query" => json_encode(array($pvalues[0])), "db" => "shard"));
} }
return true; return true;
} }
@ -421,19 +422,19 @@ class Users{
*/ */
protected static function setAmsPassword($user, $pass){ protected static function setAmsPassword($user, $pass){
$values = Array('user' => $user, 'pass' => $pass); $values = Array('Password' => $pass);
try { try {
//make connection with and put into shard db //make connection with and put into shard db
$dbs = new DBLayer("shard"); $dbs = new DBLayer("shard");
$dbs->execute("UPDATE user SET Password = :pass WHERE Login = :user ",$values); $dbs->update("user", $values, "Login = $user");
return "ok"; return "ok";
} }
catch (PDOException $e) { catch (PDOException $e) {
//oh noooz, the shard is offline! Put in query queue at ams_lib db! //oh noooz, the shard is offline! Put in query queue at ams_lib db!
try { try {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$dbl->execute("INSERT INTO ams_querycache (type, query, db) VALUES (:type, :query, :db)",array("type" => "change_pass", $dbl->insert("ams_querycache", array("type" => "change_pass",
"query" => json_encode(array($values["user"],$values["pass"])), "db" => "shard")); "query" => json_encode(array($values["user"],$values["pass"])), "db" => "shard"));
return "shardoffline"; return "shardoffline";
}catch (PDOException $e) { }catch (PDOException $e) {
@ -451,19 +452,19 @@ class Users{
*/ */
protected static function setAmsEmail($user, $mail){ protected static function setAmsEmail($user, $mail){
$values = Array('user' => $user, 'mail' => $mail); $values = Array('Email' => $mail);
try { try {
//make connection with and put into shard db //make connection with and put into shard db
$dbs = new DBLayer("shard"); $dbs = new DBLayer("shard");
$dbs->execute("UPDATE user SET Email = :mail WHERE Login = :user ",$values); $dbs->update("user", $values, "Login = $user");
return "ok"; return "ok";
} }
catch (PDOException $e) { catch (PDOException $e) {
//oh noooz, the shard is offline! Put in query queue at ams_lib db! //oh noooz, the shard is offline! Put in query queue at ams_lib db!
try { try {
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$dbl->execute("INSERT INTO ams_querycache (type, query, db) VALUES (:type, :query, :db)",array("type" => "change_mail", $dbl->insert("ams_querycache", array("type" => "change_mail",
"query" => json_encode(array($values["user"],$values["mail"])), "db" => "shard")); "query" => json_encode(array($values["user"],$values["mail"])), "db" => "shard"));
return "shardoffline"; return "shardoffline";
}catch (PDOException $e) { }catch (PDOException $e) {
@ -472,6 +473,3 @@ class Users{
} }
} }
} }

@ -0,0 +1,8 @@
PluginName = API Key Management
Description = Provides public access to the API's by generating access tokens.
Version = 1.0.0
Type = automatic
TemplatePath = ../../../ams_lib/plugins/API_key_management/templates/index.tpl

@ -0,0 +1,213 @@
<?php
/**
* Global and Local Hooks for the API key Management plugin
* Global Hooks are defined with the prefix(name of the plugin)
* Local Hooks are defined with normal function name
*
* All the Global Hooks are called during the page load
* and Local Hooks are called according to conditions
*
* @author shubham meena mentored by Matthew Lagoe
*/
// Global variable to store the data which is
// returned to the templates
$return_set = array();
// Local variable to store data during
// functionalities of the hooks
$var_set = array();
/**
* Display hook for api key management
*/
function api_key_management_hook_display()
{
global $return_set;
// to display plugin name in menu bar
$return_set['menu_display'] = 'API Key Management';
}
/**
* Local Hook to validate the posted data
*/
function hook_validate( $var )
{
if ( isset( $var ) && !empty( $var ) )
{
return true;
}
else
{
return false;
}
}
/**
* Local Hook to set the POST variables and validate them
*/
function hook_variables()
{
global $var_set;
global $return_set;
if ( hook_validate( $_POST['expDate'] ) && hook_validate( $_POST['sp_name'] ) && hook_validate( $_POST['api_type'] )
&& hook_validate( $_POST['character_name'] ) )
{
$var_set['ExpiryDate'] = $_POST['expDate'];
$var_set['FrName'] = $_POST['sp_name'];
$var_set['UserType'] = $_POST['api_type'];
$var_set['UserCharacter'] = $_POST['character_name'];
$var_set['User'] = $_SESSION['user'];
$var_set['AddedOn'] = date( "Y-m-d H:i:s" );
$var_set['Items'] = '';
$return_set['gen_key_validate'] = 'true';
}
else
{
$return_set['gen_key_validate'] = 'false';
}
}
/**
* Global Hook to create table of the API_key_management
* if not created.
* Contains the sql code
*/
function api_key_management_hook_create_tb()
{
$dbl = new DBLayer( "lib" );
$sql = "
--
-- Database: `ryzom_ams_lib`
--
-- --------------------------------------------------------
--
-- Table structure for table `ams_api_keys`
--
CREATE TABLE IF NOT EXISTS `ams_api_keys` (
`SNo` int(10) NOT NULL AUTO_INCREMENT,
`User` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`FrName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`UserType` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
`UserCharacter` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`ExpiryDate` date DEFAULT NULL,
`AccessToken` text COLLATE utf8_unicode_ci DEFAULT NULL,
`AddedOn` datetime DEFAULT NULL,
`Items` text COLLATE utf8_unicode_ci,
PRIMARY KEY (`SNo`),
KEY `User` (`User`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
--
-- Constraints for table `ams_api_keys`
--
ALTER TABLE `ams_api_keys`
ADD CONSTRAINT `ams_api_keys_ibfk_1` FOREIGN KEY (`User`) REFERENCES `ryzom_ams`.`ams_user` (`Login`);";
$dbl -> executeWithoutParams( $sql );
}
/**
* Hook to store data to database which is sent as post
* method from the forms in this plugin
* It also calls the local hook
*/
function api_key_management_hook_store_db()
{
global $var_set;
global $return_set;
// if the form been submited move forward
if ( @hook_validate( $_POST['gen_key'] ) ) {
// local hook to validate the POST variables
hook_variables();
// if validation successfull move forward
if ( $return_set['gen_key_validate'] == 'true' && $_GET['plugin_action'] == 'generate_key' )
{
// this part generated the access token
include 'generate_key.php';
$var_set['AccessToken'] = generate_key :: randomToken( 56, false, true, false );
// database connection
$db = new DBLayer( 'lib' );
// insert the form data to the database
$db -> insert( 'ams_api_keys', $var_set );
// redirect to the the main page with success code
// 1 refers to the successfull addition of key to the database
header( "Location: index.php?page=layout_plugin&&name=API_key_management&&success=1" );
exit;
}
}
}
/**
* Global Hook to load the data from db and set it
* into the global array to return it to the template
*/
function api_key_management_hook_load_db()
{
global $var_set;
global $return_set;
$db = new DBLayer( 'lib' );
if ( isset( $_SESSION['user'] ) )
{
// returns the registered keys
$sth = $db -> select( 'ams_api_keys', array( 'user' => $_SESSION['user'] ), 'User = :user' );
$row = $sth -> fetchAll();
$return_set['api_keys'] = $row;
// fetch the character from the array to compare
$com = array_column( $return_set['api_keys'], 'UserCharacter' );
// returns the characters with respect to the user id in the ring_tool->characters
$db = new DBLayer( 'ring' );
$sth = $db -> selectWithParameter( 'char_name', 'characters' , array(), '1' );
$row = $sth -> fetch();
// loop through the character list and remove the character if already have an api key
$return_set['characters'] = array_diff( $row, $com );
}
}
/**
* Global Hook to update or delete the data from db
*/
function api_key_management_hook_update_db()
{
global $var_set;
global $return_set;
$db = new DBLayer( 'lib' );
if ( isset( $_GET['delete_id'] ) )
{
// removes the registered key using get variable which contains the id of the registered key
$db -> delete( 'ams_api_keys', array( 'SNo' => $_GET['delete_id'] ), 'SNo = :SNo' );
// redirecting to the API_key_management plugins template with success code
// 2 refers to the succssfull delete condition
header( "Location: index.php?page=layout_plugin&&name=API_key_management&&success=2" );
exit;
}
}
/**
* 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 api_key_management_hook_return_global()
{
global $return_set;
return $return_set;
}

@ -0,0 +1,53 @@
<?php
/**
* Class for API_Key_management plugin
* Contains the function to generate random Tokken
*
* @author shubham meena mentored by Matthew Lagoe
*/
class generate_key {
/**
* Static function to generate random token which is registerd with the user
* to allow public access using this random token
* It return different types of tokkens according to the parameters pass through it
* like length , if standard chracter requires, if special character requires etc
*/
public static function randomToken( $len = 64, $output = 5, $standardChars = true, $specialChars = true, $chars = array() ) {
$out = '';
$len = intval( $len );
$outputMap = array( 1 => 2, 2 => 8, 3 => 10, 4 => 16, 5 => 10 );
if ( !is_array( $chars ) ) {
$chars = array_unique( str_split( $chars ) );
}
if ( $standardChars ) {
$chars = array_merge( $chars, range( 48, 57 ), range( 65, 90 ), range( 97, 122 ) );
}
if ( $specialChars ) {
$chars = array_merge( $chars, range( 33, 47 ), range( 58, 64 ), range( 91, 96 ), range( 123, 126 ) );
}
array_walk( $chars, function( &$val ) {
if ( !is_int( $val ) ) {
$val = ord( $val ); }
}
);
if ( is_int( $len ) ) {
while ( $len ) {
$tmp = ord( openssl_random_pseudo_bytes( 1 ) );
if ( in_array( $tmp, $chars ) ) {
if ( !$output || !in_array( $output, range( 1, 5 ) ) || $output == 3 || $output == 5 ) {
$out .= ( $output == 3 ) ? $tmp : chr( $tmp );
}
else {
$based = base_convert( $tmp, 10, $outputMap[$output] );
$out .= ( ( ( $output == 1 ) ? '00' : ( ( $output == 4 ) ? '0x' : '' ) ) . ( ( $output == 2 ) ? sprintf( '%03d', $based ) : $based ) );
}
$len--;
}
}
}
return ( empty( $out ) ) ? false : $out;
}
}

@ -0,0 +1,46 @@
<div class="row-fluid">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-user"></i> API KEY management</h2>
<div class="box-icon">
<a href="#" class="btn btn-setting btn-round"><i class="icon-cog"></i></a>
<a href="#" class="btn btn-minimize btn-round"><i class="icon-chevron-up"></i></a>
<a href="#" class="btn btn-close btn-round"><i class="icon-remove"></i></a>
</div>
</div>
<div class="box span4">
<div class="box-header well" data-original-title="">
<h2><i class="icon-th"></i> Generate Access Key</h2>
<div class="box-icon">
<a href="#" class="btn btn-minimize btn-round"><i class="icon-chevron-up"></i></a>
<a href="#" class="btn btn-close btn-round"><i class="icon-remove"></i></a>
</div>
</div>
<div class="box-content">
<div class="row-fluid">
<form id="generateKey" class="form-vertical" method="post" action="index.php?page=layout_plugin&&name={$arrkey}">
<legend>Generate Key</legend>
<div class="control-group ">
<label class="control-label">Expirey:</label>
<div class="controls">
<div class="input-prepend">
<span style="margin-left:5px;" class="add-on"><i class="icon-time"></i></span>
<input type="text" value="Expiry Date" placeholder="Expiry Date" name="expDate" id="expDate" class="input-xlarge">
</div>
</div>
</div>
<div class="control-group">
<label class="control-label"></label>
<div class="controls">
<button type="submit" name="gen_key" value="true" class="btn btn-primary" style="margin-left:5px; margin-top:10px;">Generate Key</button>
</div>
</div>
</form>
</div>
</div>
</div><!--/span-->
</div><!--/span-->
</div><!--/row-->

@ -0,0 +1,133 @@
{block name=content}
{if isset($smarty.get.plugin_action) and $smarty.get.plugin_action eq 'generate_key'}
<div class="row-fluid">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-user"></i> API KEY management</h2>
<div class="box-icon">
<a href="#" class="btn btn-setting btn-round"><i class="icon-cog"></i></a>
<a href="#" class="btn btn-minimize btn-round"><i class="icon-chevron-up"></i></a>
<a href="#" class="btn btn-close btn-round"><i class="icon-remove"></i></a>
</div>
</div>
<div class="box span4">
<div class="box-header well" data-original-title="">
<h2><i class="icon-th"></i> Generate Access Key</h2>
<div class="box-icon">
<a href="#" class="btn btn-minimize btn-round"><i class="icon-chevron-up"></i></a>
<a href="#" class="btn btn-close btn-round"><i class="icon-remove"></i></a>
</div>
</div>
<div class="box-content">
<div class="row-fluid">
<form id="generateKey" class="form-vertical" method="post" action="index.php?page=layout_plugin&&name={$arrkey}&&plugin_action=generate_key">
<legend>Generate Key</legend>
<div class="control-group">
<label class="control-label">Name:</label>
<div class="controls">
<div class="input-prepend">
<span class="add-on" style="margin-left:5px;"><i class="icon-user"></i></span>
<input type="text" class="input-xlarge" id="sp_name" name="sp_name" placeholder="Your friendly name">
</div>
</div>
</div>
<div class="control-group">
<label class="control-label">Type:</label>
<div class="controls">
<select name="api_type">
<option value="Character">Character</option>
<option value="Corporation">Corporation</option>
</select>
</div>
</div>
<div class="control-group">
<label class="control-label">Character:</label>
<div class="controls">
<select name="character_name">
{foreach from=$hook_info.API_key_management.characters item=element}
<option value="{$element}">{$element}</option>
{/foreach}
</select>
</div>
</div>
<div class="control-group ">
<label class="control-label">Expirey:</label>
<div class="controls">
<div class="input-prepend">
<span style="margin-left:5px;" class="add-on"><i class="icon-time"></i></span>
<input type="text" placeholder="Expiry Date" name="expDate" id="expDate" class="input-xlarge">
</div>
</div>
</div>
<div class="control-group">
<label class="control-label"></label>
<div class="controls">
<button type="submit" name="gen_key" value="true" class="btn btn-primary" style="margin-left:5px; margin-top:10px;">Generate Key</button>
</div>
</div>
</form>
</div>
</div>
</div><!--/span-->
</div><!--/span-->
</div><!--/row-->
{else}
<div class="row-fluid">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-user"></i> API KEY management</h2>
<div class="box-icon">
<a href="#" class="btn btn-setting btn-round"><i class="icon-cog"></i></a>
<a href="#" class="btn btn-minimize btn-round"><i class="icon-chevron-up"></i></a>
<a href="#" class="btn btn-close btn-round"><i class="icon-remove"></i></a>
</div>
</div>
{if isset($hook_info.API_key_management['gen_key_validate']) and $hook_info.API_key_management['gen_key_validate'] eq 'false' }<div class="alert alert-error"><p>Please enter all the fields</p></div>{/if}
{if isset($smarty.get.success) and $smarty.get.success eq '1'}<div class="alert alert-error"><p>Key added successfully</p></div>{/if}
{if isset($smarty.get.success) and $smarty.get.success eq '2'}<div class="alert alert-error"><p>Key deleted successfully</p></div>{/if}
<center>
<a href="index.php?page=layout_plugin&&name=API_key_management&&plugin_action=generate_key"><button class="btn btn-primary btn-large dropdown-toggle">Generate key</button></a>
</center>
<div class="box-content">
<div class="row-fluid">
<center><p>All the keys you have generated will be shown and you can customize from here.</p></center>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Character</th>
<th>Access Key</th>
<th>Expires</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{foreach from=$hook_info.API_key_management.api_keys item=element}
<tr>
<td class="center">{$element.FrName}</td>
<td class="center">{$element.UserType}</td>
<td class="center">{$element.UserCharacter}</td>
<td class="center">{$element.AccessToken}</td>
<td class="center">{$element.ExpiryDate}</td>
<td><a href="index.php?page=layout_plugin&&name={$arrkey}&&delete_id={$element.SNo}"><button class="btn btn-primary btn-large">Delete</button></a>
</tr>
{/foreach}
</tbody>
</table>
</div>
</div><!--/span-->
</div><!--/span-->
</div><!--/row-->
{/if}
{/block}

@ -0,0 +1,8 @@
PluginName = Achievements
Description = Returns the achivements of a user with respect to the character =.
Version = 1.0.0
TemplatePath = ../../../ams_lib/plugins/Achievements/templates/index.tpl
Type = Manual

@ -0,0 +1,200 @@
<?php
/**
* Global and Local Hooks for the Achievements plugin
* Global Hooks are defined with the prefix(name of the plugin)
* Local Hooks are defined with normal function name
*
* All the Global Hooks are called during the page load
* and Local Hooks are called according to conditions
*
* Here, we request to the Achievements url using REST
* to get the contents and will display with this plugin.
*
* @author shubham meena mentored by Matthew Lagoe
*/
// Global variable to store the data which is
// returned to the templates
$return_set = array();
// Local variable to store data during
// functionalities of the hooks
$var_set = array();
/**
* Display hook for Achievements plugin
*/
function achievements_hook_display()
{
global $return_set;
// to display plugin name in menu bar
$return_set['menu_display'] = 'Achievements';
}
/**
* 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";
}
}
/**
* 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 $var_set;
global $return_set;
if ( isset( $_POST['get_data'] ) )
{
hook_variable_set();
// here we make the REST connection
$rest_api = new Rest_Api();
$ach_data = $rest_api -> request( $var_set['url'], $var_set['app_key'], $var_set['host'], $var_set['items'] );
// here we store the response we get from the server
$return_set['char_achievements'] = $ach_data ;
}
}
/**
* Global Hook to return global variables which contains
* the content to use in the smarty templates extracted from
* the database
*
* @return $return_set global array returns the template data
*/
function achievements_hook_get_db()
{
global $return_set;
if ( isset( $_SESSION['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;
}

@ -0,0 +1,71 @@
{block name=content}
{if isset($smarty.get.plugin_action) and $smarty.get.plugin_action eq 'get_achievements'}
<div class="row-fluid">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-user"></i> Achievements</h2>
<div class="box-icon">
<a href="#" class="btn btn-setting btn-round"><i class="icon-cog"></i></a>
<a href="#" class="btn btn-minimize btn-round"><i class="icon-chevron-up"></i></a>
<a href="#" class="btn btn-close btn-round"><i class="icon-remove"></i></a>
</div>
</div>
<div class="box-content">
{if isset($hook_info.Achievements.no_char)}<div class="alert alert-error"><p>{$hook_info.Achievements.no_char}</p></div>{/if}
<div class="row-fluid">
{$hook_info.Achievements.char_achievements}
</div>
</div><!--/span-->
</div><!--/span-->
</div><!--/row-->
{else}
<div class="row-fluid">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-user"></i> Achievements</h2>
<div class="box-icon">
<a href="#" class="btn btn-setting btn-round"><i class="icon-cog"></i></a>
<a href="#" class="btn btn-minimize btn-round"><i class="icon-chevron-up"></i></a>
<a href="#" class="btn btn-close btn-round"><i class="icon-remove"></i></a>
</div>
</div>
<div class="box span4">
<div class="box-header well" data-original-title="">
<h2><i class="icon-th"></i> Select your Character</h2>
<div class="box-icon">
<a href="#" class="btn btn-minimize btn-round"><i class="icon-chevron-up"></i></a>
<a href="#" class="btn btn-close btn-round"><i class="icon-remove"></i></a>
</div>
</div>
<div class="box-content">
<div class="row-fluid">
<form id="generateKey" class="form-vertical" method="post" action="index.php?page=layout_plugin&&name={$arrkey}&&plugin_action=get_achievements">
<div class="control-group">
<div class="control-group">
<label class="control-label">Character:</label>
<div class="controls">
<select name="Character">
{foreach from=$hook_info.Achievements.Character item=element}
<option value="{$element}">{$element}</option>
{/foreach}
</select>
</div>
</div>
<div class="control-group">
<label class="control-label"></label>
<div class="controls">
<button type="submit" name="get_data" value="true" class="btn btn-primary" style="margin-left:5px; margin-top:10px;">Get Achievements</button>
</div>
</div>
</form>
</div>
</div>
</div><!--/span-->
</div><!--/span-->
</div><!--/row-->
{/if}
{/block}

@ -56,6 +56,43 @@ name = "Name"
email = "Email" email = "Email"
action = "Action" action = "Action"
[plugins]
plugin_title = "Plugin List"
plugin_info = "Here you can see the entire list of plugins . You can easily remove plugins ,activate them and add permissions"
plugins = "Plugins"
plugin_name = "Name"
plugin_version = "Version"
plugin_description = "Description"
plugin_type = "Type"
plugin_permission = "Access</br> Permission"
plugin_status = "Status"
ip_success = "Plugin added succesfuly."
plugin_actions = "Actions"
dp_success = "Plugin deleted successfuly"
dp_error = "Error in deleting plugin.Please try again later."
ac_success = "Plugin Activated successfuly."
ac_error = "Plugin facing some error in activating. Please try again later."
dc_success = "Plugin de-Activated successfuly."
dc_error = "Plugin facing some error in de-activating. Please try again later."
up_success = "Update added successfully. Go to Updates page for installing updates."
up_install_success = "Update installed successfully."
[install_plugin]
ip_title = "Install a new Plugin"
ip_message = "For example: name.zip from your local computer"
ip_support = "Upload the plugin archieve to install.</br>The following file extension is supported: zip."
ip_info_nfound = "Info file not found in the Plugin.Please recheck"
ip_file_nfnd="Please upload a plugin before clicking on install button"
[plugins_update]
up_title = "Updates for Plugins"
up_info = "Here you can see the entire list of available updates for plugins."
up_description = "Updates Info"
plugin_name = "Name"
plugin_version = "Version"
up_updated_version = "New Version"
up_actions = "Actions"
[show_ticket] [show_ticket]
t_title = "Ticket" t_title = "Ticket"
title = "Title" title = "Title"

@ -53,7 +53,7 @@ class WebUsers extends Users{
*/ */
protected function checkUserNameExists($username){ protected function checkUserNameExists($username){
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
return $dbw->execute("SELECT * FROM ams_user WHERE Login = :name",array('name' => $username))->rowCount(); return $dbw->select("ams_user", array('name' => $username), "Login = :name")->rowCount();
} }
@ -65,7 +65,7 @@ class WebUsers extends Users{
*/ */
protected function checkEmailExists($email){ protected function checkEmailExists($email){
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
return $dbw->execute("SELECT * FROM ams_user WHERE Email = :email",array('email' => $email))->rowCount(); return $dbw->select("ams_user" ,array('email' => $email),"Email = :email")->rowCount();
} }
@ -78,7 +78,7 @@ class WebUsers extends Users{
public static function checkLoginMatch($value,$password){ public static function checkLoginMatch($value,$password){
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
$statement = $dbw->execute("SELECT * FROM ams_user WHERE Login=:value OR Email=:value", array('value' => $value)); $statement = $dbw->select("ams_user", array('value' => $value),"Login=:value OR Email=:value");
$row = $statement->fetch(); $row = $statement->fetch();
$salt = substr($row['Password'],0,2); $salt = substr($row['Password'],0,2);
$hashed_input_pass = crypt($password, $salt); $hashed_input_pass = crypt($password, $salt);
@ -97,7 +97,7 @@ class WebUsers extends Users{
*/ */
public static function getId($username){ public static function getId($username){
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
$statement = $dbw->execute("SELECT * FROM ams_user WHERE Login=:username", array('username' => $username)); $statement = $dbw->select("ams_user", array('username' => $username), "Login=:username");
$row = $statement->fetch(); $row = $statement->fetch();
return $row['UId']; return $row['UId'];
} }
@ -110,7 +110,7 @@ class WebUsers extends Users{
*/ */
public static function getIdFromEmail($email){ public static function getIdFromEmail($email){
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
$statement = $dbw->execute("SELECT * FROM ams_user WHERE Email=:email", array('email' => $email)); $statement = $dbw->select("ams_user", array('email' => $email), "Email=:email");
$row = $statement->fetch(); $row = $statement->fetch();
if(!empty($row)){ if(!empty($row)){
return $row['UId']; return $row['UId'];
@ -134,7 +134,7 @@ class WebUsers extends Users{
public function getUsername(){ public function getUsername(){
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
if(! isset($this->login) || $this->login == ""){ if(! isset($this->login) || $this->login == ""){
$statement = $dbw->execute("SELECT * FROM ams_user WHERE UId=:id", array('id' => $this->uId)); $statement = $dbw->select("ams_user", array('id' => $this->uId), "UId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->set($row); $this->set($row);
} }
@ -148,7 +148,7 @@ class WebUsers extends Users{
public function getEmail(){ public function getEmail(){
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
if(! isset($this->email) || $this->email == ""){ if(! isset($this->email) || $this->email == ""){
$statement = $dbw->execute("SELECT * FROM ams_user WHERE UId=:id", array('id' => $this->uId)); $statement = $dbw->select("ams_user", array('id' => $this->uId), "UId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->set($row); $this->set($row);
} }
@ -160,7 +160,7 @@ class WebUsers extends Users{
*/ */
public function getHashedPass(){ public function getHashedPass(){
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
$statement = $dbw->execute("SELECT * FROM ams_user WHERE UId=:id", array('id' => $this->uId)); $statement = $dbw->select("ams_user", array('id' => $this->uId), "UId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
return $row['Password']; return $row['Password'];
} }
@ -174,7 +174,7 @@ class WebUsers extends Users{
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
if(! (isset($this->firstname) && isset($this->lastname) && isset($this->gender) && isset($this->country) && isset($this->receiveMail) ) || if(! (isset($this->firstname) && isset($this->lastname) && isset($this->gender) && isset($this->country) && isset($this->receiveMail) ) ||
$this->firstname == "" || $this->lastname == "" || $this->gender == "" || $this->country == "" || $this->receiveMail == ""){ $this->firstname == "" || $this->lastname == "" || $this->gender == "" || $this->country == "" || $this->receiveMail == ""){
$statement = $dbw->execute("SELECT * FROM ams_user WHERE UId=:id", array('id' => $this->uId)); $statement = $dbw->select("ams_user", array('id' => $this->uId), "UId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->set($row); $this->set($row);
} }
@ -189,7 +189,7 @@ class WebUsers extends Users{
public function getReceiveMail(){ public function getReceiveMail(){
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
if(! isset($this->receiveMail) || $this->receiveMail == ""){ if(! isset($this->receiveMail) || $this->receiveMail == ""){
$statement = $dbw->execute("SELECT * FROM ams_user WHERE UId=:id", array('id' => $this->uId)); $statement = $dbw->select("ams_user", array('id' => $this->uId), "UId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->set($row); $this->set($row);
} }
@ -203,7 +203,7 @@ class WebUsers extends Users{
public function getLanguage(){ public function getLanguage(){
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
if(! isset($this->language) || $this->language == ""){ if(! isset($this->language) || $this->language == ""){
$statement = $dbw->execute("SELECT * FROM ams_user WHERE UId=:id", array('id' => $this->uId)); $statement = $dbw->select("ams_user", array('id' => $this->uId), "UId=:id");
$row = $statement->fetch(); $row = $statement->fetch();
$this->set($row); $this->set($row);
} }
@ -234,11 +234,11 @@ class WebUsers extends Users{
$hashpass = crypt($pass, WebUsers::generateSALT()); $hashpass = crypt($pass, WebUsers::generateSALT());
$reply = WebUsers::setAmsPassword($user, $hashpass); $reply = WebUsers::setAmsPassword($user, $hashpass);
$values = Array('user' => $user, 'pass' => $hashpass); $values = Array('pass' => $hashpass);
try { try {
//make connection with and put into shard db //make connection with and put into shard db
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
$dbw->execute("UPDATE ams_user SET Password = :pass WHERE Login = :user ",$values); $dbw->update("ams_user", $values,"Login = $user");
} }
catch (PDOException $e) { catch (PDOException $e) {
//ERROR: the web DB is offline //ERROR: the web DB is offline
@ -256,11 +256,11 @@ class WebUsers extends Users{
*/ */
public static function setEmail($user, $mail){ public static function setEmail($user, $mail){
$reply = WebUsers::setAmsEmail($user, $mail); $reply = WebUsers::setAmsEmail($user, $mail);
$values = Array('user' => $user, 'mail' => $mail); $values = Array('Email' => $mail);
try { try {
//make connection with and put into shard db //make connection with and put into shard db
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
$dbw->execute("UPDATE ams_user SET Email = :mail WHERE Login = :user ",$values); $dbw->update("ams_user", $values, "Login = $user");
} }
catch (PDOException $e) { catch (PDOException $e) {
//ERROR: the web DB is offline //ERROR: the web DB is offline
@ -276,11 +276,11 @@ class WebUsers extends Users{
* @param $receivemail the receivemail setting . * @param $receivemail the receivemail setting .
*/ */
public static function setReceiveMail($user, $receivemail){ public static function setReceiveMail($user, $receivemail){
$values = Array('user' => $user, 'receivemail' => $receivemail); $values = Array('Receivemail' => $receivemail);
try { try {
//make connection with and put into shard db //make connection with and put into shard db
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
$dbw->execute("UPDATE ams_user SET ReceiveMail = :receivemail WHERE UId = :user ",$values); $dbw->update("ams_user", $values, "UId = $user" );
} }
catch (PDOException $e) { catch (PDOException $e) {
//ERROR: the web DB is offline //ERROR: the web DB is offline
@ -295,11 +295,11 @@ class WebUsers extends Users{
* @param $language the new language value. * @param $language the new language value.
*/ */
public static function setLanguage($user, $language){ public static function setLanguage($user, $language){
$values = Array('user' => $user, 'language' => $language); $values = Array('Language' => $language);
try { try {
//make connection with and put into shard db //make connection with and put into shard db
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
$dbw->execute("UPDATE ams_user SET Language = :language WHERE UId = :user ",$values); $dbw->update("ams_user", $values, "UId = $user");
} }
catch (PDOException $e) { catch (PDOException $e) {
//ERROR: the web DB is offline //ERROR: the web DB is offline
@ -344,11 +344,11 @@ class WebUsers extends Users{
$lang = $DEFAULT_LANGUAGE; $lang = $DEFAULT_LANGUAGE;
} }
$values = Array('name' => $name, 'pass' => $pass, 'mail' => $mail, 'lang' => $lang); $values = Array('Login' => $name, 'Password' => $pass, 'Email' => $mail, 'Language' => $lang);
try { try {
$dbw = new DBLayer("web"); $dbw = new DBLayer("web");
return $dbw->executeReturnId("INSERT INTO ams_user (Login, Password, Email, Language) VALUES (:name, :pass, :mail, :lang)",$values); return $dbw->executeReturnId("ams_user", $values);
} }
catch (PDOException $e) { catch (PDOException $e) {
//ERROR: the web DB is offline //ERROR: the web DB is offline

@ -0,0 +1,35 @@
<?php
/**
* This function is used in activating plugins.
*
* @author Shubham Meena, mentored by Matthew Lagoe
*/
function activate_plugin() {
// if logged in
if ( WebUsers :: isLoggedIn() ) {
if ( isset( $_GET['id'] ) )
{
// id of plugin to delete
$id = filter_var( $_GET['id'], FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$db = new DBLayer( 'lib' );
$result = $db -> update( "plugins", array( 'Status' => '1' ), "Id = $id" );
if ( $result )
{
header( "Location: index.php?page=plugins&result=3" );
exit;
}
else
{
header( "Location: index.php?page=plugins&result=4" );
exit;
}
}
else
{
header( "Location: index.php?page=plugins&result=4" );
exit;
}
}
}

@ -66,15 +66,14 @@ function write_user($newUser){
$hashpass = crypt($newUser["pass"], WebUsers::generateSALT()); $hashpass = crypt($newUser["pass"], WebUsers::generateSALT());
$params = array( $params = array(
'name' => $newUser["name"], 'Login' => $newUser["name"],
'pass' => $hashpass, 'Password' => $hashpass,
'mail' => $newUser["mail"] 'Email' => $newUser["mail"]
); );
try{ try{
//make new webuser //make new webuser
$user_id = WebUsers::createWebuser($params['name'], $params['pass'], $params['mail']); $user_id = WebUsers::createWebuser($params['Login'], $params['Password'], $params['Email']);
//Create the user on the shard + in case shard is offline put copy of query in query db //Create the user on the shard + in case shard is offline put copy of query in query db
//returns: ok, shardoffline or liboffline //returns: ok, shardoffline or liboffline
$result = WebUsers::createUser($params, $user_id); $result = WebUsers::createUser($params, $user_id);

@ -0,0 +1,37 @@
<?php
/**
* This function is used in deactivating plugins.
*
* @author Shubham Meena, mentored by Matthew Lagoe
*/
function deactivate_plugin() {
// if logged in
if ( WebUsers :: isLoggedIn() ) {
if ( isset( $_GET['id'] ) )
{
// id of plugin to delete
$id = filter_var( $_GET['id'], FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$db = new DBLayer( 'lib' );
$result = $db -> update( "plugins", array( 'Status' => '0' ), "Id = $id" );
if ( $result )
{
header( "Location: index.php?page=plugins&result=5" );
exit;
}
else
{
header( "Location: index.php?page=plugins&result=6" );
exit;
}
}
else
{
header( "Location: index.php?page=plugins&result=6" );
exit;
}
}
}

@ -0,0 +1,47 @@
<?php
/**
* This function is used in deleting plugins.
*
* It removes the plugin from the codebase.
*
* @author Shubham Meena, mentored by Matthew Lagoe
*/
function delete_plugin() {
// if logged in
if ( WebUsers :: isLoggedIn() ) {
if ( isset( $_GET['id'] ) )
{
// id of plugin to delete after filtering
$id = filter_var( $_GET['id'], FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$db = new DBLayer( 'lib' );
$sth = $db -> selectWithParameter( "FileName", "plugins", array( 'id' => $id ), "Id=:id" );
$name = $sth -> fetch();
if ( is_dir( "$name[FileName]" ) )
{
// removing plugin directory from the code base
if ( Plugincache::rrmdir( "$name[FileName]" ) )
{
$db -> delete( 'plugins', array( 'id' => $id ), "Id=:id" );
header( "Location: index.php?page=plugins&result=2" );
exit;
}
else
{
header( "Location: index.php?page=plugins&result=0" );
exit;
}
}
}
else
{
header( "Location: index.php?page=plugins&result=0" );
exit;
}
}
}

@ -0,0 +1,306 @@
<?php
/**
* This function is used in installing plugins
* It performs validation check for the compressed plugin
* then extract in plugin folder to get the info
*
* @author Shubham Meena, mentored by Matthew Lagoe
*/
function install_plugin() {
$result = array();
// if logged in
if ( WebUsers :: isLoggedIn() ) {
// path of temporary folder for storing files
$temp_path = "../../ams_lib/temp";
// create a temp directory if not exist
// temp folder where we first store all uploaded plugins before install
if ( !file_exists( "$temp_path" ) )
{
mkdir( $temp_path );
}
// checking the server if file is uploaded or not
if ( ( isset( $_FILES["file"] ) ) && ( $_FILES["file"]["size"] > 0 ) )
{
$fileName = $_FILES["file"]["name"]; //the files name takes from the HTML form
$fileTmpLoc = $_FILES["file"]["tmp_name"]; //file in the PHP tmp folder
$dir = trim( $_FILES["file"]["name"], ".zip" );
$target_path = "../../ams_lib/plugins/$dir"; //path in which the zip extraction is to be done
$destination = "../../ams_lib/plugins/";
// scanning plugin folder if plugin with same name is already exists or not
$x = checkForUpdate( $dir, $destination, $fileTmpLoc, $temp_path );
if ( $x == '1' )
{
echo "update found";
exit();
}
else if ( $x == '2' )
{
echo "Plugin already exists with same name .";
exit();
}
else if ( $x == '3' )
{
echo "Update info is not present in the update";
exit();
}
// checking for the command to install plugin is given or not
if ( !isset( $_POST['install_plugin'] ) )
{
if ( ( $_FILES["file"]["type"] == 'application/zip' ) )
{
if ( move_uploaded_file( $fileTmpLoc, $temp_path . "/" . $fileName ) ) {
echo "$fileName upload is complete.</br>" . "<button type='submit' class='btn btn-primary' style='margin-left:5px; margin-top:10px;' name='install_plugin'>Install Plugin</button></br>";
exit();
}
else
{
echo "Error in uploading file.";
exit();
}
}
else
{
echo "Please select a file with .zip extension to upload.";
exit();
}
}
else
{
// calling function to unzip archives
if ( zipExtraction( $temp_path . "/" . $fileName , $destination ) )
{
if ( file_exists( $target_path . "/.info" ) )
{
$result = readPluginFile( ".info", $target_path );
// sending all info to the database
$install_result = array();
$install_result['FileName'] = $target_path;
$install_result['Name'] = $result['PluginName'];
$install_result['Type'] = $result['Type'];
if ( Ticket_User :: isMod( unserialize( $_SESSION['ticket_user'] ) ) )
{
$install_result['Permission'] = 'admin';
}
else
{
$install_result['Permission'] = 'user';
}
$install_result['Info'] = json_encode( $result );
// connection with the database
$dbr = new DBLayer( "lib" );
$dbr -> insert( "plugins", $install_result );
// if everything is successfull redirecting to the plugin template
header( "Location: index.php?page=plugins&result=1" );
exit;
}
else
{
// file .info not exists
rmdir( $target_path );
header( "Location: index.php?page=install_plugin&result=2" );
exit;
}
} else
{
// extraction failed
header( "Location: index.php?page=install_plugin&result=0" );
exit;
}
}
}
else
{
echo "Please Browse for a file before clicking the upload button";
exit();
}
}
}
/**
* function to unzip the zipped files
*
* @param $target_path path to the target zipped file
* @param $destination path to the destination
* @return boolean
*/
function zipExtraction( $target_path, $destination )
{
$zip = new ZipArchive();
$x = $zip -> open( $target_path );
if ( $x === true ) {
if ( $zip -> extractTo( $destination ) )
{
$zip -> close();
return true;
}
else
{
$zip -> close();
return false;
}
}
}
/**
* function to read text files and extract
* the information into an array
*
* -----------------------------------------------------------
* format:
* -----------------------------------------------------------
* PluginName = Name of the plugin
* Version = version of the plugin
* Type = type of the plugin
* Description = Description of the plugin ,it's functionality
* -----------------------------------------------------------
*
* reads only files with name .info
*
* @param $fileName file to read
* @param $targetPath path to the folder containing .info file
* @return array containing above information in array(value => key)
*/
function readPluginFile( $fileName, $target_path )
{
$file_handle = fopen( $target_path . "/" . $fileName, "r" );
$result = array();
while ( !feof( $file_handle ) ) {
$line_of_text = fgets( $file_handle );
$parts = array_map( 'trim', explode( '=', $line_of_text, 2 ) );
@$result[$parts[0]] = $parts[1];
}
fclose( $file_handle );
return $result;
}
/**
* function to check for updates or
* if the same plugin already exists
* also, if the update founds ,check for the update info in the .info file.
* Update is saved in the temp direcotry with pluginName_version.zip
*
* @param $fileName file which is uploaded in .zip extension
* @param $findPath where we have to look for the installed plugins
* @param $tempFile path for the temporary file
* @param $tempPath path where we have to store the update
* @return 2 if plugin already exists and update not found
* @return 3 if update info tag not found in .info file
*/
function checkForUpdate( $fileName, $findPath, $tempFile, $tempPath )
{
// check for plugin if exists
$file = scandir( $findPath );
foreach( $file as $key => $value )
{
if ( strcmp( $value, $fileName ) == 0 )
{
if ( !file_exists( $tempPath . "/test" ) )
{
mkdir( $tempPath . "/test" );
}
// extracting the update
if ( zipExtraction( $tempFile, $tempPath . "/test/" ) )
{
$result = readPluginFile( ".info", $tempPath . "/test/" . $fileName );
// check for the version for the plugin
$db = new DBLayer( "lib" );
$sth = $db -> select( "plugins", array( 'Name' => $result['PluginName'] ), "Name = :Name" );
$info = $sth -> fetch();
$info['Info'] = json_decode( $info['Info'] );
// the two versions from main plugin and the updated part
$new_version = explode( '.', $result['Version'] );
$pre_version = explode( '.', $info['Info'] -> Version );
// For all plugins we have used semantic versioning
// Format: X.Y.Z ,X->Major, Y->Minor, Z->Patch
// change in the X Y & Z values refer the type of change in the plugin.
// for initial development only Minor an Patch MUST be 0.
// if there is bug fix then there MUST be an increment in the Z value.
// if there is change in the functionality or addition of new functionality
// then there MUST be an increment in the Y value.
// When there is increment in the X value , Y and Z MUST be 0.
// comparing if there is some change
if ( !array_diff( $new_version , $pre_version ) )
{
// removing the uploaded file
Plugincache :: rrmdir( $tempPath . "/test/" . $fileName );
return '2'; //plugin already exists
}
else
{
// check for update info if exists
if ( !array_key_exists( 'UpdateInfo', $result ) )
{
return '3'; //update info tag not found
}
else
{
// check if update already exists
if ( pluginUpdateExists( $info['Id'], $tempPath . "/" . trim( $fileName, ".zip" ) . "_" . $result['Version'] . ".zip" ) )
{
echo "Update already exists";
exit;
}
else {
// removing the preivous update
$dbr = new DBLayer( "lib" );
$dbr -> delete( "updates", array( 'id' => $info['Id'] ), "PluginId=:id" );
// storing update in the temp directory
// format of update save
if ( move_uploaded_file( $tempFile, $tempPath . "/" . trim( $fileName, ".zip" ) . "_" . $result['Version'] . ".zip" ) ) {
// setting update information in the database
$update['PluginId'] = $info['Id'];
$update['UpdatePath'] = $tempPath . "/" . trim( $fileName, ".zip" ) . "_" . $result['Version'] . ".zip";
$update['UpdateInfo'] = json_encode( $result );
$dbr -> insert( "updates", $update );
header( "Location: index.php?page=plugins&result=7" );
exit;
}
}
}
}
}
}
}
}
/**
* Function to check for the update of a plugin already exists
*
* @param $pluginId id of the plugin for which update is available
* @param $updatePath path of the new update
* @return boolean if update for a plugin already exists or
* if update of same version is uploading
*/
function PluginUpdateExists( $pluginId, $updatePath )
{
$db = new DBLayer( 'lib' );
$sth = $db -> selectWithParameter( "UpdatePath", "updates", array( 'pluginid' => $pluginId ), "PluginId=:pluginid" );
$row = $sth -> fetch();
if ( $updatePath == $row['UpdatePath'] )
{
return true;
}
else
{
rmdir( $row['UpdatePath'] );
return false;
}
}

@ -0,0 +1,34 @@
<?php
/**
* This function is used in installing updates for plugins.
*
* @author Shubham Meena, mentored by Matthew Lagoe
*/
function update_plugin() {
// if logged in
if ( WebUsers :: isLoggedIn() ) {
if ( isset( $_GET['id'] ) )
{
// id of plugin to delete
$id = filter_var( $_GET['id'], FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$db = new DBLayer( 'lib' );
$sth = $db -> executeWithoutParams( "SELECT * FROM plugins INNER JOIN updates ON plugins.Id=updates.PluginId Where plugins.Id=$id" );
$row = $sth -> fetch();
// replacing update in the database
Plugincache :: rrmdir( $row['FileName'] );
Plugincache :: zipExtraction( $row['UpdatePath'], rtrim( $row['FileName'], strtolower( $row['Name'] ) ) );
$db -> update( "plugins", array( 'Info' => $row['UpdateInfo'] ), "Id=$row[Id]" );
// deleting the previous update
$db -> delete( "updates", array( 'id' => $row['s.no'] ), "s.no=:id" );
header( "Location: index.php?page=plugins&result=8" );
exit;
}
}
}

@ -0,0 +1,39 @@
<?php
/**
* function plugins to get
* plugins from the Database using pagination object
*
* @author shubham meena mentored by Matthew Lagoe
*/
function plugins()
{
if ( Ticket_User :: isMod( unserialize( $_SESSION['ticket_user'] ) ) ) {
$pagination = new Pagination( "SELECT * FROM plugins", "lib", 5, "Plugincache" );
$pageResult['plug'] = Gui_Elements :: make_table( $pagination -> getElements(), Array( "getId", "getPluginName", "getPluginType", "getPluginPermission", "getPluginStatus", "getPluginInfo" ), Array( "id", "plugin_name", "plugin_type", "plugin_permission", "plugin_status", "plugin_info" ) );
$pageResult['links'] = $pagination -> getLinks( 5 );
$pageResult['lastPage'] = $pagination -> getLast();
$pageResult['currentPage'] = $pagination -> getCurrent();
global $INGAME_WEBPATH;
$pageResult['ingame_webpath'] = $INGAME_WEBPATH;
// check if shard is online
try {
$dbs = new DBLayer( "shard" );
$pageResult['shard'] = "online";
}
catch( PDOException $e ) {
$pageResult['shard'] = "offline";
}
return( $pageResult );
} else {
// ERROR: No access!
$_SESSION['error_code'] = "403";
header( "Location: index.php?page=error" );
exit;
}
}

@ -0,0 +1,36 @@
<?php
/**
* function plugins_update to get
* plugins updates from the Database using pagination object
*
* @author shubham meena mentored by Matthew Lagoe
*/
function plugins_update()
{
if ( Ticket_User :: isMod( unserialize( $_SESSION['ticket_user'] ) ) ) {
$pagination = new Pagination( "SELECT * FROM plugins INNER JOIN updates ON plugins.Id=updates.PluginId", "lib", 5, "Plugincache" );
$pageResult['plug'] = Gui_Elements :: make_table( $pagination -> getElements(), Array( "getId", "getPluginName", "getPluginInfo", "getUpdateInfo" ), Array( "id", "plugin_name", "plugin_info", "update_info" ) );
$pageResult['links'] = $pagination -> getLinks( 5 );
$pageResult['lastPage'] = $pagination -> getLast();
$pageResult['currentPage'] = $pagination -> getCurrent();
global $INGAME_WEBPATH;
$pageResult['ingame_webpath'] = $INGAME_WEBPATH;
// check if shard is online
try {
$dbs = new DBLayer( "shard" );
$pageResult['shard'] = "online";
}
catch( PDOException $e ) {
$pageResult['shard'] = "offline";
}
return( $pageResult );
} else {
// ERROR: No access!
$_SESSION['error_code'] = "403";
header( "Location: index.php?page=error" );
exit;
}
}

@ -1,126 +1,134 @@
<?php <?php
/** /**
* Core that runs the entire system. * Core that runs the entire system.
* The index.php page handles: * The index.php page handles:
* -# checks what page to load * -# checks what page to load
* -# if a $_POST['function'] is set try to execute that function in the matching php file located in the func folder. * -# if a $_POST['function'] is set try to execute that function in the matching php file located in the func folder.
* -# else load the inc's folder matching function related to the page * -# else load the inc's folder matching function related to the page
* -# set the permission and other smarty related settings * -# set the permission and other smarty related settings
* -# call the helper function to load the page. * -# call the helper function to load the page.
* @author Daan Janssens, mentored by Matthew Lagoe *
*/ * @author Daan Janssens, mentored by Matthew Lagoe
*/
//load required pages and turn error reporting on/off // load required pages and turn error reporting on/off
error_reporting(E_ALL); error_reporting( E_ALL );
ini_set('display_errors', 'on'); ini_set( 'display_errors', 'on' );
if (!file_exists('../is_installed')) { if ( !file_exists( '../is_installed' ) ) {
//if is_installed doesnt exist run setup // if is_installed doesnt exist run setup
require( 'installer/libsetup.php' ); require( 'installer/libsetup.php' );
} elseif (isset($_POST["function"]) && $_POST["function"] == "do_install") { } elseif ( isset( $_POST["function"] ) && $_POST["function"] == "do_install" ) {
echo "Can't run setup while file '../is_installed' exists, please remove that file if you wish to run the install"; echo "Can't run setup while file '../is_installed' exists, please remove that file if you wish to run the install";
exit; exit;
} else { } else {
//if config exists then include it // if config exists then include it
require( '../config.php' ); require( '../config.php' );
} }
require_once( $AMS_LIB.'/libinclude.php' ); require_once( $AMS_LIB . '/libinclude.php' );
session_start(); session_start();
//Running Cron? // Running Cron
if ( isset( $_GET["cron"]) ){ if ( isset( $_GET["cron"] ) ) {
if ($_GET["cron"] == "true"){ if ( $_GET["cron"] == "true" ) {
Sync::syncdata(false); Sync :: syncdata( false );
} }
} }
//Always try to sync on page load, ie "lazy" cron // Always try to sync on page load, ie "lazy" cron
Sync::syncdata(false); Sync :: syncdata( false );
//Decide what page to load // Decide what page to load
if ( ! isset( $_GET["page"]) ){ if ( ! isset( $_GET["page"] ) ) {
if(isset($_SESSION['user'])){
if(Ticket_User::isMod(unserialize($_SESSION['ticket_user']))){ if ( isset( $_SESSION['user'] ) ) {
$page = 'dashboard'; if ( Ticket_User :: isMod( unserialize( $_SESSION['ticket_user'] ) ) ) {
}else{ $page = 'dashboard';
$page = 'show_user'; } else {
} $page = 'show_user';
}else{ }
//default page } else {
$page = 'login'; // default page
} $page = 'login';
}else{ }
if(isset($_SESSION['user'])){ } else {
$page = $_GET["page"]; if ( isset( $_SESSION['user'] ) ) {
}else{ $page = $_GET["page"];
switch($_GET["page"]){ } else {
case 'register': switch ( $_GET["page"] ) {
$page = 'register'; case 'register':
break; $page = 'register';
case 'forgot_password': break;
$page = 'forgot_password'; case 'forgot_password':
break; $page = 'forgot_password';
case 'reset_password': break;
$page = 'reset_password'; case 'reset_password':
break; $page = 'reset_password';
case 'error': break;
$page = 'error'; case 'error':
break; $page = 'error';
default: break;
$page = 'login'; default:
break; $page = 'login';
} break;
} }
} }
}
//check if ingame & page= register // check if ingame & page= register
//this is needed because the ingame register can't send a hidden $_POST["function"] // this is needed because the ingame register can't send a hidden $_POST["function"]
if ( Helpers::check_if_game_client() && ($page == "register")){ if ( Helpers :: check_if_game_client() && ( $page == "register" ) ) {
require( "func/add_user.php" ); require( "func/add_user.php" );
$return = add_user(); $return = add_user();
} }
//perform an action in case one is specified // perform an action in case one is specified
//else check if a php page is included in the inc folder, else just set page to the get param // else check if a php page is included in the inc folder, else just set page to the get param
if ( isset( $_POST["function"] ) ){ if ( isset( $_POST["function"] ) ) {
require( "func/" . $_POST["function"] . ".php" ); require( "func/" . $_POST["function"] . ".php" );
$return = $_POST["function"](); $return = $_POST["function"]();
}else{ } else if ( isset( $_GET["action"] ) ) {
$filename = 'inc/' . $page . '.php'; require( "func/" . $_GET["action"] . ".php" );
if(is_file($filename)){ $return = $_GET["action"]();
require_once($filename); } else {
$return = $page(); $filename = 'inc/' . $page . '.php';
} if ( is_file( $filename ) ) {
} require_once( $filename );
$return = $page();
}
}
//add username to the return array in case logged in. // add username to the return array in case logged in.
if(isset($_SESSION['user'])){ if ( isset( $_SESSION['user'] ) ) {
$return['username'] = $_SESSION['user']; $return['username'] = $_SESSION['user'];
} }
// Set permission
if ( isset( $_SESSION['ticket_user'] ) ) {
$return['permission'] = unserialize( $_SESSION['ticket_user'] ) -> getPermission();
} else {
// default permission
$return['permission'] = 0;
}
//Set permission // hide sidebar + topbar in case of login/register
if(isset($_SESSION['ticket_user'])){ if ( $page == 'login' || $page == 'register' || $page == 'logout' || $page == 'forgot_password' || $page == 'reset_password' ) {
$return['permission'] = unserialize($_SESSION['ticket_user'])->getPermission(); $return['no_visible_elements'] = 'TRUE';
}else{ } else {
//default permission $return['no_visible_elements'] = 'FALSE';
$return['permission'] = 0; }
}
// handle error page
//hide sidebar + topbar in case of login/register if ( $page == 'error' ) {
if($page == 'login' || $page == 'register' || $page == 'logout' || $page == 'forgot_password' || $page == 'reset_password'){ $return['permission'] = 0;
$return['no_visible_elements'] = 'TRUE';
}else{
$return['no_visible_elements'] = 'FALSE'; $return['no_visible_elements'] = 'FALSE';
} }
//handle error page // call to load hooks for the active plugins
if($page == 'error'){ $hook_content = Plugincache :: loadHooks();
$return['permission'] = 0; foreach( $hook_content as $key => $value )
$return['no_visible_elements'] = 'FALSE'; {
} $return[$key] = $value;
}
//load the template with the variables in the $return array // load the template with the variables in the $return array
helpers :: loadTemplate( $page , $return ); helpers :: loadTemplate( $page , $return );

@ -178,6 +178,50 @@
ENGINE = InnoDB; ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `" . $cfg['db']['lib']['name'] ."`.`plugins`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`plugins` ;
CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`plugins` (
`Id` INT(10) NOT NULL AUTO_INCREMENT,
`FileName` VARCHAR(255) NOT NULL,
`Name` VARCHAR(56) NOT NULL,
`Type` VARCHAR(12) NOT NULL,
`Owner` VARCHAR(25) NOT NULL,
`Permission` VARCHAR(5) NOT NULL,
`Status` INT(11) NOT NULL DEFAULT 0,
`Weight` INT(11) NOT NULL DEFAULT 0,
`Info` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`Id`) )
ENGINE = InnoDB;
INSERT INTO `plugins` (`Id`, `FileName`, `Name`, `Type`, `Owner`, `Permission`, `Status`, `Weight`, `Info`) VALUES
(1, '../../ams_lib/plugins/API_key_management', 'API_key_management', 'automatic', '', 'admin', 1, 0, '{\"PluginName\":\"API Key Management\",\"Description\":\"Provides public access to the API''s by generating access tokens.\",\"Version\":\"1.0.0\",\"Type\":\"automatic\",\"TemplatePath\":\"..\\/..\\/..\\/ams_lib\\/plugins\\/API_key_management\\/templates\\/index.tpl\",\"\":null}'),
(2, '../../ams_lib/plugins/Achievements', 'Achievements', 'Manual', '', 'admin', 0, 0, '{\"PluginName\":\"Achievements\",\"Description\":\"Returns the achivements of a user with respect to the character =.\",\"Version\":\"1.0.0\",\"TemplatePath\":\"..\\/..\\/..\\/ams_lib\\/plugins\\/Achievements\\/templates\\/index.tpl\",\"Type\":\"Manual\",\"\":null}');
-- -----------------------------------------------------
-- Table `" . $cfg['db']['lib']['name'] ."`.`updates`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`updates` ;
CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`updates` (
`s.no` int(10) NOT NULL AUTO_INCREMENT,
`PluginId` int(10) DEFAULT NULL,
`UpdatePath` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`UpdateInfo` text COLLATE utf8_unicode_ci,
PRIMARY KEY (`s.no`),
KEY `PluginId` (`PluginId`))
ENGINE=InnoDB;
-- -----------------------------------------
-- Constraints for table `updates`
-- -----------------------------------------
ALTER TABLE `" . $cfg['db']['lib']['name'] ."`.`updates`
ADD CONSTRAINT `updates_ibfk_1` FOREIGN KEY (`PluginId`) REFERENCES `plugins` (`Id`);
-- ----------------------------------------------------- -- -----------------------------------------------------
-- Table `" . $cfg['db']['lib']['name'] ."`.`ticket` -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket`
-- ----------------------------------------------------- -- -----------------------------------------------------
@ -1733,14 +1777,14 @@
//Now create an admin account! //Now create an admin account!
$hashpass = crypt("admin", Users::generateSALT()); $hashpass = crypt("admin", Users::generateSALT());
$params = array( $params = array(
'name' => "admin", 'Login' => "admin",
'pass' => $hashpass, 'Password' => $hashpass,
'mail' => "admin@admin.com", 'Email' => "admin@admin.com",
); );
try{ try{
$user_id = WebUsers::createWebuser($params['name'], $params['pass'],$params['mail']); $user_id = WebUsers::createWebuser($params['Login'], $params['Password'],$params['Email']);
$result = Webusers::createUser($params, $user_id); $result = Webusers::createUser($params, $user_id);
Users::createPermissions(array($params['name'])); Users::createPermissions(array($params['Login']));
$dbl = new DBLayer("lib"); $dbl = new DBLayer("lib");
$dbl->execute("UPDATE ticket_user SET Permission = 3 WHERE TUserId = :user_id",array('user_id' => $user_id)); $dbl->execute("UPDATE ticket_user SET Permission = 3 WHERE TUserId = :user_id",array('user_id' => $user_id));
print "The admin account is created, you can login with id: admin, pass: admin!"; print "The admin account is created, you can login with id: admin, pass: admin!";
@ -1763,5 +1807,4 @@
print "There was an error while installing"; print "There was an error while installing";
print_r($e); print_r($e);
} }
} }

@ -0,0 +1,36 @@
{block name=content}
<div class="row-fluid">
<div class="box span12">
<div class="box-header well">
<h2><i class="icon-info-sign"></i>{$ip_title}</h2>
<div class="box-icon">
<a href="#" class="btn btn-round" onclick="javascript:show_help('intro');return false;"><i class="icon-info-sign"></i></a>
<a href="#" class="btn btn-setting btn-round"><i class="icon-cog"></i></a>
<a href="#" class="btn btn-minimize btn-round"><i class="icon-chevron-up"></i></a>
<a href="#" class="btn btn-close btn-round"><i class="icon-remove"></i></a>
</div>
</div>
<div class="box-content">
<center>
<p>{$ip_support}</p>
<div class="alert alert-error">
<form enctype="multipart/form-data" method="post" action="index.php?page=plugin&action=install_plugin" id="upload_plugin" >
<label for="file">Filename:</label>&nbsp;&nbsp;
<input type="file" name="file" id="file"></br>
<progress id="progressBar" value="0" max="100" style="width:300px;"></progress></br>
<input type="button" value="Upload" onclick="uploadPlugin()"></br>
<h3 id="status"></h3>
{if isset($smarty.get.result) and $smarty.get.result eq "0"}<p>{$ip_file_nfnd}</p>{/if}
{if isset($smarty.get.result) and $smarty.get.result eq "2"}<p>{$ip_info_nfound}</p>{/if}
</div>
{$ip_message}
</center>
<div class="clearfix"></div>
</div>
</div>
</div>
</div><!--/span-->
</div><!--/row-->
{/block}

@ -192,6 +192,59 @@
} }
</script> </script>
<!-- script for file uploading-->
<script>
function _(e1)
{
return document.getElementById(e1);
}
function uploadPlugin()
{
var fileObject = _("file").files[0];
var formdata = new FormData();
formdata.append("file",fileObject);
var ajax = new XMLHttpRequest();
ajax.upload.addEventListener("progress", progressHandler, false);
ajax.addEventListener("load", completeHandler, false);
ajax.addEventListener("error", errorHandler, false);
ajax.addEventListener("abort", abortHandler, false);
ajax.open("POST", "index.php?page=plugin&action=install_plugin");
ajax.send(formdata);
}
function progressHandler(event)
{
var percent = (event.loaded/event.total)*100;
_("progressBar").value = Math.round(percent);
}
function completeHandler(event)
{
_("status").innerHTML = event.target.responseText;
_("progressBar").value = 0;
}
function errorHandler(event)
{
_("status").innerHTML = "upload Failed";
}
function abortHandler(event)
{
_("status").innerHTML = "upload Aborted";
}
</script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script>
$(document).ready(function() {
$("#expDate").datepicker({ dateFormat: 'yy-mm-dd' });
});
</script>
<!-- jQuery --> <!-- jQuery -->
<script src="js/jquery-1.7.2.min.js"></script> <script src="js/jquery-1.7.2.min.js"></script>
<!-- jQuery UI --> <!-- jQuery UI -->

@ -4,11 +4,13 @@
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php"><i class="icon-home"></i><span class="hidden-tablet"> Dashboard</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php"><i class="icon-home"></i><span class="hidden-tablet"> Dashboard</span></a></li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=show_user"><i class="icon-user"></i><span class="hidden-tablet"> Profile</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=show_user"><i class="icon-user"></i><span class="hidden-tablet"> Profile</span></a></li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=settings"><i class="icon-cog"></i><span class="hidden-tablet"> Settings</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=settings"><i class="icon-cog"></i><span class="hidden-tablet"> Settings</span></a></li>
{if isset($hook_info)} {foreach from=$hook_info key=arrkey item=element}<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=layout_plugin&&name={$arrkey}"><i class="icon-th-list"></i><span class="hidden-tablet"> {$element.menu_display}</span></a></li>{/foreach}{/if}
<li class="nav-header hidden-tablet">Admin</li> <li class="nav-header hidden-tablet">Admin</li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=userlist"><i class="icon-th-list"></i><span class="hidden-tablet"> Users</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=userlist"><i class="icon-th-list"></i><span class="hidden-tablet"> Users</span></a></li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=show_queue&get=todo"><i class="icon-th-list"></i><span class="hidden-tablet"> Queues</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=show_queue&get=todo"><i class="icon-th-list"></i><span class="hidden-tablet"> Queues</span></a></li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=sgroup_list"><i class="icon-briefcase"></i><span class="hidden-tablet"> Support Groups</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=sgroup_list"><i class="icon-briefcase"></i><span class="hidden-tablet"> Support Groups</span></a></li>
<li class="nav-header hidden-tablet">Actions</li> <li class="nav-header hidden-tablet">Actions</li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=plugins"><i class="icon-th-list"></i><span class="hidden-tablet"> Plugins</span></a></li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=syncing"><i class="icon-th-list"></i><span class="hidden-tablet"> Syncing</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=syncing"><i class="icon-th-list"></i><span class="hidden-tablet"> Syncing</span></a></li>
<li style="margin-left: -2px;"><a href="?page=logout"><i class="icon-off"></i><span class="hidden-tablet"> Logout </span></a></li> <li style="margin-left: -2px;"><a href="?page=logout"><i class="icon-off"></i><span class="hidden-tablet"> Logout </span></a></li>
{/block} {/block}

@ -4,6 +4,7 @@
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php"><i class="icon-home"></i><span class="hidden-tablet"> Dashboard</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php"><i class="icon-home"></i><span class="hidden-tablet"> Dashboard</span></a></li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=show_user"><i class="icon-user"></i><span class="hidden-tablet"> Profile</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=show_user"><i class="icon-user"></i><span class="hidden-tablet"> Profile</span></a></li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=settings"><i class="icon-cog"></i><span class="hidden-tablet"> Settings</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=settings"><i class="icon-cog"></i><span class="hidden-tablet"> Settings</span></a></li>
{if isset($hook_info)} {foreach from=$hook_info key=arrkey item=element}<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=layout_plugin&&name={$arrkey}"><i class="icon-th-list"></i><span class="hidden-tablet"> {$element.menu_display}</span></a></li>{/foreach}{/if}
<li class="nav-header hidden-tablet">Admin</li> <li class="nav-header hidden-tablet">Admin</li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=userlist"><i class="icon-th-list"></i><span class="hidden-tablet"> Users</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=userlist"><i class="icon-th-list"></i><span class="hidden-tablet"> Users</span></a></li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=show_queue&get=todo"><i class="icon-th-list"></i><span class="hidden-tablet"> Queues</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=show_queue&get=todo"><i class="icon-th-list"></i><span class="hidden-tablet"> Queues</span></a></li>

@ -0,0 +1,12 @@
{block name=content}
<div class="row-fluid">
{if isset($hook_info)}
{foreach from=$hook_info key=arrkey item=element}
{if $arrkey eq $smarty.get.name}
{include file=$element.TemplatePath}
{/if}
{/foreach}
{/if}
</div>
{/block}

@ -3,8 +3,9 @@
<li class="nav-header hidden-tablet">Main</li> <li class="nav-header hidden-tablet">Main</li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=show_user"><i class="icon-user"></i><span class="hidden-tablet">Profile</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=show_user"><i class="icon-user"></i><span class="hidden-tablet">Profile</span></a></li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=settings"><i class="icon-cog"></i><span class="hidden-tablet"> Settings</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=settings"><i class="icon-cog"></i><span class="hidden-tablet"> Settings</span></a></li>
{if isset($hook_info)} {foreach from=$hook_info key=arrkey item=element}<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=layout_plugin&&name={$arrkey}"><i class="icon-th-list"></i><span class="hidden-tablet"> {$element.menu_display}</span></a></li>{/foreach}{/if}
<li class="nav-header hidden-tablet">Actions</li> <li class="nav-header hidden-tablet">Actions</li>
<li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=createticket"><i class="icon-pencil"></i><span class="hidden-tablet">Create New Ticket</span></a></li> <li style="margin-left: -2px;"><a class="ajax-link" href="index.php?page=createticket"><i class="icon-pencil"></i><span class="hidden-tablet">Create New Ticket</span></a></li>
<li style="margin-left: -2px;"><a href="?page=logout"><i class="icon-off"></i><span class="hidden-tablet"> Logout </span></a></li> <li style="margin-left: -2px;"><a href="?page=logout"><i class="icon-off"></i><span class="hidden-tablet"> Logout </span></a></li>
{/block} {/block}

@ -0,0 +1,71 @@
{block name=content}
<div class="row-fluid">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-user"></i> {$plugin_title}</h2>
<div class="box-icon">
<a href="#" class="btn btn-setting btn-round"><i class="icon-cog"></i></a>
<a href="#" class="btn btn-minimize btn-round"><i class="icon-chevron-up"></i></a>
<a href="#" class="btn btn-close btn-round"><i class="icon-remove"></i></a>
</div>
</div>
{if isset($smarty.get.result) and $smarty.get.result eq "1"}<div class="alert alert-error"><p>{$ip_success}</p></div>{/if}
{if isset($smarty.get.result) and $smarty.get.result eq "0"}<div class="alert alert-error"><p>{$dp_error}</p></div>{/if}
{if isset($smarty.get.result) and $smarty.get.result eq "2"}<div class="alert alert-error"><p>{$dp_success}</p></div>{/if}
{if isset($smarty.get.result) and $smarty.get.result eq "3"}<div class="alert alert-error"><p>{$ac_success}</p></div>{/if}
{if isset($smarty.get.result) and $smarty.get.result eq "4"}<div class="alert alert-error"><p>{$ac_error}</p></div>{/if}
{if isset($smarty.get.result) and $smarty.get.result eq "5"}<div class="alert alert-error"><p>{$dc_success}</p></div>{/if}
{if isset($smarty.get.result) and $smarty.get.result eq "6"}<div class="alert alert-error"><p>{$dc_error}</p></div>{/if}
{if isset($smarty.get.result) and $smarty.get.result eq "7"}<div class="alert alert-error"><p>{$up_success}</p></div>{/if}
{if isset($smarty.get.result) and $smarty.get.result eq "8"}<div class="alert alert-error"><p>{$up_install_success}</p></div>{/if}
<div class="box-content">
<center><p>{$plugin_info}</p></center>
<center>
<a href="index.php?page=install_plugin"><button class="btn btn-primary btn-large dropdown-toggle">Install New Plugin</button></a>
<a href="index.php?page=plugins_update"><button class="btn btn-primary btn-large dropdown-toggle">Check for updates</button></a>
</center>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>{$plugin_status}</th>
<th width="100">{$plugin_name}</th>
<th>{$plugin_version}</th>
<th width="350">{$plugin_description}</th>
<th width="80">{$plugin_type}</th>
<th>{$plugin_permission}</th>
<th>{$plugin_actions}</th>
</tr>
</thead>
<tbody>
{foreach from=$plug item=element}
<tr>
<td><input type="checkbox" name ="{$element.id}"{if ($element.plugin_status) eq "1"}checked{/if}/></td>
<td class="center">{$element.plugin_name}</td>
<td class="center">{$element.plugin_info->Version}</td>
<td class="center">{$element.plugin_info->Description}</td>
<td class="center">{$element.plugin_type}</td>
<td class="center">{$element.plugin_permission}</td>
<td>
{if ($element.plugin_status) eq "0"}
<a href="index.php?page=plugins&action=delete_plugin&id={$element.id}"><button class="btn btn-primary btn-large">Delete</button></a>
<a href="index.php?page=plugins&action=activate_plugin&id={$element.id}"><button class="btn btn-primary btn-large dropdown-toggle">Activate</button></a>{/if}
{if ($element.plugin_status) eq "1"}<a href="index.php?page=plugins&action=deactivate_plugin&id={$element.id}"><button class="btn btn-primary btn-large dropdown-toggle">Deactivate</button></a>{/if}</td>
</tr>
{/foreach}
</tbody>
</table>
<div style="width: 300px; margin:0px auto;">
<ul class="pagination">
<li><a href="index.php?page=plugins&pagenum=1">&laquo;</a></li>
{foreach from=$links item=link}
<li {if $link == $currentPage}class="active"{/if}><a href="index.php?page=plugins&pagenum={$link}">{$link}</a></li>
{/foreach}
<li><a href="index.php?page=plugins&pagenum={$lastPage}">&raquo;</a></li>
</ul>
</div>
</div>
</div><!--/span-->
</div><!--/row-->
{/block}

@ -0,0 +1,50 @@
{block name=content}
<div class="row-fluid">
<div class="box span12">
<div class="box-header well" data-original-title>
<h2><i class="icon-user"></i> {$up_title}</h2>
<div class="box-icon">
<a href="#" class="btn btn-setting btn-round"><i class="icon-cog"></i></a>
<a href="#" class="btn btn-minimize btn-round"><i class="icon-chevron-up"></i></a>
<a href="#" class="btn btn-close btn-round"><i class="icon-remove"></i></a>
</div>
</div>
<div class="box-content">
<center><p>{$up_info}</p></center>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th width="100">{$plugin_name}</th>
<th>{$plugin_version}</th>
<th>{$up_updated_version}</th>
<th width="500">{$up_description}</th>
<th>{$up_actions}</th>
</tr>
</thead>
<tbody>
{foreach from=$plug item=element}
<tr>
<td class="center">{$element.plugin_name}</td>
<td class="center">{$element.plugin_info->Version}</td>
<td class="center">{$element.update_info->Version}</td>
<td class="center">{$element.update_info->UpdateInfo}</td>
<td><a href="index.php?page=plugins&action=update_plugins&id={$element.id}"><button class="btn btn-primary btn-large">Update</button></a>
</tr>
{/foreach}
</tbody>
</table>
<div style="width: 300px; margin:0px auto;">
<ul class="pagination">
<li><a href="index.php?page=plugins&pagenum=1">&laquo;</a></li>
{foreach from=$links item=link}
<li {if $link == $currentPage}class="active"{/if}><a href="index.php?page=plugins&pagenum={$link}">{$link}</a></li>
{/foreach}
<li><a href="index.php?page=plugins&pagenum={$lastPage}">&raquo;</a></li>
</ul>
</div>
</div>
</div><!--/span-->
</div><!--/row-->
{/block}

@ -1,110 +1,158 @@
<?php <?php
error_reporting(E_ALL ^ E_NOTICE); error_reporting( E_ALL ^ E_NOTICE );
ini_set("display_errors","1"); ini_set( "display_errors", "1" );
define('APP_NAME', 'app_achievements'); define( 'APP_NAME', 'app_achievements' );
require_once('../config.php'); require_once( '../config.php' );
include_once('../lang.php'); include_once( '../lang.php' );
include_once('lang.php'); include_once( 'lang.php' );
require_once('conf.php'); require_once( 'conf.php' );
require_once( "class/RyzomUser_class.php" );
// Ask to authenticate user (using ingame or session method) and fill $user with all information require_once( "include/ach_render_common.php" );
ryzom_app_authenticate($user, true);
#echo var_export($user,true); require_once( "class/DLL_class.php" );
// require_once("class/InDev_trait.php");
require_once( "class/Node_abstract.php" );
require_once( "class/AVLTree_class.php" );
require_once( "class/Parentum_abstract.php" );
require_once( "class/AchList_abstract.php" );
require_once( "class/Tieable_inter.php" );
require_once( "class/NodeIterator_class.php" );
#$user['id'] = $user['char_id'];
#$user['name'] = $user['char_name'];
/*$user = array(); require_once( "class/AchMenu_class.php" );
$user['cid'] = 1; require_once( "class/AchMenuNode_class.php" );
$user['lang'] = 'en'; require_once( "class/AchSummary_class.php" );
$user['name'] = 'Talvela'; require_once( "class/AchCategory_class.php" );
$user['race'] = "r_matis"; require_once( "class/AchAchievement_class.php" );
$user['civilization'] = "c_neutral"; require_once( "class/AchTask_class.php" );
$user['cult'] = "c_neutral"; require_once( "class/AchObjective_class.php" );
$user['ig'] = ($_REQUEST['ig']==1);
#$user['ig'] = true;*/
require_once("class/RyzomUser_class.php");
$_USER = new RyzomUser($user);
if($_USER->isIG()) {
require_once("include/ach_render_ig.php");
}
else {
require_once("include/ach_render_web.php");
}
require_once("include/ach_render_common.php");
require_once("class/DLL_class.php");
#require_once("class/InDev_trait.php");
require_once("class/Node_abstract.php");
require_once("class/AVLTree_class.php");
require_once("class/Parentum_abstract.php");
require_once("class/AchList_abstract.php");
require_once("class/Tieable_inter.php");
require_once("class/NodeIterator_class.php");
require_once("class/AchMenu_class.php");
require_once("class/AchMenuNode_class.php");
require_once("class/AchSummary_class.php");
require_once("class/AchCategory_class.php");
require_once("class/AchAchievement_class.php");
require_once("class/AchTask_class.php");
require_once("class/AchObjective_class.php");
#require_once("fb/facebook.php");
// Update user acces on Db // Update user acces on Db
#$DBc = ryDB::getInstance(APP_NAME."_test"); // $DBc = ryDB::getInstance(APP_NAME."_test");
$DBc = ryDB::getInstance(APP_NAME); $DBc = ryDB :: getInstance( APP_NAME );
// if getting request using REST
if ( isset( $_GET['search'] ) && isset( $_GET['format'] ) )
{
// if the format is json
if ( $_GET['format'] == 'json' )
{
// getting the headers when the request is sent
$header = getallheaders();
// this block is to get the posted data
$fp = fopen( 'php://input', 'r' );
$rawData = stream_get_contents( $fp );
$userd = json_decode( $rawData, true );
// authenticate the user using data we get from server
appAuthenticateRest( $user, $userd );
// create a ryzom user object whose achievements we have to send in response
$_USER = new RyzomUser( $user );
require_once( "include/ach_render_web.php" );
$c .= ach_render();
$response = $c;
// sending the response
echo( $response );
exit;
}
}
else
{
echo 'Invalid response';
exit;
}
// Ask to authenticate user (using ingame or session method) and fill $user with all information
ryzom_app_authenticate( $user, true );
// echo var_export($user,true);
// $user['id'] = $user['char_id'];
// $user['name'] = $user['char_name'];
/**
* $user = array();
* $user['cid'] = 1;
* $user['lang'] = 'en';
* $user['name'] = 'Talvela';
* $user['race'] = "r_matis";
* $user['civilization'] = "c_neutral";
* $user['cult'] = "c_neutral";
* $user['ig'] = ($_REQUEST['ig']==1);
* #$user['ig'] = true;
*/
$_USER = new RyzomUser( $user );
if ( $_USER -> isIG() ) {
require_once( "include/ach_render_ig.php" );
}
else {
require_once( "include/ach_render_web.php" );
}
// require_once("fb/facebook.php");
$c = ""; $c = "";
if(!$_USER->isIG()) { if ( !$_USER -> isIG() ) {
/*$facebook = new Facebook(array( /**
'appId' => $_CONF['fb_id'], * $facebook = new Facebook(array(
'secret' => $_CONF['fb_secret'], * 'appId' => $_CONF['fb_id'],
'cookie' => true * 'secret' => $_CONF['fb_secret'],
)); * 'cookie' => true
* ));
#code taken from facebook tutorial *
* #code taken from facebook tutorial
// Get the url to redirect for login to facebook *
// and request permission to write on the user's wall. * // Get the url to redirect for login to facebook
$login_url = $facebook->getLoginUrl( * // and request permission to write on the user's wall.
array('scope' => 'publish_stream') * $login_url = $facebook->getLoginUrl(
); * array('scope' => 'publish_stream')
* );
// If not authenticated, redirect to the facebook login dialog. *
// The $login_url will take care of redirecting back to us * // If not authenticated, redirect to the facebook login dialog.
// after successful login. * // The $login_url will take care of redirecting back to us
if (! $facebook->getUser()) { * // after successful login.
$c .= '<script type="text/javascript"> * if (! $facebook->getUser()) {
top.location.href = "'.$login_url.'"; * $c .= '<script type="text/javascript">
</script>;'; * top.location.href = "'.$login_url.'";
} * </script>;';
else { * }
$DBc->sqlQuery("INSERT INTO ach_fb_token (aft_player,aft_token,aft_date,aft_allow) VALUES ('".$_USER->getID()."','".$DBc->sqlEscape($facebook->getAccessToken())."','".time()."','1') ON DUPLICATE KEY UPDATE aft_token='".$DBc->sqlEscape($facebook->getAccessToken())."', aft_date='".time()."'"); * else {
}*/ * $DBc->sqlQuery("INSERT INTO ach_fb_token (aft_player,aft_token,aft_date,aft_allow) VALUES ('".$_USER->getID()."','".$DBc->sqlEscape($facebook->getAccessToken())."','".time()."','1') ON DUPLICATE KEY UPDATE aft_token='".$DBc->sqlEscape($facebook->getAccessToken())."', aft_date='".time()."'");
* }
*/
}
if(!$_USER->isIG && $_CONF['enable_webig'] == false) { }
$c .= ach_render_forbidden(false);
} if ( !$_USER -> isIG && $_CONF['enable_webig'] == false ) {
elseif($_USER->isIG && $_CONF['enable_offgame'] == false) { $c .= ach_render_forbidden( false );
$c .= ach_render_forbidden(true);
} }
elseif ( $_USER -> isIG && $_CONF['enable_offgame'] == false ) {
$c .= ach_render_forbidden( true );
}
else { else {
$c .= ach_render(); $c .= ach_render();
} }
echo ryzom_app_render(strtoupper(get_translation('ach_app_name',$_USER->getLang())), $c, $_USER->isIG()); echo ryzom_app_render( strtoupper( get_translation( 'ach_app_name', $_USER -> getLang() ) ), $c, $_USER -> isIG() );
?> ?>

Loading…
Cancel
Save