Joomla 平台 11.3 版(“Dennis Ritchie”) 于 2011 年 11 月 24 日进行了标记并发布。它是 2011 年 7 月 27 日发布的 11.2 版的逻辑延续。

Version 11.3 of the Joomla Platform released

除了众多错误修复之外,它还带来了新功能,主要包括

  • 图像处理 (JImage)
  • 创建 Web 应用程序 (JWeb)
  • 生成 HTML 表格 (JGrid)
  • 添加字符串包 (JString)
  • 迁移到 mootools 1.4
  • curl、套接字和流支持 (JHttp)
  • github API (JGithub)

完整的提交列表可在以下位置找到 https://github.com/joomla/joomla-platform/commits/11.3 ,API 文档可在以下位置找到 https://api.joomla.net.cn

项目规模

  • 类:231 个(平台 11.2 中为 205 个)
  • 方法:1946 个(平台 11.2 中为 1639 个)
  • 行数:24717 行(平台 11.2 中为 19476 行)

代码质量摘要

  • 代码风格检查:235 个警告(平台 11.2 中为 4616 个)
  • 重复代码:26 个警告(平台 11.2 中为 88 个)
  • 编程混乱检测器 (PMD):1006 个警告(平台 11.2 中为 1249 个)
  • 测试覆盖率:41%(平台 11.2 中为 28%)

新功能

已修复的问题

弃用工作

文档

单元测试

代码风格

