Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

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

…e-command-map
  • Loading branch information...
commit 78867476ce72f8d2857676fa0263bbc6e5e5f977 2 parents 35dec3e + 83d75cb
@resurtm resurtm authored
Showing with 382 additions and 410 deletions.
  1. +12 −1 CHANGELOG
  2. +7 −5 docs/guide/caching.fragment.txt
  3. +8 −0 docs/guide/database.arr.txt
  4. +4 −4 docs/guide/ja/caching.fragment.txt
  5. +12 −3 docs/guide/ja/database.arr.txt
  6. +9 −10 docs/guide/pt_br/topics.auth.txt
  7. +1 −1  docs/guide/uk/basics.application.txt
  8. +1 −1  docs/guide/uk/basics.best-practices.txt
  9. +1 −1  docs/guide/uk/basics.component.txt
  10. +1 −1  docs/guide/uk/basics.controller.txt
  11. +1 −1  docs/guide/uk/basics.convention.txt
  12. +1 −1  docs/guide/uk/basics.entry.txt
  13. +1 −1  docs/guide/uk/basics.model.txt
  14. +1 −1  docs/guide/uk/basics.module.txt
  15. +1 −1  docs/guide/uk/basics.mvc.txt
  16. +1 −1  docs/guide/uk/basics.namespace.txt
  17. +1 −1  docs/guide/uk/basics.view.txt
  18. +1 −1  docs/guide/uk/basics.workflow.txt
  19. +1 −1  docs/guide/uk/caching.data.txt
  20. +1 −1  docs/guide/uk/caching.dynamic.txt
  21. +1 −1  docs/guide/uk/caching.fragment.txt
  22. +1 −1  docs/guide/uk/caching.overview.txt
  23. +1 −1  docs/guide/uk/caching.page.txt
  24. +2 −2 docs/guide/uk/changes.txt
  25. +1 −1  docs/guide/uk/database.ar.txt
  26. +17 −1 docs/guide/uk/database.arr.txt
  27. +1 −1  docs/guide/uk/database.dao.txt
  28. +1 −1  docs/guide/uk/database.migration.txt
  29. +2 −2 docs/guide/uk/database.overview.txt
  30. +13 −13 docs/guide/uk/database.query-builder.txt
  31. +1 −1  docs/guide/uk/extension.create.txt
  32. +1 −1  docs/guide/uk/extension.integration.txt
  33. +1 −1  docs/guide/uk/extension.overview.txt
  34. +1 −1  docs/guide/uk/extension.use.txt
  35. +3 −3 docs/guide/uk/form.action.txt
  36. +8 −8 docs/guide/uk/form.builder.txt
  37. +2 −2 docs/guide/uk/form.model.txt
  38. +1 −1  docs/guide/uk/form.overview.txt
  39. +2 −2 docs/guide/uk/form.table.txt
  40. +3 −3 docs/guide/uk/form.view.txt
  41. +1 −1  docs/guide/uk/index.txt
  42. +1 −1  docs/guide/uk/quickstart.apache-nginx-config.txt
  43. +1 −1  docs/guide/uk/quickstart.first-app-yiic.txt
  44. +1 −1  docs/guide/uk/quickstart.first-app.txt
  45. +1 −1  docs/guide/uk/quickstart.installation.txt
  46. +1 −1  docs/guide/uk/quickstart.what-is-yii.txt
  47. +1 −1  docs/guide/uk/test.fixture.txt
  48. +1 −1  docs/guide/uk/test.functional.txt
  49. +1 −1  docs/guide/uk/test.overview.txt
  50. +1 −1  docs/guide/uk/test.unit.txt
  51. +3 −3 docs/guide/uk/toc.txt
  52. +1 −1  docs/guide/uk/topics.auth.txt
  53. +1 −1  docs/guide/uk/topics.console.txt
  54. +1 −1  docs/guide/uk/topics.error.txt
  55. +1 −1  docs/guide/uk/topics.gii.txt
  56. +10 −9 docs/guide/uk/topics.i18n.txt
  57. +1 −1  docs/guide/uk/topics.logging.txt
  58. +1 −1  docs/guide/uk/topics.performance.txt
  59. +1 −1  docs/guide/uk/topics.prado.txt
  60. +1 −1  docs/guide/uk/topics.security.txt
  61. +1 −1  docs/guide/uk/topics.theming.txt
  62. +1 −1  docs/guide/uk/topics.url.txt
  63. +1 −1  docs/guide/uk/topics.webservice.txt
  64. +1 −1  docs/guide/uk/upgrade.txt
  65. +2 −1  framework/YiiBase.php
  66. +6 −2 framework/base/CBehavior.php
  67. +9 −6 framework/base/CModelBehavior.php
  68. +2 −2 framework/caching/CCache.php
  69. +0 −2  framework/cli/commands/MessageCommand.php
  70. +5 −5 framework/cli/commands/WebAppCommand.php
  71. 0  framework/cli/views/webapp/{protected/runtime/git.gitignore → assets/git-gitignore}
  72. 0  framework/cli/views/webapp/{themes/classic/views/system/hg.hgkeep → assets/hg-hgkeep}
  73. 0  framework/cli/views/webapp/assets/hg.hgkeep
  74. +1 −0  framework/cli/views/webapp/{hg.hgignore → hg-hgignore}
  75. 0  framework/cli/views/webapp/{themes/classic/views/system/git.gitkeep → images/git-gitkeep}
  76. 0  framework/cli/views/webapp/{themes/classic/views/site/hg.hgkeep → images/hg-hgkeep}
  77. 0  framework/cli/views/webapp/{themes/classic/views/site/git.gitkeep → protected/commands/shell/git-gitkeep}
  78. 0  framework/cli/views/webapp/{themes/classic/views/layouts/hg.hgkeep → protected/commands/shell/hg-hgkeep}
  79. 0  framework/cli/views/webapp/{themes/classic/views/layouts/git.gitkeep → protected/extensions/git-gitkeep}
  80. 0  framework/cli/views/webapp/protected/{tests/unit/hg.hgkeep → extensions/hg-hgkeep}
  81. 0  framework/cli/views/webapp/protected/{tests/unit/git.gitkeep → messages/git-gitkeep}
  82. 0  framework/cli/views/webapp/protected/{tests/report/hg.hgkeep → messages/hg-hgkeep}
  83. 0  framework/cli/views/webapp/protected/{tests/report/git.gitkeep → migrations/git-gitkeep}
  84. 0  framework/cli/views/webapp/protected/{tests/fixtures/hg.hgkeep → migrations/hg-hgkeep}
  85. 0  framework/cli/views/webapp/{assets/git.gitignore → protected/runtime/git-gitignore}
  86. 0  framework/cli/views/webapp/protected/{tests/fixtures/git.gitkeep → runtime/hg-hgkeep}
  87. 0  framework/cli/views/webapp/protected/{runtime/hg.hgkeep → tests/fixtures/git-gitkeep}
  88. 0  framework/cli/views/webapp/protected/{migrations/hg.hgkeep → tests/fixtures/hg-hgkeep}
  89. +2 −0  framework/cli/views/webapp/protected/tests/report/git-gitignore
  90. 0  framework/cli/views/webapp/protected/{migrations/git.gitkeep → tests/report/hg-hgkeep}
  91. 0  framework/cli/views/webapp/protected/{messages/hg.hgkeep → tests/unit/git-gitkeep}
  92. 0  framework/cli/views/webapp/protected/{messages/git.gitkeep → tests/unit/hg-hgkeep}
  93. 0  framework/cli/views/webapp/{protected/extensions/hg.hgkeep → themes/classic/views/layouts/git-gitkeep}
  94. 0  framework/cli/views/webapp/{protected/extensions/git.gitkeep → themes/classic/views/layouts/hg-hgkeep}
  95. 0  framework/cli/views/webapp/{protected/commands/shell/hg.hgkeep → themes/classic/views/site/git-gitkeep}
  96. 0  framework/cli/views/webapp/{protected/commands/shell/git.gitkeep → themes/classic/views/site/hg-hgkeep}
  97. 0  framework/cli/views/webapp/{images/hg.hgkeep → themes/classic/views/system/git-gitkeep}
  98. 0  framework/cli/views/webapp/{images/git.gitkeep → themes/classic/views/system/hg-hgkeep}
  99. +18 −12 framework/db/ar/CActiveRecordBehavior.php
  100. 0  framework/logging/{CCombinedLogFilter.php → CChainedLogFilter.php}
  101. +5 −2 framework/logging/CWebLogRoute.php
  102. +0 −2  framework/messages/ar/zii.php
  103. +0 −2  framework/messages/bg/yii.php
  104. +0 −2  framework/messages/bg/zii.php
  105. +0 −2  framework/messages/bs/yii.php
  106. +0 −2  framework/messages/cs/size_units.php
  107. +0 −2  framework/messages/cs/yii.php
  108. +0 −2  framework/messages/cs/zii.php
  109. +0 −1  framework/messages/de/yii.php
  110. +0 −2  framework/messages/de/zii.php
  111. +0 −2  framework/messages/el/size_units.php
  112. +0 −2  framework/messages/el/yii.php
  113. +0 −2  framework/messages/el/zii.php
  114. +1 −2  framework/messages/es/yii.php
  115. +0 −1  framework/messages/es/zii.php
  116. +0 −2  framework/messages/fa_ir/yii.php
  117. +0 −2  framework/messages/fa_ir/zii.php
  118. +0 −2  framework/messages/fr/yii.php
  119. +0 −2  framework/messages/fr/zii.php
  120. +0 −3  framework/messages/he/yii.php
  121. +0 −2  framework/messages/he/zii.php
  122. +0 −2  framework/messages/hu/yii.php
  123. +0 −2  framework/messages/id/yii.php
  124. +0 −2  framework/messages/id/zii.php
  125. +0 −2  framework/messages/it/yii.php
  126. +0 −2  framework/messages/it/zii.php
  127. +0 −2  framework/messages/ja/size_units.php
  128. +0 −2  framework/messages/ja/yii.php
  129. +0 −2  framework/messages/ja/zii.php
  130. +0 −2  framework/messages/kk/size_units.php
  131. +0 −2  framework/messages/kk/yii.php
  132. +0 −2  framework/messages/kk/zii.php
  133. +0 −2  framework/messages/ko_kr/yii.php
  134. +0 −2  framework/messages/ko_kr/zii.php
  135. +0 −2  framework/messages/lt/yii.php
  136. +0 −2  framework/messages/lt/zii.php
  137. +0 −2  framework/messages/lv/yii.php
  138. +0 −2  framework/messages/lv/zii.php
  139. +0 −2  framework/messages/nl/size_units.php
  140. +0 −2  framework/messages/nl/yii.php
  141. +0 −2  framework/messages/nl/zii.php
  142. +0 −2  framework/messages/no/yii.php
  143. +0 −2  framework/messages/pl/yii.php
  144. +0 −2  framework/messages/pl/zii.php
  145. +0 −2  framework/messages/pt/yii.php
  146. +0 −2  framework/messages/pt/zii.php
  147. +0 −2  framework/messages/pt_br/yii.php
  148. +0 −2  framework/messages/pt_br/zii.php
  149. +0 −2  framework/messages/ro/yii.php
  150. +0 −2  framework/messages/ro/zii.php
  151. +0 −2  framework/messages/ru/size_units.php
  152. +0 −2  framework/messages/ru/yii.php
  153. +0 −2  framework/messages/ru/zii.php
  154. +0 −2  framework/messages/sk/size_units.php
  155. +0 −2  framework/messages/sk/yii.php
  156. +0 −2  framework/messages/sk/zii.php
  157. +0 −2  framework/messages/sr_sr/yii.php
  158. +0 −2  framework/messages/sr_sr/zii.php
  159. +0 −2  framework/messages/sr_yu/yii.php
  160. +0 −2  framework/messages/sr_yu/zii.php
  161. +0 −2  framework/messages/sv/yii.php
  162. +0 −2  framework/messages/sv/zii.php
  163. +0 −3  framework/messages/ta_in/yii.php
  164. +0 −3  framework/messages/ta_in/zii.php
  165. +0 −2  framework/messages/th/yii.php
  166. +0 −2  framework/messages/tr/yii.php
  167. +0 −2  framework/messages/tr/zii.php
  168. +0 −2  framework/messages/uk/size_units.php
  169. +0 −2  framework/messages/uk/yii.php
  170. +0 −2  framework/messages/uk/zii.php
  171. +0 −2  framework/messages/vi/yii.php
  172. +0 −2  framework/messages/vi/zii.php
  173. +0 −1  framework/messages/zh_cn/yii.php
  174. +0 −2  framework/messages/zh_cn/zii.php
  175. +0 −2  framework/messages/zh_tw/yii.php
  176. +11 −5 framework/utils/CFileHelper.php
  177. +1 −1  framework/views/ar/log-firebug.php
  178. +1 −1  framework/views/bg/log-firebug.php
  179. +1 −1  framework/views/de/log-firebug.php
  180. +1 −1  framework/views/el/log-firebug.php
  181. +1 −1  framework/views/es/log-firebug.php
  182. +1 −1  framework/views/fr/log-firebug.php
  183. +1 −1  framework/views/he/log-firebug.php
  184. +1 −1  framework/views/hr/log-firebug.php
  185. +1 −1  framework/views/id/log-firebug.php
  186. +1 −1  framework/views/it/log-firebug.php
  187. +1 −1  framework/views/ja/log-firebug.php
  188. +1 −1  framework/views/ko/log-firebug.php
  189. +1 −1  framework/views/log-firebug.php
  190. +1 −1  framework/views/lt/log-firebug.php
  191. +1 −1  framework/views/lv/log-firebug.php
  192. +1 −1  framework/views/nl/log-firebug.php
  193. +1 −1  framework/views/no/log-firebug.php
  194. +1 −1  framework/views/pl/log-firebug.php
  195. +1 −1  framework/views/pt/log-firebug.php
  196. +1 −1  framework/views/pt_br/log-firebug.php
  197. +1 −1  framework/views/ro/log-firebug.php
  198. +1 −1  framework/views/ru/log-firebug.php
  199. +1 −1  framework/views/sk/log-firebug.php
  200. +1 −1  framework/views/sv/log-firebug.php
  201. +1 −1  framework/views/uk/log-firebug.php
  202. +1 −1  framework/views/vi/log-firebug.php
  203. +1 −1  framework/views/zh_cn/log-firebug.php
  204. +1 −1  framework/views/zh_tw/log-firebug.php
  205. +39 −14 framework/web/CHttpRequest.php
  206. +1 −1  framework/web/CSort.php
  207. +1 −1  framework/web/helpers/CGoogleApi.php
  208. +23 −7 framework/web/helpers/CHtml.php
  209. +2 −2 framework/zii/widgets/assets/gridview/jquery.yiigridview.js
  210. +5 −0 framework/zii/widgets/assets/gridview/styles.css
  211. +4 −1 framework/zii/widgets/grid/CButtonColumn.php
  212. +0 −2  requirements/messages/ar/yii.php
  213. +0 −3  requirements/messages/bg/yii.php
  214. +0 −2  requirements/messages/cs/yii.php
  215. +0 −2  requirements/messages/de/yii.php
  216. +0 −2  requirements/messages/de_de/yii.php
  217. +0 −2  requirements/messages/el/yii.php
  218. +0 −2  requirements/messages/es/yii.php
  219. +0 −2  requirements/messages/fr/yii.php
  220. +0 −2  requirements/messages/he/yii.php
  221. +0 −2  requirements/messages/hu/yii.php
  222. +0 −2  requirements/messages/id/yii.php
  223. +0 −2  requirements/messages/it/yii.php
  224. +0 −2  requirements/messages/ja/yii.php
  225. +0 −2  requirements/messages/nl/yii.php
  226. +0 −2  requirements/messages/no/yii.php
  227. +0 −2  requirements/messages/pl/yii.php
  228. +0 −2  requirements/messages/pt/yii.php
  229. +0 −2  requirements/messages/pt_br/yii.php
  230. +0 −2  requirements/messages/ro/yii.php
  231. +0 −2  requirements/messages/ru/yii.php
  232. +0 −2  requirements/messages/sk/yii.php
  233. +0 −2  requirements/messages/sv/yii.php
  234. +0 −1  requirements/messages/ta_in/yii.php
  235. +0 −2  requirements/messages/uk/yii.php
  236. +0 −2  requirements/messages/vi/yii.php
  237. +0 −1  requirements/messages/zh_cn/yii.php
  238. +0 −2  requirements/messages/zh_tw/yii.php
  239. +53 −0 tests/framework/utils/CFileHelperTest.php
