Skip to content

Commit

Permalink
Merge branch 'master' of git://github.com/yiisoft/yii into file-valid…
Browse files Browse the repository at this point in the history
…ator-mime-type
  • Loading branch information
resurtm committed Jul 28, 2012
2 parents 21a24c8 + 5140e0d commit d8a76a7
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 15 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,15 @@ Version 1.1.11 work in progress
- Bug #769: Fixed the bug that $.fn.yiiGridView.getSelection was not working always if a custom CGridView::template was used (mdomba)
- Bug #772: CHttpRequest::getIsSecureConnection() was failing on some conditions (bulletbee, samdark)
- Bug #773: CGridView filters now filter on enter key in Internet Explorer (BBoom)
- Bug #803: Arbitary non-sorting links in CDataColumn's header were not working proper way (resurtm)
- Bug #827: Fixed the problem that CJuiSliderInput was rendering a name attribute for div element (mdomba)
- Bug #842: Active Records insert fails in MSSQL if a column has a default value of (NULL) (c-schmitz)
- Bug #852: Fixed the problem that CActiveForm was not revalidating fields if ajax submit was used (mdomba)
- Bug #859: Fixed CSort::applyOrder() and CSort::getOrderBy() to use custom table aliases (troch, samdark)
- Bug #865: CLogRoute called processLogs() even if log array was empty and caused empty emails and log files (cebe)
- Bug #879: Fixed a possible PHP error caused by CWebUser::restoreFromCookie() in combination with CHttpRequest.enableCookieValidation (kidol)
- Bug #901: Fixed possible encoding problem on exception (mdomba, samdark, cebe)
- Bug #803: Arbitary non-sorting links in CDataColumn's header were not working proper way (resurtm)
- Bug #1045: Building a query with empty array as parameter will not result in a broken sql-string anymore(suralc)
- Bug: Fixed CMenu::isItemActive() to work properly when there is a hash in the item's url (SlKelevro)
- Bug: Added missing return statement to CAuthItem->revoke() (mdomba)
- Bug: CHtml::resolveValue() ignoring of array elements accessor at the beginning of the $attribute argument now works properly (resurtm)
Expand Down
8 changes: 4 additions & 4 deletions docs/guide/uk/basics.namespace.txt
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,8 @@ Yii::import('system.web.*');
Yii::setPathOfAlias('mynamespace', '/var/www/common/mynamespace/');
~~~

Простір імен контролерів
------------------------
Контролери у просторах імен
---------------------------

За замовчуванням Yii використовує контролери із глобального простору імен.
Ці класи знаходяться у `protected/controllers`.
Expand Down Expand Up @@ -178,8 +178,8 @@ class TestController extends \CController
}
~~~

Простір імен модулів
--------------------
Модулі у просторах імен
-----------------------

