From 9d068cd64ad6d6979ccd6bb929d7c6cbac6c7419 Mon Sep 17 00:00:00 2001 From: skodak Date: Sun, 15 Jun 2008 12:23:53 +0000 Subject: [PATCH] MDL-15249 improving cli installer --- admin/cliupgrade.php | 12 +- install.php | 77 +----- lib/clilib.php | 563 +++++++++++++++++++++++++++++++++++++++++ lib/installlib.php | 580 ++----------------------------------------- 4 files changed, 585 insertions(+), 647 deletions(-) create mode 100644 lib/clilib.php diff --git a/admin/cliupgrade.php b/admin/cliupgrade.php index fb36a2a75c..5cfa8fc21d 100644 --- a/admin/cliupgrade.php +++ b/admin/cliupgrade.php @@ -120,20 +120,17 @@ $COURSE->id = 0; // include standard Moodle libraries -require_once($CFG->libdir.'/adminlib.php'); +require_once($CFG->libdir.'/installlib.php'); +require_once($CFG->libdir.'/clilib.php'); //cli-library require_once($CFG->libdir.'/setuplib.php'); +require_once($CFG->libdir.'/adminlib.php'); require_once($CFG->libdir.'/moodlelib.php'); require_once($CFG->libdir.'/weblib.php'); -require_once($CFG->libdir.'/adodb/adodb.inc.php'); require_once($CFG->libdir.'/environmentlib.php'); -require_once($CFG->libdir.'/xmlize.php'); require_once($CFG->libdir.'/componentlib.class.php'); -require_once($CFG->libdir.'/installlib.php'); //cli-library require_once($CFG->dirroot.'/version.php'); -//include PEAR Console libraries -set_include_path($CFG->libdir . PATH_SEPARATOR . $CFG->libdir . '/pear/'); -require_once('Console/Getopt.php'); +error('TODO fix CLI installer'); //TODO: fix cli installer /// Set default values - things that require the libraries @@ -464,7 +461,6 @@ if (!file_exists(dirname(dirname(__FILE__)) . '/config.php')) { $errormsg = get_string('dbwronghostserver', 'install'); } -error('fix cml installer'); //TODO: fix cli installer if (empty($errormsg)) { /// Have the $db object ready because we are going to use it often diff --git a/install.php b/install.php index ab7ed08b0b..55ad1b25b9 100644 --- a/install.php +++ b/install.php @@ -146,6 +146,7 @@ $COURSE->id = 0; /// Include some moodle libraries require_once($CFG->libdir.'/setuplib.php'); +require_once($CFG->libdir.'/installlib.php'); require_once($CFG->libdir.'/weblib.php'); require_once($CFG->libdir.'/deprecatedlib.php'); require_once($CFG->libdir.'/moodlelib.php'); @@ -945,74 +946,6 @@ function print_install_help($help) { } } - -//==========================================================================// - -function get_memory_limit() { - if ($limit = ini_get('memory_limit')) { - return $limit; - } else { - return get_cfg_var('memory_limit'); - } -} - -//==========================================================================// - -function check_memory_limit() { - - /// if limit is already 40 or more then we don't care if we can change it or not - if ((int)str_replace('M', '', get_memory_limit()) >= 40) { - return true; - } - - /// Otherwise, see if we can change it ourselves - @ini_set('memory_limit', '40M'); - return ((int)str_replace('M', '', get_memory_limit()) >= 40); -} - -//==========================================================================// - -function inst_check_php_version() { - return check_php_version("5.2.0"); -} -//==========================================================================// - -/* This function returns a list of languages and their full names. The - * list of available languages is fetched from install/lang/xx/installer.php - * and it's used exclusively by the installation process - * @return array An associative array with contents in the form of LanguageCode => LanguageName - */ -function get_installer_list_of_languages() { - - global $CFG; - - $languages = array(); - -/// Get raw list of lang directories - $langdirs = get_list_of_plugins('install/lang'); - asort($langdirs); -/// Get some info from each lang - foreach ($langdirs as $lang) { - if (file_exists($CFG->dirroot .'/install/lang/'. $lang .'/installer.php')) { - include($CFG->dirroot .'/install/lang/'. $lang .'/installer.php'); - if (substr($lang, -5) == '_utf8') { //Remove the _utf8 suffix from the lang to show - $shortlang = substr($lang, 0, -5); - } else { - $shortlang = $lang; - } - if ($lang == 'en') { //Explain this is non-utf8 en - $shortlang = 'non-utf8 en'; - } - if (!empty($string['thislanguage'])) { - $languages[$lang] = $string['thislanguage'] .' ('. $shortlang .')'; - } - unset($string); - } - } -/// Return array - return $languages; -} - //==========================================================================// function css_styles($databases) { @@ -1241,12 +1174,4 @@ function toggledbinfo() { diff --git a/lib/clilib.php b/lib/clilib.php new file mode 100644 index 0000000000..3467d0c4ca --- /dev/null +++ b/lib/clilib.php @@ -0,0 +1,563 @@ +libdir . PATH_SEPARATOR . $CFG->libdir . '/pear/'); +require_once('Console/Getopt.php'); + +/** + * Check the validity of the language + * return true or false + * + * @param string $lang (short code for language) + * @return true/false + */ +function valid_language($lang) { + global $DEFAULT; + $langdir = dir($DEFAULT['dirroot'].'/install/lang'); + $i=0; + $validllangs = array(); + + while (false !== ($file=$langdir->read())) { + if ($file[0] != '.' ) { + $validllangs[$i++]=$file; + } + } + if (in_array($lang,$validllangs)) { + return true; + } else { + return false; + } +} +//========================================================================================// +/** + * Read from array of language strings and return a array of string elements in which + * both values and keys are set to input array's key + * + * @param array $lang string elements + * @return array of string element + */ +function get_short_codes ($lang = array()) { + $short_codes = array(); + + foreach ($lang as $key => $value) { + $short_codes[$key] = $key; + } + return $short_codes; +} +//========================================================================================// +/** + * Check value for valid yes/no argument + * Return true or false + * + * @param string $value + * @return true/false + */ +function valid_yes_no($value){ + $valid=array('yes','y','n','no'); + $value=strtolower($value); + + if (in_array($value,$valid)) { + if ($value[0]=='y') { + return true; + } else if ($value[0]=='n') { + return true; + } + } else { + return false; + } +} +//========================================================================================// +/** + * Can value have a valid integer in the given range + * Return true or false + * @link valid_param() + * + * + * @param mixedtype $value + * @param int $start + * @param int $end + * @return true/false + */ +function valid_int_range($value,$start,$end) { + if (valid_param($value,PARAM_INT)) { + if ($value < $end && $value > $start) { + return true; + } else { + return false; + } + } +} + +/** + * Take a value and and check it with the given set of values + * If value if found in the set return true. False otherwise + * + * @param mixed type $value + * @param array $set of valid elements + * @return boolean + */ + +function valid_element($value,$set) { + if(!empty($set)) { + //convert all the elements from set to lower case + foreach ($set as $key=>$opt) { + $set[$key]=strtolower($opt); + } + $value=strtolower($value); + if (in_array($value,$set)) { + return true; + } else { + return false; + } + } +} + +/** + * Take a value and Type of the value + * If value match the type return true, false otherwise + * uses {@link clean_param()} in moodlelib.php + * @param mixedtype $value + * @param int $type + * @return boolean + */ +function valid_param($value,$type){ + $clean_val = clean_param($value,$type); + if ($clean_val == $value) { + return true; + }else { + return false; + } +} +//========================================================================================// +/** + * Creat long arument list for PEAR method invocation using LONGOPTOIN array + * + * @param long option array $long_opt + * @return PEAR method compatible long option array + */ +function create_long_options($long_opt) { + $opt=array(); + $i=0; + if (is_array($long_opt)) { + foreach ($long_opt as $key=>$value) { + if ($value == CLI_VAL_REQ) { + $opt[$i++]=$key.'='; + } else if ($value == CLI_VAL_OPT) { + $opt[$i++]=$key.'=='; + } + + } + } + return $opt; +} +//========================================================================================// +/** + * This funtion return an array of options with option as key containing the value of + * respective option + * + * @param array of option arguments as defined by PEAR GetOpt calss $opt + * @return return a options arguments with options as keys and values as respective value for key + */ +function get_options($opt=array()) { + + global $LONG_OPTIONS; + $ret_arr=array(); + + //get the options from the defined list of arguments + if (!empty($opt[0]) && is_array($opt[0])) { + + foreach ($opt[0] as $key=>$value) { + + if (substr($value[0],0,2)=='--') { //if the argument is a long option + $input_option=substr($value[0],2); + } else if (substr($value[0],0,1)=='-'){ //if the argument is a short option + $input_option=substr($value[0],1); + } + + //check with valid set of options + if (in_array($input_option,$LONG_OPTIONS)) { + $ret_arr[$input_option]=$value[1]; + } + } + + } + //return array + return $ret_arr; + +} + +//========================================================================================// + +//=========================================================================// +/** + * Validate options values + * + * @param array $options + */ +function validate_option_values($options){ + $values=array(); + $i=0; + foreach ($options as $val) { + $values[$i++]=$val; + } + if (isset($values['lang'])) { + if (!valid_language($values['lang'])) { + console_write(STDERR,'invalidvalueforlanguage'); + console_write(STDOUT, "\n", '', false); + } + } + if (isset($values['webdir'])) { + /** + * @todo check valid directory path + */ + } + if (isset($values['webaddr'])) { + /** + * @todo check valid http url + */ + } + if (isset($values['moodledir'])) { + /** + * @todo check valid directory path + */ + } + if (isset($values['datadir'])) { + /** + * @todo check valid directory path + */ + } + if (isset($values['dbtype'])) { + $dbtypes=array('mysql','oci8po','postgres7','mssql','mssql_n','odbc_mssql'); + if (!in_array($values['dbtype'],$dbtypes)) { + console_write(STDERR,'invaliddbtype'); + } + } + if (isset($values['dbhost'])) { + /** + * @todo check host? + */ + } + if (isset($values['dbname'])) { + /** + * @todo check name for valid ones if required + */ + } + if (isset($values['dbuser'])) { + /** + * @todo check validity of db user if required + */ + } + if (isset($values['dbpass'])) { + /** + * @todo check validity of database password if required + */ + } + if (isset($values['prefix'])) { + /** + * @todo check for valid prefix + */ + } + if (isset($values['sitefullname'])) { + /** + * @todo check for valid fullname for site + */ + } + if (isset($values['siteshortname'])) { + /** + * @todo check for valid short name for site + */ + } + if (isset($values['sitesummary'])) { + /** + * @todo check for valid summary + */ + } + if (isset($values['sitenewsitems'])) { + /** + * @todo check for valid news items + */ + } + if (isset($values['adminfirstname'])) { + /** + * @todo check for valid admin first name + */ + } + if (isset($values['adminlastname'])) { + /** + * @todo check for valid last name + */ + } + if (isset($values['adminusername'])) { + /** + * @todo check for valid username + */ + } + if (isset($values['adminpassword'])) { + /** + * @todo check for valid password + */ + } + if (isset($values['adminemail'])) { + /** + * @todo check for valid email + */ + } + if (isset($values['verbose'])) { + if(!valid_int_range($values['verbose'],CLI_NO,CLI_FULL)){ + console_write(STDERR,'invalidverbosevalue'); + } + } + if (isset($values['interactivelevel'])) { + if(!valid_int_range($values['verbose'],CLI_NO,CLI_FULL)){ + console_write(STDERR,'invalidinteractivevalue'); + } + } + + if (isset($values['help'])) { + /** + * @todo nothing really + */ + } +} +//=========================================================================// +/** + * Write to standard out and error with exit in error + * + * @param standard out/err $stream + * @param string $identifier + * @param name of module $module + */ +function console_write($stream,$identifier,$module='install',$use_string_lib=true) { + if ($use_string_lib) { + fwrite($stream,get_string($identifier,$module)); + } else { + fwrite($stream,$identifier); + } + if ($stream == STDERR) { + fwrite($stream, "\n\n" . get_string('aborting',$module) . "\n\n"); + die; + } +} +//=========================================================================// +/** + * Read a mixed type + * + * @param stream $from + * @param int $size + * @return mixed type + */ +function read($from=STDIN,$size=1024) { + $input= trim(fread($from,$size)); + return $input; +} +/** + * Read an integer + * + * @return integer + */ +function read_int() { + $input=read(); + if (valid_param($input,PARAM_INT)) { + return $input; + } else { + console_write(STDERR,'invalidint'); + console_write(STDOUT, "\n", '', false); + } +} +//=========================================================================// +/** + * Read and integer value within range + * + * @param int $start + * @param int $end + * @return int + */ +function read_int_range($start,$end) { + $input=read_int(); + if (valid_int_range($input,$start,$end)) { + return $input; + } else { + console_write(STDERR,'invalidintrange'); + console_write(STDOUT, "\n", '', false); + } + +} +//=========================================================================// +/** + * Read yes/no argument + * + * @return string yes/no + */ +function read_yes_no() { + $input=strtolower(read()); + if (valid_yes_no($input)) { + if ($input[0]=='y') { + return 'yes'; + } else if($input[0]=='n') { + return 'no'; + } + } else { + console_write(STDERR,'invalidyesno'); + console_write(STDOUT, "\n", '', false); + } +} + +//=========================================================================// +/** + * Read a boolean parameter from the input + * + * @return boolean + */ +function read_boolean(){ + $input=read_yes_no(); + return clean_param($input,PARAM_BOOL); + +} +//=========================================================================// +/** + * Reading an element from a given set + * + * @param mixed type array $set + * @return mixed type + */ +function read_element($set=array()) { + $input=read(); + if (valid_element($input,$set)) { + return $input; + } else { + console_write(STDERR,'invalidsetelement'); + console_write(STDOUT, "\n", '', false); + } +} +//=========================================================================// +function read_url() { + $input = read(); + $localhost = false; + if ( strpos($input,'localhost') !== false) { + $input = str_replace('localhost','127.0.0.1',$input); + $localhost=true; + } + if (valid_param($input,PARAM_URL)) { + if ($localhost) { + return str_replace('127.0.0.1','localhost',$input); + } else { + return $input; + } + } else { + console_write(STDERR,'invalidurl'); + } + +} +//=========================================================================// +/** + * Enter description here... + * + * @return string + */ +function read_dir() { + $input = read(); + return $input; +} +//===========================================================================// +/** + * Print compatibility message to standard out, and errors to standard error + * + * @param boolean $success + * @param string $testtext + * @param string $errormessage + * @param boolean $caution + * @param boolean $silent + * @return boolean + */ +function check_compatibility($success, $testtext,$errormessage,$caution=false,$silent=false) { + if ($success) { + if (!$silent) { + console_write(STDOUT,get_string('pass', 'install'),'',false); + } + } else { + if ($caution) { + if (!$silent) { + console_write(STDOUT,get_string('caution', 'install'),'',false); + } + } else { + console_write(STDOUT,get_string('fail', 'install'),'',false); + console_write(STDERR,$errormessage,'',false); + } + } + if (!$silent) { + console_write(STDOUT,"\t\t",'',false); + console_write(STDOUT,$testtext,'',false); + console_write(STDOUT,"\n",'',false); + } + return $success; +} + +//==========================================================================// +/** + * Print environment status to standard out + * + * @param array $env, of type object + */ +function print_environment_status($env = array()) { + console_write(STDOUT, get_string('name') . "\t\t\t" . get_string('info') . "\t" . get_string('status') . "\n\r", '', false); + //console_write(STDOUT,"Status\t\tInfo\t\tPart\n\r",'',false); + foreach ( $env as $object) { + console_write(STDOUT,$object->part,'',false); + console_write(STDOUT,"\t\t",'',false); + if (!empty($object->info)) { + console_write(STDOUT, $object->info, '', false); + } else { + console_write(STDOUT, "\t", '', false); + } + console_write(STDOUT, "\t\t", '', false); + if ($object->status == 1 ) { + console_write(STDOUT,'ok','',false); + } else { + console_write(STDOUT,'fail','',false); + } + console_write(STDOUT,"\n\r",'',false); + } +} + +/** + * Print environment status to standard out + * + * @param array $env, of type object + */ +function print_environment_status_detailed($env = array()) { + console_write(STDOUT,"Status\t\tLevel\t\tCurrent ver\tRequired ver\t\tPart\t\tInfo\n\r",'',false); + foreach ( $env as $object) { + + if ($object->status == 1 ) { + console_write(STDOUT,'ok ','',false); + } else if ($object->errorcode != 0) { + console_write(STDOUT,'fail ','',false); + } else { + console_write(STDOUT,'----','',false); + } + console_write(STDOUT,"\t\t",'',false); + console_write(STDOUT,$object->level,'',false); + console_write(STDOUT,"\t\t",'',false); + console_write(STDOUT,$object->current_version,'',false); + console_write(STDOUT,"\t",'',false); + console_write(STDOUT,$object->needed_version,'',false); + console_write(STDOUT,"\t\t",'',false); + console_write(STDOUT,$object->part,'',false); + console_write(STDOUT,"\t\t",'',false); + console_write(STDOUT,$object->info,'',false); + console_write(STDOUT,"\n\r",'',false); + } +} +/** + * Print a new line in the standard output + * + */ + +function print_newline() { + console_write(STDOUT, "\n", '', false); +} +?> diff --git a/lib/installlib.php b/lib/installlib.php index d9002693a1..44ae6f8bd7 100644 --- a/lib/installlib.php +++ b/lib/installlib.php @@ -1,198 +1,13 @@ -read())) { - if ($file[0] != '.' ) { - $validllangs[$i++]=$file; - } - } - if (in_array($lang,$validllangs)) { - return true; - } else { - return false; - } -} -//========================================================================================// -/** - * Read from array of language strings and return a array of string elements in which - * both values and keys are set to input array's key - * - * @param array $lang string elements - * @return array of string element - */ -function get_short_codes ($lang = array()) { - $short_codes = array(); - - foreach ($lang as $key => $value) { - $short_codes[$key] = $key; - } - return $short_codes; -} -//========================================================================================// -/** - * Check value for valid yes/no argument - * Return true or false - * - * @param string $value - * @return true/false - */ -function valid_yes_no($value){ - $valid=array('yes','y','n','no'); - $value=strtolower($value); - - if (in_array($value,$valid)) { - if ($value[0]=='y') { - return true; - } else if ($value[0]=='n') { - return true; - } - } else { - return false; - } -} -//========================================================================================// -/** - * Can value have a valid integer in the given range - * Return true or false - * @link valid_param() - * - * - * @param mixedtype $value - * @param int $start - * @param int $end - * @return true/false - */ -function valid_int_range($value,$start,$end) { - if (valid_param($value,PARAM_INT)) { - if ($value < $end && $value > $start) { - return true; - } else { - return false; - } - } -} - -/** - * Take a value and and check it with the given set of values - * If value if found in the set return true. False otherwise - * - * @param mixed type $value - * @param array $set of valid elements - * @return boolean - */ - -function valid_element($value,$set) { - if(!empty($set)) { - //convert all the elements from set to lower case - foreach ($set as $key=>$opt) { - $set[$key]=strtolower($opt); - } - $value=strtolower($value); - if (in_array($value,$set)) { - return true; - } else { - return false; - } - } -} - -/** - * Take a value and Type of the value - * If value match the type return true, false otherwise - * uses {@link clean_param()} in moodlelib.php - * @param mixedtype $value - * @param int $type - * @return boolean - */ -function valid_param($value,$type){ - $clean_val = clean_param($value,$type); - if ($clean_val == $value) { - return true; - }else { - return false; - } -} -//========================================================================================// -/** - * Creat long arument list for PEAR method invocation using LONGOPTOIN array - * - * @param long option array $long_opt - * @return PEAR method compatible long option array - */ -function create_long_options($long_opt) { - $opt=array(); - $i=0; - if (is_array($long_opt)) { - foreach ($long_opt as $key=>$value) { - if ($value == CLI_VAL_REQ) { - $opt[$i++]=$key.'='; - } else if ($value == CLI_VAL_OPT) { - $opt[$i++]=$key.'=='; - } +$value) { - - if (substr($value[0],0,2)=='--') { //if the argument is a long option - $input_option=substr($value[0],2); - } else if (substr($value[0],0,1)=='-'){ //if the argument is a short option - $input_option=substr($value[0],1); - } - - //check with valid set of options - if (in_array($input_option,$LONG_OPTIONS)) { - $ret_arr[$input_option]=$value[1]; - } - } - - } - //return array - return $ret_arr; - -} - -//========================================================================================// /** - * This function returns a list of languages and their full names. - * The list of available languages is fetched from install/lang/xx/installer.php - * and it's used exclusively by the installation process + * This function returns a list of languages and their full names. The + * list of available languages is fetched from install/lang/xx/installer.php + * and it's used exclusively by the installation process * @return array An associative array with contents in the form of LanguageCode => LanguageName */ function get_installer_list_of_languages() { @@ -201,10 +16,10 @@ function get_installer_list_of_languages() { $languages = array(); - /// Get raw list of lang directories +/// Get raw list of lang directories $langdirs = get_list_of_plugins('install/lang'); asort($langdirs); - /// Get some info from each lang +/// Get some info from each lang foreach ($langdirs as $lang) { if (file_exists($CFG->dirroot .'/install/lang/'. $lang .'/installer.php')) { include($CFG->dirroot .'/install/lang/'. $lang .'/installer.php'); @@ -213,323 +28,19 @@ function get_installer_list_of_languages() { } else { $shortlang = $lang; } - //if ($lang == 'en') { //Explain this is non-utf8 en - // $shortlang = 'non-utf8 en'; - //} +/* if ($lang == 'en') { //Explain this is non-utf8 en + $shortlang = 'non-utf8 en'; + }*/ if (!empty($string['thislanguage'])) { - $languages[$lang] = $string['thislanguage'] .' ('. $lang .')'; + $languages[$lang] = $string['thislanguage'] .' ('. $shortlang .')'; } unset($string); } } - /// Return array +/// Return array return $languages; } -//=========================================================================// -/** - * Validate options values - * - * @param array $options - */ -function validate_option_values($options){ - $values=array(); - $i=0; - foreach ($options as $val) { - $values[$i++]=$val; - } - if (isset($values['lang'])) { - if (!valid_language($values['lang'])) { - console_write(STDERR,'invalidvalueforlanguage'); - console_write(STDOUT, "\n", '', false); - } - } - if (isset($values['webdir'])) { - /** - * @todo check valid directory path - */ - } - if (isset($values['webaddr'])) { - /** - * @todo check valid http url - */ - } - if (isset($values['moodledir'])) { - /** - * @todo check valid directory path - */ - } - if (isset($values['datadir'])) { - /** - * @todo check valid directory path - */ - } - if (isset($values['dbtype'])) { - $dbtypes=array('mysql','oci8po','postgres7','mssql','mssql_n','odbc_mssql'); - if (!in_array($values['dbtype'],$dbtypes)) { - console_write(STDERR,'invaliddbtype'); - } - } - if (isset($values['dbhost'])) { - /** - * @todo check host? - */ - } - if (isset($values['dbname'])) { - /** - * @todo check name for valid ones if required - */ - } - if (isset($values['dbuser'])) { - /** - * @todo check validity of db user if required - */ - } - if (isset($values['dbpass'])) { - /** - * @todo check validity of database password if required - */ - } - if (isset($values['prefix'])) { - /** - * @todo check for valid prefix - */ - } - if (isset($values['sitefullname'])) { - /** - * @todo check for valid fullname for site - */ - } - if (isset($values['siteshortname'])) { - /** - * @todo check for valid short name for site - */ - } - if (isset($values['sitesummary'])) { - /** - * @todo check for valid summary - */ - } - if (isset($values['sitenewsitems'])) { - /** - * @todo check for valid news items - */ - } - if (isset($values['adminfirstname'])) { - /** - * @todo check for valid admin first name - */ - } - if (isset($values['adminlastname'])) { - /** - * @todo check for valid last name - */ - } - if (isset($values['adminusername'])) { - /** - * @todo check for valid username - */ - } - if (isset($values['adminpassword'])) { - /** - * @todo check for valid password - */ - } - if (isset($values['adminemail'])) { - /** - * @todo check for valid email - */ - } - if (isset($values['verbose'])) { - if(!valid_int_range($values['verbose'],CLI_NO,CLI_FULL)){ - console_write(STDERR,'invalidverbosevalue'); - } - } - if (isset($values['interactivelevel'])) { - if(!valid_int_range($values['verbose'],CLI_NO,CLI_FULL)){ - console_write(STDERR,'invalidinteractivevalue'); - } - } - if (isset($values['help'])) { - /** - * @todo nothing really - */ - } -} -//=========================================================================// -/** - * Write to standard out and error with exit in error - * - * @param standard out/err $stream - * @param string $identifier - * @param name of module $module - */ -function console_write($stream,$identifier,$module='install',$use_string_lib=true) { - if ($use_string_lib) { - fwrite($stream,get_string($identifier,$module)); - } else { - fwrite($stream,$identifier); - } - if ($stream == STDERR) { - fwrite($stream, "\n\n" . get_string('aborting',$module) . "\n\n"); - die; - } -} -//=========================================================================// -/** - * Read a mixed type - * - * @param stream $from - * @param int $size - * @return mixed type - */ -function read($from=STDIN,$size=1024) { - $input= trim(fread($from,$size)); - return $input; -} -/** - * Read an integer - * - * @return integer - */ -function read_int() { - $input=read(); - if (valid_param($input,PARAM_INT)) { - return $input; - } else { - console_write(STDERR,'invalidint'); - console_write(STDOUT, "\n", '', false); - } -} -//=========================================================================// -/** - * Read and integer value within range - * - * @param int $start - * @param int $end - * @return int - */ -function read_int_range($start,$end) { - $input=read_int(); - if (valid_int_range($input,$start,$end)) { - return $input; - } else { - console_write(STDERR,'invalidintrange'); - console_write(STDOUT, "\n", '', false); - } - -} -//=========================================================================// -/** - * Read yes/no argument - * - * @return string yes/no - */ -function read_yes_no() { - $input=strtolower(read()); - if (valid_yes_no($input)) { - if ($input[0]=='y') { - return 'yes'; - } else if($input[0]=='n') { - return 'no'; - } - } else { - console_write(STDERR,'invalidyesno'); - console_write(STDOUT, "\n", '', false); - } -} - -//=========================================================================// -/** - * Read a boolean parameter from the input - * - * @return boolean - */ -function read_boolean(){ - $input=read_yes_no(); - return clean_param($input,PARAM_BOOL); - -} -//=========================================================================// -/** - * Reading an element from a given set - * - * @param mixed type array $set - * @return mixed type - */ -function read_element($set=array()) { - $input=read(); - if (valid_element($input,$set)) { - return $input; - } else { - console_write(STDERR,'invalidsetelement'); - console_write(STDOUT, "\n", '', false); - } -} -//=========================================================================// -function read_url() { - $input = read(); - $localhost = false; - if ( strpos($input,'localhost') !== false) { - $input = str_replace('localhost','127.0.0.1',$input); - $localhost=true; - } - if (valid_param($input,PARAM_URL)) { - if ($localhost) { - return str_replace('127.0.0.1','localhost',$input); - } else { - return $input; - } - } else { - console_write(STDERR,'invalidurl'); - } - -} -//=========================================================================// -/** - * Enter description here... - * - * @return string - */ -function read_dir() { - $input = read(); - return $input; -} -//===========================================================================// -/** - * Print compatibility message to standard out, and errors to standard error - * - * @param boolean $success - * @param string $testtext - * @param string $errormessage - * @param boolean $caution - * @param boolean $silent - * @return boolean - */ -function check_compatibility($success, $testtext,$errormessage,$caution=false,$silent=false) { - if ($success) { - if (!$silent) { - console_write(STDOUT,get_string('pass', 'install'),'',false); - } - } else { - if ($caution) { - if (!$silent) { - console_write(STDOUT,get_string('caution', 'install'),'',false); - } - } else { - console_write(STDOUT,get_string('fail', 'install'),'',false); - console_write(STDERR,$errormessage,'',false); - } - } - if (!$silent) { - console_write(STDOUT,"\t\t",'',false); - console_write(STDOUT,$testtext,'',false); - console_write(STDOUT,"\n",'',false); - } - return $success; -} - -//==========================================================================// /** * Get memeory limit * @@ -543,7 +54,6 @@ function get_memory_limit() { } } -//==========================================================================// /** * Check memory limit * @@ -561,7 +71,6 @@ function check_memory_limit() { return ((int)str_replace('M', '', get_memory_limit()) >= 40); } -//==========================================================================// /** * Check php version * @@ -570,67 +79,12 @@ function check_memory_limit() { function inst_check_php_version() { return check_php_version("5.2.0"); } -/** - * Print environment status to standard out - * - * @param array $env, of type object - */ -function print_environment_status($env = array()) { - console_write(STDOUT, get_string('name') . "\t\t\t" . get_string('info') . "\t" . get_string('status') . "\n\r", '', false); - //console_write(STDOUT,"Status\t\tInfo\t\tPart\n\r",'',false); - foreach ( $env as $object) { - console_write(STDOUT,$object->part,'',false); - console_write(STDOUT,"\t\t",'',false); - if (!empty($object->info)) { - console_write(STDOUT, $object->info, '', false); - } else { - console_write(STDOUT, "\t", '', false); - } - console_write(STDOUT, "\t\t", '', false); - if ($object->status == 1 ) { - console_write(STDOUT,'ok','',false); - } else { - console_write(STDOUT,'fail','',false); - } - console_write(STDOUT,"\n\r",'',false); - } -} /** - * Print environment status to standard out - * - * @param array $env, of type object + * Add slashes for single quotes and backslashes + * so they can be included in single quoted string + * (for config.php) */ -function print_environment_status_detailed($env = array()) { - console_write(STDOUT,"Status\t\tLevel\t\tCurrent ver\tRequired ver\t\tPart\t\tInfo\n\r",'',false); - foreach ( $env as $object) { - - if ($object->status == 1 ) { - console_write(STDOUT,'ok ','',false); - } else if ($object->errorcode != 0) { - console_write(STDOUT,'fail ','',false); - } else { - console_write(STDOUT,'----','',false); - } - console_write(STDOUT,"\t\t",'',false); - console_write(STDOUT,$object->level,'',false); - console_write(STDOUT,"\t\t",'',false); - console_write(STDOUT,$object->current_version,'',false); - console_write(STDOUT,"\t",'',false); - console_write(STDOUT,$object->needed_version,'',false); - console_write(STDOUT,"\t\t",'',false); - console_write(STDOUT,$object->part,'',false); - console_write(STDOUT,"\t\t",'',false); - console_write(STDOUT,$object->info,'',false); - console_write(STDOUT,"\n\r",'',false); - } -} -/** - * Print a new line in the standard output - * - */ - -function print_newline() { - console_write(STDOUT, "\n", '', false); +function addsingleslashes($input){ + return preg_replace("/(['\\\])/", "\\\\$1", $input); } -?> -- 2.39.5