Browse Source

Merge branch 'master' of github.com:yiisoft/yii2 into mssql

tags/2.0.0-beta
resurtm 12 years ago
parent
commit
4686c7c386
  1. 2
      apps/bootstrap/protected/views/site/contact.php
  2. 2
      docs/guide/performance.md
  3. 2
      readme.md
  4. 123
      tests/unit/framework/base/DictionaryTest.php
  5. 2
      tests/unit/framework/base/ModelTest.php
  6. 133
      tests/unit/framework/base/VectorTest.php
  7. 4
      tests/unit/framework/caching/DbCacheTest.php
  8. 2
      tests/unit/framework/caching/FileCacheTest.php
  9. 4
      tests/unit/framework/caching/MemCacheTest.php
  10. 4
      tests/unit/framework/caching/MemCachedTest.php
  11. 6
      tests/unit/framework/caching/WinCacheTest.php
  12. 4
      tests/unit/framework/caching/XCacheTest.php
  13. 4
      tests/unit/framework/caching/ZendDataCacheTest.php
  14. 2
      tests/unit/framework/db/CommandTest.php
  15. 2
      tests/unit/framework/db/QueryTest.php
  16. 2
      tests/unit/framework/helpers/StringHelperTest.php
  17. 6
      tests/unit/framework/rbac/ManagerTestBase.php
  18. 6
      yii/base/Controller.php
  19. 2
      yii/base/Dictionary.php
  20. 4
      yii/base/ErrorHandler.php
  21. 5
      yii/base/HttpException.php
  22. 16
      yii/base/Model.php
  23. 2
      yii/base/Vector.php
  24. 4
      yii/base/View.php
  25. 2
      yii/caching/Cache.php
  26. 4
      yii/caching/DbDependency.php
  27. 20
      yii/caching/MemCache.php
  28. 102
      yii/console/controllers/AppController.php
  29. 4
      yii/console/controllers/CacheController.php
  30. 162
      yii/console/controllers/MessageController.php
  31. 10
      yii/db/ActiveRecord.php
  32. 14
      yii/db/Command.php
  33. 2
      yii/db/Connection.php
  34. 2
      yii/db/DataReader.php
  35. 11
      yii/db/Migration.php
  36. 34
      yii/db/Query.php
  37. 10
      yii/db/QueryBuilder.php
  38. 4
      yii/helpers/base/ArrayHelper.php
  39. 2
      yii/helpers/base/Markdown.php
  40. 2
      yii/i18n/GettextMoFile.php
  41. 2
      yii/i18n/I18N.php
  42. 4
      yii/logging/FileTarget.php
  43. 2
      yii/logging/ProfileTarget.php
  44. 12
      yii/rbac/Manager.php
  45. 2
      yii/renderers/SmartyViewRenderer.php
  46. 4
      yii/test/TestCase.php
  47. 17
      yii/views/exception.php
  48. 4
      yii/web/Pagination.php
  49. 8
      yii/web/Response.php
  50. 2
      yii/web/Sort.php
  51. 2
      yii/web/UrlRule.php
  52. 2
      yii/widgets/ActiveField.php
  53. 2
      yii/widgets/ContentDecorator.php
  54. 2
      yii/widgets/ListPager.php

2
apps/bootstrap/protected/views/site/contact.php

@ -13,7 +13,7 @@ $this->params['breadcrumbs'][] = $this->title;
?>
<h1><?php echo Html::encode($this->title); ?></h1>
<?php if(Yii::$app->session->hasFlash('contactFormSubmitted')): ?>
<?php if (Yii::$app->session->hasFlash('contactFormSubmitted')): ?>
<div class="alert alert-success">
Thank you for contacting us. We will respond to you as soon as possible.
</div>

2
docs/guide/performance.md

@ -162,7 +162,7 @@ class PostController extends Controller
In the view you should access fields of each invidual record from `$posts` as array:
```php
foreach($posts as $post) {
foreach ($posts as $post) {
echo $post['title']."<br>";
}
```

2
readme.md