Іноді корисно визначити простір імен для цілого модуля. Наприклад, якщо ви хочете помістити `testmodule` у простір імен `\mynamespace\modules\testmodule`, який вказує на
`/var/www/common/mynamespace/modules/testmodule`, вам потрібно спочатку створити наступну файлову структуру:
Expand Down
3 changes: 3 additions & 0 deletions docs/guide/uk/changes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
Версія 1.1.11
-------------
* [Додана підтримка кешування на рівні HTTP](/doc/guide/caching.page#http-caching)
* [Додано код виходу для консольних додатків](/doc/guide/topics.console#exit-codes)
* [Додано внесення правил валідації моделі до чорних списків](/doc/guide/form.model.txt#declaring-validation-rules)
* [Додана підтримка git та hg](/doc/guide/quickstart.first-app#creating-your-first-yii-application)

Версія 1.1.8
------------
Expand Down
2 changes: 1 addition & 1 deletion docs/guide/uk/database.query-builder.txt
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ function group($columns)
// GROUP BY `name`, `id`
group('name, id')
// GROUP BY `tbl_profile`.`name`, `id`
group(array('tbl_profile.name', 'id')
group(array('tbl_profile.name', 'id'))
~~~


Expand Down
16 changes: 16 additions & 0 deletions docs/guide/uk/form.model.txt
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,22 @@ array('AttributeList', 'Validator', 'on'=>'ScenarioList', …додаткові
застосовуватися правило; а також інші параметри — пари імʼя-значення, які використовуються для
ініціалізації значень властивостей відповідного валідатора.

Починаючи із версії 1.1.11, сценарії можна вносити до "чорних" списків.
Якщо ви не бажаєте виконувати валідацію для деякого правила, коли активні конкрентні сценарії,
ви можете визначити параметр `off`, що містить їхні імена.
Синтакст такий же, як і для параметра `on`.

Перелік сценаріїв (параметри `on` та `off`) може бути визначений у двох різних формах,
які означають одне й те саме:

~~~
[php]
// довільний масив із іменами сценаріїв
'on'=>array('update', 'create'),
// рядок із іменами сценаріїв, розділених комами (пробіли ігноруються)
'off'=>'ignore, this, scenarios, at-all',
~~~

Є три способи вказати `Validator` у правилі перевірки. По-перше, `Validator` може бути іменем
метода у класі моделі даних, аналогічно `authenticate` у прикладі вище. Метод перевірки
оформлюється наступним чином:
Expand Down
11 changes: 11 additions & 0 deletions docs/guide/uk/quickstart.first-app.txt
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,17 @@ testdrive/
login.php файл представлення для дії 'login'
~~~

Описаний вище генератор додатку, також підтримує створення необхідних файлів для системи контролю версій Git.
Наступна команда створить необхідні файли `.gitignore` (наприклад, зміст директорій `assets` та `runtime` не повинен відслідковуватися)
та `.gitkeep` (примусово встановлює відстеження початково порожніх, але важливих каталогів):

~~~
% YiiRoot/framework/yiic webapp WebRoot/testdrive git
~~~

Інша система VCS, що підтримується, це Mercurial: передайте значення `hg` у якості третього параметра, якщо ви використовуєте цю VCS.
Ця функція доступна із версії 1.1.11.

Зʼєднання з базою даних
-----------------------
Більшість веб-додатків використовують бази даних, і наш додаток не виключення.
Expand Down
18 changes: 9 additions & 9 deletions framework/db/CDbCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -541,35 +541,35 @@ private function queryInternal($method,$mode,$params=array())
*/
public function buildQuery($query)
{
$sql=isset($query['distinct']) && $query['distinct'] ? 'SELECT DISTINCT' : 'SELECT';
$sql.=' '.(isset($query['select']) ? $query['select'] : '*');
$sql=!empty($query['distinct']) ? 'SELECT DISTINCT' : 'SELECT';
$sql.=' '.(!empty($query['select']) ? $query['select'] : '*');

if(isset($query['from']))
if(!empty($query['from']))
$sql.="\nFROM ".$query['from'];
else
throw new CDbException(Yii::t('yii','The DB query must contain the "from" portion.'));

if(isset($query['join']))
if(!empty($query['join']))
$sql.="\n".(is_array($query['join']) ? implode("\n",$query['join']) : $query['join']);

if(isset($query['where']))
if(!empty($query['where']))
$sql.="\nWHERE ".$query['where'];

if(isset($query['group']))
if(!empty($query['group']))
$sql.="\nGROUP BY ".$query['group'];

if(isset($query['having']))
if(!empty($query['having']))
$sql.="\nHAVING ".$query['having'];

if(isset($query['order']))
if(!empty($query['order']))
$sql.="\nORDER BY ".$query['order'];

$limit=isset($query['limit']) ? (int)$query['limit'] : -1;
$offset=isset($query['offset']) ? (int)$query['offset'] : -1;
if($limit>=0 || $offset>0)
$sql=$this->_connection->getCommandBuilder()->applyLimit($sql,$limit,$offset);

if(isset($query['union']))
if(!empty($query['union']))
$sql.="\nUNION (\n".(is_array($query['union']) ? implode("\n) UNION (\n",$query['union']) : $query['union']) . ')';

return $sql;
Expand Down
15 changes: 15 additions & 0 deletions tests/framework/db/CDbCommand2Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -385,4 +385,19 @@ public function testArraySyntax()
$this->assertEquals('user2',$rows[0]['username']);
$this->assertEquals('pass2',$rows[0]['password']);
}
/**
* Belongs to #1045
*/
public function testEmptyArray()
{
$command=$this->_connection->createCommand();
$conditions='';
$params=array();
$query = $command->select('*')
->from('tbl')
->where($conditions, $params)
->order('id ASC')
->getText();
$this->assertEquals("SELECT *\nFROM 'tbl'\nORDER BY \"id\" ASC", $query);
}
}

0 comments on commit d8a76a7

Please sign in to comment.