View
13 CHANGELOG
@@ -8,17 +8,24 @@ Version 1.1.13 work in progress
- Bug #112: MSSQL: database abstraction layer now uses native transaction support of the SQLSRV driver (resurtm)
- Bug #124: Added CMysqlCommandBuilder to handle JOIN directive on update commands correctly (cebe, DaSourcerer)
- Bug #126: Fixed CWebUser::getReturnUrl(), allowing to determine default URL correctly, if CUrlManager::showScriptName is set to false (klimov-paul)
+- Bug #276: Tweaked CGridView stylesheet to include a hover style for the selected row (acorncom)
- Bug #810: Gii now adds a number to the end of relation name if same named relation already exists instead of not generating relation (n30kill, samdark)
- Bug #837: Fixed method CDbCriteria::__wakeup(), allowing to keep custom names for params and update all string parts for automatic params (klimov-paul)
- Bug #959: CConsoleApplication: bug where non-lowercase keys cannot be found in $commandMap fixed (resurtm)
- Bug #962: Fixed handling of negative timestamps in CDateFormatter::format() (johnmendonca)
- Bug #1095: Added missing retry_interval parameter of addServer function call in CMemCache (Lisio)
- Bug #1181: Fixed can read but not save binary data e.g. BYTEA on PostgreSQL (karmakaze)
+- Bug #1212: Added missing .gitignore files to the application generated by WebAppCommand (resurtm)
- Bug #1249: CHttpRequest::sendFile() outputs malformed file content in some specific circumstances (andyhu)
- Bug #1330: SQLite column default value was incorrect for column of type string and DEFAULT NULL (cebe)
+- Bug #1344: Fixed URL problem in CGridView when enableHistory was true and unicode chars where used (mdomba, Redjik)
+- Bug #1347: CDbTestCase: table name in fixtures list enclosed into double curly brackets (e.g. 'tasks'=>':{{task}}') didn't worked properly (resurtm)
- Bug #1351: CClientScript::registerMetaTag() now allows to register multiple meta tags with the same set of attributes (klimov-paul)
- Bug #1364: Empty CHtml::$errorCss cause class attribute rendering errors (creocoder)
-- Bug #1347: CDbTestCase: table name in fixtures list enclosed into double curly brackets (e.g. 'tasks'=>':{{task}}') didn't worked properly (resurtm)
+- Bug #1444: Fixed CGoogleApi::register call to registerScriptFile (mdomba)
+- Bug #1465: Fixed CHtml::beginForm() when CActiveForm with method GET and ajaxButton is used (mdomba)
+- Bug #1485 CSort does not quote table alias when using CDbCriteria (undsoft)
+- Enh #104: Added CWebLogRoute::$collapsedInFireBug property to control whether the log should be collapsed by default in Firebug (marcovtwout)
- Enh #117: Added CPhpMessageSource::$extensionPaths to allow extensions, that do not have a base class to use as category prefix, to register message source (rcoelho, cebe)
- Enh #291: CFormatter::formatDate and formatDateTime now also accept strings in strtotime() format (francis_tm, cebe)
- Enh #486: CHttpSession::$gCProbability and CDbHttpSession::$gCProbability are floats now. Minimal possible $gCProbability value has been changed to the ≈0.00000005% (1/2147483647), was integer 1% before, default value left unchanged (1%) (resurtm)
@@ -38,10 +45,14 @@ Version 1.1.13 work in progress
- Enh #1369: Added CCheckBoxColumn::disabled that accepts PHP expression or anonymous function determining if checkbox for the row should be disabled (sucotronic)
- Enh #1386: Second parameter of the CHtml::value() is now able to accept anonymous function which calculates value to be used (Qiang, resurtm)
- Enh #1396: Added 'text/csv' mime-type for the 'csv' file extension in utils/mimeTypes.php (effectively used by e.g. CHttpRequest::sendFile()) (rawtaz)
+- Enh #1426: Behaviors are now affecting memory consumption significantly less (slavcodev, creocoder, Qiang, samdark)
+- Enh #1443: Added CHttpRequest::getRawBody() that allows reading RAW HTTP request body multiple times (itamar82, resurtm, samdark)
- Enh: Fixed the check for ajaxUpdate false value in jquery.yiilistview.js as that never happens (mdomba)
- Enh: Requirements checker: added check for Oracle database (pdo_oci extension) and MSSQL (pdo_dblib, pdo_sqlsrv and pdo_mssql extensions) (resurtm)
- Enh: Added CChainedLogFilter class to allow adding multiple filters to a logroute (cebe)
- Enh: Allow CDataProvider to use custom pagination and sorter (creocoder)
+- Enh: Value of the CHtml::activeTextArea() can now be set through $htmlOptions['value'] (resurtm)
+- Enh: Allow to customize CHtml::error() container tag (creocoder)
- Chg: MSSQL unit tests updated and actualized, added SQLSRV driver support (resurtm)
- Chg: Added Oracle unit tests (resurtm)
- Chg: Updated CHttpCacheFilter to use dates as specified by RFC 1123 (bramp)
View
12 docs/guide/caching.fragment.txt
@@ -159,10 +159,12 @@ post content in an outer fragment cache.
Different caching options can be set to the nested caches. For example,
the inner cache and the outer cache in the above example can be set with
-different duration values. When the data cached in the outer cache is
-invalidated, the inner cache may still provide valid inner fragment.
-However, it is not true vice versa. If the outer cache contains valid data,
-it will always provide the cached copy, even though the content in the
-inner cache already expires.
+different duration values. Even when the data cached in the outer cache is
+invalidated, the inner cache may still provide the valid inner fragment.
+However, it is not true vice versa. If the outer cache is evaluated to be valid,
+it will continue to provide the same cached copy even after the content in the
+inner cache has been invalidated.
+You must be careful in setting the durations or the dependencies of the nested caches,
+otherwise the outdated inner fragments may be kept in the outer fragment.
<div class="revision">$Id$</div>
View
8 docs/guide/database.arr.txt
@@ -547,6 +547,14 @@ $posts=Post::model()->findAll(array(
The above query will bring back all posts together with their approved comments. Note that `comments` refers to the relation name, while `recently` and `approved` refer to two named scopes declared in the `Comment` model class. The relation name and the named scopes should be separated by colons.
+Occasionally you may need to retrieve a scoped relationship using a lazy-loading approach, instead of the normal eager loading method shown above. In that case, the following syntax will do what you need:
+
+~~
+[php]
+// note the repetition of the relationship name, which is necessary
+$approvedComments = $post->comments('comments:approved');
+~~
+
Named scopes can also be specified in the `with` option of the relational rules declared in [CActiveRecord::relations()]. In the following example, if we access `$user->posts`, it would bring back all *approved* comments of the posts.
~~~
View
8 docs/guide/ja/caching.fragment.txt
@@ -124,11 +124,11 @@ duration オプションを設定しない場合、この値はデフォルト
...他の HTML コンテンツ...
~~~
-ネストされたキャッシュに異なるキャッシュオプションを設定することもできます
+ネストされたキャッシュには、異なるキャッシュオプションを設定することができます
たとえば、上記の例における内側のキャッシュと外側のキャッシュに対して、異なる持続期間の値を設定する事が可能です。
-外側のキャッシュでキャッシュされたデータが無効にされる場合でも、内側のキャッシュが有効な内側の断片を提供できる可能性があります
+これによって、外側のキャッシュでキャッシュされたデータが無効にされる場合でも、内側のキャッシュが有効な内側の断片を提供することが可能になります
しかし、その逆は真ではありません。
-外側のキャッシュが有効なデータを保持している場合は、内側のキャッシュコンテンツの持続期間が終了していたとしても、外側のキャッシュは常にキャッシュされたコピーを提供します
-(訳註: ネストされたキャッシュの持続時間や依存関係の設定を間違うと、無効になった内側のキャッシュデータが外側のキャッシュに残り続けることになるので、注意が必要です。)
+外側のキャッシュが有効であると判断された場合には、内側のキャッシュが無効になった後でも、外側のキャッシュが古くなったコンテンツのコピーを提供し続けます
+ネストされたキャッシュの持続時間や依存関係の設定を間違うと、無効になった内側のキャッシュデータが外側のキャッシュに残り続けることになるので、注意が必要です。
<div class="revision">$Id$</div>
View
15 docs/guide/ja/database.arr.txt
@@ -503,12 +503,21 @@ $posts=Post::model()->findAll(array(
));
~~~
-上記クエリは、全ての記事とそれらの承認済みコメントを返します。
+上記のクエリは、全ての記事とそれらの承認済みコメントを返します。
`comments` はリレーション名を、`recently` と `approved` は `Comment` モデルクラスで宣言された二つの名前付きスコープを示している事に注意してください。
リレーション名と名前付きスコープはコロンで区切ります。
-また、Named Scope は [CActiveRecord::relations()] で宣言されたリレーションルールの `with` オプション中で指定することもできます。
-以下の例で、`$user->posts` にアクセスすると、その記事の全ての **承認された (approved)** コメントを返します。
+時によっては、名前付きスコープを適用したリレーションを、上記で示されているイーガーローディングの方法ではなく、レイジーローディングの技法を使って取得する必要があるかも知れません。
+その場合には、下記の文法によって目的を達することが出来ます。
+
+~~
+[php]
+// リレーション名の繰り返しに注目して下さい。これは必要です。
+$approvedComments = $post->comments('comments:approved');
+~~
+
+また、名前付きスコープは [CActiveRecord::relations()] で宣言されたリレーションルールの `with` オプションの中で指定することもできます。
+以下の例で、`$user->posts` にアクセスすると、その記事の全ての **承認された (approved)** コメントが返されます。
~~~
[php]
View
19 docs/guide/pt_br/topics.auth.txt
@@ -353,16 +353,15 @@ Para maior flexibilidade o Yii também permite que um papel seja constituído de
outros papéis e/ou operações, uma tarefa seja constituída de outras tarefas e uma
operação seja constituída de outras operações.
-An authorization item is uniquely identified by its name.
-
-An authorization item may be associated with a *business rule*. A
-business rule is a piece of PHP code that will be executed when performing
-access checking with respect to the item. Only when the execution returns
-true, will the user be considered to have the permission represented by the
-item. For example, when defining an operation `updatePost`, we would like
-to add a business rule that checks if the user ID is the same as the post's
-author ID so that only the author himself can have the permission to update
-a post.
+Um item de autorização é identificado exclusivamente por seu nome.
+
+Um item de autorização pode ser associado a uma *business rule* (regra de negócio). Uma
+business rule é um código em PHP que vai ser executado quando ocorrer a verificação
+de acesso com respeito ao item. O usuário terá a permissão de acesso representada
+pelo item somente quando a execução retornar true. Por exemplo, ao definir uma
+operação `updatePost` (atualizarPost), nós gostaríamos de adicionar uma business
+rule que verifique se ID do usuário é o mesmo que do autor do post de modo que
+somente o próprio autor possa ter permissão de atualizar um post.
Using authorization items, we can build up an *authorization
hierarchy*. An item `A` is a parent of another item `B` in the
View
2  docs/guide/uk/basics.application.txt
@@ -188,4 +188,4 @@ Yii визначає набір компонентів ядра, що надаю
7. Виклик події [onEndRequest|CApplication::onEndRequest].
-<div class="revision">$Id: basics.application.txt 3251 2011-06-01 00:24:06Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/basics.best-practices.txt
@@ -134,4 +134,4 @@ MVC — **повторне використання коду та розділе
даних та бізнес-логіка, які там міститься, зазвичай доволі специфічні для конкретного
додатку. Логіка контролеру, навпаки, доволі типова та може бути винесена у базові класи.
-<div class="revision">$Id: basics.best-practices.txt 2795 2010-12-31 00:22:33Z alexander.makarow $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/basics.component.txt
@@ -173,4 +173,4 @@ $component->test();
Наприклад, поведінка має властивість із іменем `xyz` і привʼязана до компонента
`$a`. Тоді ми можемо використовувати вираз `$a->xyz` для доступу до властивості.
-<div class="revision">$Id: basics.component.txt 2890 2011-01-18 15:58:34Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/basics.controller.txt
@@ -320,4 +320,4 @@ class PostController extends CController
окрім `edit` і `create`. Якщо оператори `'+'` і `'-'` не зазначені, фільтр буде
застосований до всіх дій.
-<div class="revision">$Id: basics.controller.txt 3251 2011-06-01 00:24:06Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/basics.convention.txt
@@ -140,4 +140,4 @@ Yii рекомендує іменувати змінні, функції та к
коли таблиці нашого додатку містяться в БД, що використовується одночасно іншими
додатками.
-<div class="revision">$Id: basics.convention.txt 3225 2011-05-17 23:23:05Z alexander.makarow $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/basics.entry.txt
@@ -25,4 +25,4 @@ Yii::createWebApplication($configfile)->run();
Додаток може виконуватися у режимі відладки (debug) або робочому режимі (production) залежно від значення константи `YII_DEBUG`. За замовчанням, її значення встановлене в `false`, що означає робочий режим. Для запуску в режимі відладки потрібно встановити значення константи в `true` до підключення файлу `yii.php`. Робота додатку в режимі відладки не настільки ефективна через ведення багатьох внутрішніх журналів логування. З іншого боку, даний режим дуже корисний на стадії розробки, тому що надає більшу кількість інформації для відладки при виникненні помилок.
-<div class="revision">$Id: basics.entry.txt 3251 2011-06-01 00:24:06Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/basics.model.txt
@@ -25,4 +25,4 @@ Active Record (AR) — це шаблон проектування, який ви
Поля цього рядку відповідають властивостям AR-обʼєкту. Детальніше з AR-моделлю можна
ознайомитись у розділі [Active Record](/doc/guide/database.ar).
-<div class="revision">$Id: basics.model.txt 3251 2011-06-01 00:24:06Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/basics.module.txt
@@ -120,4 +120,4 @@ $postPerPage=Yii::app()->controller->module->postPerPage;
Для звертання до дії контролера у дочірньому модулі використовується маршрут
`parentModuleID/childModuleID/controllerID/actionID`.
-<div class="revision">$Id: basics.module.txt 2890 2011-01-18 15:58:34Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/basics.mvc.txt
@@ -44,4 +44,4 @@ MVC спрямований на відділення бізнес-логіки
10. Сформоване представлення додається у [макет сторінки](/doc/guide/basics.view#layout);
11. Дія завершує формування представлення та виводить результат користувачу.
-<div class="revision">$Id: basics.mvc.txt 3321 2011-06-26 12:54:22Z mdomba $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/basics.namespace.txt
@@ -255,4 +255,4 @@ return array(
~~~
-<div class="revision">$Id: basics.namespace.txt 3086 2011-03-15 00:04:53Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/basics.view.txt
@@ -142,4 +142,4 @@ Yii надає стандартний набір системних предст
`framework/views`. Їх можні змінити, створивши файли представлень з
тими же назвами у директорії `protected/views/system`.
-<div class="revision">$Id: basics.view.txt 3251 2011-06-01 00:24:06Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/basics.workflow.txt
@@ -39,4 +39,4 @@
Для кожного із представлених етапів може знадобитися створення та застосування тестів.
-<div class="revision">$Id: basics.workflow.txt 2718 2010-12-07 15:17:04Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/caching.data.txt
@@ -184,4 +184,4 @@ $posts = Post::model()->cache(1000, $dependency, 2)->with('comments')->findAll(a
У деяких сховищах кешу є обмеження на розмір збережених даних. Приміром, в memcache максимальний розмір однієї одиниці даних дорівнює одному мегабайту. Тому, якщо розмір результату запита перевищить дане обмеження, то кешування не спрацює.
-<div class="revision">$Id: caching.data.txt 3125 2011-03-25 17:05:31Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/caching.dynamic.txt
@@ -22,4 +22,4 @@
У коді вище, `$callback` — це коректний зворотний PHP-виклик. Це може бути рядок з імʼям методу поточного контролера або глобальної функції. Також це може бути масив, який посилається на метод класу. Будь-які додаткові параметри у методі [renderDynamic()|CController::renderDynamic()] повинні бути передані зворотньому виклику. Зворотний виклик повинен не відображати динамічний вміст, а повернути його.
-<div class="revision">$Id: caching.dynamic.txt 163 2008-11-05 12:51:48Z weizhuo $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/caching.fragment.txt
@@ -102,4 +102,4 @@
Параметри кешування можуть бути різними для вкладених кешей. Наприклад, внутрішній і зовнішній кеші у вищенаведеному прикладі можуть мати різні терміни зберігання. Коли кешовані дані у зовнішньому кеші стають недійсними, внутрішній кеш все ще може видавати дійсні фрагменти. Тим не менш, це *невірно* у зворотньому випадку. Якщо зовнішній кеш містить справжні дані, він завжди буде давати кешовану копію, навіть якщо у вмісті внутрішнього кеша закінчився термін дії (воно застаріло).
-<div class="revision">$Id: caching.fragment.txt 3315 2011-06-24 15:18:11Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/caching.overview.txt
@@ -50,4 +50,4 @@ Yii забезпечує різні кеш-компоненти, кешуючи
> Note|Примітка: За визначенням, кеш - енергозалежне середовище. Тому немає гарантій збереження кешованих даних, навіть якщо вони не старіють. Тому не використовуйте кеш як постійне сховище даних (наприклад, не використовуйте кеш для зберігання даних сесій).
-<div class="revision">$Id: caching.overview.txt 2890 2011-01-18 15:58:34Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/caching.page.txt
@@ -82,4 +82,4 @@ public function filters()
запровадження заголовків кешу може допомогти індексації сайту,
оскільки вони зменшують кількість сторінок, які повинні бути оброблені.
-<div class="revision">$Id: caching.page.txt 1014 2009-05-10 12:25:55Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
4 docs/guide/uk/changes.txt
@@ -27,7 +27,7 @@
Версія 1.1.6
------------
- * [Доданий *будівник* запитів](/doc/guide/database.query-builder)
+ * [Додано конструктор запитів](/doc/guide/database.query-builder)
* [Додані міграції](/doc/guide/database.migration)
* [Кращі практики MVC](/doc/guide/basics.best-practices)
* [Консольним командам додана підтримка анонімних параметрів та глобальних опцій](/doc/guide/topics.console)
@@ -90,4 +90,4 @@
* Псевдонім для головної таблиці в AR запиті тепер назавжди рівен 't'.
-<div class="revision">$Id: changes.txt 3526 2012-01-01 03:18:43Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/database.ar.txt
@@ -491,4 +491,4 @@ $contents=Content::model()->findAll();
> Note|Примітка: Як група умов за замовчуванням, так і іменована група умов застосовуються тільки до запитів типу `SELECT` та ігноруються при запитах виду `INSERT`, `UPDATE` або `DELETE`. Також, не можна використовувати AR-модель для запитів у методах, що відповідають за оголошення її ж груп умов (як іменованої, так і групи умов за замовчуванням).
-<div class="revision">$Id: database.ar.txt 3318 2011-06-24 21:40:34Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
18 docs/guide/uk/database.arr.txt
@@ -420,6 +420,22 @@ $users=User::model()->findAll(array(
),
),
));
+
+class Post extends CActiveRecord
+{
+ ......
+
+ public function rated($rating)
+ {
+ $this->getDbCriteria()->mergeWith(array(
+ 'condition'=>'rating=:rating',
+ 'params'=>array(':rating'=>$rating),
+ ));
+ return $this;
+ }
+
+ ......
+}
~~~
Реляційні запити з through
@@ -557,4 +573,4 @@ $teacher=User::model()->findByPk(1);
$students=$teacher->students;
~~~
-<div class="revision">$Id: database.arr.txt 3523 2011-12-30 20:32:29Z alexander.makarow $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/database.dao.txt
@@ -203,4 +203,4 @@ $sql='SELECT * FROM {{user}}';
$users=$connection->createCommand($sql)->queryAll();
~~~
-<div class="revision">$Id: database.dao.txt 2890 2011-01-18 15:58:34Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/database.migration.txt
@@ -294,4 +294,4 @@ return array(
Тепер, при запуску команди `migrate`, зазначені вище налаштування будуть застосовані без введення яких-небудь додаткових параметрів.
-<div class="revision">$Id: database.migration.txt 3450 2011-11-20 22:52:07Z alexander.makarow $</div>
+<div class="revision">$Id$</div>
View
4 docs/guide/uk/database.overview.txt
@@ -6,7 +6,7 @@ Yii надає розробнику потужний інструмент для
Yii DAO — це надбудова над розширенням PHP Data Objects (PDO),
що дозволяє працювати із різними СУБД через єдиний інтерфейс. Додатки, розроблені з використанням DAO, можуть легко переключатися з однієї СУБД на іншу без необхідності виправлення коду, що відповідає за доступ до даних
-Будівник запитів Yii надає обʼєктно-орієнтована спосіб
+Конструктор запитів Yii надає обʼєктно-орієнтований спосіб
побудови SQL-запитів, що дозволяє знизити ризик SQL-інʼєкцій.
Yii Active Record (AR) реалізує перероблений підхід обʼєктно-реляційного відображення (ORM) і ще більше спрощує роботу з
@@ -14,4 +14,4 @@ Yii Active Record (AR) реалізує перероблений підхід о
Незважаючи на те, що вбудовані в Yii можливості для роботи з БД підходять практично для всіх завдань, що стосуються роботи з БД, також можливе використання й інших бібліотек для роботи з базами даних. Yii із самого початку був спроектований таким чином, щоб розробник мав можливість роботи зі сторонніми бібліотеками.
-<div class="revision">$Id: database.overview.txt 2666 2010-11-17 19:56:48Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
26 docs/guide/uk/database.query-builder.txt
@@ -1,7 +1,7 @@
-Будівник запитів
+Конструктор запитів
================
-Будівник запитів Yii надає обʼєктно-орієнтований спосіб написання SQL-запитів. Він дозволяє розробнику використовувати методи і властивості класу для того, щоб вказати окремі частини SQL запиту. Потім, будівник збирає окремі частини в SQL запит, який може бути потім виконаний викликом методів DAO, як описано в «[Обʼєкти доступу до даних (DAO)](/doc/guide/database.dao)». Наступний код показує типове використання будівника запитів для отримання SQL-запиту SELECT:
+Конструктор запитів Yii надає обʼєктно-орієнтований спосіб написання SQL-запитів. Він дозволяє розробнику використовувати методи і властивості класу для того, щоб вказати окремі частини SQL запиту. Потім, конструктор збирає окремі частини в SQL запит, який може бути потім виконаний викликом методів DAO, як описано в «[Обʼєкти доступу до даних (DAO)](/doc/guide/database.dao)». Наступний код показує типове використання конструктора запитів для отримання SQL-запиту SELECT:
~~~
[php]
@@ -13,7 +13,7 @@ $user = Yii::app()->db->createCommand()
->queryRow();
~~~
-Будівник запитів найкраще використовувати в тому випадку, коли необхідно зібрати SQL запит слідуючи деякій умовній логіці додатку. Основними перевагами будівника запитів є те, що він:
+Конструктор запитів найкраще використовувати в тому випадку, коли необхідно зібрати SQL запит слідуючи деякій умовній логіці додатку. Основними перевагами конструктора запитів є те, що він:
* Дозволяє зібрати складний SQL-запит програмно.
@@ -25,7 +25,7 @@ $user = Yii::app()->db->createCommand()
Використовувати побудовник запитів не обовʼязково. Якщо ваші запити прості, легше і швидше використовувати саме SQL.
-> Note|Примітка: Будівник запитів не може бути використаний для зміни існуючого запиту, заданого за допомогою SQL. Наприклад, не буде працювати наступний код:
+> Note|Примітка: Конструктор запитів не може бути використаний для зміни існуючого запиту, заданого за допомогою SQL. Наприклад, не буде працювати наступний код:
>
> ~~~
> [php]
@@ -34,13 +34,13 @@ $user = Yii::app()->db->createCommand()
> $command->where('id=:id', array(':id'=>$id));
> ~~~
>
-> Не варто використовувати для одного запиту і SQL, і будівник запитів.
+> Не варто використовувати для одного запиту і SQL, і конструктор запитів.
-Підготовка будівника запитів
+Підготовка конструктора запитів
----------------------------
-Будівник запитів реалізований у класі [CDbCommand] - головному класі для роботи з базою даних, описаному в «[Обʼєкти доступу до даних (DAO)](/doc/guide/database.dao)».
+Конструктор запитів реалізований у класі [CDbCommand] - головному класі для роботи з базою даних, описаному в «[Обʼєкти доступу до даних (DAO)](/doc/guide/database.dao)».
Для того, щоб почати його використовувати необхідно створити новий екземпляр [CDbCommand]:
@@ -51,12 +51,12 @@ $command = Yii::app()->db->createCommand();
Тут ми використовуємо `Yii::app()->db` для отримання зʼєднання з базою даних і, потім, викликаємо [CDbConnection::createCommand()] для створення екземпляра команди.
-Варто зазначити, що замість передачі `createCommand()` цілого SQL, як це робилося [у випадку з DAO](/doc/guide/database.dao), ми не вказуємо параметр так як ми зберемо окремі частини запиту за допомогою методів будівника, які описані далі.
+Варто зазначити, що замість передачі `createCommand()` цілого SQL, як це робилося [у випадку із DAO](/doc/guide/database.dao), ми не вказуємо параметр, так як ми зберемо окремі частини запиту за допомогою методів конструктора, які описані далі.
Запити отримання даних
----------------------
-Запити на отримання даних відповідають в SQL запитам SELECT. У будівника є ряд методів для збирання окремих частин SELECT запиту. Тому що всі ці методи повертають примірник [CDbCommand], то ми можемо використовувати їх ланцюжком, як показано у прикладі на початку цього розділу.
+Запити на отримання даних відповідають в SQL запитам SELECT. У конструктора є ряд методів для збирання окремих частин SELECT запиту. Тому що всі ці методи повертають примірник [CDbCommand], то ми можемо використовувати їх ланцюжком, як показано у прикладі на початку цього розділу.
* [select()|CDbCommand::select() ]: частина запиту після SELECT.
* [selectDistinct()|CDbCommand::selectDistinct]: частина запиту після SELECT. Додає DISTINCT.
@@ -240,7 +240,7 @@ function limit($limit, $offset=null)
function offset($offset)
~~~
-Методи [limit()|CDbCommand::limit() ] і [offset()|CDbCommand::offset() ] задають частини запиту, що йдуть після `LIMIT` і `OFFSET`. Варто зазначити, що не всі СУБД підтримують саме синтаксис `LIMIT` і `OFFSET`. Якщо він не підтримується, то будівник запитів переписує весь SQL запит для досягнення подібного ефекту.
+Методи [limit()|CDbCommand::limit() ] і [offset()|CDbCommand::offset() ] задають частини запиту, що йдуть після `LIMIT` і `OFFSET`. Варто зазначити, що не всі СУБД підтримують саме синтаксис `LIMIT` і `OFFSET`. Якщо він не підтримується, то конструктор запитів переписує весь SQL запит для досягнення подібного ефекту.
Кілька прикладів:
@@ -356,7 +356,7 @@ $users = Yii::app()->db->createCommand()
### Отримання SQL
-Крім виконання запитів, які ми створили за допомогою будівника, можна також отримати їх SQL. Зробити це можна за допомогою [CDbCommand::getText()].
+Крім виконання запитів, які ми створили за допомогою конструктора, можна також отримати їх SQL. Зробити це можна за допомогою [CDbCommand::getText()].
~~~
[php]
@@ -370,7 +370,7 @@ $sql = Yii::app()->db->createCommand()
### Альтернативний синтаксис побудови запитів
-Іноді використання ланцюжка викликів може бути неоптимальним рішенням. Будівник запитів Yii дозволяє створити запит шляхом завдання полів обʼєкта. Для кожного методу будівника запитів є відповідне поле з таким же імʼям. Присвоєння значення полю еквівалентно виклику відповідного метода. Приміром, наведені нижче рядки еквівалентні, якщо `$command` — обʼєкт [CDbCommand]:
+Іноді використання ланцюжка викликів може бути неоптимальним рішенням. Конструктор запитів Yii дозволяє створити запит шляхом завдання полів обʼєкта. Для кожного методу конструктора запитів є відповідне поле з таким же імʼям. Присвоєння значення полю еквівалентно виклику відповідного метода. Приміром, наведені нижче рядки еквівалентні, якщо `$command` — обʼєкт [CDbCommand]:
~~~
[php]
@@ -744,4 +744,4 @@ function dropIndex($name, $table)
dropIndex('idx_username', 'tbl_user')
~~~
-<div class="revision">$Id: database.query-builder.txt 3408 2011-09-28 20:50:28Z alexander.makarow $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/extension.create.txt
@@ -171,4 +171,4 @@ class MyCommand extends CConsoleCommand
Розробка загального компонента аналогічна написання класу. Компонент, як і модуль, повинен бути самодостатнім і зручним для використання розробниками.
-<div class="revision">$Id: extension.create.txt 1423 2009-09-28 01:54:38Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/extension.integration.txt
@@ -59,4 +59,4 @@ Yii::createWebApplication('шлях/до/config.php');
Тепер при розробці сторонньої системи можна використовувати більшість можливостей Yii. Наприклад, для отримання доступу до екземпляра додатку можна використовувати `Yii::app()`. Також можна використовувати DAO, ActiveRecord моделі, валідацію і т.д.
-<div class="revision">$Id: extension.integration.txt 3431 2011-11-03 00:53:44Z alexander.makarow@gmail.com $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/extension.overview.txt
@@ -18,4 +18,4 @@
Втім, розширення може і не відповідати ні одній із перерахованих категорій. Yii спочатку був спроектований таким чином, щоб будь-яку його частину можна було змінити і доповнити для будь-яких потреб.
-<div class="revision">$Id: extension.overview.txt 2739 2010-12-14 01:50:04Z weizhuo $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/extension.use.txt
@@ -257,4 +257,4 @@ Yii::import('ext.xyz.XyzClass');
Тепер ми можемо створювати екземпляр цього класу, налаштувати його властивості, викликати його методи. Крім того, можна його розширити для створення дочірніх класів.
-<div class="revision">$Id: extension.use.txt 2890 2011-01-18 15:58:34Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
6 docs/guide/uk/form.action.txt
@@ -30,7 +30,7 @@ public function actionLogin()
яка відправила користувача на сторінку авторизації. Якщо ж результат перевірки негативний або дія
виконується вперше, то відображаємо користувачу представлення `login`, яке розглянемо в наступному розділі.
-> Tip|Підказка: У дії `login` ми використовуємо `Yii::app()->user->returnUrl`, щоб отримати URL сторінки, яка вимагала авторизацію. Компонент `Yii::app()->user` є підкласом [CWebUser], який дозволяє отримати інформацію, що зберігається у сесії користувача (наприклад імʼя користувача, статус та ін.) Детально ознайомитися з темою можна в розділі [Аутентифікація і авторизація](/doc/guide/topics.auth).
+> Tip|Підказка: У дії `login` ми використовуємо `Yii::app()->user->returnUrl`, щоб отримати URL сторінки, яка вимагала авторизацію. Компонент `Yii::app()->user` є підкласом [CWebUser], який дозволяє отримати інформацію, що зберігається у сесії користувача (наприклад імʼя користувача, статус та ін.). Детально ознайомитися з темою можна в розділі [Аутентифікація і авторизація](/doc/guide/topics.auth).
Звернемо особливу увагу на такий вираз у дії `login`:
@@ -39,7 +39,7 @@ public function actionLogin()
$model->attributes=$_POST['LoginForm'];
~~~
-Як ми вже говорили в підрозділі [Безпечне присвоювання значень атрибутів](/doc/guide/form.model#securing-attribute-assignments), цей вираз заповнює модель даними, які вводить користувач. Властивість `attributes` визначається класом [CModel], який очікує отримати масив пар імʼя-значення, щоб потім привласнити кожному атрибуту моделі відповідне значення. Отже, якщо `$_POST['LoginForm']` містить такий масив, то вираз, який ми навели вище, буде еквівалентно наступному коду (вважаємо, що масив містить всі потрібні нам атрибути):
+Як ми вже говорили в підрозділі [Безпечне присвоювання значень атрибутів](/doc/guide/form.model#securing-attribute-assignments), цей вираз заповнює модель даними, які вводить користувач. Властивість `attributes` визначається класом [CModel], який очікує отримати масив пар імʼя-значення, щоб потім привласнити кожному атрибуту моделі відповідне значення. Отже, якщо `$_POST['LoginForm']` містить такий масив, то вираз, який ми навели вище, буде еквівалентний наступному коду (вважаємо, що масив містить всі потрібні нам атрибути):
~~~
[php]
@@ -55,4 +55,4 @@ $model->rememberMe=$_POST['LoginForm']['rememberMe'];
Тепер нам залишилося тільки створити представлення `login`, яке буде містити HTML форму з необхідними полями.
-<div class="revision">$Id: form.action.txt 1837 2010-02-24 22:49:51Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
16 docs/guide/uk/form.builder.txt
@@ -1,13 +1,13 @@
-Використання будівника форм
-===========================
+Використання конструктора форм
+==============================
-При створенні HTML форм часто доводиться писати досить велику кількість повторюваного коду, який майже неможливо використовувати в інших проектах. Приміром, для кожного поля вводу нам необхідно вивести опис і можливі помилки валідації. Для того, щоб зробити можливим повторне використання подібного коду, можна використовувати будівник форм.
+При створенні HTML форм часто доводиться писати досить велику кількість повторюваного коду, який майже неможливо використовувати в інших проектах. Приміром, для кожного поля вводу нам необхідно вивести опис і можливі помилки валідації. Для того, щоб зробити можливим повторне використання подібного коду, можна використовувати конструктор форм.
Загальна ідея
-------------
-Будівник форм використовує обʼєкт [CForm] для опису параметрів, необхідних для створення HTML форми, таких як моделі і поля, використовувані у формі, а також параметри побудови самої форми
+Конструктор форм використовує обʼєкт [CForm] для опису параметрів, необхідних для створення HTML форми, таких як моделі і поля, використовувані у формі, а також параметри побудови самої форми.
Розробнику достатньо створити обʼєкт [CForm], задати його параметри
і викликати його метод для побудови форми.
@@ -93,7 +93,7 @@ return array(
Опис елементів форми
--------------------
-При використанні будівника форм, замість написання розмітки ми, головним чином, описуємо елементи форми. У цьому підрозділі ми опишемо, як задати властивість [CForm::elements]. Ми не будемо описувати [CForm::buttons] так як конфігурація цієї властивості практично нічим не відрізняється від [CForm::elements].
+При використанні конструктора форм, замість написання розмітки ми, головним чином, описуємо елементи форми. У цьому підрозділі ми опишемо, як задати властивість [CForm::elements]. Ми не будемо описувати [CForm::buttons] так як конфігурація цієї властивості практично нічим не відрізняється від [CForm::elements].
Властивість [CForm::elements] є масивом, кожен елемент якого відповідає елементу форми. Це може бути поле вводу, статичний текст або вкладена форма.
@@ -352,7 +352,7 @@ return array(
Свій рендеринг форми
--------------------
-Головна перевага при використанні будівника форм - розділення логіки (конфігурація форми зберігається у окремому файлі) та представлення (метод [CForm::render]). В результаті, ми можемо налаштувати рендеринг форми або перевизначенням методу [CForm::render], або своїм представленням. Обидва варіанти дозволяють не змінювати конфігурацію
+Головна перевага при використанні конструктора форм - розділення логіки (конфігурація форми зберігається у окремому файлі) та представлення (метод [CForm::render]). В результаті, ми можемо налаштувати рендеринг форми або перевизначенням методу [CForm::render], або своїм представленням. Обидва варіанти дозволяють не змінювати конфігурацію
і дозволяють використовувати її повторно.
При перевизначенні [CForm::render], необхідно, головним чином, обійти колекції [CForm::elements] і [CForm::buttons] і викликати метод [CFormElement::render] для кожного елементу. Наприклад:
@@ -412,6 +412,6 @@ $this->renderPartial('_form', array('form'=>$form));
які-небудь складні елементи інтерфейса
~~~
-У цьому випадку будівник форм не дуже ефективний, оскільки нам доводиться описувати ті ж обсяги коду форми. Проте, перевага є. Вона в тому, що форма, описана в окремому файлі конфігурації, дозволяє розробнику сфокусуватися на логіці.
+У цьому випадку конструктор форм не дуже ефективний, оскільки нам доводиться описувати ті ж обсяги коду форми. Проте, перевага є. Вона в тому, що форма, описана в окремому файлі конфігурації, дозволяє розробнику сфокусуватися на логіці.
-<div class="revision">$Id: form.builder.txt 2890 2011-01-18 15:58:34Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
4 docs/guide/uk/form.model.txt
@@ -100,7 +100,7 @@ array('AttributeList', 'Validator', 'on'=>'ScenarioList', …додаткові
Починаючи із версії 1.1.11, сценарії можна вносити до "чорних" списків.
Якщо ви не бажаєте виконувати валідацію для деякого правила, коли активні конкрентні сценарії,
ви можете визначити параметр `except`, що містить їхні імена.
-Синтакст такий же, як і для параметра `on`.
+Синтаксис такий же, як і для параметра `on`.
Перелік сценаріїв (параметри `on` та `except`) може бути визначений у двох різних формах,
які означають одне й те саме:
@@ -357,4 +357,4 @@ public function rules()
Далі ми побачимо, що можливість вказівки міток у моделі даних дозволяє швидко створювати складні форми.
-<div class="revision">$Id: form.model.txt 3482 2011-12-13 09:41:36Z mdomba $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/form.overview.txt
@@ -16,4 +16,4 @@ Yii суттєво спрощує цей процес за рахунок сво
Далі ми докладно опишемо кожний із цих кроків.
-<div class="revision">$Id: form.overview.txt 163 2008-11-05 12:51:48Z weizhuo $</div>
+<div class="revision">$Id$</div>
View
4 docs/guide/uk/form.table.txt
@@ -54,6 +54,6 @@ public function actionBatchUpdate()
Зверніть увагу, що вище ми використовуємо `"[$i]name"` замість `"name"` у якості другого параметра при виклику методу [CHtml::activeTextField].
-У випадку, якщо виникають помилки валідації, відповідні поля вводу будуть підсвічені автоматично, як і у випадку роботи з однією моделлю, розглянутої раніше.
+У випадку, якщо виникають помилки валідації, відповідні поля вводу будуть підсвічені автоматично, як і у випадку роботи з однією моделлю, розглянутою раніше.
-<div class="revision">$Id: form.table.txt 2783 2010-12-28 16:20:41Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
6 docs/guide/uk/form.view.txt
@@ -2,7 +2,7 @@
===============
Написання форми не повинно викликати ніяких труднощів. Ми починаємо із тега `form`, атрибут
-`action` якого повинен містити URL дії `login`, розглянутого раніше. Потім додаємо мітки і поля
+`action` якого повинен містити URL дії `login`, розглянутої раніше. Потім додаємо мітки і поля
вводу для атрибутів, оголошених в класі `LoginForm`. На завершення ми вставляємо кнопку відправки даних форми.
Все це без проблем пишеться на чистому HTML коді.
@@ -10,7 +10,7 @@
Наприклад, для створення текстового поля, можна викликати метод [CHtml::textField()], для випадаючого списку —
[CHtml::dropDownList()].
-> Info|Інформація: Безумовно, може виникнути справедливе питання, а в чому перевага використання помічника, якщо обсяг використовуваного коду порівняно з чистим HTML кодом?
+> Info|Інформація: Безумовно, може виникнути справедливе питання, а в чому перевага використання помічника, якщо обсяг використовуваного коду приблизно той же, що й у випадку з чистим HTML кодом?
Відповідь проста: використання помічника дає великі можливості. Наприклад, код, наведений нижче, створює текстове поле, яке відправляє дані форми на сервер, коли користувач змінює її значення.
> ~~~
> [php]
@@ -93,4 +93,4 @@
</div><!-- form -->
~~~
-<div class="revision">$Id: form.view.txt 1751 2010-01-25 17:21:31Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/index.txt
@@ -13,4 +13,4 @@
© 2008—2010, Yii Software LLC.
-<div class="revision">$Id: index.txt 1679 2010-01-07 21:03:36Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/quickstart.apache-nginx-config.txt
@@ -83,4 +83,4 @@ server {
Використовуючи дану конфігурацію, можна у файлі `php.ini` встановити опцію
`cgi.fix_pathinfo=0` щоб уникнути безлічі небажаних системних викликів `stat()`.
-<div class="revision">$Id: quickstart.apache-nginx-config.txt 3512 2011-12-27 16:50:03Z haertl.mike $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/quickstart.first-app-yiic.txt
@@ -75,4 +75,4 @@ http://hostname/testdrive/index.php?r=user/admin
![Сторінка додавання нового користувача](first-app7.png)
-<div class="revision">$Id: quickstart.first-app-yiic.txt 2098 2010-05-05 19:49:51Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/quickstart.first-app.txt
@@ -250,4 +250,4 @@ http://hostname/testdrive/index.php?r=user/admin
![Сторінка додавання нового користувача](first-app7.png)
-<div class="revision">$Id: quickstart.first-app.txt 3219 2011-05-13 03:03:35Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/quickstart.installation.txt
@@ -26,4 +26,4 @@ http://hostname/path/to/yii/requirements/index.php
[Apache HTTP server](http://httpd.apache.org/) під Windows та Linux, але може
працювати також і на інших веб-серверах та платформах із підтримкою PHP 5.1.
-<div class="revision">$Id: quickstart.installation.txt 3219 2011-05-13 03:03:35Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/quickstart.what-is-yii.txt
@@ -38,4 +38,4 @@ Yii не є ні побічним продуктом якого-небудь п
Він є результатом великого досвіду авторів у розробці веб-додатків,
а також їх досліджень найбільш популярних веб-фреймворків та додатків.
-<div class="revision">$Id: quickstart.what-is-yii.txt 3244 2011-05-28 22:42:03Z alexander.makarow $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/test.fixture.txt
@@ -57,4 +57,4 @@ return array(
У наступних двох розділах ми опишемо, як використовувати фікстури, якими управляє компонент [CDbFixtureManager], в модульних і функціональних тестах.
-<div class="revision">$Id: test.fixture.txt 3039 2011-03-09 19:48:15Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/test.functional.txt
@@ -64,4 +64,4 @@ class PostTest extends WebTestCase
> Tip|Підказка: Перед запуском функціональних тестів запустіть сервер Selenium-RC. Зробити це можна командою `java -jar selenium-server.jar`, виконаної із директорії, в яку встановлено Selenium.
-<div class="revision">$Id: test.functional.txt 1662 2010-01-04 19:15:10Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/test.overview.txt
@@ -94,4 +94,4 @@ return CMap::mergeArray(
За допомогою такого вхідного скрипта при запуску тестів ми отримуємо примірник додатка, максимально наближений до реального. Головна відмінність в тому, що у ньому є підтримка фікстур і використовується тестова БД.
-<div class="revision">$Id: test.overview.txt 2997 2011-02-23 13:51:40Z alexander.makarow $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/test.unit.txt
@@ -76,4 +76,4 @@ public function testApprove()
~~~
-<div class="revision">$Id: test.unit.txt 2841 2011-01-12 21:04:12Z alexander.makarow $</div>
+<div class="revision">$Id$</div>
View
6 docs/guide/uk/toc.txt
@@ -27,12 +27,12 @@
- [Створення дії](form.action)
- [Створення форми](form.view)
- [Обробка табличного вводу](form.table)
- - [Використання будівника форм](form.builder)
+ - [Використання конструктора форм](form.builder)
* Робота з БД
- [Огляд](database.overview)
- [Обʼєкти доступу до даних (DAO)](database.dao)
- - [Будівник запитів](database.query-builder)
+ - [Конструктор запитів](database.query-builder)
- [Active Record](database.ar)
- [Реляційна Active Record](database.arr)
- [Міграції](database.migration)
@@ -71,4 +71,4 @@
- [Покращення продуктивності](topics.performance)
- [Генерація коду за допомогою консолі (застаріле)](quickstart.first-app-yiic)
-<div class="revision">$Id: toc.txt 3360 2011-07-20 19:45:52Z grigori@grik.net $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/topics.auth.txt
@@ -481,4 +481,4 @@ $auth->createRole('guest', 'гість', $bizRule);
> Info|Інформація: Починаючи із версії 1.1.11 масив `$params`, який передається до бізнес правила, має ключ `userId`, значення цього ключа це id користувача, для якого ми перевіряємо бізнес правило. Вам було б це потрібно, якщо б ви викликали [CDbAuthManager::checkAccess()] або [CPhpAuthManager::checkAccess()] у місцях, де `Yii::app()->user` відсутній або перевіряєте доступ для іншого користувача.
-<div class="revision">$Id: topics.auth.txt 2890 2011-01-18 15:58:34Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/topics.console.txt
@@ -233,4 +233,4 @@ return array(
і [CConsoleApplication] і [CWebApplication] успадковують один і той же базовий клас.
-<div class="revision">$Id: topics.console.txt 2867 2011-01-15 10:22:03Z haertl.mike $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/topics.error.txt
@@ -132,4 +132,4 @@ public function actionError()
Для відслідковування помилок, що виникають у процесі виконання додатку,
можна використовувати функціонал [журналювання](/doc/guide/topics.logging).
-<div class="revision">$Id: topics.error.txt 3374 2011-08-05 23:01:19Z alexander.makarow $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/topics.gii.txt
@@ -272,4 +272,4 @@ class <?php echo $this->className; ?> extends CWidget
На цьому реалізація генератора коду завершена. Звернутися до нього можна по URL `http://hostname/path/to/index.php?r=gii/widget`.
-<div class="revision">$Id: topics.gii.txt 3223 2011-05-17 23:02:50Z alexander.makarow $</div>
+<div class="revision">$Id$</div>
View
19 docs/guide/uk/topics.i18n.txt
@@ -21,7 +21,7 @@ Yii підтримує інтернаціоналізацію на декіль
Регіональні налаштування зберігаються в обʼєкті класу [CLocale], який можна використовувати для отримання залежної від них інформації, такої як символи і формати валют і чисел, формати дат і часу, назва місяців і днів тижня.
Так що інформація про мову вже міститься в ідентифікаторі, в [CLocale] вона не дублюється.
-З цієї причини ми часто застосовуємо в одному контексті терміни «мова», «регіональні налаштування і «локаль».
+З цієї причини ми часто застосовуємо в одному контексті терміни «локаль» та «мова».
Маючи ідентифікатор мови, ми можемо отримати відповідний йому обʼєкт [CLocale]:
`CLocale::getInstance($localeID)` або `CApplication::getLocale($localeID)`.
@@ -43,7 +43,7 @@ Yii підтримує інтернаціоналізацію на декіль
[налаштуваннях додатка](/doc/guide/basics.application#application-configuration) або
змінити його безпосередньо перед використанням можливостей інтернаціоналізації.
-> Tip|Підказка: Іноді нам потрібно зчитати мову користувача з браузера.
+> Tip|Підказка: Іноді нам потрібно зчитати мову користувача із налаштувань браузера.
Ми можемо отримати ідентифікатор локалі, використовуючи [CHttpRequest::preferredLanguage].
Переклад
@@ -130,7 +130,8 @@ Yii::t('Xyz.іʼмяКатегорії', 'повідомлення для пер
Yii підтримує [формат вибору|CChoiceFormat], відомий також як множинні форми.
Формат вибору призначений для вибору перекладу у залежності від заданого числа.
Наприклад, в англійській мові слово 'book' може бути одиничного чи множинного числа в залежності від кількості книг.
-В інших мовах слово може не мати спеціальної форми (як у китайському) або може підкорятися більш складним правилам для множини (як у українській). Формат вибору вирішує дану проблему простим, але в той же час ефективним способом.
+В інших мовах слово може не мати спеціальної форми (як у китайському) або може підкорятися більш складним правилам для множини (як у українській).
+Формат вибору вирішує дану проблему простим, але в той же час ефективним способом.
Для використання формату вибору переклад повинен містити послідовність пар вираз-повідомлення,
розділених символом `|`:
@@ -219,8 +220,8 @@ Yii::t('test', '{n} cucumber|{n} cucumbers',
array(5, '{n}' => convertNumber(5)));
~~~
-
-Для української мови рядок перекладу буде виглядати так:
+Кількість множинних виразів буде варіюватися залежно від мови.
+Наприклад:
~~~
[php]
Yii::t('app', '{n} cucumber|{n} cucumbers', 62);
@@ -229,7 +230,7 @@ Yii::t('app', '{n} cucumber|{n} cucumbers', 1);
Yii::t('app', '{n} cucumber|{n} cucumbers', 7);
~~~
-Відповідний рядок із файлу з перекладом:
+У перекладі на українську буде використано 4 вирази повідомлень замість 2:
~~~
[php]
@@ -246,7 +247,7 @@ Yii::t('app', '{n} cucumber|{n} cucumbers', 7);
~~~
-> Info|Інформація: число і порядок значень можна дізнатися у розділі
+> Info|Інформація: число і порядок виразів можна дізнатися у розділі
[Language Plural Rules](http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html)
на сайті CLDR.
@@ -283,7 +284,7 @@ Yii::t('app', '{n} cucumber|{n} cucumbers', 7);
Клас [CDateFormatter] містить два методи, призначених для форматування UNIX timestamp:
- [format|CDateFormatter::format]: форматує передану у форматі UNIX timestamp дату
-згідно шаблону (наприклад, `$dateFormatter->format('dd.MM.yyyy', $timestamp)`);
+згідно шаблону дата-час (наприклад, `$dateFormatter->format('dd.MM.yyyy', $timestamp)`);
- [formatDateTime|CDateFormatter::formatDateTime]: форматує передану у форматі UNIX timestamp дату
згідно шаблону, заданому для вибраної мови (наприклад формат дати `short`, формат часу `long`).
@@ -308,4 +309,4 @@ Yii::t('app', '{n} cucumber|{n} cucumbers', 7);
- [formatPercentage|CNumberFormatter::formatPercentage]: форматує число відповідно до формату форматування відсотків, заданим для поточної мови додатка.
-<div class="revision">$Id: topics.i18n.txt 2890 2011-01-18 15:58:34Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/topics.logging.txt
@@ -191,4 +191,4 @@ Yii::endProfile('blockID');
що показує скільки часу зайняв той чи інший SQL-запит .
Для виведення загальної кількості запитів і загального часу виконання можна використовувати [CDbConnection::getStats()].
-<div class="revision">$Id: topics.logging.txt 2890 2011-01-18 15:58:34Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/topics.performance.txt
@@ -94,4 +94,4 @@ $cs->scriptMap=array(
</head>
~~~
-<div class="revision">$Id: topics.performance.txt 2890 2011-01-18 15:58:34Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/topics.prado.txt
@@ -168,4 +168,4 @@ PHP-файли змінюються тільки у тому випадку, я
Для цього необхідно задати властивості обробника шаблонів [CViewRenderer::fileExtension] значення, відмінне від `.php`.
Приміром, якщо воно буде виставлено у `.tpl`, то всі шаблони із розширенням `.tpl` будуть оброблятися обраним обробником представлень. Шаблони з розширенням `.php`, як і раніше, будуть використовувати стандартний синтаксис PHP.
-<div class="revision">$Id: topics.prado.txt 3226 2011-05-18 10:37:47Z mdomba $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/topics.security.txt
@@ -87,4 +87,4 @@ Yii::app()->request->cookies[$name]=$cookie;
~~~
-<div class="revision">$Id: topics.security.txt 2535 2010-10-11 08:28:08Z mdomba $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/topics.theming.txt
@@ -275,4 +275,4 @@ return array(
- Скін можна темізувати;
- Використання скінів більш затратно, ніж використання глобальної конфігурації.
-<div class="revision">$Id: topics.theming.txt 2890 2011-01-18 15:58:34Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/topics.url.txt
@@ -294,4 +294,4 @@ class CarUrlRule extends CBaseUrlRule
Крім показаного вище типового використання, свій клас URL може стати у нагоді і в інших ситуаціях. Наприклад, можна реалізувати клас правила, який буде записувати у журнал адреси URL, що розбираються і створюються. Це може стати у нагоді на етапі розробки. Також можна реалізувати клас, який показує особливу сторінку помилки 404 у тому випадку, коли всі інші правила не спрацювали для адреси URL, що розбирається. Варто зазначити, що в цьому випадку правило з цим спеціальним класом повинно вказуватися останнім у списку.
-<div class="revision">$Id: topics.url.txt 3591 2012-02-17 21:44:32Z qiang.xue@gmail.com $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/topics.webservice.txt
@@ -203,4 +203,4 @@ class PostController extends CController
Якщо метод з якихось причин (наприклад, відсутність прав на його виконання) не повинен бути викликаний,
необхідно повернути false.
-<div class="revision">$Id: topics.webservice.txt 1808 2010-02-17 21:49:42Z qiang.xue $</div>
+<div class="revision">$Id$</div>
View
2  docs/guide/uk/upgrade.txt
@@ -65,4 +65,4 @@ CModel::getValidators() відтепер повертає тільки валі
- Змінений конструктор [CActiveRecord]. Перший параметр (список атрибутів) прибраний.
-<div class="revision">$Id: upgrade.txt 2305 2010-08-06 10:27:11Z alexander.makarow $</div>
+<div class="revision">$Id$</div>
View
3  framework/YiiBase.php
@@ -702,8 +702,8 @@ public static function registerAutoloader($callback, $append=false)
'CMssqlColumnSchema' => '/db/schema/mssql/CMssqlColumnSchema.php',
'CMssqlCommandBuilder' => '/db/schema/mssql/CMssqlCommandBuilder.php',
'CMssqlPdoAdapter' => '/db/schema/mssql/CMssqlPdoAdapter.php',
- 'CMssqlSqlsrvPdoAdapter' => '/db/schema/mssql/CMssqlSqlsrvPdoAdapter.php',
'CMssqlSchema' => '/db/schema/mssql/CMssqlSchema.php',
+ 'CMssqlSqlsrvPdoAdapter' => '/db/schema/mssql/CMssqlSqlsrvPdoAdapter.php',
'CMssqlTableSchema' => '/db/schema/mssql/CMssqlTableSchema.php',
'CMysqlColumnSchema' => '/db/schema/mysql/CMysqlColumnSchema.php',
'CMysqlCommandBuilder' => '/db/schema/mysql/CMysqlCommandBuilder.php',
@@ -730,6 +730,7 @@ public static function registerAutoloader($callback, $append=false)
'CGettextFile' => '/i18n/gettext/CGettextFile.php',
'CGettextMoFile' => '/i18n/gettext/CGettextMoFile.php',
'CGettextPoFile' => '/i18n/gettext/CGettextPoFile.php',
+ 'CChainedLogFilter' => '/logging/CChainedLogFilter.php',
'CDbLogRoute' => '/logging/CDbLogRoute.php',
'CEmailLogRoute' => '/logging/CEmailLogRoute.php',
'CFileLogRoute' => '/logging/CFileLogRoute.php',
View
8 framework/base/CBehavior.php
@@ -39,14 +39,18 @@ public function events()
* Attaches the behavior object to the component.
* The default implementation will set the {@link owner} property
* and attach event handlers as declared in {@link events}.
- * Make sure you call the parent implementation if you override this method.
+ * Make sure you've declared handler as public and call the parent implementation if you override this method.
* @param CComponent $owner the component that this behavior is to be attached to.
*/
public function attach($owner)
{
$this->_owner=$owner;
+ $class=new ReflectionClass($this);
foreach($this->events() as $event=>$handler)
- $owner->attachEventHandler($event,array($this,$handler));
+ {
+ if(!$class->getMethod($handler)->isProtected())
+ $owner->attachEventHandler($event,array($this,$handler));
+ }
}
/**
View
15 framework/base/CModelBehavior.php
@@ -37,29 +37,32 @@ public function events()
/**
* Responds to {@link CModel::onAfterConstruct} event.
- * Overrides this method if you want to handle the corresponding event of the {@link CBehavior::owner owner}.
+ * Override this method and make it public if you want to handle the corresponding event
+ * of the {@link CBehavior::owner owner}.
* @param CEvent $event event parameter
*/
- public function afterConstruct($event)
+ protected function afterConstruct($event)
{
}
/**
* Responds to {@link CModel::onBeforeValidate} event.
- * Overrides this method if you want to handle the corresponding event of the {@link owner}.
+ * Override this method and make it public if you want to handle the corresponding event
+ * of the {@link owner}.
* You may set {@link CModelEvent::isValid} to be false to quit the validation process.
* @param CModelEvent $event event parameter
*/
- public function beforeValidate($event)
+ protected function beforeValidate($event)
{
}
/**
* Responds to {@link CModel::onAfterValidate} event.
- * Overrides this method if you want to handle the corresponding event of the {@link owner}.
+ * Override this method and make it public if you want to handle the corresponding event
+ * of the {@link owner}.
* @param CEvent $event event parameter
*/
- public function afterValidate($event)
+ protected function afterValidate($event)
{
}
}
View
4 framework/caching/CCache.php
@@ -35,9 +35,9 @@
* <li>{@link setValue}</li>
* <li>{@link addValue}</li>
* <li>{@link deleteValue}</li>
+ * <li>{@link getValues} (optional)</li>
* <li>{@link flushValues} (optional)</li>
- * <li>{@link serializeValue} (optional)</li>
- * <li>{@link unserializeValue} (optional)</li>
+ * <li>{@link serializer} (optional)</li>
* </ul>
*
* CCache also implements ArrayAccess so that it can be used like an array.
View
2  framework/cli/commands/MessageCommand.php
@@ -219,8 +219,6 @@ protected function generateMessageFile($messages,$fileName,$overwrite,$removeOld
* of the guide for details.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version \$Id: \$
*/
return $array;
View
10 framework/cli/commands/WebAppCommand.php
@@ -77,16 +77,16 @@ public function run($args)
switch($vcs)
{
case 'git':
- $renameMap=array('git.gitignore'=>'.gitignore','git.gitkeep'=>'.gitkeep'); // move with rename git files
- $ignoreFiles=array('hg.hgignore','hg.hgkeep'); // ignore only hg files
+ $renameMap=array('git-gitignore'=>'.gitignore','git-gitkeep'=>'.gitkeep'); // move with rename git files
+ $ignoreFiles=array('hg-hgignore','hg-hgkeep'); // ignore only hg files
break;
case 'hg':
- $renameMap=array('hg.hgignore'=>'.hgignore','hg.hgkeep'=>'.hgkeep'); // move with rename hg files
- $ignoreFiles=array('git.gitignore','git.gitkeep'); // ignore only git files
+ $renameMap=array('hg-hgignore'=>'.hgignore','hg-hgkeep'=>'.hgkeep'); // move with rename hg files
+ $ignoreFiles=array('git-gitignore','git-gitkeep'); // ignore only git files
break;
default:
// no files for renaming
- $ignoreFiles=array('git.gitignore','git.gitkeep','hg.hgignore','hg.hgkeep'); // ignore both git and hg files
+ $ignoreFiles=array('git-gitignore','git-gitkeep','hg-hgignore','hg-hgkeep'); // ignore both git and hg files
break;
}
$list=$this->buildFileList($sourceDir,$path,'',$ignoreFiles,$renameMap);
View
0  .../cli/views/webapp/protected/runtime/git.gitignore → framework/cli/views/webapp/assets/git-gitignore
File renamed without changes
View
0  ...iews/webapp/themes/classic/views/system/hg.hgkeep → framework/cli/views/webapp/assets/hg-hgkeep
File renamed without changes
View
0  framework/cli/views/webapp/assets/hg.hgkeep
No changes.
View
1  framework/cli/views/webapp/hg.hgignore → framework/cli/views/webapp/hg-hgignore
@@ -4,3 +4,4 @@ syntax: regexp
# ignore all except .hgkeep
assets/(?!.*\.hgkeep$).+
protected/runtime/(?!.*\.hgkeep$).+
+protected/tests/report/(?!.*\.hgkeep$).+
View
0  ...ws/webapp/themes/classic/views/system/git.gitkeep → framework/cli/views/webapp/images/git-gitkeep
File renamed without changes
View
0  .../views/webapp/themes/classic/views/site/hg.hgkeep → framework/cli/views/webapp/images/hg-hgkeep
File renamed without changes
View
0  ...iews/webapp/themes/classic/views/site/git.gitkeep → ...views/webapp/protected/commands/shell/git-gitkeep
File renamed without changes
View
0  ...ews/webapp/themes/classic/views/layouts/hg.hgkeep → ...i/views/webapp/protected/commands/shell/hg-hgkeep
File renamed without changes
View
0  ...s/webapp/themes/classic/views/layouts/git.gitkeep → ...cli/views/webapp/protected/extensions/git-gitkeep
File renamed without changes
View
0  ...k/cli/views/webapp/protected/tests/unit/hg.hgkeep → ...k/cli/views/webapp/protected/extensions/hg-hgkeep
File renamed without changes
View
0  ...cli/views/webapp/protected/tests/unit/git.gitkeep → ...k/cli/views/webapp/protected/messages/git-gitkeep
File renamed without changes
View
0  ...cli/views/webapp/protected/tests/report/hg.hgkeep → ...ork/cli/views/webapp/protected/messages/hg-hgkeep
File renamed without changes
View
0  ...i/views/webapp/protected/tests/report/git.gitkeep → ...cli/views/webapp/protected/migrations/git-gitkeep
File renamed without changes
View
0  ...i/views/webapp/protected/tests/fixtures/hg.hgkeep → ...k/cli/views/webapp/protected/migrations/hg-hgkeep
File renamed without changes
View
0  framework/cli/views/webapp/assets/git.gitignore → .../cli/views/webapp/protected/runtime/git-gitignore
File renamed without changes
View
0  ...views/webapp/protected/tests/fixtures/git.gitkeep → ...work/cli/views/webapp/protected/runtime/hg-hgkeep
File renamed without changes
View
0  ...work/cli/views/webapp/protected/runtime/hg.hgkeep → ...views/webapp/protected/tests/fixtures/git-gitkeep
File renamed without changes
View
0  ...k/cli/views/webapp/protected/migrations/hg.hgkeep → ...i/views/webapp/protected/tests/fixtures/hg-hgkeep
File renamed without changes
View
2  framework/cli/views/webapp/protected/tests/report/git-gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
View
0  ...cli/views/webapp/protected/migrations/git.gitkeep → ...cli/views/webapp/protected/tests/report/hg-hgkeep
File renamed without changes
View
0  ...ork/cli/views/webapp/protected/messages/hg.hgkeep → ...cli/views/webapp/protected/tests/unit/git-gitkeep
File renamed without changes
View
0  ...k/cli/views/webapp/protected/messages/git.gitkeep → ...k/cli/views/webapp/protected/tests/unit/hg-hgkeep
File renamed without changes
View
0  ...k/cli/views/webapp/protected/extensions/hg.hgkeep → ...s/webapp/themes/classic/views/layouts/git-gitkeep
File renamed without changes
View
0  ...cli/views/webapp/protected/extensions/git.gitkeep → ...ews/webapp/themes/classic/views/layouts/hg-hgkeep
File renamed without changes
View
0  ...i/views/webapp/protected/commands/shell/hg.hgkeep → ...iews/webapp/themes/classic/views/site/git-gitkeep
File renamed without changes
View
0  ...views/webapp/protected/commands/shell/git.gitkeep → .../views/webapp/themes/classic/views/site/hg-hgkeep
File renamed without changes
View
0  framework/cli/views/webapp/images/hg.hgkeep → ...ws/webapp/themes/classic/views/system/git-gitkeep
File renamed without changes
View
0  framework/cli/views/webapp/images/git.gitkeep → ...iews/webapp/themes/classic/views/system/hg-hgkeep
File renamed without changes
View
30 framework/db/ar/CActiveRecordBehavior.php
@@ -40,57 +40,63 @@ public function events()
/**
* Responds to {@link CActiveRecord::onBeforeSave} event.
- * Overrides this method if you want to handle the corresponding event of the {@link CBehavior::owner owner}.
+ * Override this method and make it public if you want to handle the corresponding
+ * event of the {@link CBehavior::owner owner}.
* You may set {@link CModelEvent::isValid} to be false to quit the saving process.
* @param CModelEvent $event event parameter
*/
- public function beforeSave($event)
+ protected function beforeSave($event)
{
}
/**
* Responds to {@link CActiveRecord::onAfterSave} event.
- * Overrides this method if you want to handle the corresponding event of the {@link CBehavior::owner owner}.
+ * Override this method and make it public if you want to handle the corresponding event
+ * of the {@link CBehavior::owner owner}.
* @param CModelEvent $event event parameter
*/
- public function afterSave($event)
+ protected function afterSave($event)
{
}
/**
* Responds to {@link CActiveRecord::onBeforeDelete} event.
- * Overrides this method if you want to handle the corresponding event of the {@link CBehavior::owner owner}.
+ * Override this method and make it public if you want to handle the corresponding event
+ * of the {@link CBehavior::owner owner}.
* You may set {@link CModelEvent::isValid} to be false to quit the deletion process.
* @param CEvent $event event parameter
*/
- public function beforeDelete($event)
+ protected function beforeDelete($event)
{
}
/**
* Responds to {@link CActiveRecord::onAfterDelete} event.
- * Overrides this method if you want to handle the corresponding event of the {@link CBehavior::owner owner}.
+ * Override this method and make it public if you want to handle the corresponding event
+ * of the {@link CBehavior::owner owner}.
* @param CEvent $event event parameter
*/
- public function afterDelete($event)
+ protected function afterDelete($event)
{
}
/**
* Responds to {@link CActiveRecord::onBeforeFind} event.
- * Overrides this method if you want to handle the corresponding event of the {@link CBehavior::owner owner}.
+ * Override this method and make it public if you want to handle the corresponding event
+ * of the {@link CBehavior::owner owner}.
* @param CEvent $event event parameter
*/
- public function beforeFind($event)
+ protected function beforeFind($event)
{
}
/**
* Responds to {@link CActiveRecord::onAfterFind} event.
- * Overrides this method if you want to handle the corresponding event of the {@link CBehavior::owner owner}.
+ * Override this method and make it public if you want to handle the corresponding event
+ * of the {@link CBehavior::owner owner}.
* @param CEvent $event event parameter
*/
- public function afterFind($event)
+ protected function afterFind($event)
{
}
}
View
0  framework/logging/CCombinedLogFilter.php → framework/logging/CChainedLogFilter.php
File renamed without changes
View
7 framework/logging/CWebLogRoute.php
@@ -24,14 +24,12 @@ class CWebLogRoute extends CLogRoute
* @var boolean whether the log should be displayed in FireBug instead of browser window. Defaults to false.
*/
public $showInFireBug=false;
-
/**
* @var boolean whether the log should be ignored in FireBug for ajax calls. Defaults to true.
* This option should be used carefully, because an ajax call returns all output as a result data.
* For example if the ajax call expects a json type result any output from the logger will cause ajax call to fail.
*/
public $ignoreAjaxInFireBug=true;
-
/**
* @var boolean whether the log should be ignored in FireBug for Flash/Flex calls. Defaults to true.
* This option should be used carefully, because an Flash/Flex call returns all output as a result data.
@@ -39,6 +37,11 @@ class CWebLogRoute extends CLogRoute
* @since 1.1.11
*/
public $ignoreFlashInFireBug=true;
+ /**
+ * @var boolean whether the log should be collapsed by default in Firebug. Defaults to false.
+ * @since 1.1.13.
+ */
+ public $collapsedInFireBug=false;
/**
* Displays the log messages.
View
2  framework/messages/ar/zii.php
@@ -12,8 +12,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'Home' => 'الرئيسية',
View
2  framework/messages/bg/yii.php
@@ -12,8 +12,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
View
2  framework/messages/bg/zii.php
@@ -12,8 +12,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'Are you sure you want to delete this item?' => 'Сигурни ли сте че искате да изтриете този елемент?',
View
2  framework/messages/bs/yii.php
@@ -12,8 +12,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
0 => '0',
View
2  framework/messages/cs/size_units.php
@@ -15,8 +15,6 @@
* of the guide for details.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'{n} B' => '{n} B',
View
2  framework/messages/cs/yii.php
@@ -12,8 +12,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'Alias "{alias}" is invalid. Make sure it points to an existing PHP file and the file is readable.' => 'Alias "{alias}" je neplatný. Ubezpečte se, že obsahuje cestu k platnému PHP souboru.',
View
2  framework/messages/cs/zii.php
@@ -12,8 +12,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'Are you sure you want to delete this item?' => 'Odstranit záznam?',
View
1  framework/messages/de/yii.php
@@ -15,7 +15,6 @@
* of the guide for details.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
*/
return array (
'Powered by {yii}.' => 'Powered by {yii}.',
View
2  framework/messages/de/zii.php
@@ -12,8 +12,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'Home' => 'Home',
View
2  framework/messages/el/size_units.php
@@ -15,8 +15,6 @@
* of the guide for details.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'{n} B' => '{n} B',
View
2  framework/messages/el/yii.php
@@ -15,8 +15,6 @@
* of the guide for details.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'CHttpCacheFilter.lastModified contained a value that could not be understood by strtotime()' => 'Το CHttpCacheFilter.lastModified περιείχε μια τιμή που δεν ήταν δυνατό να καταλάβει η strtotime()',
View
2  framework/messages/el/zii.php
@@ -15,8 +15,6 @@
* of the guide for details.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'The property updateSelector should be defined.' => 'Η ιδιότητα updateSelector πρέπει να οριστεί.',
View
3  framework/messages/es/yii.php
@@ -12,8 +12,7 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
-*/
+ */
return array (
'Active record class "{class}" does not have a scope named "{scope}".' => 'La clase de registro activo "{class}" no tiene un ámbito llamado "{scope}".',
'Base path "{path}" is not a valid directory.' => 'La ruta base "{path}" no es un directorio válido',
View
1  framework/messages/es/zii.php
@@ -12,7 +12,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
*/
return array (
'Are you sure you want to delete this item?' => 'Seguro que desea borrar este elemento?',
View
2  framework/messages/fa_ir/yii.php
@@ -14,8 +14,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'Active record class "{class}" does not have a scope named "{scope}".' => 'اکتیو رکورد با نام کلاس {class} اسکوپی با نام {scope} ندارد.',
View
2  framework/messages/fa_ir/zii.php
@@ -14,8 +14,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'Are you sure you want to delete this item?' => 'آیا از حذف این آیتم اطمینان دارید؟',
View
2  framework/messages/fr/yii.php
@@ -15,8 +15,6 @@
* of the guide for details.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'Adding a foreign key constraint to an existing table is not supported by SQLite.' => 'L\'ajout d\'une clef étrangère sur une table existante n\'est pas supporté par SQLite.',
View
2  framework/messages/fr/zii.php
@@ -15,8 +15,6 @@
* of the guide for details.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'Home' => 'Accueil',
View
3  framework/messages/he/yii.php
@@ -12,9 +12,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @author $Author: $
- * @version $Id: $
*/
return array (
0 => '',
View
2  framework/messages/he/zii.php
@@ -12,8 +12,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'Are you sure to delete this item?' => 'האם אתה בטוח שאתה רוצה למחוק את הרשומה הזאת?',
View
2  framework/messages/hu/yii.php
@@ -12,8 +12,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'{path} is not a valid directory.' => 'A {path} nem érvényes mappanév.',
View
2  framework/messages/id/yii.php
@@ -15,8 +15,6 @@
* of the guide for details.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'Failed to set unsafe attribute "{attribute}" of "{class}".' => 'Gagal mengeset atribut unsafe "{attribute}" dari kelas "{class}".',
View
2  framework/messages/id/zii.php
@@ -12,8 +12,6 @@
* enclosed between a pair of '@@' marks.
*
* NOTE, this file must be saved in UTF-8 encoding.
- *
- * @version $Id: $
*/
return array (
'Are you sure you