Skip to content

Commit

Permalink
Merge pull request #1416 from yiisoft/helpers-renames
Browse files Browse the repository at this point in the history
Helpers refactoring
  • Loading branch information
qiangxue committed Dec 4, 2013
2 parents 9bd89ef + 51592f1 commit 4df9b6c
Show file tree
Hide file tree
Showing 12 changed files with 32 additions and 38 deletions.
2 changes: 0 additions & 2 deletions extensions/elasticsearch/ActiveRecord.php
Expand Up @@ -9,8 +9,6 @@

use yii\base\InvalidCallException;
use yii\base\InvalidConfigException;
use yii\base\NotSupportedException;
use yii\db\ActiveRecordInterface;
use yii\db\BaseActiveRecord;
use yii\helpers\Inflector;
use yii\helpers\Json;
Expand Down
2 changes: 1 addition & 1 deletion extensions/gii/generators/module/Generator.php
Expand Up @@ -7,9 +7,9 @@

namespace yii\gii\generators\module;

use Yii;
use yii\gii\CodeFile;
use yii\helpers\Html;
use Yii;
use yii\helpers\StringHelper;

/**
Expand Down
3 changes: 1 addition & 2 deletions extensions/redis/ActiveRecord.php
Expand Up @@ -8,7 +8,6 @@
namespace yii\redis;

use yii\base\InvalidConfigException;
use yii\base\NotSupportedException;
use yii\db\BaseActiveRecord;
use yii\helpers\Inflector;
use yii\helpers\StringHelper;
Expand Down Expand Up @@ -288,7 +287,7 @@ public static function buildKey($key)
if (is_numeric($key)) {
return $key;
} elseif (is_string($key)) {
return ctype_alnum($key) && StringHelper::strlen($key) <= 32 ? $key : md5($key);
return ctype_alnum($key) && StringHelper::byteLength($key) <= 32 ? $key : md5($key);
} elseif (is_array($key)) {
if (count($key) == 1) {
return self::buildKey(reset($key));
Expand Down
4 changes: 2 additions & 2 deletions extensions/sphinx/ActiveRecord.php
Expand Up @@ -8,13 +8,13 @@
namespace yii\sphinx;

use yii\base\InvalidConfigException;
use yii\db\BaseActiveRecord;
use yii\base\NotSupportedException;
use yii\db\ActiveRelationInterface;
use yii\db\BaseActiveRecord;
use yii\db\StaleObjectException;
use yii\helpers\Inflector;
use yii\helpers\StringHelper;
use Yii;
use yii\helpers\StringHelper;

/**
* ActiveRecord is the base class for classes representing relational data in terms of objects.
Expand Down
2 changes: 1 addition & 1 deletion framework/yii/caching/Cache.php
Expand Up @@ -100,7 +100,7 @@ public function init()
protected function buildKey($key)
{
if (is_string($key)) {
$key = ctype_alnum($key) && StringHelper::strlen($key) <= 32 ? $key : md5($key);
$key = ctype_alnum($key) && StringHelper::byteLength($key) <= 32 ? $key : md5($key);
} else {
$key = md5(json_encode($key));
}
Expand Down
7 changes: 1 addition & 6 deletions framework/yii/db/ActiveRecord.php
Expand Up @@ -9,13 +9,8 @@
namespace yii\db;

use yii\base\InvalidConfigException;
use yii\base\Model;
use yii\base\InvalidParamException;
use yii\base\ModelEvent;
use yii\base\UnknownMethodException;
use yii\base\InvalidCallException;
use yii\helpers\StringHelper;
use yii\helpers\Inflector;
use yii\helpers\StringHelper;

/**
* ActiveRecord is the base class for classes representing relational data in terms of objects.
Expand Down
6 changes: 3 additions & 3 deletions framework/yii/helpers/BaseFileHelper.php
Expand Up @@ -292,19 +292,19 @@ public static function filterPath($path, $options)
if ($isDir = is_dir($path)) {
$path .= '/';
}
$n = StringHelper::strlen($path);
$n = StringHelper::byteLength($path);

if (!empty($options['except'])) {
foreach ($options['except'] as $name) {
if (StringHelper::substr($path, -StringHelper::strlen($name), $n) === $name) {
if (StringHelper::byteSubstr($path, -StringHelper::byteLength($name), $n) === $name) {
return false;
}
}
}

if (!$isDir && !empty($options['only'])) {
foreach ($options['only'] as $name) {
if (StringHelper::substr($path, -StringHelper::strlen($name), $n) === $name) {
if (StringHelper::byteSubstr($path, -StringHelper::byteLength($name), $n) === $name) {
return true;
}
}
Expand Down
22 changes: 11 additions & 11 deletions framework/yii/helpers/BaseSecurity.php
Expand Up @@ -80,10 +80,10 @@ public static function decrypt($data, $password)
}
$module = static::openCryptModule();
$ivSize = mcrypt_enc_get_iv_size($module);
$iv = StringHelper::substr($data, 0, $ivSize);
$iv = StringHelper::byteSubstr($data, 0, $ivSize);
$key = static::deriveKey($password, $iv);
mcrypt_generic_init($module, $key, $iv);
$decrypted = mdecrypt_generic($module, StringHelper::substr($data, $ivSize, StringHelper::strlen($data)));
$decrypted = mdecrypt_generic($module, StringHelper::byteSubstr($data, $ivSize, StringHelper::byteLength($data)));
mcrypt_generic_deinit($module);
mcrypt_module_close($module);
return static::stripPadding($decrypted);
Expand All @@ -96,7 +96,7 @@ public static function decrypt($data, $password)
*/
protected static function addPadding($data)
{
$pad = self::CRYPT_BLOCK_SIZE - (StringHelper::strlen($data) % self::CRYPT_BLOCK_SIZE);
$pad = self::CRYPT_BLOCK_SIZE - (StringHelper::byteLength($data) % self::CRYPT_BLOCK_SIZE);
return $data . str_repeat(chr($pad), $pad);
}

