diff --git a/libraries/Advisor.class.php b/libraries/Advisor.class.php index 533fe8811b..b43455c001 100644 --- a/libraries/Advisor.class.php +++ b/libraries/Advisor.class.php @@ -13,7 +13,8 @@ class Advisor var $parseResult; var $runResult; - function run() { + function run() + { // HowTo: A simple Advisory system in 3 easy steps. // Step 1: Get some variables to evaluate on @@ -22,10 +23,13 @@ class Advisor PMA_DBI_fetch_result('SHOW GLOBAL VARIABLES', 0, 1) ); if (PMA_DRIZZLE) { - $this->variables = array_merge($this->variables, + $this->variables = array_merge( + $this->variables, PMA_DBI_fetch_result( "SELECT concat('Com_', variable_name), variable_value - FROM data_dictionary.GLOBAL_STATEMENTS", 0, 1)); + FROM data_dictionary.GLOBAL_STATEMENTS", 0, 1 + ) + ); } // Add total memory to variables as well include_once 'libraries/sysinfo.lib.php'; @@ -38,10 +42,14 @@ class Advisor // Step 3: Feed the variables to the rules and let them fire. Sets $runResult $this->runRules(); - return array('parse' => array('errors' => $this->parseResult['errors']), 'run' => $this->runResult); + return array( + 'parse' => array('errors' => $this->parseResult['errors']), + 'run' => $this->runResult + ); } - function runRules() { + function runRules() + { $this->runResult = array( 'fired' => array(), 'notfired' => array(), @@ -57,7 +65,9 @@ class Advisor try { $precond = $this->ruleExprEvaluate($rule['precondition']); } catch (Exception $e) { - $this->runResult['errors'][] = 'Failed evaluating precondition for rule \''.$rule['name'].'\'. PHP threw following error: '.$e->getMessage(); + $this->runResult['errors'][] = 'Failed evaluating precondition for rule \'' + . $rule['name'] . '\'. PHP threw following error: ' + . $e->getMessage(); continue; } } @@ -68,7 +78,9 @@ class Advisor try { $value = $this->ruleExprEvaluate($rule['formula']); } catch(Exception $e) { - $this->runResult['errors'][] = 'Failed calculating value for rule \''.$rule['name'].'\'. PHP threw following error: '.$e->getMessage(); + $this->runResult['errors'][] = 'Failed calculating value for rule \'' + . $rule['name'] . '\'. PHP threw following error: ' + . $e->getMessage(); continue; } @@ -81,7 +93,9 @@ class Advisor $this->addRule('notfired', $rule); } } catch(Exception $e) { - $this->runResult['errors'][] = 'Failed running test for rule \''.$rule['name'].'\'. PHP threw following error: '.$e->getMessage(); + $this->runResult['errors'][] = 'Failed running test for rule \'' + . $rule['name'] . '\'. PHP threw following error: ' + . $e->getMessage(); } } } @@ -92,12 +106,13 @@ class Advisor /** * Escapes percent string to be used in format string. * - * @param string $str + * @param string $str string to escape + * * @return string */ function escapePercent($str) { - return preg_replace('/%( |,|\.|$)/','%%\1', $str); + return preg_replace('/%( |,|\.|$)/', '%%\1', $str); } /** @@ -105,6 +120,7 @@ class Advisor * * @param string $str * @param mixed $param + * * @return string */ function translate($str, $param = null) @@ -124,6 +140,7 @@ class Advisor * Splits justification to text and formula. * * @param string $rule + * * @return array */ function splitJustification($rule) @@ -131,7 +148,7 @@ class Advisor $jst = preg_split('/\s*\|\s*/', $rule['justification'], 2); if (count($jst) > 1) { return array($jst[0], $jst[1]); - } + } return array($rule['justification']); } @@ -139,42 +156,44 @@ class Advisor function addRule($type, $rule) { switch($type) { - case 'notfired': - case 'fired': - $jst = Advisor::splitJustification($rule); - if (count($jst) > 1) { - try { - /* Translate */ - $str = $this->translate($jst[0], $jst[1]); - } catch (Exception $e) { - $this->runResult['errors'][] = sprintf( - __('Failed formatting string for rule \'%s\'. PHP threw following error: %s'), - $rule['name'], - $e->getMessage() - ); - return; - } - - $rule['justification'] = $str; - } else { - $rule['justification'] = $this->translate($rule['justification']); + case 'notfired': + case 'fired': + $jst = Advisor::splitJustification($rule); + if (count($jst) > 1) { + try { + /* Translate */ + $str = $this->translate($jst[0], $jst[1]); + } catch (Exception $e) { + $this->runResult['errors'][] = sprintf( + __('Failed formatting string for rule \'%s\'. PHP threw following error: %s'), + $rule['name'], + $e->getMessage() + ); + return; } - $rule['name'] = $this->translate($rule['name']); - $rule['issue'] = $this->translate($rule['issue']); - // Replaces {server_variable} with 'server_variable' linking to server_variables.php - $rule['recommendation'] = preg_replace( - '/\{([a-z_0-9]+)\}/Ui', - '\1', - $this->translate($rule['recommendation'])); + $rule['justification'] = $str; + } else { + $rule['justification'] = $this->translate($rule['justification']); + } + $rule['name'] = $this->translate($rule['name']); + $rule['issue'] = $this->translate($rule['issue']); - // Replaces external Links with PMA_linkURL() generated links - $rule['recommendation'] = preg_replace( - '#href=("|\')(https?://[^\1]+)\1#ie', - '\'href="\' . PMA_linkURL("\2") . \'"\'', - $rule['recommendation'] - ); - break; + // Replaces {server_variable} with 'server_variable' + // linking to server_variables.php + $rule['recommendation'] = preg_replace( + '/\{([a-z_0-9]+)\}/Ui', + '\1', + $this->translate($rule['recommendation']) + ); + + // Replaces external Links with PMA_linkURL() generated links + $rule['recommendation'] = preg_replace( + '#href=("|\')(https?://[^\1]+)\1#ie', + '\'href="\' . PMA_linkURL("\2") . \'"\'', + $rule['recommendation'] + ); + break; } $this->runResult[$type][] = $rule; @@ -197,15 +216,24 @@ class Advisor } // Runs a code expression, replacing variable names with their respective values - // ignoreUntil: if > 0, it doesn't replace any variables until that string position, but still evaluates the whole expr + // ignoreUntil: if > 0, it doesn't replace any variables until that string + // position, but still evaluates the whole expr function ruleExprEvaluate($expr, $ignoreUntil = 0) { if ($ignoreUntil > 0) { - $exprIgnore = substr($expr,0,$ignoreUntil); - $expr = substr($expr,$ignoreUntil); + $exprIgnore = substr($expr, 0, $ignoreUntil); + $expr = substr($expr, $ignoreUntil); } - $expr = preg_replace_callback('/fired\s*\(\s*(\'|")(.*)\1\s*\)/Ui', array($this, 'ruleExprEvaluate_var1'), $expr); - $expr = preg_replace_callback('/\b(\w+)\b/', array($this, 'ruleExprEvaluate_var2'), $expr); + $expr = preg_replace_callback( + '/fired\s*\(\s*(\'|")(.*)\1\s*\)/Ui', + array($this, 'ruleExprEvaluate_var1'), + $expr + ); + $expr = preg_replace_callback( + '/\b(\w+)\b/', + array($this, 'ruleExprEvaluate_var2'), + $expr + ); if ($ignoreUntil > 0) { $expr = $exprIgnore . $expr; } @@ -217,7 +245,9 @@ class Advisor $err = ob_get_contents(); ob_end_clean(); if ($err) { - throw new Exception(strip_tags($err) . '
Executed code: $value = '.$expr.';'); + throw new Exception( + strip_tags($err) . '
Executed code: $value = ' . $expr . ';' + ); } return $value; } @@ -228,7 +258,7 @@ class Advisor $file = file('libraries/advisory_rules.txt'); $errors = array(); $rules = array(); - $ruleSyntax = array('name','formula','test','issue','recommendation','justification'); + $ruleSyntax = array('name', 'formula', 'test', 'issue', 'recommendation', 'justification'); $numRules = count($ruleSyntax); $numLines = count($file); $j = -1; @@ -243,14 +273,18 @@ class Advisor // Reading new rule if (substr($line, 0, 4) == 'rule') { if ($ruleLine > 0) { - $errors[] = 'Invalid rule declaration on line '.($i+1). ', expected line '.$ruleSyntax[$ruleLine++].' of previous rule' ; + $errors[] = 'Invalid rule declaration on line ' . ($i+1) + . ', expected line ' . $ruleSyntax[$ruleLine++] + . ' of previous rule' ; continue; } - if (preg_match("/rule\s'(.*)'( \[(.*)\])?$/",$line,$match)) { + if (preg_match("/rule\s'(.*)'( \[(.*)\])?$/", $line, $match)) { $ruleLine = 1; $j++; $rules[$j] = array( 'name' => $match[1]); - if(isset($match[3])) $rules[$j]['precondition'] = $match[3]; + if (isset($match[3])) { + $rules[$j]['precondition'] = $match[3]; + } } else { $errors[] = 'Invalid rule declaration on line '.($i+1); } @@ -272,7 +306,7 @@ class Advisor . Expected tab, but found \''.$line[0].'\''; continue; } - $rules[$j][$ruleSyntax[$ruleLine++]] = chop(substr($line,1)); + $rules[$j][$ruleSyntax[$ruleLine++]] = chop(substr($line, 1)); } // Rule complete @@ -288,12 +322,12 @@ class Advisor function PMA_bytime($num, $precision) { $per = ''; - if ($num >= 1) { # per second + if ($num >= 1) { // per second $per = "per second"; - } elseif ($num*60 >= 1) { # per minute + } elseif ($num*60 >= 1) { // per minute $num = $num*60; $per = "per minute"; - } elseif ($num*60*60 >=1 ) { # per hour + } elseif ($num*60*60 >=1 ) { // per hour $num = $num*60*60; $per = "per hour"; } else { @@ -304,7 +338,7 @@ function PMA_bytime($num, $precision) $num = round($num, $precision); if ($num == 0) { - $num = '<'.pow(10,-$precision); + $num = '<' . pow(10, -$precision); } return "$num $per";