mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-12-22 00:48:44 +00:00
Merge with rc-botanic-webdev
This commit is contained in:
commit
55372aef84
5 changed files with 263 additions and 308 deletions
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
class Helpers{
|
class Helpers{
|
||||||
|
|
||||||
public function loadTemplate( $template, $vars = array () )
|
public function loadTemplate( $template, $vars = array (), $forcelibrender = false )
|
||||||
{
|
{
|
||||||
global $AMS_LIB;
|
global $AMS_LIB;
|
||||||
global $SITEBASE;
|
global $SITEBASE;
|
||||||
|
@ -14,7 +14,10 @@ class Helpers{
|
||||||
// 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 = 120;
|
$smarty -> cache_lifetime = 120;
|
||||||
if ( !helpers :: check_if_game_client () ){
|
|
||||||
|
helpers :: create_folders ();
|
||||||
|
|
||||||
|
if ( !helpers :: check_if_game_client () or $forcelibrender = true ){
|
||||||
$smarty -> template_dir = $AMS_LIB . '/ingame_templates/';
|
$smarty -> template_dir = $AMS_LIB . '/ingame_templates/';
|
||||||
$smarty -> setConfigDir( $AMS_LIB . '/configs' );
|
$smarty -> setConfigDir( $AMS_LIB . '/configs' );
|
||||||
}else{
|
}else{
|
||||||
|
@ -44,6 +47,23 @@ class Helpers{
|
||||||
$smarty -> display( $template . '.tpl' );
|
$smarty -> display( $template . '.tpl' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function create_folders(){
|
||||||
|
$arr = array( $AMS_LIB . '/ingame_templates/',
|
||||||
|
$AMS_LIB . '/configs',
|
||||||
|
$AMS_LIB . '/cache',
|
||||||
|
$SITEBASE . '/cache/',
|
||||||
|
$SITEBASE . '/templates/',
|
||||||
|
$SITEBASE . '/templates_c/',
|
||||||
|
$SITEBASE . '/configs'
|
||||||
|
);
|
||||||
|
foreach ( $arr as & $value ){
|
||||||
|
if ( !file_exists( $value ) ){
|
||||||
|
mkdir( $value );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public function check_if_game_client()
|
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
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
class Users{
|
class Users{
|
||||||
|
|
||||||
function add_user(){
|
public function add_user(){
|
||||||
// check if values exist
|
// check if values exist
|
||||||
if ( isset( $_POST["Username"] ) and isset( $_POST["Password"] ) and isset( $_POST["Email"] ) )
|
if ( isset( $_POST["Username"] ) and isset( $_POST["Password"] ) and isset( $_POST["Email"] ) )
|
||||||
{
|
{
|
||||||
|
@ -66,167 +66,168 @@ class Users{
|
||||||
$pageElements['TAC_ERROR'] = 'TRUE';
|
$pageElements['TAC_ERROR'] = 'TRUE';
|
||||||
}
|
}
|
||||||
return $pageElements;
|
return $pageElements;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function checkUser
|
* Function checkUser
|
||||||
*
|
*
|
||||||
* @takes $username
|
* @takes $username
|
||||||
* @return string Info: Returns a string based on if the username is valid, if valid then "success" is returned
|
* @return string Info: Returns a string based on if the username is valid, if valid then "success" is returned
|
||||||
*/
|
*/
|
||||||
public function checkUser( $username )
|
public function checkUser( $username )
|
||||||
{
|
{
|
||||||
if ( isset( $username ) ){
|
if ( isset( $username ) ){
|
||||||
if ( strlen( $username ) > 12 ){
|
if ( strlen( $username ) > 12 ){
|
||||||
return "Username must be no more than 12 characters.";
|
return "Username must be no more than 12 characters.";
|
||||||
}elseif ( strlen( $username ) < 5 ){
|
}elseif ( strlen( $username ) < 5 ){
|
||||||
return "Username must be 5 or more characters.";
|
return "Username must be 5 or more characters.";
|
||||||
}elseif ( !preg_match( '/^[a-z0-9\.]*$/', $username ) ){
|
}elseif ( !preg_match( '/^[a-z0-9\.]*$/', $username ) ){
|
||||||
return "Username can only contain numbers and letters.";
|
return "Username can only contain numbers and letters.";
|
||||||
}elseif ( sql :: db_query( "SELECT COUNT(*) FROM {users} WHERE name = :name", array(
|
}elseif ( sql :: db_query( "SELECT COUNT(*) FROM {users} WHERE name = :name", array(
|
||||||
':name' => $username
|
':name' => $username
|
||||||
) ) -> fetchField() ){
|
) ) -> fetchField() ){
|
||||||
return "Username " . $username . " is in use.";
|
return "Username " . $username . " is in use.";
|
||||||
}else{
|
|
||||||
return "success";
|
|
||||||
}
|
|
||||||
}else{
|
}else{
|
||||||
return "success";
|
return "success";
|
||||||
}
|
}
|
||||||
return "fail";
|
}else{
|
||||||
}
|
return "success";
|
||||||
/**
|
}
|
||||||
* Function checkPassword
|
return "fail";
|
||||||
*
|
}
|
||||||
* @takes $pass
|
/**
|
||||||
* @return string Info: Returns a string based on if the password is valid, if valid then "success" is returned
|
* Function checkPassword
|
||||||
*/
|
*
|
||||||
public function checkPassword( $pass )
|
* @takes $pass
|
||||||
{
|
* @return string Info: Returns a string based on if the password is valid, if valid then "success" is returned
|
||||||
if ( isset( $pass ) ){
|
*/
|
||||||
if ( strlen( $pass ) > 20 ){
|
public function checkPassword( $pass )
|
||||||
return "Password must be no more than 20 characters.";
|
{
|
||||||
}elseif ( strlen( $pass ) < 5 ){
|
if ( isset( $pass ) ){
|
||||||
return "Password must be more than 5 characters.";
|
if ( strlen( $pass ) > 20 ){
|
||||||
}else{
|
return "Password must be no more than 20 characters.";
|
||||||
return "success";
|
}elseif ( strlen( $pass ) < 5 ){
|
||||||
}
|
return "Password must be more than 5 characters.";
|
||||||
}
|
|
||||||
return "fail";
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Function confirmPassword
|
|
||||||
*
|
|
||||||
* @takes $pass
|
|
||||||
* @return string Info: Verify's $_POST["Password"] is the same as $_POST["ConfirmPass"]
|
|
||||||
*/
|
|
||||||
public function confirmPassword()
|
|
||||||
{
|
|
||||||
if ( ( $_POST["Password"] ) != ( $_POST["ConfirmPass"] ) ){
|
|
||||||
return "Passwords do not match.";
|
|
||||||
}else{
|
}else{
|
||||||
return "success";
|
return "success";
|
||||||
}
|
}
|
||||||
return "fail";
|
}
|
||||||
}
|
return "fail";
|
||||||
/**
|
}
|
||||||
* Function checkEmail
|
/**
|
||||||
*
|
* Function confirmPassword
|
||||||
* @takes $email
|
*
|
||||||
* @return
|
* @takes $pass
|
||||||
*/
|
* @return string Info: Verify's $_POST["Password"] is the same as $_POST["ConfirmPass"]
|
||||||
public function checkEmail( $email )
|
*/
|
||||||
{
|
public function confirmPassword()
|
||||||
if ( isset( $email ) ){
|
{
|
||||||
if ( !validEmail( $email ) ){
|
if ( ( $_POST["Password"] ) != ( $_POST["ConfirmPass"] ) ){
|
||||||
return "Email address is not valid.";
|
return "Passwords do not match.";
|
||||||
}elseif ( db_query( "SELECT COUNT(*) FROM {users} WHERE mail = :mail", array(
|
}else{
|
||||||
':mail' => $email
|
return "success";
|
||||||
) ) -> fetchField() ){
|
}
|
||||||
return "Email is in use.";
|
return "fail";
|
||||||
}else{
|
}
|
||||||
return "success";
|
/**
|
||||||
}
|
* Function checkEmail
|
||||||
|
*
|
||||||
|
* @takes $email
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public function checkEmail( $email )
|
||||||
|
{
|
||||||
|
if ( isset( $email ) ){
|
||||||
|
if ( !validEmail( $email ) ){
|
||||||
|
return "Email address is not valid.";
|
||||||
|
}elseif ( db_query( "SELECT COUNT(*) FROM {users} WHERE mail = :mail", array(
|
||||||
|
':mail' => $email
|
||||||
|
) ) -> fetchField() ){
|
||||||
|
return "Email is in use.";
|
||||||
}else{
|
}else{
|
||||||
return "success";
|
return "success";
|
||||||
}
|
}
|
||||||
return "fail";
|
}else{
|
||||||
}
|
return "success";
|
||||||
public function validEmail( $email )
|
}
|
||||||
{
|
return "fail";
|
||||||
$isValid = true;
|
}
|
||||||
$atIndex = strrpos( $email, "@" );
|
public function validEmail( $email )
|
||||||
if ( is_bool( $atIndex ) && !$atIndex ){
|
{
|
||||||
$isValid = false;
|
$isValid = true;
|
||||||
}else{
|
$atIndex = strrpos( $email, "@" );
|
||||||
$domain = substr( $email, $atIndex + 1 );
|
if ( is_bool( $atIndex ) && !$atIndex ){
|
||||||
$local = substr( $email, 0, $atIndex );
|
$isValid = false;
|
||||||
$localLen = strlen( $local );
|
}else{
|
||||||
$domainLen = strlen( $domain );
|
$domain = substr( $email, $atIndex + 1 );
|
||||||
if ( $localLen < 1 || $localLen > 64 ){
|
$local = substr( $email, 0, $atIndex );
|
||||||
// local part length exceeded
|
$localLen = strlen( $local );
|
||||||
$isValid = false;
|
$domainLen = strlen( $domain );
|
||||||
}else if ( $domainLen < 1 || $domainLen > 255 ){
|
if ( $localLen < 1 || $localLen > 64 ){
|
||||||
// domain part length exceeded
|
// local part length exceeded
|
||||||
$isValid = false;
|
$isValid = false;
|
||||||
}else if ( $local[0] == '.' || $local[$localLen - 1] == '.' ){
|
}else if ( $domainLen < 1 || $domainLen > 255 ){
|
||||||
// local part starts or ends with '.'
|
// domain part length exceeded
|
||||||
$isValid = false;
|
$isValid = false;
|
||||||
}else if ( preg_match( '/\\.\\./', $local ) ){
|
}else if ( $local[0] == '.' || $local[$localLen - 1] == '.' ){
|
||||||
// local part has two consecutive dots
|
// local part starts or ends with '.'
|
||||||
$isValid = false;
|
$isValid = false;
|
||||||
}else if ( !preg_match( '/^[A-Za-z0-9\\-\\.]+$/', $domain ) ){
|
}else if ( preg_match( '/\\.\\./', $local ) ){
|
||||||
// character not valid in domain part
|
// local part has two consecutive dots
|
||||||
$isValid = false;
|
$isValid = false;
|
||||||
}else if ( preg_match( '/\\.\\./', $domain ) ){
|
}else if ( !preg_match( '/^[A-Za-z0-9\\-\\.]+$/', $domain ) ){
|
||||||
// domain part has two consecutive dots
|
// character not valid in domain part
|
||||||
$isValid = false;
|
$isValid = false;
|
||||||
}else if ( !preg_match( '/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace( "\\\\", "", $local ) ) ){
|
}else if ( preg_match( '/\\.\\./', $domain ) ){
|
||||||
// character not valid in local part unless
|
// domain part has two consecutive dots
|
||||||
// local part is quoted
|
$isValid = false;
|
||||||
if ( !preg_match( '/^"(\\\\"|[^"])+"$/', str_replace( "\\\\", "", $local ) ) ){
|
}else if ( !preg_match( '/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace( "\\\\", "", $local ) ) ){
|
||||||
$isValid = false;
|
// character not valid in local part unless
|
||||||
}
|
// local part is quoted
|
||||||
}
|
if ( !preg_match( '/^"(\\\\"|[^"])+"$/', str_replace( "\\\\", "", $local ) ) ){
|
||||||
if ( $isValid && !( checkdnsrr( $domain, "MX" ) || checkdnsrr( $domain, "A" ) ) ){
|
$isValid = false;
|
||||||
// domain not found in DNS
|
|
||||||
$isValid = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $isValid;
|
if ( $isValid && !( checkdnsrr( $domain, "MX" ) || checkdnsrr( $domain, "A" ) ) ){
|
||||||
}
|
// domain not found in DNS
|
||||||
public function generateSALT( $length = 2 )
|
$isValid = false;
|
||||||
{
|
|
||||||
// start with a blank salt
|
|
||||||
$salt = "";
|
|
||||||
// define possible characters - any character in this string can be
|
|
||||||
// picked for use in the salt, so if you want to put vowels back in
|
|
||||||
// or add special characters such as exclamation marks, this is where
|
|
||||||
// you should do it
|
|
||||||
$possible = "2346789bcdfghjkmnpqrtvwxyzBCDFGHJKLMNPQRTVWXYZ";
|
|
||||||
// we refer to the length of $possible a few times, so let's grab it now
|
|
||||||
$maxlength = strlen( $possible );
|
|
||||||
// check for length overflow and truncate if necessary
|
|
||||||
if ( $length > $maxlength ){
|
|
||||||
$length = $maxlength;
|
|
||||||
}
|
}
|
||||||
// set up a counter for how many characters are in the salt so far
|
}
|
||||||
$i = 0;
|
return $isValid;
|
||||||
// add random characters to $salt until $length is reached
|
}
|
||||||
while ( $i < $length ){
|
public function generateSALT( $length = 2 )
|
||||||
// pick a random character from the possible ones
|
{
|
||||||
$char = substr( $possible, mt_rand( 0, $maxlength - 1 ), 1 );
|
// start with a blank salt
|
||||||
// have we already used this character in $salt?
|
$salt = "";
|
||||||
if ( !strstr( $salt, $char ) ){
|
// define possible characters - any character in this string can be
|
||||||
// no, so it's OK to add it onto the end of whatever we've already got...
|
// picked for use in the salt, so if you want to put vowels back in
|
||||||
$salt .= $char;
|
// or add special characters such as exclamation marks, this is where
|
||||||
// ... and increase the counter by one
|
// you should do it
|
||||||
$i++;
|
$possible = "2346789bcdfghjkmnpqrtvwxyzBCDFGHJKLMNPQRTVWXYZ";
|
||||||
}
|
// we refer to the length of $possible a few times, so let's grab it now
|
||||||
|
$maxlength = strlen( $possible );
|
||||||
|
// check for length overflow and truncate if necessary
|
||||||
|
if ( $length > $maxlength ){
|
||||||
|
$length = $maxlength;
|
||||||
|
}
|
||||||
|
// set up a counter for how many characters are in the salt so far
|
||||||
|
$i = 0;
|
||||||
|
// add random characters to $salt until $length is reached
|
||||||
|
while ( $i < $length ){
|
||||||
|
// pick a random character from the possible ones
|
||||||
|
$char = substr( $possible, mt_rand( 0, $maxlength - 1 ), 1 );
|
||||||
|
// have we already used this character in $salt?
|
||||||
|
if ( !strstr( $salt, $char ) ){
|
||||||
|
// no, so it's OK to add it onto the end of whatever we've already got...
|
||||||
|
$salt .= $char;
|
||||||
|
// ... and increase the counter by one
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
// done!
|
}
|
||||||
return $salt;
|
// done!
|
||||||
}
|
return $salt;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
/*
|
|
||||||
Here is the current code and progress on the drupal 7 ryzom core module
|
|
||||||
//////////////////////////
|
|
||||||
todo
|
|
||||||
//////////////////////////
|
|
||||||
disable user hook
|
|
||||||
delete user hook --- ring_open -> ring users ---- nel user & nel permission ---- hook_user_cancel ---- remove character data on server
|
|
||||||
menu items that do stuff
|
|
||||||
|
|
||||||
*/
|
|
||||||
/*
|
/*
|
||||||
Drupal 7 ryzom core module
|
Drupal 7 ryzom core module
|
||||||
Copyright (C) 2013 Matthew Lagoe (Botanic) & Paige Offerdahl (Tobi)
|
Copyright (C) 2013 Matthew Lagoe (Botanic) & Paige Offerdahl (Tobi)
|
||||||
|
@ -26,6 +17,9 @@ GNU Affero General Public License for more details.
|
||||||
You should have received a copy of the GNU Affero General Public License
|
You should have received a copy of the GNU Affero General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
require_once("/ams_lib/libinclude.php");
|
||||||
|
|
||||||
//output template
|
//output template
|
||||||
function loadTemplate($template,$vars)
|
function loadTemplate($template,$vars)
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,16 +10,6 @@ $DBHOST = 'localhost' ;
|
||||||
$DBUSERNAME = 'shard' ;
|
$DBUSERNAME = 'shard' ;
|
||||||
$DBPASSWORD = '' ;
|
$DBPASSWORD = '' ;
|
||||||
|
|
||||||
$RINGDBNAME = 'ring_open' ;
|
|
||||||
$RINGDBUSERNAME = 'shard' ;
|
|
||||||
$RINGDBPASSWORD = '' ;
|
|
||||||
|
|
||||||
$NTDBName = 'nel_tool' ;
|
|
||||||
$NTUserName = 'shard' ;
|
|
||||||
$NTPassword = '' ;
|
|
||||||
|
|
||||||
$LOGRELATIVEPATH = 'logs/' ;
|
|
||||||
|
|
||||||
// If true= the server will add automatically unknown user in the database
|
// If true= the server will add automatically unknown user in the database
|
||||||
// (in nel.user= nel.permission= ring.ring_user and ring.characters
|
// (in nel.user= nel.permission= ring.ring_user and ring.characters
|
||||||
$ALLOW_UNKNOWN = true ;
|
$ALLOW_UNKNOWN = true ;
|
||||||
|
@ -27,57 +17,8 @@ $ALLOW_UNKNOWN = true ;
|
||||||
$CREATE_RING = true ;
|
$CREATE_RING = true ;
|
||||||
|
|
||||||
// site paths definitions
|
// site paths definitions
|
||||||
$AMS_LIB = dirname(dirname( __FILE__ )) . '/ams_lib';
|
$AMS_LIB = dirname( dirname( __FILE__ ) ) . '/ams_lib';
|
||||||
$AMS_TRANS = $AMS_LIB . '/translations';
|
$AMS_TRANS = $AMS_LIB . '/translations';
|
||||||
$AMS_CACHEDIR = $AMS_LIB . '/cache';
|
$AMS_CACHEDIR = $AMS_LIB . '/cache';
|
||||||
$SITEBASE = dirname( __FILE__ ) . '/html/' ;
|
|
||||||
$NELTOOL_SYSTEMBASE = dirname( dirname( __FILE__ ) ) . '/admin/' ;
|
|
||||||
$NELTOOL_LOGBASE = $NELTOOL_SYSTEMBASE . '/logs/' ;
|
|
||||||
$NELTOOL_IMGBASE = $NELTOOL_SYSTEMBASE . '/imgs/' ;
|
|
||||||
|
|
||||||
|
$DEFAULT_LANGUAGE = 'en';
|
||||||
$NELTOOL_RRDTOOL = '/usr/bin/rrdtool' ;
|
|
||||||
$NELTOOL_RRDSYSBASE = $NELTOOL_SYSTEMBASE . 'graphs_output/' ;
|
|
||||||
$NELTOOL_RRDWEBBASE = $SITEBASE . 'graphs_output/' ;
|
|
||||||
|
|
||||||
// SQL table names
|
|
||||||
$NELDB_PREFIX = 'neltool_' ;
|
|
||||||
|
|
||||||
// for later use
|
|
||||||
// the config table will gather some of the settings
|
|
||||||
// that are currently written in this config.php file
|
|
||||||
$NELDB_CONFIG_TABLE = $NELDB_PREFIX . 'config';
|
|
||||||
$NELDB_USER_TABLE = $NELDB_PREFIX . 'users' ;
|
|
||||||
$NELDB_GROUP_TABLE = $NELDB_PREFIX . 'groups' ;
|
|
||||||
|
|
||||||
$NELDB_LOG_TABLE = $NELDB_PREFIX . 'logs' ;
|
|
||||||
$NELDB_NOTE_TABLE = $NELDB_PREFIX . 'notes' ;
|
|
||||||
|
|
||||||
$NELDB_STAT_HD_TIME_TABLE = $NELDB_PREFIX . 'stats_hd_times' ;
|
|
||||||
$NELDB_STAT_HD_TABLE = $NELDB_PREFIX . 'stats_hd_datas' ;
|
|
||||||
|
|
||||||
$NELDB_ANNOTATION_TABLE = $NELDB_PREFIX . 'annotations' ;
|
|
||||||
$NELDB_LOCK_TABLE = $NELDB_PREFIX . 'locks' ;
|
|
||||||
|
|
||||||
$NELDB_APPLICATION_TABLE = $NELDB_PREFIX . 'applications' ;
|
|
||||||
$NELDB_GROUP_APPLICATION_TABLE = $NELDB_PREFIX . 'group_applications' ;
|
|
||||||
$NELDB_USER_APPLICATION_TABLE = $NELDB_PREFIX . 'user_applications' ;
|
|
||||||
|
|
||||||
$NELDB_DOMAIN_TABLE = $NELDB_PREFIX . 'domains' ;
|
|
||||||
$NELDB_USER_DOMAIN_TABLE = $NELDB_PREFIX . 'user_domains' ;
|
|
||||||
$NELDB_GROUP_DOMAIN_TABLE = $NELDB_PREFIX . 'group_domains' ;
|
|
||||||
|
|
||||||
$NELDB_SHARD_TABLE = $NELDB_PREFIX . 'shards' ;
|
|
||||||
$NELDB_USER_SHARD_TABLE = $NELDB_PREFIX . 'user_shards' ;
|
|
||||||
$NELDB_GROUP_SHARD_TABLE = $NELDB_PREFIX . 'group_shards' ;
|
|
||||||
|
|
||||||
$NELDB_RESTART_GROUP_TABLE = $NELDB_PREFIX . 'restart_groups' ;
|
|
||||||
$NELDB_RESTART_MESSAGE_TABLE = $NELDB_PREFIX . 'restart_messages' ;
|
|
||||||
$NELDB_RESTART_SEQUENCE_TABLE = $NELDB_PREFIX . 'restart_sequences' ;
|
|
||||||
|
|
||||||
$VIEW_DELAY = 0 ;
|
|
||||||
$HARDWARE_REFRESH = 600 ;
|
|
||||||
$LOCK_TIMEOUT = 1800 ;
|
|
||||||
$BG_IMG = 'imgs/bg_live.png' ;
|
|
||||||
|
|
||||||
$DEFAULT_LANGUAGE = 'en';
|
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
<?php
|
<?php
|
||||||
function add_user(){
|
function add_user(){
|
||||||
|
|
||||||
//add user locally here
|
// add user locally here
|
||||||
|
$return = users :: add_user();
|
||||||
$return = users::add_user();
|
return $return;
|
||||||
return $return;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
function checkUser(){
|
function checkUser(){
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue