Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'master' of git://github.com/yiisoft/yii into file-valid…

…ator-mime-type
  • Loading branch information...
commit d8a76a7e1a0fa0e47defc2f6e5798944b58e47ea 2 parents 21a24c8 + 5140e0d
@resurtm authored
View
3  CHANGELOG
@@ -28,6 +28,7 @@ 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)
@@ -35,7 +36,7 @@ Version 1.1.11 work in progress
- 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)
View
8 docs/guide/uk/basics.namespace.txt
@@ -132,8 +132,8 @@ Yii::import('system.web.*');
Yii::setPathOfAlias('mynamespace', '/var/www/common/mynamespace/');
~~~
-Простір імен контролерів
-------------------------
+Контролери у просторах імен
+---------------------------
За замовчуванням Yii використовує контролери із глобального простору імен.
Ці класи знаходяться у `protected/controllers`.
@@ -178,8 +178,8 @@ class TestController extends \CController
}
~~~
-Простір імен модулів
---------------------
+Модулі у просторах імен
+-----------------------
Іноді корисно визначити простір імен для цілого модуля. Наприклад, якщо ви хочете помістити `testmodule` у простір імен `\mynamespace\modules\testmodule`, який вказує на
`/var/www/common/mynamespace/modules/testmodule`, вам потрібно спочатку створити наступну файлову структуру:
View
3  docs/guide/uk/changes.txt
@@ -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
------------
View
2  docs/guide/uk/database.query-builder.txt
@@ -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'))
~~~
View
16 docs/guide/uk/form.model.txt
@@ -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` у прикладі вище. Метод перевірки
оформлюється наступним чином:
View
11 docs/guide/uk/quickstart.first-app.txt
@@ -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.
+
Зʼєднання з базою даних
-----------------------
Більшість веб-додатків використовують бази даних, і наш додаток не виключення.
View
18 framework/db/CDbCommand.php
@@ -541,27 +541,27 @@ 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;
@@ -569,7 +569,7 @@ public function buildQuery($query)
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;
View
15 tests/framework/db/CDbCommand2Test.php
@@ -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);
+ }
}
Please sign in to comment.
Something went wrong with that request. Please try again.