upgrade to yii framework 1.1.18

see https://github.com/yiisoft/yii/blob/master/CHANGELOG
This commit is contained in:
Tanguy Pruvot 2017-05-17 10:20:57 +02:00
parent cb7ad18421
commit 755f999884
2015 changed files with 9515 additions and 5635 deletions

View file

@ -1,39 +0,0 @@
<?php
class HTMLPurifier_Filter_YouTube extends HTMLPurifier_Filter
{
public $name = 'YouTube';
public function preFilter($html, $config, $context) {
$pre_regex = '#<object[^>]+>.+?'.
'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?</object>#s';
$pre_replace = '<span class="youtube-embed">\1</span>';
return preg_replace($pre_regex, $pre_replace, $html);
}
public function postFilter($html, $config, $context) {
$post_regex = '#<span class="youtube-embed">((?:v|cp)/[A-Za-z0-9\-_=]+)</span>#';
return preg_replace_callback($post_regex, array($this, 'postFilterCallback'), $html);
}
protected function armorUrl($url) {
return str_replace('--', '-&#45;', $url);
}
protected function postFilterCallback($matches) {
$url = $this->armorUrl($matches[1]);
return '<object width="425" height="350" type="application/x-shockwave-flash" '.
'data="http://www.youtube.com/'.$url.'">'.
'<param name="movie" value="http://www.youtube.com/'.$url.'"></param>'.
'<!--[if IE]>'.
'<embed src="http://www.youtube.com/'.$url.'"'.
'type="application/x-shockwave-flash"'.
'wmode="transparent" width="425" height="350" />'.
'<![endif]-->'.
'</object>';
}
}
// vim: et sw=4 sts=4

View file