Expand All @@ -107,11 +107,11 @@ protected static function addPadding($data)
*/
protected static function stripPadding($data)
{
$end = StringHelper::substr($data, -1, NULL);
$end = StringHelper::byteSubstr($data, -1, NULL);
$last = ord($end);
$n = StringHelper::strlen($data) - $last;
if (StringHelper::substr($data, $n, NULL) == str_repeat($end, $last)) {
return StringHelper::substr($data, 0, $n);
$n = StringHelper::byteLength($data) - $last;
if (StringHelper::byteSubstr($data, $n, NULL) == str_repeat($end, $last)) {
return StringHelper::byteSubstr($data, 0, $n);
}
return false;
}
Expand Down Expand Up @@ -164,11 +164,11 @@ public static function hashData($data, $key, $algorithm = 'sha256')
*/
public static function validateData($data, $key, $algorithm = 'sha256')
{
$hashSize = StringHelper::strlen(hash_hmac($algorithm, 'test', $key));
$n = StringHelper::strlen($data);
$hashSize = StringHelper::byteLength(hash_hmac($algorithm, 'test', $key));
$n = StringHelper::byteLength($data);
if ($n >= $hashSize) {
$hash = StringHelper::substr($data, 0, $hashSize);
$data2 = StringHelper::substr($data, $hashSize, $n - $hashSize);
$hash = StringHelper::byteSubstr($data, 0, $hashSize);
$data2 = StringHelper::byteSubstr($data, $hashSize, $n - $hashSize);
return $hash === hash_hmac($algorithm, $data2, $key) ? $data2 : false;
} else {
return false;
Expand Down
6 changes: 4 additions & 2 deletions framework/yii/helpers/BaseStringHelper.php
Expand Up @@ -26,7 +26,7 @@ class BaseStringHelper
* @param string $string the string being measured for length
* @return integer the number of bytes in the given string.
*/
public static function strlen($string)
public static function byteLength($string)
{
return mb_strlen($string, '8bit');
}
Expand All @@ -40,7 +40,7 @@ public static function strlen($string)
* @return string the extracted part of string, or FALSE on failure or an empty string.
* @see http://www.php.net/manual/en/function.substr.php
*/
public static function substr($string, $start, $length)
public static function byteSubstr($string, $start, $length)
{
return mb_substr($string, $start, $length, '8bit');
}
Expand All @@ -52,6 +52,7 @@ public static function substr($string, $start, $length)
* This method was mainly created to work on php namespaces. When working with real
* file paths, php's `basename()` should work fine for you.
* Note: this method is not aware of the actual filesystem, or path components such as "..".
*
* @param string $path A path string.
* @param string $suffix If the name component ends in suffix this will also be cut off.
* @return string the trailing name component of the given path.
Expand All @@ -73,6 +74,7 @@ public static function basename($path, $suffix = '')
* Returns parent directory's path.
* This method is similar to `dirname()` except that it will treat
* both \ and / as directory separators, independent of the operating system.
*
* @param string $path A path string.
* @return string the parent directory's path.
* @see http://www.php.net/manual/en/function.basename.php
Expand Down
6 changes: 3 additions & 3 deletions framework/yii/web/Response.php
Expand Up @@ -382,7 +382,7 @@ public function sendFile($filePath, $attachmentName = null, $mimeType = null)
public function sendContentAsFile($content, $attachmentName, $mimeType = 'application/octet-stream')
{
$headers = $this->getHeaders();
$contentLength = StringHelper::strlen($content);
$contentLength = StringHelper::byteLength($content);
$range = $this->getHttpRange($contentLength);
if ($range === false) {
$headers->set('Content-Range', "bytes */$contentLength");
Expand All @@ -395,14 +395,14 @@ public function sendContentAsFile($content, $attachmentName, $mimeType = 'applic
->setDefault('Content-Type', $mimeType)
->setDefault('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
->setDefault('Content-Transfer-Encoding', 'binary')
->setDefault('Content-Length', StringHelper::strlen($content))
->setDefault('Content-Length', StringHelper::byteLength($content))
->setDefault('Content-Disposition', "attachment; filename=\"$attachmentName\"");

list($begin, $end) = $range;
if ($begin !=0 || $end != $contentLength - 1) {
$this->setStatusCode(206);
$headers->set('Content-Range', "bytes $begin-$end/$contentLength");
$this->content = StringHelper::substr($content, $begin, $end - $begin + 1);
$this->content = StringHelper::byteSubstr($content, $begin, $end - $begin + 1);
} else {
$this->setStatusCode(200);
$this->content = $content;
Expand Down
8 changes: 4 additions & 4 deletions tests/unit/framework/helpers/StringHelperTest.php
Expand Up @@ -12,14 +12,14 @@ class StringHelperTest extends TestCase
{
public function testStrlen()
{
$this->assertEquals(4, StringHelper::strlen('this'));
$this->assertEquals(6, StringHelper::strlen('это'));
$this->assertEquals(4, StringHelper::byteLength('this'));
$this->assertEquals(6, StringHelper::byteLength('это'));
}

public function testSubstr()
{
$this->assertEquals('th', StringHelper::substr('this', 0, 2));
$this->assertEquals('э', StringHelper::substr('это', 0, 2));
$this->assertEquals('th', StringHelper::byteSubstr('this', 0, 2));
$this->assertEquals('э', StringHelper::byteSubstr('это', 0, 2));
}

public function testBasename()
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/framework/web/ResponseTest.php
Expand Up @@ -57,7 +57,7 @@ public function testSendFileRanges($rangeHeader, $expectedHeader, $length, $expe
$this->assertEquals(206, $this->response->statusCode);
$headers = $this->response->headers;
$this->assertEquals("bytes", $headers->get('Accept-Ranges'));
$this->assertEquals("bytes " . $expectedHeader . '/' . StringHelper::strlen($fullContent), $headers->get('Content-Range'));
$this->assertEquals("bytes " . $expectedHeader . '/' . StringHelper::byteLength($fullContent), $headers->get('Content-Range'));
$this->assertEquals('text/plain', $headers->get('Content-Type'));
$this->assertEquals("$length", $headers->get('Content-Length'));
}
Expand Down

0 comments on commit 4df9b6c

Please sign in to comment.