From 1f648910edfd1176be6dd9d71c4987115c98518d Mon Sep 17 00:00:00 2001 From: Botanic Date: Mon, 10 Jun 2013 04:17:55 -0700 Subject: [PATCH 1/2] latest changes to work on getting registration working --HG-- branch : rc-botanic-webdev --- .../ryzom_ams/ams_lib/autoload/helpers.php | 14 +- .../ryzom_ams/ams_lib/autoload/users.php | 329 +++++++++--------- .../drupal_module/ryzommanage.module | 134 ++++--- .../tools/server/ryzom_ams/www/config.php | 63 +--- .../ryzom_ams/www/html/inc/add_user.php | 11 +- 5 files changed, 243 insertions(+), 308 deletions(-) diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/helpers.php b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/helpers.php index 4cf79e7b5..6d200d774 100644 --- a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/helpers.php +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/helpers.php @@ -1,34 +1,34 @@ debugging = true; // caching must be disabled for multi-language support $smarty -> caching = false; $smarty -> cache_lifetime = 120; - if ( !helpers :: check_if_game_client () ){ + if ( !helpers :: check_if_game_client () or $forcelibrender = true ){ $smarty -> template_dir = $AMS_LIB . '/ingame_templates/'; $smarty -> setConfigDir( $AMS_LIB . '/configs' ); }else{ $smarty -> template_dir = $SITEBASE . '/templates/'; $smarty -> setConfigDir( $SITEBASE . '/configs' ); } - + foreach ( $vars as $key => $value ){ $smarty -> assign( $key, $value ); } if ( isset( $_GET["language"] ) ){ $language = $_GET["language"]; if ( file_exists( $AMS_TRANS . '/' . $language . '.ini' ) ){ - + }else{ global $DEFAULT_LANGUAGE; $language = $DEFAULT_LANGUAGE; @@ -43,7 +43,7 @@ class Helpers{ } $smarty -> display( $template . '.tpl' ); } - + public function check_if_game_client() { // if HTTP_USER_AGENT is not set then its ryzom core diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/users.php b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/users.php index d765fec82..d492ad109 100644 --- a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/users.php +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/users.php @@ -1,7 +1,7 @@ 12 ){ - return "Username must be no more than 12 characters."; - }elseif ( strlen( $username ) < 5 ){ - return "Username must be 5 or more characters."; - }elseif ( !preg_match( '/^[a-z0-9\.]*$/', $username ) ){ - return "Username can only contain numbers and letters."; - }elseif ( sql :: db_query( "SELECT COUNT(*) FROM {users} WHERE name = :name", array( - ':name' => $username - ) ) -> fetchField() ){ - return "Username " . $username . " is in use."; - }else{ - return "success"; - } - }else{ - return "success"; - } - return "fail"; - } - /** - * Function checkPassword - * - * @takes $pass - * @return string Info: Returns a string based on if the password is valid, if valid then "success" is returned - */ - public function checkPassword( $pass ) - { - if ( isset( $pass ) ){ - if ( strlen( $pass ) > 20 ){ - return "Password must be no more than 20 characters."; - }elseif ( strlen( $pass ) < 5 ){ - return "Password must be more than 5 characters."; - }else{ - return "success"; - } - } - 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{ - return "success"; - } - return "fail"; - } - /** - * 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{ - return "success"; - } - }else{ - return "success"; - } - return "fail"; - } - public function validEmail( $email ) - { - $isValid = true; - $atIndex = strrpos( $email, "@" ); - if ( is_bool( $atIndex ) && !$atIndex ){ - $isValid = false; - }else{ - $domain = substr( $email, $atIndex + 1 ); - $local = substr( $email, 0, $atIndex ); - $localLen = strlen( $local ); - $domainLen = strlen( $domain ); - if ( $localLen < 1 || $localLen > 64 ){ - // local part length exceeded - $isValid = false; - }else if ( $domainLen < 1 || $domainLen > 255 ){ - // domain part length exceeded - $isValid = false; - }else if ( $local[0] == '.' || $local[$localLen - 1] == '.' ){ - // local part starts or ends with '.' - $isValid = false; - }else if ( preg_match( '/\\.\\./', $local ) ){ - // local part has two consecutive dots - $isValid = false; - }else if ( !preg_match( '/^[A-Za-z0-9\\-\\.]+$/', $domain ) ){ - // character not valid in domain part - $isValid = false; - }else if ( preg_match( '/\\.\\./', $domain ) ){ - // domain part has two consecutive dots - $isValid = false; - }else if ( !preg_match( '/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace( "\\\\", "", $local ) ) ){ - // character not valid in local part unless - // local part is quoted - if ( !preg_match( '/^"(\\\\"|[^"])+"$/', str_replace( "\\\\", "", $local ) ) ){ - $isValid = false; - } - } - if ( $isValid && !( checkdnsrr( $domain, "MX" ) || checkdnsrr( $domain, "A" ) ) ){ - // domain not found in DNS - $isValid = false; - } - } - return $isValid; - } - public function generateSALT( $length = 2 ) - { - // 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; - // 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; - } - } + } + } - \ No newline at end of file + /** + * Function checkUser + * + * @takes $username + * @return string Info: Returns a string based on if the username is valid, if valid then "success" is returned + */ + public function checkUser( $username ) + { + if ( isset( $username ) ){ + if ( strlen( $username ) > 12 ){ + return "Username must be no more than 12 characters."; + }elseif ( strlen( $username ) < 5 ){ + return "Username must be 5 or more characters."; + }elseif ( !preg_match( '/^[a-z0-9\.]*$/', $username ) ){ + return "Username can only contain numbers and letters."; + }elseif ( sql :: db_query( "SELECT COUNT(*) FROM {users} WHERE name = :name", array( + ':name' => $username + ) ) -> fetchField() ){ + return "Username " . $username . " is in use."; + }else{ + return "success"; + } + }else{ + return "success"; + } + return "fail"; + } + /** + * Function checkPassword + * + * @takes $pass + * @return string Info: Returns a string based on if the password is valid, if valid then "success" is returned + */ + public function checkPassword( $pass ) + { + if ( isset( $pass ) ){ + if ( strlen( $pass ) > 20 ){ + return "Password must be no more than 20 characters."; + }elseif ( strlen( $pass ) < 5 ){ + return "Password must be more than 5 characters."; + }else{ + return "success"; + } + } + 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{ + return "success"; + } + return "fail"; + } + /** + * 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{ + return "success"; + } + }else{ + return "success"; + } + return "fail"; + } + public function validEmail( $email ) + { + $isValid = true; + $atIndex = strrpos( $email, "@" ); + if ( is_bool( $atIndex ) && !$atIndex ){ + $isValid = false; + }else{ + $domain = substr( $email, $atIndex + 1 ); + $local = substr( $email, 0, $atIndex ); + $localLen = strlen( $local ); + $domainLen = strlen( $domain ); + if ( $localLen < 1 || $localLen > 64 ){ + // local part length exceeded + $isValid = false; + }else if ( $domainLen < 1 || $domainLen > 255 ){ + // domain part length exceeded + $isValid = false; + }else if ( $local[0] == '.' || $local[$localLen - 1] == '.' ){ + // local part starts or ends with '.' + $isValid = false; + }else if ( preg_match( '/\\.\\./', $local ) ){ + // local part has two consecutive dots + $isValid = false; + }else if ( !preg_match( '/^[A-Za-z0-9\\-\\.]+$/', $domain ) ){ + // character not valid in domain part + $isValid = false; + }else if ( preg_match( '/\\.\\./', $domain ) ){ + // domain part has two consecutive dots + $isValid = false; + }else if ( !preg_match( '/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace( "\\\\", "", $local ) ) ){ + // character not valid in local part unless + // local part is quoted + if ( !preg_match( '/^"(\\\\"|[^"])+"$/', str_replace( "\\\\", "", $local ) ) ){ + $isValid = false; + } + } + if ( $isValid && !( checkdnsrr( $domain, "MX" ) || checkdnsrr( $domain, "A" ) ) ){ + // domain not found in DNS + $isValid = false; + } + } + return $isValid; + } + public function generateSALT( $length = 2 ) + { + // 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; + // 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; + } + } + + \ No newline at end of file diff --git a/code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage.module b/code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage.module index a73fcf840..e5e184556 100644 --- a/code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage.module +++ b/code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage.module @@ -1,14 +1,5 @@ ring users ---- nel user & nel permission ---- hook_user_cancel ---- remove character data on server -menu items that do stuff -*/ /* Drupal 7 ryzom core module 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 along with this program. If not, see . */ + +require_once("/ams_lib/libinclude.php"); + //output template function loadTemplate($template,$vars) { @@ -34,7 +28,7 @@ function loadTemplate($template,$vars) } /** * - * Function ryzommanage_admin + * Function ryzommanage_admin * * @takes Nothing * @return array $form @@ -119,14 +113,14 @@ function _webpage_profile(&$form_state) if ($email != "success") { form_set_error('mail', t('Not a valid email address, please check it and try again.')); } - if ((checkPassword($form_state['account']['pass']['#value']['pass1']) == "success" ) and ( $form_state['account']['pass']['#value']['pass1'] == + if ((checkPassword($form_state['account']['pass']['#value']['pass1']) == "success" ) and ( $form_state['account']['pass']['#value']['pass1'] == $form_state['account']['pass']['#value']['pass2'] )) { } } /** * - * Function ryzommanage_menu + * Function ryzommanage_menu * * @takes Nothing * @return array $items @@ -212,7 +206,7 @@ function name_registration_admin_settings() { } /** * - * Function ryzommanage_menu + * Function ryzommanage_menu * * @takes Int $element, &$form_state * @return Nothing @@ -228,7 +222,7 @@ function _check_port_value($element, &$form_state) } /** * - * Function ryzommanage_block_info + * Function ryzommanage_block_info * * @takes Nothing * @return array $blocks @@ -242,14 +236,14 @@ function ryzommanage_block_info() // info: The name of the block. 'info' => t('Ryzom Manage User Block'), 'status' => TRUE, - 'region' => '-1', // Not usually provided. - 'visibility' => BLOCK_VISIBILITY_LISTED // Not usually provided. + 'region' => '-1', // Not usually provided. + 'visibility' => BLOCK_VISIBILITY_LISTED // Not usually provided. ); return $blocks; } /** * - * Function ryzommanage_block_view + * Function ryzommanage_block_view * * @takes Nothing * @return array $block @@ -271,9 +265,9 @@ function ryzommanage_block_view($delta = '') } /** * - * Function _collect_register + * Function _collect_register * - * @takes + * @takes * @return Nothing * * Info: Determins what to send back to client, if the client is ryzom core then send the http data if its a browser send to / @@ -292,7 +286,7 @@ function _collect_register($nids, $collection) } /** * - * Function check_if_game_client + * Function check_if_game_client * * @takes Nothing * @return Boolean @@ -311,10 +305,10 @@ function check_if_game_client() } /** * - * Function return_client_httpdata + * Function return_client_httpdata * - * @takes - * @return + * @takes + * @return * * Info: Returns ryzom core formatted html for use in registration via client * @@ -328,12 +322,12 @@ function return_client_httpdata() $user = checkUser($_POST["Username"]); $pass = checkPassword($_POST["Password"]); $cpass = confirmPassword(); - $email = checkEmail($_POST["Email"]); + $email = checkEmail($_POST["Email"]); } else { $user = ""; $pass = ""; $cpass = ""; - $email = ""; + $email = ""; } //if all are good then create user if (($user == "success") and ($pass == "success") and ($cpass == "success") and ($email == "success") and (isset($_POST["TaC"]))) { @@ -363,7 +357,7 @@ function return_client_httpdata() } else { $pageElements['USERNAME_ERROR'] = 'FALSE'; } - + if ($pass != "success") { $pageElements['PASSWORD_ERROR'] = 'TRUE'; } else { @@ -389,7 +383,7 @@ function return_client_httpdata() } /** * - * Function checkUser + * Function checkUser * * @takes $username * @return string @@ -420,7 +414,7 @@ function checkUser($username) } /** * - * Function checkPassword + * Function checkPassword * * @takes $pass * @return string @@ -443,7 +437,7 @@ function checkPassword($pass) } /** * - * Function confirmPassword + * Function confirmPassword * * @takes $pass * @return string @@ -462,12 +456,12 @@ function confirmPassword() } /** * - * Function checkEmail + * Function checkEmail * * @takes $email - * @return + * @return + * * - * * */ function checkEmail($email) @@ -517,7 +511,7 @@ function validEmail($email) // domain part has two consecutive dots $isValid = false; } else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) { - // character not valid in local part unless + // character not valid in local part unless // local part is quoted if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $local))) { $isValid = false; @@ -571,13 +565,13 @@ function createUser($values) $salt = generateSALT(); $hashpass = crypt($pass, $salt); - + $params = array( $login, $hashpass, $email ); - + try { $hostname = variable_get('ryzommanage_serverurl', 'localhost'); $port = variable_get('ryzommanage_mysqlport', '3306'); @@ -599,8 +593,8 @@ function createUser($values) )) ))->execute(); return true; - } - + } + try { $statement = $dbh->prepare("INSERT INTO user (Login, Password, Email) VALUES (?, ?, ?)"); } @@ -617,7 +611,7 @@ function createUser($values) ))->execute(); return true; } - + try { $statement->execute($params); } @@ -634,12 +628,12 @@ function createUser($values) ))->execute(); return true; } - + createPermissions(array($login)); } function createPermissions($values) { - + try { $hostname = variable_get('ryzommanage_serverurl', 'localhost'); $port = variable_get('ryzommanage_mysqlport', '3306'); @@ -659,8 +653,8 @@ function createPermissions($values) { )) ))->execute(); return true; - } - + } + try { $sth = $dbh->prepare("SELECT UId FROM user WHERE Login='" . $values[0] . "';"); $sth->execute(); @@ -682,8 +676,8 @@ function createPermissions($values) { )) ))->execute(); return true; - } - + } + return true; } @@ -763,13 +757,13 @@ function ryzommanage_user_presave(&$edit, $account, $category) } elseif (isset($_POST['pass']['pass1'])) { $pass = $_POST['pass']['pass1']; } - + if (!isset($edit['name'])) { $name = $user->name; } else { $name = $edit['name']; } - + if ($account->is_new == 1 ) { createUser(array($edit['name'], $pass, $edit['mail'])); } else { @@ -781,15 +775,15 @@ function ryzommanage_form_user_register_form_alter(&$form, &$form_state, $form_i // Modification for the form with the given form ID goes here. For example, if // FORM_ID is "user_register_form" this code would run only on the user // registration form. - + // Change the data for the username and email fields $form['account']['name']['#maxlength'] = '12'; $form['account']['name']['#description'] = '5-12 lower-case characters and numbers. The login (username) you create here will be your login name.
The name of your game characters will be chosen later on.
'; $form['account']['mail']['#description'] = 'Please verify that the e-mail address you enter here is valid and will remain valid in the future.
It will be used to manage your Tempest in the Aether account.
'; // Add a checkbox to registration form about agreeing to terms of use. $form['terms_of_use'] = array( - '#type' => 'checkbox', - '#title' => t("I agree with the terms and conditions."), + '#type' => 'checkbox', + '#title' => t("I agree with the terms and conditions."), '#required' => TRUE, ); } @@ -798,19 +792,19 @@ function ryzommanage_form_user_profile_form_alter(&$form, &$form_state, $form_id // Modification for the form with the given form ID goes here. For example, if // FORM_ID is "user_register_form" this code would run only on the user // registration form. - + // Change the data for the password field $form['account']['pass']['#description'] = 'Password must be 5-20 characters.
'; } function user_edit($values) { - + $username = $values[0]; $newpassword = $values[1]; - + $salt = generateSALT(); $pass = crypt($newpassword, $salt); - + try { $hostname = variable_get('ryzommanage_serverurl', 'localhost'); $port = variable_get('ryzommanage_mysqlport', '3306'); @@ -832,9 +826,9 @@ function user_edit($values) { ))->execute(); return true; } - + $sql = "UPDATE `nel`.`user` SET `Password` = ? WHERE `user`.`Login` = ?"; - + try { $q = $dbh->prepare($sql); } @@ -850,7 +844,7 @@ function user_edit($values) { ))->execute(); return true; } - + try { $q->execute(array( $pass, $username)); } @@ -866,13 +860,13 @@ function user_edit($values) { ))->execute(); return true; } - + return true; } /** * - * Function syncdata + * Function syncdata * * @takes Nothing * @return array $values @@ -881,7 +875,7 @@ function user_edit($values) { * */ function syncdata () { - + try { $hostname = variable_get('ryzommanage_serverurl', 'localhost'); $port = variable_get('ryzommanage_mysqlport', '3306'); @@ -895,15 +889,15 @@ function syncdata () { watchdog('ryzommanage', $e->getMessage(), NULL, WATCHDOG_ERROR); return true; } - + $query = db_select('ryzommanage_querycache', 'q') ->fields('q', array('SID', 'type', 'query')); - + $result = $query->execute(); - + foreach ($result as $record) { watchdog('ryzommanage_usersync', $record->query, NULL, WATCHDOG_ERROR); - + switch($record->type) { case 'createPermissions': case 'user_edit': @@ -914,24 +908,24 @@ function syncdata () { ->condition('SID', $SID) ->execute(); $func = $record->type; - $func(json_decode($record->query)); + $func(json_decode($record->query)); } - + } - + } /** * * Function ryzommanage_cron * - * @takes - * @return + * @takes + * @return * * Info: Runs the syncdata function with the drupal cron * */ function ryzommanage_cron() { - + syncdata(); - + } diff --git a/code/ryzom/tools/server/ryzom_ams/www/config.php b/code/ryzom/tools/server/ryzom_ams/www/config.php index fe6f74b1d..db8e7a126 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/config.php +++ b/code/ryzom/tools/server/ryzom_ams/www/config.php @@ -10,16 +10,6 @@ $DBHOST = 'localhost' ; $DBUSERNAME = 'shard' ; $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 // (in nel.user= nel.permission= ring.ring_user and ring.characters $ALLOW_UNKNOWN = true ; @@ -27,57 +17,8 @@ $ALLOW_UNKNOWN = true ; $CREATE_RING = true ; // site paths definitions -$AMS_LIB = dirname(dirname( __FILE__ )) . '/ams_lib'; +$AMS_LIB = dirname( dirname( __FILE__ ) ) . '/ams_lib'; $AMS_TRANS = $AMS_LIB . '/translations'; $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/' ; - - $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'; \ No newline at end of file +$DEFAULT_LANGUAGE = 'en'; diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/inc/add_user.php b/code/ryzom/tools/server/ryzom_ams/www/html/inc/add_user.php index 1675b285b..4010619f7 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/html/inc/add_user.php +++ b/code/ryzom/tools/server/ryzom_ams/www/html/inc/add_user.php @@ -1,13 +1,12 @@ Date: Thu, 13 Jun 2013 14:33:23 -0700 Subject: [PATCH 2/2] auto create folders --HG-- branch : rc-botanic-webdev --- .../ryzom_ams/ams_lib/autoload/helpers.php | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/helpers.php b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/helpers.php index 6d200d774..10ee5e85f 100644 --- a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/helpers.php +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/helpers.php @@ -14,6 +14,9 @@ class Helpers{ // caching must be disabled for multi-language support $smarty -> caching = false; $smarty -> cache_lifetime = 120; + + helpers :: create_folders (); + if ( !helpers :: check_if_game_client () or $forcelibrender = true ){ $smarty -> template_dir = $AMS_LIB . '/ingame_templates/'; $smarty -> setConfigDir( $AMS_LIB . '/configs' ); @@ -44,6 +47,23 @@ class Helpers{ $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() { // if HTTP_USER_AGENT is not set then its ryzom core