@ -80,7 +80,7 @@ class YiiBase
*/ */
public static function getVersion() public static function getVersion()
{ {
return '1.1.17'; return '1.1.18';
} }
/** /**
@ -179,6 +179,7 @@ class YiiBase
*/ */
public static function createComponent($config) public static function createComponent($config)
{ {
$args = func_get_args();
if(is_string($config)) if(is_string($config))
{ {
$type=$config; $type=$config;
@ -197,7 +198,6 @@ class YiiBase
if(($n=func_num_args())>1) if(($n=func_num_args())>1)
{ {
$args=func_get_args();
if($n===2) if($n===2)
$object=new $type($args[1]); $object=new $type($args[1]);
elseif($n===3) elseif($n===3)

View file

@ -133,7 +133,7 @@ abstract class CApplication extends CModule
{ {
Yii::setApplication($this); Yii::setApplication($this);
// set basePath at early as possible to avoid trouble // set basePath as early as possible to avoid trouble
if(is_string($config)) if(is_string($config))
$config=require($config); $config=require($config);
if(isset($config['basePath'])) if(isset($config['basePath']))
@ -400,7 +400,7 @@ abstract class CApplication extends CModule
/** /**
* Returns the locale instance. * Returns the locale instance.
* @param string $localeID the locale ID (e.g. en_US). If null, the {@link getLanguage application language ID} will be used. * @param string $localeID the locale ID (e.g. en_US). If null, the {@link getLanguage application language ID} will be used.
* @return an instance of CLocale * @return CLocale an instance of CLocale
*/ */
public function getLocale($localeID=null) public function getLocale($localeID=null)
{ {
@ -572,7 +572,7 @@ abstract class CApplication extends CModule
public function createAbsoluteUrl($route,$params=array(),$schema='',$ampersand='&') public function createAbsoluteUrl($route,$params=array(),$schema='',$ampersand='&')
{ {
$url=$this->createUrl($route,$params,$ampersand); $url=$this->createUrl($route,$params,$ampersand);
if(strpos($url,'http')===0) if(strpos($url,'http')===0 || strpos($url,'//')===0)
return $url; return $url;
else else
return $this->getRequest()->getHostInfo($schema).$url; return $this->getRequest()->getHostInfo($schema).$url;

View file

@ -609,7 +609,14 @@ class CComponent
if(is_string($_expression_)) if(is_string($_expression_))
{ {
extract($_data_); extract($_data_);
return eval('return '.$_expression_.';'); try
{
return eval('return ' . $_expression_ . ';');
}
catch (ParseError $e)
{
return false;
}
} }
else else
{ {

View file

@ -71,7 +71,7 @@ abstract class CModule extends CComponent
$this->_id=$id; $this->_id=$id;
$this->_parentModule=$parent; $this->_parentModule=$parent;
// set basePath at early as possible to avoid trouble // set basePath as early as possible to avoid trouble
if(is_string($config)) if(is_string($config))
$config=require($config); $config=require($config);
if(isset($config['basePath'])) if(isset($config['basePath']))

View file

@ -614,4 +614,35 @@ class CSecurityManager extends CApplicationComponent
$diff|=(ord($actual[$i])^ord($expected[$i%$expectedLength])); $diff|=(ord($actual[$i])^ord($expected[$i%$expectedLength]));
return $diff===0; return $diff===0;
} }
/**
* Masks a token to make it uncompressible.
* Applies a random mask to the token and prepends the mask used to the result making the string always unique.
* Used to mitigate BREACH attack by randomizing how token is outputted on each request.
* @param string $token An unmasked token.
* @return string A masked token.
* @since 1.1.18
*/
public function maskToken($token)
{
// The number of bytes in a mask is always equal to the number of bytes in a token.
$mask=$this->generateRandomString($this->strlen($token));
return strtr(base64_encode($mask.($mask^$token)),'+/','-_');
}
/**
* Unmasks a token previously masked by `maskToken`.
* @param string $maskedToken A masked token.
* @return string An unmasked token, or an empty string in case of token format is invalid.
* @since 1.1.18
*/
public function unmaskToken($maskedToken)
{
$decoded=base64_decode(strtr($maskedToken,'-_','+/'));
$length=$this->strlen($decoded)/2;
// Check if the masked token has an even length.
if(!is_int($length))
return '';
return $this->substr($decoded,$length,$length)^$this->substr($decoded,0,$length);
}
} }

View file

@ -105,7 +105,8 @@ class CStatePersister extends CApplicationComponent implements IStatePersister
* Loads content from file using a shared lock to avoid data corruption when reading * Loads content from file using a shared lock to avoid data corruption when reading
* the file while it is being written by save() * the file while it is being written by save()
* *
* @return string file contents * @param string $filename file name
* @return bool|string file contents
* @since 1.1.17 * @since 1.1.17
*/ */
protected function getContent($filename) protected function getContent($filename)

View file

@ -130,7 +130,7 @@ class CFileCache extends CCache
{ {
$cacheFile=$this->getCacheFile($key); $cacheFile=$this->getCacheFile($key);
if(($time=$this->filemtime($cacheFile))>time()) if(($time=$this->filemtime($cacheFile))>time())
return @file_get_contents($cacheFile,false,null,$this->embedExpiry ? 10 : -1); return @file_get_contents($cacheFile,false,null,$this->embedExpiry ? 10 : null);
elseif($time>0) elseif($time>0)
@unlink($cacheFile); @unlink($cacheFile);
return false; return false;

View file

@ -95,8 +95,11 @@ class CRedisCache extends CCache
$this->executeCommand('SELECT',array($this->database)); $this->executeCommand('SELECT',array($this->database));
} }
else else
{
$this->_socket = null;
throw new CException('Failed to connect to redis: '.$errorDescription,(int)$errorNumber); throw new CException('Failed to connect to redis: '.$errorDescription,(int)$errorNumber);
} }
}
/** /**
* Executes a redis command. * Executes a redis command.

View file

@ -147,7 +147,15 @@ EOD;
else else
$category=substr($matches[$i][1],1,-1); $category=substr($matches[$i][1],1,-1);
$message=$matches[$i][2]; $message=$matches[$i][2];
$messages[$category][]=eval("return $message;"); // use eval to eliminate quote escape try
{
$evalResult = eval("return $message;"); // use eval to eliminate quote escape
}
catch (ParseError $e)
{
$evalResult = false;
}
$messages[$category][] = $evalResult;
} }
} }
return $messages; return $messages;

View file

@ -125,7 +125,18 @@ EOD;
$_command_->run($_args_); $_command_->run($_args_);
} }
else else
echo eval($_line_.';'); {
try
{
$evalResult = eval($_line_ . ';');
}
catch (ParseError $e)
{
$evalResult = false;
}
echo $evalResult;
}
} }
catch(Exception $e) catch(Exception $e)
{ {

View file

Before

Width:  |  Height:  |  Size: 243 B

After

Width:  |  Height:  |  Size: 243 B

Some files were not shown because too many files have changed in this diff Show more