以下由社区贡献者做出的拉取请求已合并

      1. [#310] 修复控制器针对特定格式的回归。 (realityking)

      2. [#496] 向 JForm 库添加功能 + 更正一些错误 (chdemko)

        这些修改的目的是为 JForm 库带来两个新功能,以及作为副作用为 JString 库带来两种新方法

        • 能够用任何字符串(目前仅为“J”)对字段和规则类进行前缀。要在 xml 中使用 FooFormFieldBar 字段,只需将 type 设置为“foo.bar”
        • 能够使用类名猜测字段类型。
          • 名为 JFormFieldBar 的类将猜测其类型为“Bar”
          • 名为 JFormFieldModal_Bar 的类将猜测其类型为“Modal_Bar”
          • 名为 FooFormFieldBar 的类将猜测其类型为“FooBar”
          • 名为 FooFormFieldModal_Bar 的类将猜测其类型为“FooModal_Bar”
        • JString::splitCamelCaseallow 方法允许使用驼峰命名法分割字符串
          • “FooBarABCDef” 变成数组 (“Foo”, “Bar”, “ABC”, “Def”)
          • “JFooBar” 变成数组 (“J”, “Foo”, “Bar”)
          • “J001FooBar002” 变成数组 (“J001”, “Foo”, “Bar002”)
          • “abcDef” 变成数组 (“abc”, “Def”)
          • “abc_defGhi_Jkl” 变成数组 (“abc_def”, “Ghi_Jkl”)
          • “ThisIsA_NASAAstronaut” 变成数组 (“This”, “Is”, “A_NASA”, “Astronaut”)
          • “JohnFitzgerald_Kennedy” 变成数组 (“John”, “Fitzgerald_Kennedy”)
        • JString::ucfirstEachallow 方法允许将字符串中所有单词的首字母大写
          • JString::ucfirstEach('dr jekill and mister hyde') 变成 'Dr Jekill And Mister Hyde'
          • JString::ucfirstEach('dr jekill and mister hyde',' ', '_') 变成 'Dr_Jekill_And_Mister_Hyde'
          • JString::ucfirstEach('dr jekill and mister hyde',' ', '') 变成 'DrJekillAndMisterHyde'

        最后,JForm 库中存在一个错误:JFormHelper::loadClass 方法中的 array_unshift 仅允许在路径的前半部分查找。

      3. [#543] 将 PHPMailer 更新到 5.2 版 (mbabker)

        将 PHPMailer 库更新到 5.2。添加了 POP3 类,删除了英文语言文件(因为它在代码中设置,不再分发),并按字母顺序排列了 Joomla! 语言文件。

      4. [#550] 添加缓存目录,以便单元测试在第一次运行时不会失败 (ianmacl)

        如果此目录不存在,一些缓存测试将失败。此目录可能在某个地方丢失了,因为你无法在 git 中提交目录。这应该可以解决一些问题,并使测试更容易运行。

      5. [#549] 由于测试失败,对 JHtmlBehaviorTest 设置进行更改。 (elinw)

        JHtmlBehavior 中的 24 个测试由于缺少 $_SERVER['HTTP_HOST'] 而失败,这可能是因为测试运行的顺序造成的。

      6. [#542] 向 JDatabase 添加截断函数 (mbabker)

      7. [#540] 添加缺少的引用 =& 而不是为模块对象数组赋值 = ... (beat)

        建议添加缺少的引用 =& 而不是为模块对象数组赋值 =,以用于引用链中。JModuleHelper::_load 返回一个引用,但它使用的是赋值,而不是按引用赋值。

      8. [#547] 向 JDatabaseQuery UPDATE 查询添加 JOIN 支持 (mbabker)

        JDatabaseQuery::__toString() 目前在 UPDATE 情况下不处理 JOIN 语句。这会导致与另一个表联接的 UPDATE 查询失败,因为该表未联接。添加了对此的支持以及测试 toString 更新情况的单元测试。

      9. [#526] 重构 JHttp 类,该类支持 CURL、套接字和流,以及一个 Github 库 (ianmacl)

        Github 库目前支持:* 拉取请求 * 问题 * 引用 * gist

      10. [#548] 修复 JForm 中的 PHP 严格警告。 (realityking)

      11. [#186] 文档包上的单元测试失败 (ianmacl)

        修复了单元测试。解析的测试验证了该方法返回了 null。该方法现在返回一个 JDocument 对象。测试已更改以反映这一点。

      12. [#185] JDocument 流式接口 (WebMechanic)

        • 将 setter 和 mutator 更改为返回 $this 而不是“void”。
        • 清理重复的 jimport('joomla.document.document')
        • 空格和缩进
      13. [#158] Joomla CMS [#26263] JDocumentOpensearch 中的直接访问 (elinw)

        请参阅 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26399 修复访问检查。

      14. [#389] Joomla CMS [#25291] 媒体字段和文件字段的前端清除链接会关闭表单(chdemko)

        请参阅 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=25291

      15. [#541] 一些样式修复。 (realityking)

      16. [#545] 更改文件模式 (chdemko)

        一些文件是 775。它们应该是 664。

      17. [#544] 更正将 CMS 迁移到 11.3 的错误 (chdemko)

      18. [#395] Joomla CMS [#25643] JComponentHelper::renderComponent 假设 $app 变量保持不变 (chdemko)

        请参阅 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=25643

      19. [#490] 添加加载(未)压缩 css 和 js 文件的可能性,无论调试是否开启 (chdemko)

        为了提高加载网页的速度,可能需要自动检测调试模式并加载压缩文件(css 和 js)或不加载。

        逻辑如下

        如果调试开启,则尝试加载名为 *file*-uncompressed.(js,css) 的未压缩版本,否则加载经典文件 *file*.(js,css),否则加载经典文件 *file*.(js,css),结束 if

        使用方法如下

        JHtml::_('script', 'com_foo/bar.js');

        将在 media/com_foo/js/ 中查找文件

        如果启用了调试模式,则尝试加载 bar-uncompressed.js,否则加载 bar.js,否则加载 bar.js,endif

        对于样式表

        JHtml::_('stylesheet', 'com_foo/bar.css');

        将在 media/com_foo/css/ 中查找文件

        如果启用了调试模式,则尝试加载 bar-uncompressed.css,否则加载 bar.css,否则加载 bar.css,endif

        已在修改后的类中添加单元测试

      20. [#539] 修复了与 MooTools 1.4 的一个小兼容性问题。 (realityking)

        SqueezeBox 正在检查 MooTools 中必须重命名的类型。

      21. [#370] 添加了 JHtmlDate 类,其中包含相对时间函数 (mbabker)

        JHtmlDate::relative 允许用户将给定的日期/时间组合转换为以分钟、小时、天或周为单位的相对时间,如果日期在过去一个月以上,则返回绝对时间。

      22. [#536] Clone2 (elinw)

        这为 JDatabaseQuery 和 JDatabaseQueryElement 添加了一个 __clone 方法,用于处理深度克隆,并对这些方法进行了测试。

      23. [#514] UT 1/10: 修复和单元测试 JRegistry 包 (Hackwar)

        这是 10 个拉取请求中的第一个,它将拉取请求 #466 的提交拆分为更多或更少可消化的包。

        此请求为注册表包实现了扩展的单元测试,并修复了几个 JRegistryFormat 处理程序。具体的更改:JRegistryFormatPHP:到目前为止,在将对象转换为字符串时,嵌套对象被简单地忽略。现在将对象转换为数组,然后尝试将它们作为嵌套数组处理。否则将丢失数据。

        JRegistryFormatXML:对根节点的子节点的第一次迭代重复了稍后针对每个子节点的子元素调用的方法。只需更少的代码。

        JRegistry:已弃用的方法(有时甚至不起作用)不应被单元测试覆盖,也不需要任何代码覆盖检查。

        JRegistryFormatTest:测试中的异常处理在我看来很不好,因为函数代码做了断言,但它没有走到那么远,而是抛出了异常。对于开发人员来说,直接明显的是异常处理是通过 doc-block 完成的,并且在这里预期会发生异常。

        JRegistryTest:loadINI & loadJSON 已被弃用,取而代之的是 loadString(),因此应测试 loadString(),而不是另外两个。

        JRegistryFormatIniTest, JRegistryFormatPHPTest, JRegistryFormatXMLTest, JRegistryFormatJSONTest:测试已经更加充实,以检查大多数可能的输入。仅仅检查“foo=bar”并不是一个很好的测试。

      24. [#377] Joomla CMS [#24919] JHtml::_('grid.boolean', $i, $value) 应在未给出任务的情况下添加 void(0) (chdemko)

        参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=24919

      25. [#384] Joomla CMS [#24796] 在卸载函数中删除样式时出错 (chdemko)

        参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=24796

      26. [#535] 修复引导程序中的 require (mbabker)

        测试套件引导程序中有一个小错误,导致测试失败。已修复。

      27. [#534] 将 ReflectionHelper 类添加到测试框架 (eddieajau)

        ReflectionHelper 类提供了一种替代使用检查器在测试中访问受保护的类方法和属性的方法。getValue 和 setValue 方法适用于静态和非静态属性。

      28. [#530] UT 2/10:在 JLoaderTest 中使用 realpath() 以消除平台问题 (Hackwar)

        为 JAccessTest 添加单元测试,以实现更高的代码覆盖率

      29. [#525] 允许 JWeb 具有可配置的主题路径。 (elinw)

        这将调整 JWeb::Render 以使用配置变量“themes.base”(如果可用),然后如果不可用,则使用基于约定的路径。

      30. [#528] 删除不必要的 HTML 文件。 (LouisLandry)

        平台项目不需要在所有 Joomla CMS 代码文件夹中找到的 index.html 文件来阻止 Web 服务器的目录浏览。如果有人独立于 Joomla CMS 使用该平台,则可能会采取措施来阻止目录浏览,方法是将平台放置在服务器文档根目录之外,或使用其他 Web 服务器指令。

      31. [#527] 来自 Joomla 1.7.3 的安全修复。 (realityking)

      32. [#517] UT 4/10:基本包的代码覆盖率修复 (Hackwar)

        为缓存包添加单元测试

      33. [#519] UT 6/10:为文档和错误包添加单元测试 (Hackwar)

        修复 JURI 和 JDocumentRenderer 的单元测试,以实现 100% 的代码覆盖率

      34. [#520] UT 7/10:为文件系统包添加单元测试 (Hackwar)

        扩展 JDispatcher 的单元测试

      35. [#522] UT 9/10:为日志、邮件、插件和会话包添加单元测试 (Hackwar)

      36. [#524] 修复 JWeb 中的代码注释 (elinw)

        修复两个注释,使它们与代码匹配。

      37. [#511] 一些小的更改,以改进异常并修复 PHPUnit 3.6 的单元测试问题(ianmacl)

        1. PHPUnit 3.6 不喜欢您期望通用异常。这个问题通过使用更具体的异常来解决。

        2. 有一个 JString 单元测试,它以某种方式通过了,但实际上是错误的。如果没有附带的修复,它会在 PHPUnit 3.6 上失败。非常奇怪。

      38. [#510] MooTree - 错误的 Request.send 用法 (n3t)

        在以下位置报告

        http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_id=8103&tracker_item_id=26573

      39. [#509] 集合更新程序在 Joomla! 1.7 中不起作用 (n3t)

        如 Joomla 跟踪器中所述

        http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_id=8103&tracker_item_id=27102

      40. [#506] 修复 tab.js 中的一个错误 (realityking)

        只是一个小的 JS 错误。

      41. [#508] 修复一些 PMD 警告 (realityking)

        还修复了 JHtmlBehavior 中的一个错误以及此过程中的几个警告。

      42. [#507] 删除对 jimport() 的更多不必要的调用。 (realityking)

      43. [#463] 重构 JDispatcher 和 JEvent,弃用 JObserver 和 JObservable(Hackwar)

        此拉取请求重构 JDispatcher 和 JEvent 以直接扩展 JObject,并弃用 JObservable 和 JObserver。

        JObservable 和 JObserver 都已损坏,不应再使用。

        除了重构代码外,JDispatcher 和 JEvent 都由单元测试覆盖,这些单元测试应具有完整的代码覆盖率。

        有关此更改的讨论,请参见:https://groups.google.com/group/joomla-dev-platform/browse_thread/thread/4b195ce76d200e3e#

      44. [#502] 修复 _ 受保护的名称 (chdemko)

        另一种检测以 _ 开头的受保护函数/变量的方法:如果它们被标记为已弃用,则不要生成警告。应用于 JFactory

        参见 https://github.com/joomla/joomla-platform/issues/501

      45. [#504] CMS 问题 [#26439] 编辑器在内容插件语法中遇到引号问题(dextercowley)

        修复 CMS 问题 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26439

        JFilterInput 对有效的 HTML 内容过于严格。此更改调整了正则表达式值,以不筛选格式良好的 HTML 元素中的内容。

      46. [#505] 摆脱现在不必要的 jimport() 调用的第一步。 (realityking)

        新的自动加载器使几个 jimport 调用立即变得多余。

      47. [#503] 统一代码风格。 (realityking)

        统一 JPATH_PLATFORM 检查的风格,并删除 _JEXEC 的最后一次出现。

      48. [#495] 为 Joomla 平台添加真正的自动加载器。 (LouisLandry)

        截至目前,Joomla 平台还没有真正意义上的自动加载器。我们所拥有的是一种方法,可以将文件显式地注册到加载器类中,以便在需要时延迟加载。

        此拉取请求向 SPL 自动加载器队列添加了另一种方法,该方法可以为遵循给定命名约定的文件和类名称的类提供真正的自动加载功能,而无需显式使用 jimport() 或 JLoader。

        要利用自动加载器,必须满足以下约定

        类名

        • 所有类名必须以大写 J 开头,表示类文件将在 libraries/joomla 文件夹中找到。
        • 所有类名必须使用骆驼命名法,其中 J 前缀后的第一个字符为大写。例如:JClass 或 JClassExtended

        类文件路径

        • 类名的第一部分表示类文件的文件夹路径,类名的最后一部分表示类文件名。对于示例 JClassExtended,J 表示 Joomla 库,Class 表示文件夹路径,Extended 表示类的文件名。因此,在 libraries/joomla/class/extended.php 中,您将找到定义的类 JClassExtended。
        • 如果类名只有一个部分,则该部分同时用于文件夹路径和类文件名。例如,JRegistry 在文件 libraries/joomla/registry/registry.php 中定义。

        向后兼容性

        此新自动加载器的实现是当前延迟加载系统的补充,不应影响向后兼容性。事实上,当前延迟加载系统首先由 SPL 自动加载器队列调用,然后如果找不到文件,则调用新的自动加载器机制。这应该使库能够随着时间的推移轻松过渡到相应的约定,而不会对第三方开发人员或下游软件产生任何影响。

        进一步的例子

        碰巧的是,注册表包是新自动加载器的完美案例研究。启用自动加载器后,无需显式调用 jimport('joomla.registry.registry');,因为这些类已经完全遵循此约定。您只需简单地使用 JRegistry,就像它已经加载了一样。类名到文件路径的映射如下所示

        JRegistry => libraries/joomla/registry/registry.php JRegistryFormat => libraries/joomla/registry/format.php JRegistryFormatINI => libraries/joomla/registry/format/ini.php JRegistryFormatJSON => libraries/joomla/registry/format/json.php JRegistryFormatPHP => libraries/joomla/registry/format/php.php JRegistryFormatXML => libraries/joomla/registry/format/xml.php

        需要注意的是,自动加载器可以优雅地处理段落全部大写的情况,如上所述。重要的部分是从小写到大写的转换。

      49. [#499] 使单元测试与 phpUnit 3.6 兼容。 (realityking)

        将 JImport 添加到白名单。

      50. [#497] 更改所有静态实例变量的情况 (Hackwar)

        将函数中的所有静态实例变量更改为类静态属性。这应该涵盖所有类将自身存储在 $instance 变量中并使所有出现保持一致的情况。它只更改了 $instance(s) 的情况,一些方法使用不同的变量来处理不同的情况,这些方法没有被触碰,仍然需要更改。

      51. [#493] 弃用 JBrowser 的功能和怪癖相关部分。 (realityking)

        还要添加一个警告,说明此类在不久的将来可能会发生重大变化。

        此类非常过时,我们需要能够清理它。

      52. [#481] 使用自动格式化程序进行缩进。 (realityking)

      53. [#486] 在单元测试上运行自动格式化。 (realityking)

      54. [#491] 向 JDatabase getQuery 方法和 JTable _db 属性添加变量类型上下文。(elkuku)

        我知道这在技术上不正确,因为提到的类没有使用,而是扩展了类,但是... 这将使以下自动完成在现代 IDE 中可用于基本类 - 你决定;)

        ```php <?php class MyTable extends JTable { function foo() { $query = $this->_db->//-- JDatabase 的自动完成

        $query = $this->_db->getQuery(true) $query->//-- JDatabaseQuery 的自动完成 }

        } ```

      55. [#492] 不要在第三方库上运行 PHPMD。 (realityking)

      56. [#482] 修复了 JController::getName() (Hackwar)

        JController::getName() 在每次函数调用时计算控制器的名称。此更改只执行一次,然后缓存该值。

      57. [#487] JModellist:用 isset() 替换 !empty() 以提高性能 (Hackwar)

        JModellist 使用 !empty() 来检查缓存数据。如果查询返回空结果,则会设置数组键,但变量为空,因此缓存不会生效,并且在再次调用该函数时会再次执行查询。使用 isset() 而不是只检查变量是否已设置(= 查询已执行),然后返回该结果,无论该结果是否为空。

      58. [#379] Joomla CMS [#26840] 在文件安装时生成 manifest_cache (mbabker)

        CMS 问题报告:http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26840

      59. [#484] _createId() 不接受任何参数 (rvsjoen)

        JSession::_createId() 中声明的函数不接受任何参数。

      60. [#483] 修复 JForm 中注释掉的 else 关键字 (rvsjoen)

        这可能只是一个失误。

      61. [#488] 代码风格:调整行长 (elkuku)

        这应该减少代码嗅探器报告的警告数量,当然,使代码看起来更漂亮;)

      62. [#460] 修复了 JFormHelper:loadClass() 只包含第一个文件名匹配的问题(nonumber)

        现在它包含所有匹配的文件,直到找到所需的类名。修复了 #455

      63. [#480] JUpdater 不适用于组件 (nikosdion)

        如果组件的 XML update 元素没有明确包含 folder 和 client_id 子节点,则 JUpdater 不适用于组件。这是不可取的,因为组件始终是 folder="" 和 client_id=1。解决方法是在 JUpdaterExtension 中将这些值设置为默认值。插件、模块和模板没有问题,因为它们在需要时会指定这些元素。

        此拉取请求是对 Joomla! CMS 跟踪器项目 #27023 (http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_id=8103&tracker_item_id=27023) 的后续行动,以及在 Joomla! Dev General 列表 (https://groups.google.com/forum/#!topic/joomla-dev-general/R4g0-Q2pWXk) 上的相关讨论。

      64. [#478] 修改了 JDaemon 测试以防止在全局 tmp 目录中写入文件。 (ianmacl)

        在构建服务器上,我们的测试在两个不同的帐户下运行。它们都尝试写入同一个 pid 文件,这会导致问题。对测试的此修改解决了该问题。

      65. [#427] 新的 JImage 类。 (LouisLandry)

        这是 Rune 和我之间的合作,为平台创建一个新的 JImage 类。有很好的单元测试覆盖率和一个简单但有效的 API。该库使用 GD 支持裁剪、调整大小、旋转以及对图像应用几种不同的滤镜。

      66. [#477] 回归蓝色。 (LouisLandry)

        修复构建。

      67. [#474] Menutypetest (elinw)

        修复了一个愚蠢的错误。

      68. [#472] 添加一个缺少的 jimport,导致单元测试引发错误 (elinw)

        添加一个缺少的 jimport,导致单元测试在 menutype 中引发错误。

      69. [#469] 轻微清理和修复 (robschley)

        修复了 JSession 中缺少的依赖项导入。将 getDocument()、getLanguage() 和 getSession() 添加到 JWeb。修复了 JDaemon 测试中未安装 PCNTL 时的一些问题。

      70. [#470] 代码风格清理 (elinw)

        对数据库和数据库连接进行了一些清理。

      71. [#471] 删除测试,因为服务器不可公开访问。 (ianmacl)

        build.joomla.org:8080 不可公开访问。因此,测试将在大多数系统上失败。

      72. [#468] 修复 JDatabase::getConnectors 并添加一个数据库连接字段 (elinw)

        这解决了一些 getConnectors 中的问题,这些问题导致它无法与数据库文件夹中的当前文件结构以及数据库类的更新命名约定一起使用。它还添加了一个新字段,该字段使用 getConnectors 来动态创建一个可用数据库连接/驱动程序组合的列表,可选地限制为应用程序支持的数据库列表。

        这对多数据库支持很重要,因为并非所有服务器都支持所有数据库,并非所有应用程序都支持所有可用驱动程序。

      73. [#467] 编码标准:连接运算符必须用空格包围 (elkuku)

        另一个“边缘情况” - 连接运算符 (.) 必须用空格包围。

      74. [#362] 将 MooTools 更新到版本 1.4 + tabs.js 中的错误修复 (realityking)

      75. [#465] 文档:更新编码标准 (elkuku)

        这将函数声明和控制结构的新多行规则添加到编码标准中。

      76. [#464] 编码标准:构造函数和析构函数注释不得有 @return 标签。 (elkuku)

        这本来应该添加到 #462 中... 你合并得太快了;)

        • 从类析构函数中删除 @return 标签。
        • 修复了函数注释嗅探器,以检测类构造函数和析构函数 docblocks 中的 @return 标签。
      77. [#462] 修复 docblocks 中的拼写错误,并从构造函数中删除 @return 标签。 (mbabker)

        使用 PhpStorm 中的代码检查器,评估了来自结果的以下条件

        • 拼写错误(尤其是在代码注释和 doc 块中)
        • 声明为 void 的方法不应返回任何内容
        • Doc 块与方法声明不匹配

        在查看结果时还发现了一个 DatabaseException 的实例,我将其切换到 JDatabaseException。

      78. [#11] AJAX 改进 (realityking)

        小型库修改,使在 Joomla 框架中使用 AJAX 或其他 JS 功能变得更容易。

      79. [#459] 修复 JButton 中的 docblock (jonnsl)

        关闭 #457 - 删除剩余的合并文本。

      80. [#456] 修复了 JAdapterInstance 中的错误数据库引用。 (AmyStephen)

        将 if 语句中的 &$db 更改为 $db。

      81. [#458] 修复了 JDocument 包中两个缺少的 jimport 调用 (robschley)

        修复了 JDocumentHTML 和 JDocument 中两个缺少的 jimport 调用。当使用 JWeb 以及包含 JDocument 的模板时发现了这些问题。这些文件通常总是包含在 CMS 引导文件中。

      82. [#452] 修复检查文档是否有 setHeadData 函数 (pasamio)

        这添加了在尝试调用 setHeadData 函数之前检查当前 JDocument 实例是否具有 setHeadData 函数的功能。这应该修复了一些在文档类型上尝试缓存头部数据时出现的问题,这些文档类型出于任何原因不支持该功能。这可能是代码中其他地方的错误,但平台应该忽略这些请求,而不是盲目地尝试调用一个不存在的函数。

      83. [#451] 添加了 JRules 模拟 (eddieajau)

        在 /tests/includes/mocks/JRulesMock.php 中添加了一个新的 JRules 模拟。这有一些预先烘焙的结果,可以允许在其他类中进行依赖项测试。

        通过在构造函数测试中添加对象测试用例来改进 JRules 的代码覆盖率,并在 JRules 和 JRule 测试文件中添加了文档块。

      84. [#446] JHtmlNumber 及其测试在 32 位系统上失败 (rvsjoen)

        通过移除显式转换,我们允许 PHP 在需要时自动转换为浮点数,以避免在 32 位系统上溢出。

        修复了 #443

      85. [#442] 修复 daemon.php 中的拼写错误 (chdemko)

      86. [#441] 修复 cli.php 和 web.php 中对齐错误的文档块 (ianmacl)

        文档块未正确对齐。

      87. [#440] 更改 fetchConfigData 以提高灵活性并避免与多个 JConfig 类进行测试冲突。 (ianmacl)

        目前,测试会根据测试执行的顺序而失败,因为存在多个 JConfig 类。此更改改进了使用它的类的灵活性,因此我们可以避免此问题。

      88. [#416] JController->display() 中不应该设置默认布局,因为它已经在 JView 构造函数中设置了 (Bakual)

        仅当请求中传递布局时才设置视图布局。默认值不应在此处设置,因为它已经由 JView 构造函数设置,允许视图具有与“default”不同的默认值。

      89. [#437] 改进 JHtml 测试覆盖率 (mbabker)

        通过以下方式改进 JHtml 库测试覆盖率:

        • 为 JHtmlBatch::language 添加测试用例,该用例隐式地测试 JHtmlContentLanguage
        • 为 JHtmlEmail 添加测试用例
        • 为 JHtmlList 用户和位置方法添加测试用例
        • 为 JHtmlMenu 菜单和菜单项方法添加测试用例
        • 为 JHtmlTel 添加测试用例
        • 将 JHtmlNumber.php 重命名为 JHtmlNumberTest.php,现在将其包含在测试套件中
        • 重命名了 DB 数据集文件,因为它可以并且应该在需要时在其他地方使用
      90. [#438] 在 JFTP 类文件末尾添加了一行 (AmyStephen)

        在 JFTP 类的末尾添加了一行

        https://github.com/joomla/joomla-platform/pull/431#issuecomment-2444246

      91. [#431] 修复了 JFTP::get() 中的严格问题 (AmyStephen)

        严格标准:JFTP::get() 的声明应与 /users/amystephen/sites/molajo/libraries/jplatform/joomla/client/ftp.php 第 1741 行的 JObject::get() 的声明兼容

      92. [#435] $obj 在 JTable canDelete 中未定义。更改为 $row (andreatarr)

      93. [#436] 扩展 JGrid 的单元测试以达到 100% 的覆盖率。 (Hackwar)

        尝试达到 JGrid 的 100% 代码覆盖率。这应该会实现它。

      94. [#400] Joomla CMS [#24973] JHTML select.options 带有 HTML 实体 (chdemko)

        参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=24973

      95. [#434] 检查样式和重复代码修复。 (eddieajau)

        修复了 JError 类中的检查样式错误。重构 SQL Azure 查询类以减少重复代码。

      96. [#433] 测试修复 (eddieajau)

        修复了 JAccess 测试中的无效文件名,以及 JError 中的检查样式错误。

      97. [#432] 添加延迟以修复构建服务器上的测试 (ianmacl)

        在构建服务器上,存在一个奇怪的问题,即此测试中的选择不会返回所有数据。此 usleep 调用解决了此问题。

      98. [#430] 代码嗅探修复 (elkuku)

        这将

        • 修复 else 和 elseif 嗅探
        • 修复多行函数声明的标准
        • 修复多行 if 声明的标准,如 #424 中所讨论的,并由 @eddieajau 请求
        • 修复类中不起作用的最后一行为空嗅探
        • 删除“文件正在被有条件地包含;使用“include_once”代替”嗅探,如 @LouisLandry 在 #424 中建议的那样

        (包含来自 #425 的未合并更改)

        结果

        ``` phpcs -np --standard=build/phpcs/Joomla/ libraries/joomla ............................................................ 60 / 305 ............................................................ 120 / 305 ............................................................ 180 / 305 ............................................................ 240 / 305 ............................................................ 300 / 305 .....

        时间:47 秒,内存:14.25Mb ```

        这意味着没有更多错误 - 太棒了 - 我们是否可以在批准拉取请求的过程中包含代码嗅探器,并拒绝不符合标准的代码?(这也有助于防止进一步更改空格的令人讨厌的拉取请求;)

        顺便说一句:仍然有一些

        警告

        ```

        源代码计数

        Joomla.NamingConventions.ValidVariableName.PublicUnderscore 234 Joomla.NamingConventions.ValidFunctionName.PublicUnderscore 168 Joomla.NamingConventions.ValidFunctionName.NotCamelCaps 24 Generic.Files.LineLength.TooLong 14

        Joomla.NamingConventions.ValidFunctionName.ScopeNotCamelCaps 10

        在 5 个源文件中总共发现了 450 个代码嗅探器违规。

        ```

      99. [#409] Joomla CMS [#26491] 日期图标“字符串未翻译” (chdemko)

        参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26491

      100. [#403] Joomla CMS [#26885] JText 不识别“ ”无字符串 (chdemko)

        参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26885

      101. [#429] 修复了 SQL Azure 驱动程序中的致命错误 (AmyStephen)

        修复了此问题 => 致命错误:require() [function.require]:无法打开所需文件“/users/amystephen/sites/molajo/libraries/jplatform/joomla/database/databasesqlsrv.php”(include_path='.:/Applications/MAMP/bin/php5.3/lib/php')在 /users/amystephen/sites/molajo/libraries/jplatform/joomla/database/database/sqlazure.php 第 12 行

      102. [#428] 单元测试树整理:第一阶段 (LouisLandry)

        此分支清理并使单元测试的文件夹结构和脚手架保持一致。此外,它还修复了几个测试中的一些长期存在的问题。作为奖励,对于外部项目,tests/includes 文件夹可以链接或复制到您自己的测试文件夹中,以使用测试套件中可用的所有 Joomla 类模拟对象。

      103. [#367] 错误报告的细微改进 (eddieajau)

        将 Application 包中的 JException 使用替换为 Exception。添加单元测试以验证是否抛出异常。修复了 JError 中检测到无限循环的问题(将委托给 echo 处理程序)。在自定义错误页面处理程序中添加了一个检查,以查看文档主体是否为空,否则委托给 echo 处理程序,否则将不会显示任何错误。

      104. [#420] JGrid:小规模重构 (Hackwar)

        经过更多思考后,addRowCell 函数命名不当,应该改为 setRowCell。我还添加了 Row Option 的 getter/setter。单元测试已相应更改。

      105. [#424] 代码格式 (elkuku)

        这修复了部分剩余的编码标准违规。其中部分是最近引入的..

        我不太确定如何处理多行 if a)

        ruby if ($a && $b) { true; } b)

        ruby if ($a && $b ) { true; } 编码标准说版本 b) 是好的。

        我认为多行 if、函数声明和函数调用应该以相同的方式格式化。你怎么看?

        此外:唯一剩下的错误是“文件正在被有条件地包含;使用“include_once”代替” - 如何处理?

        所以.. 我们是否可以教 Jenkins 先生(或礼貌地请求 Mc Lennan 先生)在批准拉取请求时包含代码嗅探器?

      106. [#423] 代码嗅探器应该从任何目录运行 (elkuku)

        现在,需要将编码标准复制或软链接到您的系统标准目录才能使用它们。我发现这对测试来说很困难,也可能会提高开发者的门槛。

        代码嗅探器无法从任何目录运行的原因是它们对一个名为“Joomla”的系统标准进行了引用 - 只是为了将内联控制结构的严重性从错误更改为警告..

        所以,我删除了该引用,更新了相应的代码嗅探器文件,还修改了 build.xml 以选择目录中找到的 Joomla!标准,而不是系统标准。

      107. [#408] Joomla CMS [#26788] 为批处理小部件添加语言字段 (mbabker)

        有关更多信息,请参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26788。

      108. [#396] Joomla CMS [#26636] JControllerForm 中遗漏的 JRoute:_ (chdemko)

        参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26636

      109. [#385] Joomla CMS [#26493] 类“JRequest”在 session.php 中未找到 (chdemko)

        参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26493

      110. [#369] 修复一些代码样式 (realityking)

        这可能不会被所有人喜欢,但我认为自动代码样式更正已经做了一些更改,通过移除变量赋值的对齐方式,使代码的可读性降低。这在 JHtmlBehavior 等大型代码块中尤其糟糕。

        还有类似的错误,但我希望首先看看是否会拉取它。

      111. [#417] 使用 elseif 代替 else if。 (realityking)

        主要原因是在应用其他样式检查时更容易解析,但它也更一致,并且作为额外的好处,还存在非常小的速度提升(可能 < 1%)。

      112. [#415] JGrid 中的拼写错误 (Hackwar)

        有点令人尴尬,但 JGrid 类在呈现页脚行时有一个拼写错误。它应该是而不是。此拉取请求已修复此问题。

      113. [#414] 将所有 PHP 关键字(但不是内置函数)设为小写。 (realityking)

        不确定我们是否想要这样做,但 Andrew 说他更喜欢 as 而不是 AS。

      114. [#413] 删除数组中的尾随逗号,并确保每个逗号后都有空格 (realityking)

        删除数组中的尾随逗号,并确保每个逗号后都有空格。

      115. [#412] 修复一些文档块。 (realityking)

      116. [#405] 所有文件都应该以换行符结尾。 (realityking)

        只是运行 phptidy(tidy ;) )没有任何参数,所以它只删除了行尾的空格,并确保所有文件都以换行符结尾。

      117. [#404] Joomla 1.7.1 中修复了安全问题。 (realityking)

      118. [#399] Joomla CMS [#26275] Joomla 自动添加 meta robots=index,follow (chdemko)

        参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26275

      119. [#394] 在 JFactory 中添加了检查,在无法建立数据库连接时发送标头 (eddieajau)

        修复 JFactory::_createDbo()

      120. [#388] 将函数静态变量移动到类静态变量 (ssv445)

        将函数静态变量移动到类静态变量,将有助于独立的单元测试用例。还添加了文档块。请丢弃之前的拉取请求。

      121. [#391] Joomla CMS [#25199] utf8_ireplace 函数中 preg_quote 存在问题 (chdemko)

        参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=25199 和 https://sourceforge.net/tracker/?func=detail&aid=3413766&group_id=142846&atid=753842

      122. [#393] Joomla CMS [#26863] countMenuChildren 具有不正确的列引用,并在调试打开时生成 1054 错误 (katalystsol)

        我在我的模板中使用 countMenuChildren(使用 Joomla 1.7.0)。它似乎工作正常,除了当我打开错误报告/调试时。它给了我以下错误消息

        JDatabaseMySQL::query: 1054 - Unknown column 'parent' in 'where clause' SQL=SELECT COUNT(*) FROM hc5wg_menu WHERE parent = 101 AND published = 1

        该页面显示 500 错误,并具有以下回溯

        函数位置

        1 JSite->render() /.../index.php:49 2 JDocumentHTML->parse() /.../includes/application.php:249 3 JDocumentHTML->_fetchTemplate() /.../libraries/joomla/document/html/html.php:378 4 JDocumentHTML->_loadTemplate() /.../libraries/joomla/document/html/html.php:547 5 require() /.../libraries/joomla/document/html/html.php:488 6 JDocumentHTML->countMenuChildren() /.../templates/hp1/index.php:112 7 JDatabase->loadResult() /.../libraries/joomla/document/html/html.php:455 8 JDatabaseMySQLi->query() /.../libraries/joomla/database/database.php:1008 9 JError::raiseError() /.../libraries/joomla/database/database/mysqli.php:535 10 JError::raise() /.../libraries/joomla/error/error.php:215

        我的模板中的第 112 行是我调用 $this->countMenuChildren() 的地方

        我在数据库中查看,#__menu 表中没有名为“parent”的字段。但是,有一个名为“parent_id”的字段

        libraries/joomla/document/html/html.php 文件中的第 499 行(Joomla 1.7.0 中使用的当前库中的第 452 行)是

        $where[] = 'parent = ' . $active->id;

        但我认为应该是

        $where[] = 'parent_id = ' . $active->id;

        每当我进行更改时,一切似乎都运行良好。

      123. [#390] Joomla CMS [#26491] 日期图标“字符串未翻译” (chdemko)

        参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26491

      124. [#392] Joomla CMS [#25565] 发送电子邮件时出现“语言字符串加载失败” (chdemko)

        参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=25565

      125. [#383] 修复了 modellist.php 中的案例拼写错误(将 getstart 更改为 getStart) (jmcameron)

        修复了 libraries/joomla/application/component/modellist.php:255 中的案例拼写错误。

        应该是“function getStart”,但却是“function getstart”。

        它工作正常,但很难在区分大小写的搜索中找到。单元测试不受影响。

      126. [#380] Joomla CMS [#26844] 批量处理改进 (mbabker)

        当前批量处理方法中存在一个错误,即当复制项目时,如果访问级别也更改,则访问更改将应用于原始项目。批量复制过程被修改为向批量处理返回一个新项目 ID 数组,并且批量处理被修改,以便首先执行复制/移动命令,并且在成功复制后,$pks 数组将使用新 ID 重置。

        参见 CMS 问题:http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26844

      127. [#378] 应用程序层重构阶段 1:JWeb & JWebConfig (LouisLandry)

        此拉取请求引入了新的 JWeb 类来封装 Joomla 平台的 Web 应用程序。除了 JWeb 之外,我还添加了 JWebClient,它充当非常轻量级但高效的 Web 客户端检测器——非常感谢 Elin Waring 帮助进行研究。这两个类都经过了彻底的单元测试;JWeb 的代码覆盖率为 92%,JWebClient 的覆盖率为 82%。

        作为这项工作的一部分,我还确保了 JWeb 和 JCli 之间的功能等效性,以便为任何 SAPI 编写应用程序都既熟悉又流畅。JCli 现在也具有 100% 的代码覆盖率。JWeb 和 JCli 都完全支持所有依赖对象的依赖注入,以提高灵活性和可测试性。

        此拉取请求中还包含对单元测试系统的大量添加/修复,以使模拟 Joomla 平台中的各种类变得更加容易。

      128. [#381] 更正单元测试 (chdemko)

        单元测试当前无法通过。这是由于文件 JRequestCleanTest.php 加载文件 JRequest-helper-dataset.php 而不加载 JPATH_PLATFORM.'/joomla/environment/request.php

      129. [#376] 移动应用程序示例 (eddieajau)

        应用程序示例已移至新的存储库。

        https://github.com/joomla/joomla-platform-examples

      130. [#375] Joomla CMS [#26818] 文件和包安装无法通过 Joomla! 更新程序更新 (chdemko)

        合并 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26818 来自 CMS g 修改:libraries/joomla/installer/adapters/package.php

      131. [#161] 添加可选的密码强度计。 (realityking)

      132. [#366] 提高 JDatabaseQuery 的代码覆盖率 (eddieajau)

        提高了 JDatabaseQuery 和 JDatabaseQueryElement 的测试覆盖率。使用示例用法更新了文档块。修复了 JDatabaseQuery::escape 中的一个错误,该错误实际上没有返回任何内容。将测试向上移动了一级。

      133. [#368] 修复 JFormFieldRules 中的一个小错误。 (realityking)

        与 CMS 合并时发现的另一个小错误。

      134. [#373] 修复由重复的 JDispatcher 类引起的单元测试错误。 (eddieajau)

        此补丁将全局 JDispatcher 模拟添加到 Joomla 测试用例,并修复了用户包中的问题。

      135. [#340] 添加了测试说明和示例数据库 CLI 应用程序。 (eddieajau)

      136. [#359] 将 JDispatcher::getInstance 转换为使用受保护的静态类来存储其单例。 (eddieajau)

        当前,由于 getInstance 方法中的静态存储,无法模拟 JDispatcher。此方法已更改为使用受保护的静态类变量,该变量可以在子类中被覆盖。还为 JDispatcher 添加了基本测试以及一个检查器类,该类可以在需要时注入模拟调度器。

      137. [#361] 允许 JHtml::date 中的 $format 包含语言键并在这样做的​​情况下调用 JText::_()。(WebMechanic)

        即 JHtml::_('date', $datevalue, 'DATE_FORMAT_LC4');

        此补丁测试 $format 是否是现有语言键,并且应该使此帮助程序的接口更加方便、"直观"和 DRY。使这成为对常见、重复和外观丑陋的 JHtml::_('date', $datevalue, JText::_('DATE_FORMAT_LC4')); 的快捷方式。

      138. [#363] JFactory::getUser() 中的编码标准 (rvsjoen)

        这清理了一些行尾空格和其他一些内容。

      139. [#175] 如果给定的 id 是我们自己,则行为就像没有给出 id (rvsjoen)

        即使 $id 与当前登录用户的编号相同,JFactory::getUser() 和 JFactory::getUser($id) 的行为也不相同,因此,如果插件使用 JUser::bind() 更改了用户对象,如果给定 id,JFactory 不会返回正确的对象。此补丁将使 getUser() 检查给定的 id 是否与当前登录用户匹配,如果匹配,则行为就像没有给出 id 一样。

      140. [#25] 针对 #22587 和 #24285 的修复 (klas)

        问题 22587

        • 更改模块缓存生存期以按预期设置(秒必须转换为分钟)
        • 缓存处理程序需要使用所有参数进行静态变量缓存

        此外,$_handler 是一个静态变量,因此不能作为 $this->_handler 引用(此错误是在 #22587 报告后引入的)- 更改回 self::$_handler

        问题 24285

        修复更改模块缓存以仅存储模块执行后更改的标头。比较回调之前和之后的标头。

      141. [#153] 检查 opendir 的返回值是否为 NULL 而不是 FALSE (rvsjoen)

        我们需要在将 opendir 传递给 readdir 之前检查 opendir 的返回值,readdir 似乎无法像预期那样处理无效资源。以下 PHP 语句将导致无限循环的堆栈跟踪。

        php -r 'while(readdir(1) !== false){ echo "hello"; };

        来自 php 文档

        较新的内部参数解析 API 已应用于 PHP 5.3.x 附带的所有扩展。此参数解析 API 使函数在传递不兼容参数时返回 NULL。此规则有一些例外,例如 get_class() 函数,它将在错误时继续返回 FALSE。

        因此,我们要么必须检查 opendir 的返回值是否为 NULL,要么删除特定类型的比较,只使用 != 而不是 !==。

      142. [#351] 修复了 ControlSignatureSniff (elkuku)

        这应该解决 else 的问题。

        if($a) { } else { }

        if($a) { } else { }

        问题

        1. 我对 elseif 与 else if 的使用进行了搜索。事实证明,它几乎是 50:50 ;) - 我们应该关心这个吗?
        2. 是否应该添加一些包含错误代码的“测试”来验证嗅探器是否真的有效?
      143. [#356] Joomla CMS [#26451] 收藏夹图标消失 (elinw)

        JCache:: setWorkarounds 中需要链接,以便在缓存时不保留收藏夹图标

        在此处查看较旧代码的补丁:http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26451

      144. [#353] 修复了 JApplication::login 中的拼写错误 (realityking)

        在将内容同步回 CMS 时发现了一个很小但致命的拼写错误。

      145. [#355] 使用 $replace = false 多次调用 JResponse::setHeader,同时使用 th(chrisdavenport)

        使用 $replace = false 多次调用 JResponse::setHeader 并使用相同的名称会正确地将多个条目添加到 self::$headers 数组中。但 JResponse::sendHeaders 会始终替换相同名称的早期标头,因为 PHP 标头函数的第二个参数默认为 true,而不是 false。

      146. [#349] 修复 JCache 中的子包标签 (elinw)

      147. [#344] 修复 JHtmlBehavior::noframes 中的 js 脚本引号错误。 (eddieajau)

        此错误导致 CMS 管理员登录页面出现空白。

      148. [#326] 用于动态生成的 HTML 表格的 JGrid (Hackwar)

        此拉取请求中的 JGrid 类允许生成有效的 HTML 表格。与在布局中硬编码表格相比,它的优势在于可以将其通过插件事件运行,从而轻松扩展表格。

        一个具体的用法示例:在后台用户列表视图中,我们生成一个 JGrid 表格对象,然后用所有当前的列和行填充它。现在我们通过一个插件事件发送该表格对象(以及使用的数据)。一个购物车插件现在添加了一个列,显示这些用户是否有未结发票,该列添加到“最后访问日期”列之前。另一个插件获取当前的“姓名”列,并将每个用户的原始内容更改为在将鼠标悬停在姓名上时显示更多统计信息。最后,在布局中,您只需执行 echo $table->render();,就可以得到一个带有正确缩进标记的有效 HTML 表格。

        对实现的一些说明:该类不会转义或检查单元格或属性的数据。这是有意为之的,因为开发人员应该能够使用各种标记,而不会让他的代码被该类更改。基本上,该类仅用于延迟表格的渲染,而不会进一步干预标记。

        生成的表格 HTML 的缩进也不完美。当开发人员在其表格内容中引入换行符时,缩进就会被打乱,但总的来说,它应该使阅读生成的代码更容易一些。我也尝试过不使用缩进和换行符,但这变得几乎无法阅读,这就是为什么并非所有字符串都使用单引号,而是使用双引号来处理缩进和换行符的原因。

        在上次拉取请求之后,Andrew Eddie 告诉我,我可能应该将链式调用支持添加到该类中。此修订版中已完成此操作。我也想过将它分解成更小的类,比如基于行甚至单元格,但这似乎只是过度复杂化了。因此,我故意坚持使用这个单一的整体类。我对将设置对象设置为当前行的解决方案并不完全满意,但它是链式调用的必要条件,并且比以前的方法需要更少的代码。

        最后,也是最重要的,是类名。我们已经在使用 JTable,我不想将其命名为 JHTMLTable,因为这样会干扰 JHTML 类命名空间。谁知道呢,也许我们将来想要一个生成一些表格内容的 JHTMLTable 类。因此,最终,JGrid 似乎是最好的折衷方案,并且它参考了 Visual-C 或 Visual Basic 的 Grid 元素。

        下面是一个关于如何在用户管理器中使用它的简短示例。这是 com_users 中 Joomla 1.7.0 后台用户视图中表格标题的副本。

        ``` php <?php jimport('joomla.html.grid');

        $table = new JGrid(array('class' => 'adminlist')); $table->setColumns(array('checkbox', 'name', 'username', 'block', 'active', 'groups', 'email', 'lastvisit', 'registerdate', 'id'));

        $table->addRow(array(), 1) ->addRowCell('checkbox', '', array('width'=> '1%')) ->addRowCell('name', JHtml::('grid.sort', 'COM_USERS_HEADING_NAME', 'a.name', $listDirn, $listOrder), array('class' => 'left')) ->addRowCell('username', JHtml::('grid.sort', 'JGLOBAL_USERNAME', 'a.username', $listDirn, $listOrder), array('class' => 'nowrap', 'width' => '10%')) ->addRowCell('block', JHtml::('grid.sort', 'COM_USERS_HEADING_ENABLED', 'a.block', $listDirn, $listOrder), array('class' => 'nowrap', 'width' => '5%')) ->addRowCell('active', JHtml::('grid.sort', 'COM_USERS_HEADING_ACTIVATED', 'a.activation', $listDirn, $listOrder), array('class' => 'nowrap', 'width' => '5%')) ->addRowCell('groups', JText::('COM_USERS_HEADING_GROUPS'), array('class' => 'nowrap', 'width' => '10%')) ->addRowCell('email', JHtml::('grid.sort', 'JGLOBAL_EMAIL', 'a.email', $listDirn, $listOrder), array('class' => 'nowrap', 'width' => '15%')) ->addRowCell('lastvisit', JHtml::('grid.sort', 'COM_USERS_HEADING_LAST_VISIT_DATE', 'a.lastvisitDate', $listDirn, $listOrder), array('class' => 'nowrap', 'width' => '10%')) ->addRowCell('registerdate', JHtml::('grid.sort', 'COM_USERS_HEADING_REGISTRATION_DATE', 'a.registerDate', $listDirn, $listOrder), array('class' => 'nowrap', 'width' => '10%')) ->addRowCell('id', JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder), array('class' => 'nowrap', 'width' => '3%'));

        echo $table->render(); ```

      149. [#337] 添加复选框测试的脚手架。 (elinw)

        替换混乱的代码

      150. [#341] 修复 JHtmlBehavior::multiselect 中的未初始化变量 (WebMechanic)

      151. [#338] 测试框架修复和 JSession 模拟的添加 (eddieajau)

        修复了存储工厂状态的变量的命名问题。

        添加了在创建模拟 JSession 对象时传递选项数组的功能,以便测试可以更轻松地调整返回的结果。当前支持修改会话 ID 以及 $session->get('user') 返回的用户对象的 ID、名称和用户名。

      152. [#330] 将查询转换为使用 JDatabaseQuery (mbabker)

        文档、表单、html、安装程序和用户库已将大多数查询转换为使用 JDatabaseQuery 构建。我认为现在还有一些查询需要完成,因为它们比较高级。此外,一些 JExceptions 已更改为 Exception。

      153. [#332] 在 JCache 中添加对“getHeadData”的检查 (Bakual)

        在缓存中添加了对“getHeadData”方法的检查,以防止在加载不存在该方法的 JDocumentRaw 时出现问题 #327。

      154. [#264] Joomla CMS [#25676] 建议改进 libraries/joomla/installer/adapters/component.php 的错误处理 (jmcameron)

        如果在安装组件时构建管理菜单存在任何问题,将改进错误报告。

        请参见:https://github.com/joomla/joomla-platform/issues/246 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=25676

      155. [#321] 编码规范:各种小修复 (elkuku)

        这添加了两个新的代码嗅探器,以防止以下错误

        class Foo { public static function bar() { /* * 在静态方法中使用“$this”会导致运行时错误 * Classes_StaticThisUsageSniff */ echo $this->baz; /* * 分号前有空格;预期为“'foo';”但发现“'foo' ;” * WhiteSpace_SemicolonSpacingSniff */ echo 'foo' ; } }
      156. [#318] 代码风格:删除一些多余的空格 (elkuku)

        检查:* 文件的第一项内容之前没有空格。* 任何行上的内容之后都没有空格。* 函数和类中没有两行或多行空行。* 文件的最后项内容之后恰好有一行空行。

      157. [#315] 修复变更日志生成器中的错误 URL (elkuku)

        更改生成的变更日志中的 URL,例如:https://api.github.com/repos/joomla/joomla-platform/issues/100 为 https://github.com/joomla/joomla-platform/issues/100

        以及用户:https://api.github.com/users/elkuku 为 https://github.com/elkuku

        最后一个是“硬编码”的,因为响应没有提供“好的”URL。

        我在玩 git 页面和 docbook 构建工具时发现了这个问题。结果是 => http://elkuku.github.com/joomla-platform/ <= 请点击!随便看看;)

      158. [#317] 修复单元测试中使用过时的 方法。 (realityking)

      159. [#313] 测试覆盖率改进 (mbabker)

        对测试覆盖率进行了另一轮小的改进。主要针对的是那些只有一两行没有覆盖的代码,以及一些根本没有测试的代码。

      160. [#311] 修复 JLog 中使用过时的 方法。 (realityking)

        修复 JLog 类中使用过时的 JRegistry::getValue 的问题。

      161. [#306] 在实例化类时删除不必要的空大括号,代码嗅探器标准 (elkuku)

      162. [#309] CSS 优化 (realityking)

      163. [#305] 提高测试覆盖率 (mbabker)

        通过这些添加,测试覆盖率应该会有所提高。已添加方法或测试用例,以尝试涵盖现有测试遗漏的函数中的一些代码行。

      164. [#239] 行为 (realityking)

        为开发人员提供更多灵活性。

      165. [#302] 对 JCli::fetchConfigurationData 的调整 (LouisLandry)

        允许 CLI 应用程序更好地处理默认情况,并且不需要显式定义 JPATH_BASE。

      166. [#303] 修复了 JFactory::getDate 中由于缓存的 JDate 对象序列化导致的错误。(eddieajau)

        将日期的内部存储从静态函数变量转换为静态类变量,然后在 getDate 中返回一个克隆,以解决由于使用嵌入 DateTimeZone 对象序列化和反序列化 JDate 对象而导致的问题(它们永远无法正确恢复)。

        还添加了在 Joomla 测试工具中保存、覆盖和还原 JFactory 的日期属性的功能。

      167. [#273] 删除 MySQL 4 解决方案。 (realityking)

      168. [#294] Joomla CMS [#26694] 可捕获的致命错误:无法将 DateTimeZone 类的对象转换为字符串 (eddieajau)

        修复了 JFactory::getDate 中将时区作为 DateTimeZone 传递时的错误。

        恢复 JFactory::getDate 对 Joomla 1.5 的向后兼容性,因为它会缓存给定时间的日期。

        添加了 JFactory::getDate 的单元测试。

        添加了 JDate 构造函数的附加测试用例,其中时区作为 DateTimeZone 对象传递。

        将通用的 JLanguage 模拟添加到 Joomla 测试工具中。

      169. [#226] 各种小修复。 (realityking)

      170. [#298] 修复多行 if 缩进规则中的错误;修复更多检查样式警告。 (eddieajau)

        修复错误:多行 IF 语句未正确缩进;在多行条件语句中,预期缩进 6 个空格,但只找到 4 个空格。它添加了 4 个空格,而不是 1 个制表符。

        修复了其他检查样式警告。

      171. [#295] 为三个 CLI 应用程序添加示例 (eddieajau)

        添加三个 CLI 应用程序示例

        1. 一个简单的 Hello World 应用程序。
        2. 一个向您展示如何访问命令行参数的应用程序。
        3. 一个向您展示如何使用 configuration.php 文件的应用程序。
      172. [#297] 修复没有错误页面时发生的无限循环 (elinw)

      173. [#296] 向 JHttp 的 get、head 和 post 方法添加 headers 参数,并为 JHttp 添加了一些测试。(eddieajau)

        此拉取请求向 JHttp 的 get、head 和 post 方法添加了一个额外的 $headers 参数,以便您可以为每个请求定义其他标题。它还为 JHttp 类添加了一些测试。

      174. [#285] 修复检查样式警告和错误。 (eddieajau)

      175. [#283] 将 JLoader::discover 转换为使用 DirectoryIterator 并添加递归选项(eddieajau)

        将 JLoader::discover 转换为使用 PHP 的 DirectoryIterator 或 RecursiveDirectoryIterator。

        向 JLoader::discover 添加第四个参数,以允许递归遍历子文件夹。

        提高单元测试的代码覆盖率。

        根据样式指南修复受保护类属性的命名。

      176. [#292] 修复 JXmlElement::getAttribute 的遗留使用。 (eddieajau)

      177. [#289] 使 PhpUnit 配置更接近平台文件结构 (elinw)

        使 PhpUnit 配置更接近平台文件结构。

      178. [#280] 修复代码样式。 (elinw)

        修复了一些代码样式问题。

      179. [#242] JHtmlBatch 微调和单元测试 (mbabker)

        在此拉取请求中,$published 参数已从 JHtmlBatch 的 item 方法中删除,因为它实现不正确(使用 published 而不是 category.options 预期的 filter.publish),并且与 category.options 的其他使用不一致,因为这是唯一一次实现发布筛选器的地方。此外,还添加了该类方法的基本单元测试。

      180. [#282] 修复尝试设置未定义信号时发生的 pcntl_signal 错误 (dusto)

        取消上次拉取请求,因为它针对的是主分支。

        这将检查信号是否不等于 0,因为这会导致 pcntl_signal 抛出错误。

      181. [#258] 添加 Phing 构建文件和 XSL 样式表,用于手册的简单 XHTML 输出。(eddieajau)

        修复 docbook 文件中的验证问题。更新变更日志。在 PHP 编码标准章节中添加更多内容。

        在 /docs/ 文件夹中使用 phing 构建手册(需要命令行上的 xsltproc)。

      182. [#277] 修复 JString::strrpos 中偏移量的错误默认值;为 JHtmlTruncate 添加更多选项。 (eddieajau)

        修复了由 JString::strrpos 的偏移量默认为 false 而不是整数零引起的平台相关错误(utf8_strrpos 期望参数 3 为 long)。

        此外,还为 JHtmlString::truncate 添加了选项,允许在长度标记处分割单词,并可以选择删除所有 HTML 标签。

      183. [#263] 修复代码样式问题。 (elinw)

        主要在 html/parameter 中进行 doc block 工作

      184. [#266] 修复 docbook 文件中的印刷错误。 (elinw)

      185. [#271] 修复代码样式问题。 (elinw)

        继续清理 doc bloc。

      186. [#262] 添加 JString::increment 方法,并修复 JHtmlString::truncate 中的错误。 (eddieajau)

        添加 JString::increment 方法,以更轻松地递增标题/标签字符串,例如在应用程序中复制例程中使用的“标题 (2)”。

        此方法可用于替换 CMS 中的重复代码:CategoryModelCategory、MenusModelItem、ModulesModelMouldes 和 TemplatesModelStyle。

        更新 JModelAdmin 以在 generateNewTitle 中使用新方法。

        还包括代码覆盖率和代码清理。

        修复 JHtmlString::truncate 中的错误,其中标签未正确关闭。

        为 JHtmlString 添加单元测试。

      187. [#272] 修复 JTree 和 JParameter 元素中的 DocBlocks。 (elinw)

      188. [#257] 添加 JArrayHelper::pivot,改进 JArrayHelper::sortObjects 并提供完整的代码覆盖率。 (eddieajau)

        在 JArrayHelperTest 中按字母顺序排列方法,并添加对 arrayUnique 方法的测试。

        重构 _fromObject 中无法访问的代码(如果没有 recurse 参数为真,则无法处理数组。添加测试用例以验证)。

        更改 testSortObjects 以在 Mac 上执行大多数测试(仅忽略导致问题的部分)。

        重构 sortObjects 方法以使用内部静态变量表示排序属性,而不是一些任意的[不良做法]全局变量。

        添加 JArrayHelper::pivot,它允许您对标量、数组或对象元素数组创建纯反向查找,或基于常见值集合或指定数组/对象键的查找。

      189. [#232] Joomla CMS [#25957] libraries/joomla/application/module/JModuleHelper:moduleCache() 的错误行为 (elinw)

        基于此处提出的代码:http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=25957 此问题已存在于跟踪器中自 5 月份以来。

      190. [#260] Joomla CMS [#26612] Contacts 组件在 1.7 中错误地设置了 Reply-To(infograf768)

        修复与 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26612 相关的平台问题

      191. [#229] Joomla CMS [#25962] APC 锁定方法似乎返回了错误的值 (elinw)

        修复 docblocks 中的错误返回值。

        http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=25962

      192. [#214] 为测试和 JDate::getInstance 添加通用模拟。 (eddieajau)

        在 JoomlaTestCase 中添加了对获取通用模拟对象的支持,它为 JApplication、JConfig、JDatabase 和 JSession 模拟提供了 getter。

        将 JDatabaseQuery 测试转换为使用通用数据库模拟。

        改进 JForm 中规则字段测试的设置和拆卸。

        为 JDate 添加测试(涉及语言的测试尚不完整,因为与 CMS 紧密耦合)。

        将静态 getInstance 方法添加到 JDate 作为 new JDate 的别名。

      193. [#255] 将 JLog 依赖项添加到 JError 和 JException (elinw)

        将 JLog 添加到 JError 和 JException,因为两者已弃用,弃用日志记录会导致无限循环。

      194. [#256] 修复 CMS 中的登录和模块显示问题 (eddieajau)

        使用数据库魔法调用(qn 和 q)会导致会话数据库类出现问题,因此已将其替换为完全限定名。修复了模块显示中的一个小故障。JAuthentication::authenticate 仍然被定义为静态的,这会导致插件出现问题。

      195. [#254] 修复 JError 中的嗅探注释和 docblocks (elinw)

      196. [#252] 将 JAuthentication 恢复为非静态类,并相应地更新测试 (pasamio)

        这修复了与同步 CMS 相关的一个问题,该问题会导致 CMS 崩溃,因为插件未正确加载。这恢复了 11.2 之前不使用静态类的行为。此外,还进行了少量更新,以修复测试中使用空格而不是制表符的问题。

      197. [#247] 检查模块是否已正确设置 (elinw)

        在测试 JBs 时,发现了一个回归,即在 getModule 中,模块助手现在不再将 $module->user 设置为所有模块的 0。我进行了一些调查,这似乎是 1.0 的一个遗留属性,似乎是为了检查您是否为菜单模块的超级用户。据我所知,它在当前 CMS 中没有任何用处。(查看 1.0 模块代码解释了模块助手的某些其他部分的许多问题。)

      198. [#248] 添加了一个命令行应用程序,用于自动从已关闭的拉取请求中生成变更日志。 (eddieajau)

      199. [#236] 为 JFormRuleColor 添加单元测试,并修复该规则。 (realityking)

      200. [#209] 更新变更日志 (nikosdion)

        根据 Andrew 在 https://github.com/joomla/joomla-platform/pull/201#issuecomment-1776347 的请求,使用建议的更改更新变更日志。

      201. [#222] 修复 JPagination 的 checkstyle 错误。 (LouisLandry)

      202. [#221] 修复一些 checkstyle 问题。 (LouisLandry)

      203. [#220] 修复在注册 JDatabaseException 时缺少 J 前缀的问题。 (eddieajau)

      204. [#212] 修复登录例程以显示身份验证插件生成的错误消息 (roland-d)

        修复登录例程以显示身份验证插件生成的错误消息。

      205. [#219] 与 CMS 主干更改合并。 (LouisLandry)

        关闭 #197。

        以及

        关闭 #172。

      206. [#218] 修复抽象 JDatabase::getTableColumns 的规范。 (eddieajau)

      207. [#215] 拉取请求 212 的描述 (roland-d)

      208. [#213] 修复恼人的拼写错误。 (elinw)

      209. [#211] 对 JForm 库进行 CodeSniffer 清理 (mbabker)

        使用 CodeSniffer 对 JForm 库进行了清理。通过这些更改,报告中不再出现任何消息。

      210. [#208] 将 JDatabase::replacePrefix() 的访问权限更改回 public (elkuku)

        如 Gooogle Groups 中建议,并在 CMS Tracker 上报告 #26596 和 #26617

      211. [#201] 修复了 JHttp 中的拼写错误 (stream_set_timeout vs stream_settimeout),因为它导致 (nikosdion)

        修复了 JHttp 中的拼写错误 (stream_set_timeout vs stream_settimeout),因为它在使用该类时会导致致命错误。希望这次我将 pull 请求提交到正确的分支。

      212. [#207] Docblocks (elinw)

      213. [#205] 添加了缺少的 jimport (ianmacl)

        让我们再试一次。 叹息

      214. [#204] 代码风格工作 (elinw)

        轻松获胜

      215. [#193] 在非对象上调用成员函数 qn() (jonnsl)

      216. [#195] 更多文档块工作 (elinw)

        代码风格

      217. [#203] 修复了已弃用警告中提到的函数名称。 (jlleblanc)

        已弃用的 JDatabase::loadResultArray() 记录了一个使用错误的替换函数名称的警告。此补丁将其从 getColumn() 更改为 loadColumn()。

      218. [#191] 为 Joomla 的更多 JavaScript 函数命名空间,并弃用旧的函数(realityking)

        为 Joomla 的更多 JavaScript 函数命名空间,并弃用旧的函数。

      219. [#198] 各种修复 (realityking)

        再次进行了一些较小的修复。(第 2 次)

      220. [#194] 添加测试执行说明 (ianmacl)

        有关运行 phpunit 和 phpcs 的基本说明。

      221. [#192] 缺少 @since 标签 (elinw)

      222. [#189] 将 Joomla 1.7 中的媒体文件夹更改同步到 staging。 (realityking)

        我针对 staging 做了这个,只是为了确保,但对于将来,当不涉及 PHP 代码时,我们是否也应该针对 staging 做 pull 请求?

      223. [#188] 各种小修复。 (realityking)

      224. [#184] 代码清理。 (LouisLandry)

      225. [#182] 代码清理 (eddieajau)

        修复 HTML 包。

      226. [#180] 允许移除管理菜单条目 (rvsjoen)

        这将允许开发人员使用安装程序中的 postflight() 钩子移除组件菜单中的后端条目,而不会在卸载组件时抛出有关缺少菜单条目的错误。

      227. [#179] 添加了 String 包,更新了更改日志 (robschley)

        将 JString 从 Utilites 包移到 String 包。添加了 JStringNormalize。删除了旧的 CHANGELOG。

      228. [#178] 代码清理。 (eddieajau)

      229. [#174] 当更新清单无法解析时,优雅地返回 (rvsjoen)

        不要在更新清单无法解析时直接退出,而是给出警告并继续执行。

      230. [#173] 测试 (elinw)

        我注意到,用于确保规则加载的基本测试中没有更新的规则。

      231. [#176] 数据库包清理 (robschley)

        将 DatabaseException 重命名为 JDatabaseException 修复了几个在没有错误消息或代码的情况下抛出数据库异常的实例。

      232. [#170] Docblocks 工具栏 (elinw)

      233. [#168] 代码清理。 (eddieajau)

      234. [#166] 代码清理。 (eddieajau)

      235. [#165] Docblocks (elinw)

      236. [#167] 日志记录 (elinw)

        修复导致测试失败的问题

      237. [#113] 日志记录 (elinw)

        更多关于弃用日志记录的工作

      238. [#163] 代码清理;减少数据库包中的重复代码。 (eddieajau)

      239. [#162] 为平台版本 11.2 添加了更改日志条目。 (eddieajau)

      240. [#157] 错误的访问检查 (elinw)

        http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26399 修复访问权限,感谢 Smokerman Nikola。

      241. [#159] 代码清理和代码减少 (eddieajau)

        数据库包中的代码清理。通过将 JDatabaseExporterMySqli 扩展自 JDatabaseExporterMySql 来减少重复代码。

      242. [#154] 修复错误的子包标签 (rvsjoen)

        这只是修复了一个错误的 @subpackage 标签。

      243. [#147] 为 JForm 实现一个颜色字段。 (realityking)

        这使用了 Opera 11 中的本机颜色选择器,并在所有其他浏览器中回退到 MooRainbow。

        还添加了用于验证的相应 JFormRule。

      244. [#152] 为 Eclipse PDT3 和格式化程序插件添加了格式化标准。 (eddieajau)

      245. [#151] 对构建文件进行了一些小的调整。 (LouisLandry)

      246. [#150] 对代码嗅探器和格式规则进行修改 - 以及一些代码清理。(LouisLandry)

      247. [#149] 初始文档和版本 11.2 更改日志 (eddieajau)

        在树中添加了一个文档部分,其中包含两本 Docbook 格式的书籍(最终可用于推送到 ePub、PDF 和各种其他格式)。第一个是平台手册,目前只包含更改日志附录(版本 11.2 的最新版本,版本 11.1 需要大量工作)。添加了这个附录后,其他开发人员在进行 pull 请求时也可以同步添加到更改日志(通常是他们在 pull 请求中给出的解释,比如这个)或手册正文中的功能更改说明(当手册内容更充实时)。

        另一本书是来自几个人一直在努力的编码标准手册,它还在开发中。

      248. [#145] Docblock 修复 (pasamio)

        注意到一个格式问题,不确定应该将返回值设置为哪个值,并修复了从 11.1 到 11.2 不正确标记的 authorise 函数。

      249. [#144] 去掉字符 (elinw)

个人贡献者做出的 pull 请求数量

    1. eddieajau: 39
    2. realityking: 39
    3. elinw: 36
    4. chdemko: 21
    5. mbabker: 15
    6. Hackwar: 14
    7. elkuku: 14
    8. LouisLandry: 13
    9. ianmacl: 11
    10. rvsjoen: 9
    11. AmyStephen: 4
    12. robschley: 4
    13. pasamio: 3
    14. nikosdion: 3
    15. WebMechanic: 3
    16. Bakual: 2
    17. jmcameron: 2
    18. roland-d: 2
    19. jonnsl: 2
    20. n3t: 2
    21. jlleblanc: 1
    22. chrisdavenport: 1
    23. infograf768: 1
    24. klas: 1
    25. dusto: 1
    26. ssv445: 1
    27. dextercowley: 1
    28. beat: 1
    29. andreatarr: 1
    30. nonumber: 1
    31. katalystsol: 1

. 更新:修复拼写错误