@ -9,6 +9,8 @@ If you are looking for a production-ready PHP framework, please use
Yii 2.0 is still under heavy development. We may make significant changes
without prior notices. **Yii 2.0 is not ready for production use yet.**
[![Build Status](https://secure.travis-ci.org/yiisoft/yii2.png)](http://travis-ci.org/yiisoft/yii2)
DIRECTORY STRUCTURE
-------------------

123
tests/unit/framework/base/DictionaryTest.php

@ -15,52 +15,54 @@ class DictionaryTest extends \yiiunit\TestCase
* @var \yii\base\Dictionary
*/
protected $dictionary;
protected $item1,$item2,$item3;
protected $item1;
protected $item2;
protected $item3;
public function setUp()
{
$this->dictionary=new Dictionary;
$this->item1=new MapItem;
$this->item2=new MapItem;
$this->item3=new MapItem;
$this->dictionary->add('key1',$this->item1);
$this->dictionary->add('key2',$this->item2);
$this->dictionary = new Dictionary;
$this->item1 = new MapItem;
$this->item2 = new MapItem;
$this->item3 = new MapItem;
$this->dictionary->add('key1', $this->item1);
$this->dictionary->add('key2', $this->item2);
}
public function tearDown()
{
$this->dictionary=null;
$this->item1=null;
$this->item2=null;
$this->item3=null;
$this->dictionary = null;
$this->item1 = null;
$this->item2 = null;
$this->item3 = null;
}
public function testConstruct()
{
$a=array(1,2,'key3'=>3);
$dictionary=new Dictionary($a);
$this->assertEquals(3,$dictionary->getCount());
$a = array(1, 2, 'key3' => 3);
$dictionary = new Dictionary($a);
$this->assertEquals(3, $dictionary->getCount());
$dictionary2=new Dictionary($this->dictionary);
$this->assertEquals(2,$dictionary2->getCount());
$this->assertEquals(2, $dictionary2->getCount());
}
public function testGetCount()
{
$this->assertEquals(2,$this->dictionary->getCount());
$this->assertEquals(2, $this->dictionary->getCount());
}
public function testGetKeys()
{
$keys=$this->dictionary->getKeys();
$this->assertEquals(2,count($keys));
$this->assertEquals('key1',$keys[0]);
$this->assertEquals('key2',$keys[1]);
$keys = $this->dictionary->getKeys();
$this->assertEquals(2, count($keys));
$this->assertEquals('key1', $keys[0]);
$this->assertEquals('key2', $keys[1]);
}
public function testAdd()
{
$this->dictionary->add('key3',$this->item3);
$this->assertEquals(3,$this->dictionary->getCount());
$this->dictionary->add('key3', $this->item3);
$this->assertEquals(3, $this->dictionary->getCount());
$this->assertTrue($this->dictionary->has('key3'));
$this->dictionary[] = 'test';
@ -69,21 +71,21 @@ class DictionaryTest extends \yiiunit\TestCase
public function testRemove()
{
$this->dictionary->remove('key1');
$this->assertEquals(1,$this->dictionary->getCount());
$this->assertEquals(1, $this->dictionary->getCount());
$this->assertTrue(!$this->dictionary->has('key1'));
$this->assertTrue($this->dictionary->remove('unknown key')===null);
$this->assertTrue($this->dictionary->remove('unknown key') === null);
}
public function testRemoveAll()
{
$this->dictionary->add('key3',$this->item3);
$this->dictionary->add('key3', $this->item3);
$this->dictionary->removeAll();
$this->assertEquals(0,$this->dictionary->getCount());
$this->assertEquals(0, $this->dictionary->getCount());
$this->assertTrue(!$this->dictionary->has('key1') && !$this->dictionary->has('key2'));
$this->dictionary->add('key3',$this->item3);
$this->dictionary->add('key3', $this->item3);
$this->dictionary->removeAll(true);
$this->assertEquals(0,$this->dictionary->getCount());
$this->assertEquals(0, $this->dictionary->getCount());
$this->assertTrue(!$this->dictionary->has('key1') && !$this->dictionary->has('key2'));
}
@ -96,7 +98,7 @@ class DictionaryTest extends \yiiunit\TestCase
public function testFromArray()
{
$array=array('key3'=>$this->item3,'key4'=>$this->item1);
$array = array('key3' => $this->item3, 'key4' => $this->item1);
$this->dictionary->copyFrom($array);
$this->assertEquals(2, $this->dictionary->getCount());
@ -109,21 +111,21 @@ class DictionaryTest extends \yiiunit\TestCase
public function testMergeWith()
{
$a=array('a'=>'v1','v2',array('2'),'c'=>array('3','c'=>'a'));
$b=array('v22','a'=>'v11',array('2'),'c'=>array('c'=>'3','a'));
$c=array('a'=>'v11','v2',array('2'),'c'=>array('3','c'=>'3','a'),'v22',array('2'));
$dictionary=new Dictionary($a);
$dictionary2=new Dictionary($b);
$a = array('a' => 'v1', 'v2', array('2'), 'c' => array('3', 'c' => 'a'));
$b = array('v22', 'a' => 'v11', array('2'), 'c' => array('c' => '3', 'a'));
$c = array('a' => 'v11', 'v2', array('2'), 'c' => array('3', 'c' => '3', 'a'), 'v22', array('2'));
$dictionary = new Dictionary($a);
$dictionary2 = new Dictionary($b);
$dictionary->mergeWith($dictionary2);
$this->assertTrue($dictionary->toArray()===$c);
$this->assertTrue($dictionary->toArray() === $c);
$array=array('key2'=>$this->item1,'key3'=>$this->item3);
$this->dictionary->mergeWith($array,false);
$this->assertEquals(3,$this->dictionary->getCount());
$this->assertEquals($this->item1,$this->dictionary['key2']);
$this->assertEquals($this->item3,$this->dictionary['key3']);
$array = array('key2' => $this->item1, 'key3' => $this->item3);
$this->dictionary->mergeWith($array, false);
$this->assertEquals(3, $this->dictionary->getCount());
$this->assertEquals($this->item1, $this->dictionary['key2']);
$this->assertEquals($this->item3, $this->dictionary['key3']);
$this->setExpectedException('yii\base\InvalidParamException');
$this->dictionary->mergeWith($this,false);
$this->dictionary->mergeWith($this, false);
}
public function testRecursiveMergeWithTraversable(){
@ -135,7 +137,7 @@ class DictionaryTest extends \yiiunit\TestCase
'k4' => $this->item3,
))
));
$dictionary->mergeWith($obj,true);
$dictionary->mergeWith($obj, true);
$this->assertEquals(3, $dictionary->getCount());
$this->assertEquals($this->item1, $dictionary['k1']);
@ -145,23 +147,23 @@ class DictionaryTest extends \yiiunit\TestCase
public function testArrayRead()
{
$this->assertEquals($this->item1,$this->dictionary['key1']);
$this->assertEquals($this->item2,$this->dictionary['key2']);
$this->assertEquals(null,$this->dictionary['key3']);
$this->assertEquals($this->item1, $this->dictionary['key1']);
$this->assertEquals($this->item2, $this->dictionary['key2']);
$this->assertEquals(null, $this->dictionary['key3']);
}
public function testArrayWrite()
{
$this->dictionary['key3']=$this->item3;
$this->assertEquals(3,$this->dictionary->getCount());
$this->assertEquals($this->item3,$this->dictionary['key3']);
$this->dictionary['key3'] = $this->item3;
$this->assertEquals(3, $this->dictionary->getCount());
$this->assertEquals($this->item3, $this->dictionary['key3']);
$this->dictionary['key1']=$this->item3;
$this->assertEquals(3,$this->dictionary->getCount());
$this->assertEquals($this->item3,$this->dictionary['key1']);
$this->dictionary['key1'] = $this->item3;
$this->assertEquals(3, $this->dictionary->getCount());
$this->assertEquals($this->item3, $this->dictionary['key1']);
unset($this->dictionary['key2']);
$this->assertEquals(2,$this->dictionary->getCount());
$this->assertEquals(2, $this->dictionary->getCount());
$this->assertTrue(!$this->dictionary->has('key2'));
unset($this->dictionary['unknown key']);
@ -169,22 +171,23 @@ class DictionaryTest extends \yiiunit\TestCase
public function testArrayForeach()
{
$n=0;
$found=0;
foreach($this->dictionary as $index=>$item)
{
$n = 0;
$found = 0;
foreach ($this->dictionary as $index => $item) {
$n++;
if($index==='key1' && $item===$this->item1)
if ($index === 'key1' && $item === $this->item1) {
$found++;
if($index==='key2' && $item===$this->item2)
}
if ($index === 'key2' && $item === $this->item2) {
$found++;
}
}
$this->assertTrue($n==2 && $found==2);
$this->assertTrue($n == 2 && $found == 2);
}
public function testArrayMisc()
{
$this->assertEquals($this->dictionary->Count,count($this->dictionary));
$this->assertEquals($this->dictionary->Count, count($this->dictionary));
$this->assertTrue(isset($this->dictionary['key1']));
$this->assertFalse(isset($this->dictionary['unknown key']));
}

2
tests/unit/framework/base/ModelTest.php

@ -155,7 +155,7 @@ class ModelTest extends TestCase
// iteration
$attributes = array();
foreach($speaker as $key => $attribute) {
foreach ($speaker as $key => $attribute) {
$attributes[$key] = $attribute;
}
$this->assertEquals(array(

133
tests/unit/framework/base/VectorTest.php

@ -15,39 +15,41 @@ class VectorTest extends \yiiunit\TestCase
* @var Vector
*/
protected $vector;
protected $item1, $item2, $item3;
protected $item1;
protected $item2;
protected $item3;
public function setUp()
{
$this->vector=new Vector;
$this->item1=new ListItem;
$this->item2=new ListItem;
$this->item3=new ListItem;
$this->vector = new Vector;
$this->item1 = new ListItem;
$this->item2 = new ListItem;
$this->item3 = new ListItem;
$this->vector->add($this->item1);
$this->vector->add($this->item2);
}
public function tearDown()
{
$this->vector=null;
$this->item1=null;
$this->item2=null;
$this->item3=null;
$this->vector = null;
$this->item1 = null;
$this->item2 = null;
$this->item3 = null;
}
public function testConstruct()
{
$a=array(1,2,3);
$vector=new Vector($a);
$this->assertEquals(3,$vector->getCount());
$vector2=new Vector($this->vector);
$this->assertEquals(2,$vector2->getCount());
$a = array(1, 2, 3);
$vector = new Vector($a);
$this->assertEquals(3, $vector->getCount());
$vector2 = new Vector($this->vector);
$this->assertEquals(2, $vector2->getCount());
}
public function testItemAt()
{
$a=array(1, 2, null, 4);
$vector=new Vector($a);
$a = array(1, 2, null, 4);
$vector = new Vector($a);
$this->assertEquals(1, $vector->itemAt(0));
$this->assertEquals(2, $vector->itemAt(1));
$this->assertNull($vector->itemAt(2));
@ -56,37 +58,37 @@ class VectorTest extends \yiiunit\TestCase
public function testGetCount()
{
$this->assertEquals(2,$this->vector->getCount());
$this->assertEquals(2,$this->vector->Count);
$this->assertEquals(2, $this->vector->getCount());
$this->assertEquals(2, $this->vector->Count);
}
public function testAdd()
{
$this->vector->add(null);
$this->vector->add($this->item3);
$this->assertEquals(4,$this->vector->getCount());
$this->assertEquals(3,$this->vector->indexOf($this->item3));
$this->assertEquals(4, $this->vector->getCount());
$this->assertEquals(3, $this->vector->indexOf($this->item3));
}
public function testInsertAt()
{
$this->vector->insertAt(0,$this->item3);
$this->assertEquals(3,$this->vector->getCount());
$this->assertEquals(2,$this->vector->indexOf($this->item2));
$this->assertEquals(0,$this->vector->indexOf($this->item3));
$this->assertEquals(1,$this->vector->indexOf($this->item1));
$this->vector->insertAt(0, $this->item3);
$this->assertEquals(3, $this->vector->getCount());
$this->assertEquals(2, $this->vector->indexOf($this->item2));
$this->assertEquals(0, $this->vector->indexOf($this->item3));
$this->assertEquals(1, $this->vector->indexOf($this->item1));
$this->setExpectedException('yii\base\InvalidParamException');
$this->vector->insertAt(4,$this->item3);
$this->vector->insertAt(4, $this->item3);
}
public function testRemove()
{
$this->vector->remove($this->item1);
$this->assertEquals(1,$this->vector->getCount());
$this->assertEquals(-1,$this->vector->indexOf($this->item1));
$this->assertEquals(0,$this->vector->indexOf($this->item2));
$this->assertEquals(1, $this->vector->getCount());
$this->assertEquals(-1, $this->vector->indexOf($this->item1));
$this->assertEquals(0, $this->vector->indexOf($this->item2));
$this->assertEquals(false,$this->vector->remove($this->item1));
$this->assertEquals(false, $this->vector->remove($this->item1));
}
@ -94,9 +96,9 @@ class VectorTest extends \yiiunit\TestCase
{
$this->vector->add($this->item3);
$this->vector->removeAt(1);
$this->assertEquals(-1,$this->vector->indexOf($this->item2));
$this->assertEquals(1,$this->vector->indexOf($this->item3));
$this->assertEquals(0,$this->vector->indexOf($this->item1));
$this->assertEquals(-1, $this->vector->indexOf($this->item2));
$this->assertEquals(1, $this->vector->indexOf($this->item3));
$this->assertEquals(0, $this->vector->indexOf($this->item1));
$this->setExpectedException('yii\base\InvalidParamException');
$this->vector->removeAt(2);
}
@ -105,15 +107,15 @@ class VectorTest extends \yiiunit\TestCase
{
$this->vector->add($this->item3);
$this->vector->removeAll();
$this->assertEquals(0,$this->vector->getCount());
$this->assertEquals(-1,$this->vector->indexOf($this->item1));
$this->assertEquals(-1,$this->vector->indexOf($this->item2));
$this->assertEquals(0, $this->vector->getCount());
$this->assertEquals(-1, $this->vector->indexOf($this->item1));
$this->assertEquals(-1, $this->vector->indexOf($this->item2));
$this->vector->add($this->item3);
$this->vector->removeAll(true);
$this->assertEquals(0,$this->vector->getCount());
$this->assertEquals(-1,$this->vector->indexOf($this->item1));
$this->assertEquals(-1,$this->vector->indexOf($this->item2));
$this->assertEquals(0, $this->vector->getCount());
$this->assertEquals(-1, $this->vector->indexOf($this->item1));
$this->assertEquals(-1, $this->vector->indexOf($this->item2));
}
public function testHas()
@ -125,30 +127,32 @@ class VectorTest extends \yiiunit\TestCase
public function testIndexOf()
{
$this->assertEquals(0,$this->vector->indexOf($this->item1));
$this->assertEquals(1,$this->vector->indexOf($this->item2));
$this->assertEquals(-1,$this->vector->indexOf($this->item3));
$this->assertEquals(0, $this->vector->indexOf($this->item1));
$this->assertEquals(1, $this->vector->indexOf($this->item2));
$this->assertEquals(-1, $this->vector->indexOf($this->item3));
}
public function testFromArray()
{
$array=array($this->item3,$this->item1);
$array = array($this->item3, $this->item1);
$this->vector->copyFrom($array);
$this->assertTrue(count($array)==2 && $this->vector[0]===$this->item3 && $this->vector[1]===$this->item1);
$this->assertTrue(count($array) == 2 && $this->vector[0] === $this->item3 && $this->vector[1] === $this->item1);
$this->setExpectedException('yii\base\InvalidParamException');
$this->vector->copyFrom($this);
}
public function testMergeWith()
{
$array=array($this->item3,$this->item1);
$array = array($this->item3, $this->item1);
$this->vector->mergeWith($array);
$this->assertTrue($this->vector->getCount()==4 && $this->vector[0]===$this->item1 && $this->vector[3]===$this->item1);
$this->assertTrue($this->vector->getCount() == 4 && $this->vector[0] === $this->item1 &&
$this->vector[3] === $this->item1);
$a=array(1);
$vector=new Vector($a);
$a = array(1);
$vector = new Vector($a);
$this->vector->mergeWith($vector);
$this->assertTrue($this->vector->getCount()==5 && $this->vector[0]===$this->item1 && $this->vector[3]===$this->item1 && $this->vector[4]===1);
$this->assertTrue($this->vector->getCount() == 5 && $this->vector[0] === $this->item1 &&
$this->vector[3] === $this->item1 && $this->vector[4] === 1);
$this->setExpectedException('yii\base\InvalidParamException');
$this->vector->mergeWith($this);
@ -156,37 +160,40 @@ class VectorTest extends \yiiunit\TestCase
public function testToArray()
{
$array=$this->vector->toArray();
$this->assertTrue(count($array)==2 && $array[0]===$this->item1 && $array[1]===$this->item2);
$array = $this->vector->toArray();
$this->assertTrue(count($array) == 2 && $array[0] === $this->item1 && $array[1] === $this->item2);
}
public function testArrayRead()
{
$this->assertTrue($this->vector[0]===$this->item1);
$this->assertTrue($this->vector[1]===$this->item2);
$this->assertTrue($this->vector[0] === $this->item1);
$this->assertTrue($this->vector[1] === $this->item2);
$this->setExpectedException('yii\base\InvalidParamException');
$a=$this->vector[2];
$a = $this->vector[2];
}
public function testGetIterator()
{
$n=0;
$found=0;
foreach($this->vector as $index=>$item)
{
foreach($this->vector as $a=>$b); // test of iterator
$n = 0;
$found = 0;
foreach ($this->vector as $index => $item) {
foreach ($this->vector as $a => $b) {
// test of iterator
}
$n++;
if($index===0 && $item===$this->item1)
if ($index === 0 && $item === $this->item1) {
$found++;
if($index===1 && $item===$this->item2)
}
if ($index === 1 && $item === $this->item2) {
$found++;
}
}
$this->assertTrue($n==2 && $found==2);
$this->assertTrue($n == 2 && $found == 2);
}
public function testArrayMisc()
{
$this->assertEquals($this->vector->Count,count($this->vector));
$this->assertEquals($this->vector->Count, count($this->vector));
$this->assertTrue(isset($this->vector[1]));
$this->assertFalse(isset($this->vector[2]));
}

4
tests/unit/framework/caching/DbCacheTest.php

@ -34,7 +34,7 @@ class DbCacheTest extends CacheTest
*/
function getConnection($reset = true)
{
if($this->_connection === null) {
if ($this->_connection === null) {
$databases = $this->getParam('databases');
$params = $databases['mysql'];
$db = new \yii\db\Connection;
@ -61,7 +61,7 @@ class DbCacheTest extends CacheTest
*/
protected function getCacheInstance()
{
if($this->_cacheInstance === null) {
if ($this->_cacheInstance === null) {
$this->_cacheInstance = new DbCache(array(
'db' => $this->getConnection(),
));

2
tests/unit/framework/caching/FileCacheTest.php

@ -15,7 +15,7 @@ class FileCacheTest extends CacheTest
*/
protected function getCacheInstance()
{
if($this->_cacheInstance === null) {
if ($this->_cacheInstance === null) {
$this->_cacheInstance = new FileCache(array(
'cachePath' => '@yiiunit/runtime/cache',
));

4
tests/unit/framework/caching/MemCacheTest.php

@ -15,11 +15,11 @@ class MemCacheTest extends CacheTest
*/
protected function getCacheInstance()
{
if(!extension_loaded("memcache")) {
if (!extension_loaded("memcache")) {
$this->markTestSkipped("memcache not installed. Skipping.");
}
if($this->_cacheInstance === null) {
if ($this->_cacheInstance === null) {
$this->_cacheInstance = new MemCache();
}
return $this->_cacheInstance;

4
tests/unit/framework/caching/MemCachedTest.php

@ -15,11 +15,11 @@ class MemCachedTest extends CacheTest
*/
protected function getCacheInstance()
{
if(!extension_loaded("memcached")) {
if (!extension_loaded("memcached")) {
$this->markTestSkipped("memcached not installed. Skipping.");
}
if($this->_cacheInstance === null) {
if ($this->_cacheInstance === null) {
$this->_cacheInstance = new MemCache(array(
'useMemcached' => true,
));

6
tests/unit/framework/caching/WinCacheTest.php

@ -15,15 +15,15 @@ class WinCacheTest extends CacheTest
*/
protected function getCacheInstance()
{
if(!extension_loaded('wincache')) {
if (!extension_loaded('wincache')) {
$this->markTestSkipped("Wincache not installed. Skipping.");
}
if(!ini_get('wincache.ucenabled')) {
if (!ini_get('wincache.ucenabled')) {
$this->markTestSkipped("Wincache user cache disabled. Skipping.");
}
if($this->_cacheInstance === null) {
if ($this->_cacheInstance === null) {
$this->_cacheInstance = new WinCache();
}
return $this->_cacheInstance;

4
tests/unit/framework/caching/XCacheTest.php

@ -15,11 +15,11 @@ class XCacheTest extends CacheTest
*/
protected function getCacheInstance()
{
if(!function_exists("xcache_isset")) {
if (!function_exists("xcache_isset")) {
$this->markTestSkipped("XCache not installed. Skipping.");
}
if($this->_cacheInstance === null) {
if ($this->_cacheInstance === null) {
$this->_cacheInstance = new XCache();
}
return $this->_cacheInstance;

4
tests/unit/framework/caching/ZendDataCacheTest.php

@ -15,11 +15,11 @@ class ZendDataCacheTest extends CacheTest
*/
protected function getCacheInstance()
{
if(!function_exists("zend_shm_cache_store")) {
if (!function_exists("zend_shm_cache_store")) {
$this->markTestSkipped("Zend Data cache not installed. Skipping.");
}
if($this->_cacheInstance === null) {
if ($this->_cacheInstance === null) {
$this->_cacheInstance = new ZendDataCache();
}
return $this->_cacheInstance;

2
tests/unit/framework/db/CommandTest.php

@ -140,7 +140,7 @@ class CommandTest extends \yiiunit\DatabaseTestCase
$db = $this->getConnection();
// bindParam
$sql = 'INSERT INTO tbl_customer(email,name,address) VALUES (:email, :name, :address)';
$sql = 'INSERT INTO tbl_customer(email, name, address) VALUES (:email, :name, :address)';
$command = $db->createCommand($sql);
$email = 'user4@example.com';
$name = 'user4';

2
tests/unit/framework/db/QueryTest.php

@ -20,7 +20,7 @@ class QueryTest extends \yiiunit\DatabaseTestCase
$query = new Query;
$query->select('id, name', 'something')->distinct(true);
$this->assertEquals(array('id','name'), $query->select);
$this->assertEquals(array('id', 'name'), $query->select);
$this->assertTrue($query->distinct);
$this->assertEquals('something', $query->selectOption);
}

2
tests/unit/framework/helpers/StringHelperTest.php

@ -40,7 +40,7 @@ class StringHelperTest extends \yii\test\TestCase
'car' => 'cars',
);
foreach($testData as $testIn => $testOut) {
foreach ($testData as $testIn => $testOut) {
$this->assertEquals($testOut, StringHelper::pluralize($testIn));
$this->assertEquals(ucfirst($testOut), ucfirst(StringHelper::pluralize($testIn)));
}

6
tests/unit/framework/rbac/ManagerTestBase.php

@ -164,8 +164,8 @@ abstract class ManagerTestBase extends TestCase
public function testExecuteBizRule()
{
$this->assertTrue($this->auth->executeBizRule(null, array(), null));
$this->assertTrue($this->auth->executeBizRule('return 1==true;', array(), null));
$this->assertTrue($this->auth->executeBizRule('return $params[0]==$params[1];', array(1, '1'), null));
$this->assertTrue($this->auth->executeBizRule('return 1 == true;', array(), null));
$this->assertTrue($this->auth->executeBizRule('return $params[0] == $params[1];', array(1, '1'), null));
$this->assertFalse($this->auth->executeBizRule('invalid', array(), null));
}
@ -220,7 +220,7 @@ abstract class ManagerTestBase extends TestCase
$this->auth->createOperation('updatePost', 'update a post');
$this->auth->createOperation('deletePost', 'delete a post');
$task = $this->auth->createTask('updateOwnPost', 'update a post by author himself', 'return $params["authorID"]==$params["userID"];');
$task = $this->auth->createTask('updateOwnPost', 'update a post by author himself', 'return $params["authorID"] == $params["userID"];');
$task->addChild('updatePost');
$role = $this->auth->createRole('reader');

6
yii/base/Controller.php

@ -278,7 +278,7 @@ class Controller extends Component
* Child classes may override this method to throw exceptions when there are missing and/or unknown parameters.
* @param Action $action the currently requested action
* @param array $missingParams the names of the missing parameters
* @param array $unknownParams the unknown parameters (name=>value)
* @param array $unknownParams the unknown parameters (name => value)
*/
public function validateActionParams($action, $missingParams, $unknownParams)
{
@ -318,10 +318,10 @@ class Controller extends Component
/** @var Model $model */
$scope = $model->formName();
if ($scope == '') {
$model->attributes = $data;
$model->setAttributes($data);
$success = true;
} elseif (isset($data[$scope])) {
$model->attributes = $data[$scope];
$model->setAttributes($data[$scope]);
$success = true;
}
}

2
yii/base/Dictionary.php

@ -24,7 +24,7 @@ use yii\helpers\ArrayHelper;
* $dictionary[$key] = $value; // add a key-value pair
* unset($dictionary[$key]); // remove the value with the specified key
* if (isset($dictionary[$key])) // if the dictionary contains the key
* foreach ($dictionary as $key=>$value) // traverse the items in the dictionary
* foreach ($dictionary as $key => $value) // traverse the items in the dictionary
* $n = count($dictionary); // returns the number of items in the dictionary
* ~~~
*

4
yii/base/ErrorHandler.php

@ -83,7 +83,7 @@ class ErrorHandler extends Component
} else {
// if there is an error during error rendering it's useful to
// display PHP error in debug mode instead of a blank screen
if(YII_DEBUG) {
if (YII_DEBUG) {
ini_set('display_errors', 1);
}
@ -231,7 +231,7 @@ class ErrorHandler extends Component
echo '<div class="plus">+</div><div class="minus">-</div>';
}
echo '&nbsp;';
if(isset($t['file'])) {
if (isset($t['file'])) {
echo $this->htmlEncode($t['file']) . '(' . $t['line'] . '): ';
}
if (!empty($t['class'])) {

5
yii/base/HttpException.php

@ -100,9 +100,10 @@ class HttpException extends UserException
509 => 'Bandwidth Limit Exceeded',
);
if(isset($httpCodes[$this->statusCode]))
if (isset($httpCodes[$this->statusCode])) {
return $httpCodes[$this->statusCode];
else
} else {
return \Yii::t('yii|Error');
}
}
}

16
yii/base/Model.php

@ -33,7 +33,7 @@ use yii\validators\Validator;
* @property Vector $validators All the validators declared in the model.
* @property array $activeValidators The validators applicable to the current [[scenario]].
* @property array $errors Errors for all attributes or the specified attribute. Empty array is returned if no error.
* @property array $attributes Attribute values (name=>value).
* @property array $attributes Attribute values (name => value).
* @property string $scenario The scenario that this model is in.
*
* @author Qiang Xue <qiang.xue@gmail.com>
@ -76,7 +76,7 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
* array(
* 'attribute list',
* 'validator type',
* 'on'=>'scenario name',
* 'on' => 'scenario name',
* ...other parameters...
* )
* ~~~
@ -109,11 +109,11 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
* // built-in "required" validator
* array('username', 'required'),
* // built-in "length" validator customized with "min" and "max" properties
* array('username', 'length', 'min'=>3, 'max'=>12),
* array('username', 'length', 'min' => 3, 'max' => 12),
* // built-in "compare" validator that is used in "register" scenario only
* array('password', 'compare', 'compareAttribute'=>'password2', 'on'=>'register'),
* array('password', 'compare', 'compareAttribute' => 'password2', 'on' => 'register'),
* // an inline validator defined via the "authenticate()" method in the model class
* array('password', 'authenticate', 'on'=>'login'),
* array('password', 'authenticate', 'on' => 'login'),
* // a validator of class "CaptchaValidator"
* array('captcha', 'CaptchaValidator'),
* );
@ -220,7 +220,7 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
* Note, in order to inherit labels defined in the parent class, a child class needs to
* merge the parent labels with child labels using functions such as `array_merge()`.
*
* @return array attribute labels (name=>label)
* @return array attribute labels (name => label)
* @see generateAttributeLabel
*/
public function attributeLabels()
@ -511,7 +511,7 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
* Defaults to null, meaning all attributes listed in [[attributes()]] will be returned.
* If it is an array, only the attributes in the array will be returned.
* @param array $except list of attributes whose value should NOT be returned.
* @return array attribute values (name=>value).
* @return array attribute values (name => value).
*/
public function getAttributes($names = null, $except = array())
{
@ -531,7 +531,7 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
/**
* Sets the attribute values in a massive way.
* @param array $values attribute values (name=>value) to be assigned to the model.
* @param array $values attribute values (name => value) to be assigned to the model.
* @param boolean $safeOnly whether the assignments should only be done to the safe attributes.
* A safe attribute is one that is associated with a validation rule in the current [[scenario]].
* @see safeAttributes()

2
yii/base/Vector.php

@ -24,7 +24,7 @@ namespace yii\base;
* $vector[$index] = $item; // set new item at $index
* unset($vector[$index]); // remove the item at $index
* if (isset($vector[$index])) // if the vector has an item at $index
* foreach ($vector as $index=>$item) // traverse each item in the vector
* foreach ($vector as $index => $item) // traverse each item in the vector
* $n = count($vector); // count the number of items
* ~~~
*

4
yii/base/View.php

@ -475,7 +475,7 @@ class View extends Component
*
* @param string $viewFile the view file that will be used to decorate the content enclosed by this widget.
* This can be specified as either the view file path or path alias.
* @param array $params the variables (name=>value) to be extracted and made available in the decorative view.
* @param array $params the variables (name => value) to be extracted and made available in the decorative view.
* @return \yii\widgets\ContentDecorator the ContentDecorator widget instance
* @see \yii\widgets\ContentDecorator
*/
@ -503,7 +503,7 @@ class View extends Component
* A typical usage of fragment caching is as follows,
*
* ~~~
* if($this->beginCache($id)) {
* if ($this->beginCache($id)) {
* // ...generate content here
* $this->endCache();
* }

2
yii/caching/Cache.php

@ -140,7 +140,7 @@ abstract class Cache extends Component implements \ArrayAccess
* this method will try to simulate it.
* @param array $keys list of keys identifying the cached values
* @return array list of cached values corresponding to the specified keys. The array
* is returned in terms of (key,value) pairs.
* is returned in terms of (key, value) pairs.
* If a value is not cached or expired, the corresponding array value will be false.
*/
public function mget($keys)

4
yii/caching/DbDependency.php

@ -32,14 +32,14 @@ class DbDependency extends Dependency
*/
public $sql;
/**
* @var array the parameters (name=>value) to be bound to the SQL statement specified by [[sql]].
* @var array the parameters (name => value) to be bound to the SQL statement specified by [[sql]].
*/
public $params;
/**
* Constructor.
* @param string $sql the SQL query whose result is used to determine if the dependency has been changed.
* @param array $params the parameters (name=>value) to be bound to the SQL statement specified by [[sql]].
* @param array $params the parameters (name => value) to be bound to the SQL statement specified by [[sql]].
* @param array $config name-value pairs that will be used to initialize the object properties
*/
public function __construct($sql, $params = array(), $config = array())

20
yii/caching/MemCache.php

@ -30,19 +30,19 @@ use yii\base\InvalidConfigException;
*
* ~~~
* array(
* 'components'=>array(
* 'cache'=>array(
* 'class'=>'MemCache',
* 'servers'=>array(
* 'components' => array(
* 'cache' => array(
* 'class' => 'MemCache',
* 'servers' => array(
* array(
* 'host'=>'server1',
* 'port'=>11211,
* 'weight'=>60,
* 'host' => 'server1',
* 'port' => 11211,
* 'weight' => 60,
* ),
* array(
* 'host'=>'server2',
* 'port'=>11211,
* 'weight'=>40,
* 'host' => 'server2',
* 'port' => 11211,
* 'weight' => 40,
* ),
* ),
* ),

102
yii/console/controllers/AppController.php

@ -8,7 +8,6 @@
namespace yii\console\controllers;
use yii\console\Controller;
use yii\helpers\FileHelper;
use yii\base\Exception;
/**
@ -39,7 +38,7 @@ class AppController extends Controller
{
parent::init();
if($this->templatesPath && !is_dir($this->templatesPath)) {
if ($this->templatesPath && !is_dir($this->templatesPath)) {
throw new Exception('--templatesPath "'.$this->templatesPath.'" does not exist or can not be read.');
}
}
@ -67,30 +66,29 @@ class AppController extends Controller
public function actionCreate($path)
{
$path = strtr($path, '/\\', DIRECTORY_SEPARATOR);
if(strpos($path, DIRECTORY_SEPARATOR) === false) {
if (strpos($path, DIRECTORY_SEPARATOR) === false) {
$path = '.'.DIRECTORY_SEPARATOR.$path;
}
$dir = rtrim(realpath(dirname($path)), '\\/');
if($dir === false || !is_dir($dir)) {
if ($dir === false || !is_dir($dir)) {
throw new Exception("The directory '$path' is not valid. Please make sure the parent directory exists.");
}
if(basename($path) === '.') {
if (basename($path) === '.') {
$this->_rootPath = $path = $dir;
}
else {
} else {
$this->_rootPath = $path = $dir.DIRECTORY_SEPARATOR.basename($path);
}
if($this->confirm("Create \"$this->type\" application under '$path'?")) {
if ($this->confirm("Create \"$this->type\" application under '$path'?")) {
$sourceDir = $this->getSourceDir();
$config = $this->getConfig();
$list = $this->buildFileList($sourceDir, $path);
if(is_array($config)) {
foreach($config as $file => $settings) {
if(isset($settings['handler'])) {
if (is_array($config)) {
foreach ($config as $file => $settings) {
if (isset($settings['handler'])) {
$list[$file]['callback'] = $settings['handler'];
}
}
@ -98,9 +96,9 @@ class AppController extends Controller
$this->copyFiles($list);
if(is_array($config)) {
foreach($config as $file => $settings) {
if(isset($settings['permissions'])) {
if (is_array($config)) {
foreach ($config as $file => $settings) {
if (isset($settings['permissions'])) {
@chmod($path.'/'.$file, $settings['permissions']);
}
}
@ -119,13 +117,11 @@ class AppController extends Controller
$customSource = realpath($this->templatesPath.'/'.$this->type);
$defaultSource = realpath($this->getDefaultTemplatesPath().'/'.$this->type);
if($customSource) {
if ($customSource) {
return $customSource;
}
elseif($defaultSource) {
} elseif ($defaultSource) {
return $defaultSource;
}
else {
} else {
throw new Exception('Unable to locate the source directory for "'.$this->type.'".');
}
}
@ -143,13 +139,13 @@ class AppController extends Controller
*/
protected function getConfig()
{
if($this->_config===null) {
$this->_config = require $this->getDefaultTemplatesPath().'/config.php';
if($this->templatesPath && file_exists($this->templatesPath)) {
$this->_config = array_merge($this->_config, require $this->templatesPath.'/config.php');
if ($this->_config === null) {
$this->_config = require $this->getDefaultTemplatesPath() . '/config.php';
if ($this->templatesPath && file_exists($this->templatesPath)) {
$this->_config = array_merge($this->_config, require $this->templatesPath . '/config.php');
}
}
if(isset($this->_config[$this->type])) {
if (isset($this->_config[$this->type])) {
return $this->_config[$this->type];
}
}
@ -185,30 +181,30 @@ class AppController extends Controller
$n1 = count($segs1);
$n2 = count($segs2);
for($i=0; $i<$n1 && $i<$n2; ++$i) {
if($segs1[$i] !== $segs2[$i]) {
for ($i = 0; $i < $n1 && $i < $n2; ++$i) {
if ($segs1[$i] !== $segs2[$i]) {
break;
}
}
if($i===0) {
return "'".$path1."'";
if ($i === 0) {
return "'" . $path1 . "'";
}
$up='';
for($j=$i;$j<$n2-1;++$j) {
$up.='/..';
$up = '';
for ($j = $i; $j < $n2 - 1; ++$j) {
$up .= '/..';
}
for(; $i<$n1-1; ++$i) {
$up.='/'.$segs1[$i];
for(; $i < $n1 - 1; ++$i) {
$up .= '/' . $segs1[$i];
}
return '__DIR__.\''.$up.'/'.basename($path1).'\'';
return '__DIR__.\'' . $up . '/' . basename($path1) . '\'';
}
/**
* Copies a list of files from one place to another.
* @param array $fileList the list of files to be copied (name=>spec).
* @param array $fileList the list of files to be copied (name => spec).
* The array keys are names displayed during the copy process, and array values are specifications
* for files to be copied. Each array value must be an array of the following structure:
* <ul>
@ -217,7 +213,7 @@ class AppController extends Controller
* <li>callback: optional, the callback to be invoked when copying a file. The callback function
* should be declared as follows:
* <pre>
* function foo($source,$params)
* function foo($source, $params)
* </pre>
* where $source parameter is the source file path, and the content returned
* by the function will be saved into the target file.</li>
@ -228,48 +224,44 @@ class AppController extends Controller
protected function copyFiles($fileList)
{
$overwriteAll = false;
foreach($fileList as $name=>$file) {
foreach ($fileList as $name => $file) {
$source = strtr($file['source'], '/\\', DIRECTORY_SEPARATOR);
$target = strtr($file['target'], '/\\', DIRECTORY_SEPARATOR);
$callback = isset($file['callback']) ? $file['callback'] : null;
$params = isset($file['params']) ? $file['params'] : null;
if(is_dir($source)) {
if (is_dir($source)) {
if (!is_dir($target)) {
mkdir($target, 0777, true);
}
continue;
}
if($callback !== null) {
if ($callback !== null) {
$content = call_user_func($callback, $source, $params);
}
else {
} else {
$content = file_get_contents($source);
}
if(is_file($target)) {
if($content === file_get_contents($target)) {
if (is_file($target)) {
if ($content === file_get_contents($target)) {
echo " unchanged $name\n";
continue;
}
if($overwriteAll) {
if ($overwriteAll) {
echo " overwrite $name\n";
}
else {
echo " exist $name\n";
echo " ...overwrite? [Yes|No|All|Quit] ";
$answer = trim(fgets(STDIN));
if(!strncasecmp($answer, 'q', 1)) {
if (!strncasecmp($answer, 'q', 1)) {
return;
}
elseif(!strncasecmp($answer, 'y', 1)) {
} elseif (!strncasecmp($answer, 'y', 1)) {
echo " overwrite $name\n";
}
elseif(!strncasecmp($answer, 'a', 1)) {
} elseif (!strncasecmp($answer, 'a', 1)) {
echo " overwrite $name\n";
$overwriteAll = true;
}
else {
} else {
echo " skip $name\n";
continue;
}
@ -296,15 +288,15 @@ class AppController extends Controller
* @param array $ignoreFiles list of the names of files that should
* be ignored in list building process.
* @param array $renameMap hash array of file names that should be
* renamed. Example value: array('1.old.txt'=>'2.new.txt').
* renamed. Example value: array('1.old.txt' => '2.new.txt').
* @return array the file list (see {@link copyFiles})
*/
protected function buildFileList($sourceDir, $targetDir, $baseDir='', $ignoreFiles=array(), $renameMap=array())
{
$list = array();
$handle = opendir($sourceDir);
while(($file = readdir($handle)) !== false) {
if(in_array($file, array('.', '..', '.svn', '.gitignore', '.hgignore')) || in_array($file, $ignoreFiles)) {
while (($file = readdir($handle)) !== false) {
if (in_array($file, array('.', '..', '.svn', '.gitignore', '.hgignore')) || in_array($file, $ignoreFiles)) {
continue;
}
$sourcePath = $sourceDir.DIRECTORY_SEPARATOR.$file;
@ -314,7 +306,7 @@ class AppController extends Controller
'source' => $sourcePath,
'target' => $targetPath,
);
if(is_dir($sourcePath)) {
if (is_dir($sourcePath)) {
$list = array_merge($list, self::buildFileList($sourcePath, $targetPath, $name, $ignoreFiles, $renameMap));
}
}

4
yii/console/controllers/CacheController.php

@ -34,11 +34,11 @@ class CacheController extends Controller
{
/** @var $cache Cache */
$cache = \Yii::$app->getComponent($component);
if(!$cache || !$cache instanceof Cache) {
if (!$cache || !$cache instanceof Cache) {
throw new Exception('Application component "'.$component.'" is not defined or not a cache.');
}
if(!$cache->flush()) {
if (!$cache->flush()) {
throw new Exception('Unable to flush cache.');
}

162
yii/console/controllers/MessageController.php

@ -36,7 +36,7 @@ class MessageController extends Controller
* - sourcePath: string, root directory of all source files.
* - messagePath: string, root directory containing message translations.
* - languages: array, list of language codes that the extracted messages
* should be translated to. For example, array('zh_cn','en_au').
* should be translated to. For example, array('zh_cn', 'en_au').
* - fileTypes: array, a list of file extensions (e.g. 'php', 'xml').
* Only the files whose extension name can be found in this list
* will be processed. If empty, all files will be processed.
@ -57,129 +57,139 @@ class MessageController extends Controller
*/
public function actionIndex($config)
{
if(!is_file($config))
if (!is_file($config)) {
$this->usageError("the configuration file {$config} does not exist.");
}
$config=require_once($config);
$config = require_once($config);
$translator='Yii::t';
extract($config);
if(!isset($sourcePath,$messagePath,$languages))
if (!isset($sourcePath, $messagePath, $languages)) {
$this->usageError('The configuration file must specify "sourcePath", "messagePath" and "languages".');
if(!is_dir($sourcePath))
}
if (!is_dir($sourcePath)) {
$this->usageError("The source path $sourcePath is not a valid directory.");
if(!is_dir($messagePath))
}
if (!is_dir($messagePath)) {
$this->usageError("The message path $messagePath is not a valid directory.");
if(empty($languages))
}
if (empty($languages)) {
$this->usageError("Languages cannot be empty.");
}
if(!isset($overwrite))
if (!isset($overwrite)) {
$overwrite = false;
if(!isset($removeOld))
}
if (!isset($removeOld)) {
$removeOld = false;
if(!isset($sort))
}
if (!isset($sort)) {
$sort = false;
}
$options=array();
if(isset($fileTypes))
$options['fileTypes']=$fileTypes;
if(isset($exclude))
$options['exclude']=$exclude;
$files=CFileHelper::findFiles(realpath($sourcePath),$options);
$options = array();
if (isset($fileTypes)) {
$options['fileTypes'] = $fileTypes;
}
if (isset($exclude)) {
$options['exclude'] = $exclude;
}
$files = CFileHelper::findFiles(realpath($sourcePath), $options);
$messages=array();
foreach($files as $file)
$messages=array_merge_recursive($messages,$this->extractMessages($file,$translator));
$messages = array();
foreach ($files as $file) {
$messages = array_merge_recursive($messages, $this->extractMessages($file, $translator));
}
foreach($languages as $language)
{
$dir=$messagePath.DIRECTORY_SEPARATOR.$language;
if(!is_dir($dir))
foreach ($languages as $language) {
$dir = $messagePath . DIRECTORY_SEPARATOR . $language;
if (!is_dir($dir)) {
@mkdir($dir);
foreach($messages as $category=>$msgs)
{
$msgs=array_values(array_unique($msgs));
$this->generateMessageFile($msgs,$dir.DIRECTORY_SEPARATOR.$category.'.php',$overwrite,$removeOld,$sort);
}
foreach ($messages as $category => $msgs) {
$msgs = array_values(array_unique($msgs));
$this->generateMessageFile($msgs, $dir . DIRECTORY_SEPARATOR . $category . '.php', $overwrite, $removeOld, $sort);
}
}
}
protected function extractMessages($fileName,$translator)
protected function extractMessages($fileName, $translator)
{
echo "Extracting messages from $fileName...\n";
$subject=file_get_contents($fileName);
$n=preg_match_all('/\b'.$translator.'\s*\(\s*(\'.*?(?<!\\\\)\'|".*?(?<!\\\\)")\s*,\s*(\'.*?(?<!\\\\)\'|".*?(?<!\\\\)")\s*[,\)]/s',$subject,$matches,PREG_SET_ORDER);
$messages=array();
for($i=0;$i<$n;++$i)
{
if(($pos=strpos($matches[$i][1],'.'))!==false)
$category=substr($matches[$i][1],$pos+1,-1);
else
$category=substr($matches[$i][1],1,-1);
$message=$matches[$i][2];
$messages[$category][]=eval("return $message;"); // use eval to eliminate quote escape
$subject = file_get_contents($fileName);
$n = preg_match_all(
'/\b' . $translator . '\s*\(\s*(\'.*?(?<!\\\\)\'|".*?(?<!\\\\)")\s*,\s*(\'.*?(?<!\\\\)\'|".*?(?<!\\\\)")\s*[,\)]/s',
$subject, $matches, PREG_SET_ORDER);
$messages = array();
for ($i = 0; $i < $n; ++$i) {
if (($pos = strpos($matches[$i][1], '.')) !== false) {
$category=substr($matches[$i][1], $pos + 1, -1);
} else {
$category=substr($matches[$i][1], 1, -1);
}
$message = $matches[$i][2];
$messages[$category][] = eval("return $message;"); // use eval to eliminate quote escape
}
return $messages;
}
protected function generateMessageFile($messages,$fileName,$overwrite,$removeOld,$sort)
protected function generateMessageFile($messages, $fileName, $overwrite, $removeOld, $sort)
{
echo "Saving messages to $fileName...";
if(is_file($fileName))
{
$translated=require($fileName);
if (is_file($fileName)) {
$translated = require($fileName);
sort($messages);
ksort($translated);
if(array_keys($translated)==$messages)
{
if (array_keys($translated) == $messages) {
echo "nothing new...skipped.\n";
return;
}
$merged=array();
$untranslated=array();
foreach($messages as $message)
{
if(!empty($translated[$message]))
$merged[$message]=$translated[$message];
else
$untranslated[]=$message;
$merged = array();
$untranslated = array();
foreach ($messages as $message) {
if (!empty($translated[$message])) {
$merged[$message] = $translated[$message];
} else {
$untranslated[] = $message;
}
}
ksort($merged);
sort($untranslated);
$todo=array();
foreach($untranslated as $message)
$todo[$message]='';
$todo = array();
foreach ($untranslated as $message) {
$todo[$message] = '';
}
ksort($translated);
foreach($translated as $message=>$translation)
{
if(!isset($merged[$message]) && !isset($todo[$message]) && !$removeOld)
foreach ($translated as $message => $translation) {
if (!isset($merged[$message]) && !isset($todo[$message]) && !$removeOld)
{
if(substr($translation,0,2)==='@@' && substr($translation,-2)==='@@')
if (substr($translation, 0, 2) === '@@' && substr($translation, -2) === '@@') {
$todo[$message]=$translation;
else
$todo[$message]='@@'.$translation.'@@';
} else {
$todo[$message] = '@@' . $translation . '@@';
}
}
}
$merged=array_merge($todo,$merged);
if($sort)
$merged = array_merge($todo, $merged);
if ($sort) {
ksort($merged);
if($overwrite === false)
$fileName.='.merged';
}
if (false === $overwrite) {
$fileName .= '.merged';
}
echo "translation merged.\n";
}
else
{
$merged=array();
foreach($messages as $message)
$merged[$message]='';
} else {
$merged = array();
foreach ($messages as $message) {
$merged[$message] = '';
}
ksort($merged);
echo "saved.\n";
}
$array=str_replace("\r",'',var_export($merged,true));
$content=<<<EOD
$array = str_replace("\r", '', var_export($merged, true));
$content = <<<EOD
<?php
/**
* Message translations.

10
yii/db/ActiveRecord.php

@ -169,7 +169,7 @@ class ActiveRecord extends Model
* @param array $attributes attribute values (name-value pairs) to be saved into the table
* @param string|array $condition the conditions that will be put in the WHERE part of the UPDATE SQL.
* Please refer to [[Query::where()]] on how to specify this parameter.
* @param array $params the parameters (name=>value) to be bound to the query.
* @param array $params the parameters (name => value) to be bound to the query.
* @return integer the number of rows updated
*/
public static function updateAll($attributes, $condition = '', $params = array())
@ -191,7 +191,7 @@ class ActiveRecord extends Model
* Use negative values if you want to decrement the counters.
* @param string|array $condition the conditions that will be put in the WHERE part of the UPDATE SQL.
* Please refer to [[Query::where()]] on how to specify this parameter.
* @param array $params the parameters (name=>value) to be bound to the query.
* @param array $params the parameters (name => value) to be bound to the query.
* Do not name the parameters as `:bp0`, `:bp1`, etc., because they are used internally by this method.
* @return integer the number of rows updated
*/
@ -219,7 +219,7 @@ class ActiveRecord extends Model
*
* @param string|array $condition the conditions that will be put in the WHERE part of the DELETE SQL.
* Please refer to [[Query::where()]] on how to specify this parameter.
* @param array $params the parameters (name=>value) to be bound to the query.
* @param array $params the parameters (name => value) to be bound to the query.
* @return integer the number of rows deleted
*/
public static function deleteAll($condition = '', $params = array())
@ -1014,7 +1014,7 @@ class ActiveRecord extends Model
* @param boolean $asArray whether to return the primary key value as an array. If true,
* the return value will be an array with column names as keys and column values as values.
* Note that for composite primary keys, an array will always be returned regardless of this parameter value.
* @return mixed the primary key value. An array (column name=>column value) is returned if the primary key
* @return mixed the primary key value. An array (column name => column value) is returned if the primary key
* is composite or `$asArray` is true. A string is returned otherwise (null will be returned if
* the key value is null).
*/
@ -1040,7 +1040,7 @@ class ActiveRecord extends Model
* @param boolean $asArray whether to return the primary key value as an array. If true,
* the return value will be an array with column name as key and column value as value.
* If this is false (default), a scalar value will be returned for non-composite primary key.
* @return mixed the old primary key value. An array (column name=>column value) is returned if the primary key
* @return mixed the old primary key value. An array (column name => column value) is returned if the primary key
* is composite or `$asArray` is true. A string is returned otherwise (null will be returned if
* the key value is null).
*/

14
yii/db/Command.php

@ -69,7 +69,7 @@ class Command extends \yii\base\Component
*/
private $_sql;
/**
* @var array the parameter log information (name=>value)
* @var array the parameter log information (name => value)
*/
private $_params = array();
@ -220,9 +220,9 @@ class Command extends \yii\base\Component
* Note that the SQL data type of each value is determined by its PHP type.
* @param array $values the values to be bound. This must be given in terms of an associative
* array with array keys being the parameter names, and array values the corresponding parameter values,
* e.g. `array(':name'=>'John', ':age'=>25)`. By default, the PDO type of each value is determined
* e.g. `array(':name' => 'John', ':age' => 25)`. By default, the PDO type of each value is determined
* by its PHP type. You may explicitly specify the PDO type by using an array: `array(value, type)`,
* e.g. `array(':name'=>'John', ':profile'=>array($profile, \PDO::PARAM_LOB))`.
* e.g. `array(':name' => 'John', ':profile' => array($profile, \PDO::PARAM_LOB))`.
* @return Command the current command being executed
*/
public function bindValues($values)
@ -465,7 +465,7 @@ class Command extends \yii\base\Component
* Note that the created command is not executed until [[execute()]] is called.
*
* @param string $table the table that new rows will be inserted into.
* @param array $columns the column data (name=>value) to be inserted into the table.
* @param array $columns the column data (name => value) to be inserted into the table.
* @return Command the command object itself
*/
public function insert($table, $columns)
@ -515,7 +515,7 @@ class Command extends \yii\base\Component
* Note that the created command is not executed until [[execute()]] is called.
*
* @param string $table the table to be updated.
* @param array $columns the column data (name=>value) to be updated.
* @param array $columns the column data (name => value) to be updated.
* @param mixed $condition the condition that will be put in the WHERE part. Please
* refer to [[Query::where()]] on how to specify condition.
* @param array $params the parameters to be bound to the command
@ -555,7 +555,7 @@ class Command extends \yii\base\Component
/**
* Creates a SQL command for creating a new DB table.
*
* The columns in the new table should be specified as name-definition pairs (e.g. 'name'=>'string'),
* The columns in the new table should be specified as name-definition pairs (e.g. 'name' => 'string'),
* where name stands for a column name which will be properly quoted by the method, and definition
* stands for the column type which can contain an abstract DB type.
* The method [[QueryBuilder::getColumnType()]] will be called
@ -566,7 +566,7 @@ class Command extends \yii\base\Component
* inserted into the generated SQL.
*
* @param string $table the name of the table to be created. The name will be properly quoted by the method.
* @param array $columns the columns (name=>definition) in the new table.
* @param array $columns the columns (name => definition) in the new table.
* @param string $options additional SQL fragment that will be appended to the generated SQL.
* @return Command the command object itself
*/

2
yii/db/Connection.php

@ -121,7 +121,7 @@ class Connection extends Component
*/
public $password = '';
/**
* @var array PDO attributes (name=>value) that should be set when calling [[open()]]
* @var array PDO attributes (name => value) that should be set when calling [[open()]]
* to establish a DB connection. Please refer to the
* [PHP manual](http://www.php.net/manual/en/function.PDO-setAttribute.php) for
* details about available attributes.

2
yii/db/DataReader.php

@ -24,7 +24,7 @@ use yii\base\InvalidCallException;
* }
*
* // equivalent to:
* foreach($reader as $row) {
* foreach ($reader as $row) {
* $rows[] = $row;
* }
*

11
yii/db/Migration.php

@ -132,7 +132,8 @@ class Migration extends \yii\base\Component
* Executes a SQL statement.
* This method executes the specified SQL statement using [[db]].
* @param string $sql the SQL statement to be executed
* @param array $params input parameters (name=>value) for the SQL execution. See [[Command::execute()]] for more details.
* @param array $params input parameters (name => value) for the SQL execution.
* See [[Command::execute()]] for more details.
*/
public function execute($sql, $params = array())
{
@ -146,7 +147,7 @@ class Migration extends \yii\base\Component
* Creates and executes an INSERT SQL statement.
* The method will properly escape the column names, and bind the values to be inserted.
* @param string $table the table that new rows will be inserted into.
* @param array $columns the column data (name=>value) to be inserted into the table.
* @param array $columns the column data (name => value) to be inserted into the table.
*/
public function insert($table, $columns)
{
@ -160,7 +161,7 @@ class Migration extends \yii\base\Component
* Creates and executes an UPDATE SQL statement.
* The method will properly escape the column names and bind the values to be updated.
* @param string $table the table to be updated.
* @param array $columns the column data (name=>value) to be updated.
* @param array $columns the column data (name => value) to be updated.
* @param mixed $condition the conditions that will be put in the WHERE part. Please
* refer to [[Query::where()]] on how to specify conditions.
* @param array $params the parameters to be bound to the query.
@ -191,7 +192,7 @@ class Migration extends \yii\base\Component
/**
* Builds and executes a SQL statement for creating a new DB table.
*
* The columns in the new table should be specified as name-definition pairs (e.g. 'name'=>'string'),
* The columns in the new table should be specified as name-definition pairs (e.g. 'name' => 'string'),
* where name stands for a column name which will be properly quoted by the method, and definition
* stands for the column type which can contain an abstract DB type.
*
@ -201,7 +202,7 @@ class Migration extends \yii\base\Component
* put into the generated SQL.
*
* @param string $table the name of the table to be created. The name will be properly quoted by the method.
* @param array $columns the columns (name=>definition) in the new table.
* @param array $columns the columns (name => definition) in the new table.
* @param string $options additional SQL fragment that will be appended to the generated SQL.
*/
public function createTable($table, $columns, $options = null)

34
yii/db/Query.php

@ -124,7 +124,7 @@ class Query extends \yii\base\Component
public $union;
/**
* @var array list of query parameter values indexed by parameter placeholders.
* For example, `array(':name'=>'Dan', ':age'=>31)`.
* For example, `array(':name' => 'Dan', ':age' => 31)`.
*/
public $params;
@ -210,9 +210,9 @@ class Query extends \yii\base\Component
* an `IN` expression will be generated. And if a value is null, `IS NULL` will be used
* in the generated expression. Below are some examples:
*
* - `array('type'=>1, 'status'=>2)` generates `(type=1) AND (status=2)`.
* - `array('id'=>array(1,2,3), 'status'=>2)` generates `(id IN (1,2,3)) AND (status=2)`.
* - `array('status'=>null) generates `status IS NULL`.
* - `array('type' => 1, 'status' => 2)` generates `(type = 1) AND (status = 2)`.
* - `array('id' => array(1, 2, 3), 'status' => 2)` generates `(id IN (1, 2, 3)) AND (status = 2)`.
* - `array('status' => null) generates `status IS NULL`.
*
* A condition in operator format generates the SQL expression according to the specified operator, which
* can be one of the followings:
@ -234,7 +234,7 @@ class Query extends \yii\base\Component
*
* - `in`: operand 1 should be a column or DB expression, and operand 2 be an array representing
* the range of the values that the column or DB expression should be in. For example,
* `array('in', 'id', array(1,2,3))` will generate `id IN (1,2,3)`.
* `array('in', 'id', array(1, 2, 3))` will generate `id IN (1, 2, 3)`.
* The method will properly quote the column name and escape values in the range.
*
* - `not in`: similar to the `in` operator except that `IN` is replaced with `NOT IN` in the generated condition.
@ -257,7 +257,7 @@ class Query extends \yii\base\Component
* the `NOT LIKE` predicates.
*
* @param string|array $condition the conditions that should be put in the WHERE part.
* @param array $params the parameters (name=>value) to be bound to the query.
* @param array $params the parameters (name => value) to be bound to the query.
* @return Query the query object itself
* @see andWhere()
* @see orWhere()
@ -274,7 +274,7 @@ class Query extends \yii\base\Component
* The new condition and the existing one will be joined using the 'AND' operator.
* @param string|array $condition the new WHERE condition. Please refer to [[where()]]
* on how to specify this parameter.
* @param array $params the parameters (name=>value) to be bound to the query.
* @param array $params the parameters (name => value) to be bound to the query.
* @return Query the query object itself
* @see where()
* @see orWhere()
@ -295,7 +295,7 @@ class Query extends \yii\base\Component
* The new condition and the existing one will be joined using the 'OR' operator.
* @param string|array $condition the new WHERE condition. Please refer to [[where()]]
* on how to specify this parameter.
* @param array $params the parameters (name=>value) to be bound to the query.
* @param array $params the parameters (name => value) to be bound to the query.
* @return Query the query object itself
* @see where()
* @see andWhere()
@ -321,7 +321,7 @@ class Query extends \yii\base\Component
* (which means the table is given as a sub-query or DB expression).
* @param string|array $on the join condition that should appear in the ON part.
* Please refer to [[where()]] on how to specify this parameter.
* @param array $params the parameters (name=>value) to be bound to the query.
* @param array $params the parameters (name => value) to be bound to the query.
* @return Query the query object itself
*/
public function join($type, $table, $on = '', $params = array())
@ -338,7 +338,7 @@ class Query extends \yii\base\Component
* (which means the table is given as a sub-query or DB expression).
* @param string|array $on the join condition that should appear in the ON part.
* Please refer to [[where()]] on how to specify this parameter.
* @param array $params the parameters (name=>value) to be bound to the query.
* @param array $params the parameters (name => value) to be bound to the query.
* @return Query the query object itself
*/
public function innerJoin($table, $on = '', $params = array())
@ -355,7 +355,7 @@ class Query extends \yii\base\Component
* (which means the table is given as a sub-query or DB expression).
* @param string|array $on the join condition that should appear in the ON part.
* Please refer to [[where()]] on how to specify this parameter.
* @param array $params the parameters (name=>value) to be bound to the query
* @param array $params the parameters (name => value) to be bound to the query
* @return Query the query object itself
*/
public function leftJoin($table, $on = '', $params = array())
@ -372,7 +372,7 @@ class Query extends \yii\base\Component
* (which means the table is given as a sub-query or DB expression).
* @param string|array $on the join condition that should appear in the ON part.
* Please refer to [[where()]] on how to specify this parameter.
* @param array $params the parameters (name=>value) to be bound to the query
* @param array $params the parameters (name => value) to be bound to the query
* @return Query the query object itself
*/
public function rightJoin($table, $on = '', $params = array())
@ -425,7 +425,7 @@ class Query extends \yii\base\Component
* Sets the HAVING part of the query.
* @param string|array $condition the conditions to be put after HAVING.
* Please refer to [[where()]] on how to specify this parameter.
* @param array $params the parameters (name=>value) to be bound to the query.
* @param array $params the parameters (name => value) to be bound to the query.
* @return Query the query object itself
* @see andHaving()
* @see orHaving()
@ -442,7 +442,7 @@ class Query extends \yii\base\Component
* The new condition and the existing one will be joined using the 'AND' operator.
* @param string|array $condition the new HAVING condition. Please refer to [[where()]]
* on how to specify this parameter.
* @param array $params the parameters (name=>value) to be bound to the query.
* @param array $params the parameters (name => value) to be bound to the query.
* @return Query the query object itself
* @see having()
* @see orHaving()
@ -463,7 +463,7 @@ class Query extends \yii\base\Component
* The new condition and the existing one will be joined using the 'OR' operator.
* @param string|array $condition the new HAVING condition. Please refer to [[where()]]
* on how to specify this parameter.
* @param array $params the parameters (name=>value) to be bound to the query.
* @param array $params the parameters (name => value) to be bound to the query.
* @return Query the query object itself
* @see having()
* @see andHaving()
@ -570,7 +570,7 @@ class Query extends \yii\base\Component
/**
* Sets the parameters to be bound to the query.
* @param array $params list of query parameter values indexed by parameter placeholders.
* For example, `array(':name'=>'Dan', ':age'=>31)`.
* For example, `array(':name' => 'Dan', ':age' => 31)`.
* @return Query the query object itself
* @see addParams()
*/
@ -583,7 +583,7 @@ class Query extends \yii\base\Component
/**
* Adds additional parameters to be bound to the query.
* @param array $params list of query parameter values indexed by parameter placeholders.
* For example, `array(':name'=>'Dan', ':age'=>31)`.
* For example, `array(':name' => 'Dan', ':age' => 31)`.
* @return Query the query object itself
* @see params()
*/

10
yii/db/QueryBuilder.php

@ -88,7 +88,7 @@ class QueryBuilder extends \yii\base\Object
* The method will properly escape the table and column names.
*
* @param string $table the table that new rows will be inserted into.
* @param array $columns the column data (name=>value) to be inserted into the table.
* @param array $columns the column data (name => value) to be inserted into the table.
* @param array $params the binding parameters that will be generated by this method.
* They should be bound to the DB command later.
* @return string the INSERT SQL
@ -156,7 +156,7 @@ class QueryBuilder extends \yii\base\Object
* The method will properly escape the table and column names.
*
* @param string $table the table to be updated.
* @param array $columns the column data (name=>value) to be updated.
* @param array $columns the column data (name => value) to be updated.
* @param mixed $condition the condition that will be put in the WHERE part. Please
* refer to [[Query::where()]] on how to specify condition.
* @param array $params the binding parameters that will be modified by this method
@ -211,7 +211,7 @@ class QueryBuilder extends \yii\base\Object
/**
* Builds a SQL statement for creating a new DB table.
*
* The columns in the new table should be specified as name-definition pairs (e.g. 'name'=>'string'),
* The columns in the new table should be specified as name-definition pairs (e.g. 'name' => 'string'),
* where name stands for a column name which will be properly quoted by the method, and definition
* stands for the column type which can contain an abstract DB type.
* The [[getColumnType()]] method will be invoked to convert any abstract type into a physical one.
@ -230,7 +230,7 @@ class QueryBuilder extends \yii\base\Object
* ~~~
*
* @param string $table the name of the table to be created. The name will be properly quoted by the method.
* @param array $columns the columns (name=>definition) in the new table.
* @param array $columns the columns (name => definition) in the new table.
* @param string $options additional SQL fragment that will be appended to the generated SQL.
* @return string the SQL statement for creating a new DB table.
*/
@ -734,7 +734,7 @@ class QueryBuilder extends \yii\base\Object
} else {
throw new Exception('Found unknown operator in query: ' . $operator);
}
} else { // hash format: 'column1'=>'value1', 'column2'=>'value2', ...
} else { // hash format: 'column1' => 'value1', 'column2' => 'value2', ...
return $this->buildHashCondition($condition, $params);
}
}

4
yii/helpers/base/ArrayHelper.php

@ -93,11 +93,11 @@ class ArrayHelper
* Usage examples,
*
* ~~~
* // $array = array('type'=>'A', 'options'=>array(1,2));
* // $array = array('type' => 'A', 'options' => array(1, 2));
* // working with array
* $type = \yii\helpers\ArrayHelper::remove($array, 'type');
* // $array content
* // $array = array('options'=>array(1,2));
* // $array = array('options' => array(1, 2));
* ~~~
*
* @param array $array the array to extract value from

2
yii/helpers/base/Markdown.php

@ -39,7 +39,7 @@ class Markdown
public static function process($content, $config = array())
{
if (static::$markdown===null) {
if (static::$markdown === null) {
static::$markdown = new MarkdownExtra();
}
foreach ($config as $name => $value) {

2
yii/i18n/GettextMoFile.php

@ -109,7 +109,7 @@ class GettextMoFile extends GettextFile
if (($context && $separatorPosition !== false && substr($id, 0, $separatorPosition) === $context) ||
(!$context && $separatorPosition === false)) {
if ($separatorPosition !== false) {
$id = substr($id,$separatorPosition+1);
$id = substr($id, $separatorPosition+1);
}
$message = $this->readString($fileHandle, $targetLengths[$i], $targetOffsets[$i]);

2
yii/i18n/I18N.php

@ -87,7 +87,7 @@ class I18N extends Component
$language = Yii::$app->language;
}
// allow chars for category: word chars, ".", "-", "/","\"
// allow chars for category: word chars, ".", "-", "/", "\"
if (strpos($message, '|') !== false && preg_match('/^([\w\-\\/\.\\\\]+)\|(.*)/', $message, $matches)) {
$category = $matches[1];
$message = $matches[2];

4
yii/logging/FileTarget.php

@ -81,12 +81,12 @@ class FileTarget extends Target
@flock($fp, LOCK_EX);
if (@filesize($this->logFile) > $this->maxFileSize * 1024) {
$this->rotateFiles();
@flock($fp,LOCK_UN);
@flock($fp, LOCK_UN);
@fclose($fp);
@file_put_contents($this->logFile, $text, FILE_APPEND | LOCK_EX);
} else {
@fwrite($fp, $text);
@flock($fp,LOCK_UN);
@flock($fp, LOCK_UN);
@fclose($fp);
}
}

2
yii/logging/ProfileTarget.php

@ -166,7 +166,7 @@ class CProfileLogRoute extends CWebLogRoute
}
$entries = array_values($results);
$func = create_function('$a,$b', 'return $a[4]<$b[4]?1:0;');
$func = create_function('$a,$b', 'return $a[4] < $b[4] ? 1 : 0;');
usort($entries, $func);
$this->render('profile-summary', $entries);

12
yii/rbac/Manager.php

@ -33,9 +33,9 @@ use yii\base\InvalidParamException;
* at appropriate places in the application code to check if the current user
* has the needed permission for an operation.
*
* @property array $roles Roles (name=>Item).
* @property array $tasks Tasks (name=>Item).
* @property array $operations Operations (name=>Item).
* @property array $roles Roles (name => Item).
* @property array $tasks Tasks (name => Item).
* @property array $operations Operations (name => Item).
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Alexander Kochetov <creocoder@gmail.com>
@ -107,7 +107,7 @@ abstract class Manager extends Component
* This is a shortcut method to [[Manager::getItems()]].
* @param mixed $userId the user ID. If not null, only the roles directly assigned to the user
* will be returned. Otherwise, all roles will be returned.
* @return Item[] roles (name=>AuthItem)
* @return Item[] roles (name => AuthItem)
*/
public function getRoles($userId = null)
{
@ -119,7 +119,7 @@ abstract class Manager extends Component
* This is a shortcut method to [[Manager::getItems()]].
* @param mixed $userId the user ID. If not null, only the tasks directly assigned to the user
* will be returned. Otherwise, all tasks will be returned.
* @return Item[] tasks (name=>AuthItem)
* @return Item[] tasks (name => AuthItem)
*/
public function getTasks($userId = null)
{
@ -131,7 +131,7 @@ abstract class Manager extends Component
* This is a shortcut method to [[Manager::getItems()]].
* @param mixed $userId the user ID. If not null, only the operations directly assigned to the user
* will be returned. Otherwise, all operations will be returned.
* @return Item[] operations (name=>AuthItem)
* @return Item[] operations (name => AuthItem)
*/
public function getOperations($userId = null)
{

2
yii/renderers/SmartyViewRenderer.php

@ -63,7 +63,7 @@ class SmartyViewRenderer extends ViewRenderer
*/
public function smarty_function_path($params, \Smarty_Internal_Template $template)
{
if(!isset($params['route'])) {
if (!isset($params['route'])) {
trigger_error("path: missing 'route' parameter");
}

4
yii/test/TestCase.php

@ -10,9 +10,9 @@
namespace yii\test;
require_once('PHPUnit/Runner/Version.php');
spl_autoload_unregister(array('Yii','autoload'));
spl_autoload_unregister(array('Yii', 'autoload'));
require_once('PHPUnit/Autoload.php');
spl_autoload_register(array('Yii','autoload')); // put yii's autoloader at the end
spl_autoload_register(array('Yii', 'autoload')); // put yii's autoloader at the end
/**
* TestCase is the base class for all test case classes.

17
yii/views/exception.php

@ -191,16 +191,15 @@ $title = $context->htmlEncode($exception instanceof \yii\base\Exception ? $excep
var traceReg = new RegExp("(^|\\s)trace-file(\\s|$)");
var collapsedReg = new RegExp("(^|\\s)collapsed(\\s|$)");
var e = document.getElementsByTagName("div");
for(var j=0,len=e.length;j<len;j++){
if(traceReg.test(e[j].className)){
e[j].onclick = function(){
var e = document.getElementsByTagName('div');
for (var j = 0, len = e.length; j < len; j++) {
if (traceReg.test(e[j].className)) {
e[j].onclick = function() {
var trace = this.parentNode.parentNode;
if(collapsedReg.test(trace.className)){
trace.className = trace.className.replace("collapsed", "expanded");
}
else{
trace.className = trace.className.replace("expanded", "collapsed");
if (collapsedReg.test(trace.className)) {
trace.className = trace.className.replace('collapsed', 'expanded');
} else {
trace.className = trace.className.replace('expanded', 'collapsed');
}
}
}

4
yii/web/Pagination.php

@ -42,7 +42,7 @@ use Yii;
* View:
*
* ~~~
* foreach($models as $model) {
* foreach ($models as $model) {
* // display $model here
* }
*
@ -80,7 +80,7 @@ class Pagination extends \yii\base\Object
*/
public $route;
/**
* @var array parameters (name=>value) that should be used to obtain the current page number
* @var array parameters (name => value) that should be used to obtain the current page number
* and to create new pagination URLs. If not set, $_GET will be used instead.
*
* The array element indexed by [[pageVar]] is considered to be the current page number.

8
yii/web/Response.php

@ -98,10 +98,10 @@ class Response extends \yii\base\Response
* <b>Example</b>:
* <pre>
* <?php
* Yii::app()->request->xSendFile('/home/user/Pictures/picture1.jpg',array(
* 'saveName'=>'image1.jpg',
* 'mimeType'=>'image/jpeg',
* 'terminate'=>false,
* Yii::app()->request->xSendFile('/home/user/Pictures/picture1.jpg', array(
* 'saveName' => 'image1.jpg',
* 'mimeType' => 'image/jpeg',
* 'terminate' => false,
* ));
* ?>
* </pre>

2
yii/web/Sort.php

@ -50,7 +50,7 @@ use yii\helpers\Html;
* // display links leading to sort actions
* echo $sort->link('name', 'Name') . ' | ' . $sort->link('age', 'Age');
*
* foreach($models as $model) {
* foreach ($models as $model) {
* // display $model here
* }
* ~~~

2
yii/web/UrlRule.php

@ -36,7 +36,7 @@ class UrlRule extends Object
*/
public $route;
/**
* @var array the default GET parameters (name=>value) that this rule provides.
* @var array the default GET parameters (name => value) that this rule provides.
* When this rule is used to parse the incoming request, the values declared in this property
* will be injected into $_GET.
*/

2
yii/widgets/ActiveField.php

@ -144,7 +144,7 @@ class ActiveField extends Component
}
}
if (!empty($validators)) {
$options['validate'] = new JsExpression("function(attribute,value,messages){" . implode('', $validators) . '}');
$options['validate'] = new JsExpression("function(attribute, value, messages) {" . implode('', $validators) . '}');
}
}

2
yii/widgets/ContentDecorator.php

@ -22,7 +22,7 @@ class ContentDecorator extends Widget
*/
public $viewFile;
/**
* @var array the parameters (name=>value) to be extracted and made available in the decorative view.
* @var array the parameters (name => value) to be extracted and made available in the decorative view.
*/
public $params = array();

2
yii/widgets/ListPager.php

@ -73,7 +73,7 @@ class ListPager extends Widget
$selection = $this->pagination->createUrl($currentPage);
if (!isset($this->options['onchange'])) {
$this->options['onchange'] = "if(this.value!='') {window.location=this.value;};";
$this->options['onchange'] = "if (this.value != '') { window.location = this.value; };";
}
echo Html::dropDownList(null, $selection, $pages, $this->options);

Loading…
Cancel
Save