Joomla 平台 12.1 版本(“Louis Landry”)已于 2012 年 5 月 9 日发布标签并发布。它是 12.x 系列的第一个版本。除了大量的错误修复外,它还带来了新的功能,主要功能包括
- 简化了模型、视图和控制器的基础类
- 数据库迭代器
- PostgreSQL 驱动程序
- 新的 Crypt 包
- 文件修补程序
完整的提交列表可在以下位置获得 github.com/joomla/joomla-platform/commits/12.1 以及 API 文档 api.joomla.org
项目规模
- 类:309 个(平台 11.4 中为 270 个)
- 方法:2122 个(平台 11.4 中为 2000 个)
- 行数:28540 行(平台 11.4 中为 25970 行)
- 注释:56837 个(平台 11.4 中为 62155 个)
- 空行:10472 行(平台 11.4 中为 11877 行)
代码质量摘要
- 代码风格检查:142 个警告(平台 11.4 中为 199 个)
- 重复代码:27 个警告(平台 11.4 中为 26 个)
- 编程混乱检测器 (PMD):702 个警告(平台 11.4 中为 1002 个)
- 测试覆盖率:39.70%(平台 11.4 中为 41%)。降低是由于一些类被移动到 legacy 文件夹。
新功能
- 对 JViewHtml 进行了少量改进
- 添加了 JDatabaseDriver::disconnect() 以支持干净地断开数据库连接。
- 设置 JForm 字段标签的 CSS 类
- 显示媒体预览
- 简化了模型、视图和控制器的基础类。
- Android 平板电脑检测
- 分别考虑 iPad 和 iPod(针对问题 #1122)
- 获取身份
- JHttp:扩展请求方法
- 实现数据库迭代器
- 为查询迭代实现可计数数据库迭代器
- 向 JApplicationBase 添加可选身份;使 JApplicationWeb 中的依赖项注入更加灵活
- 添加 JLanguageStemmer。为 JLanguage 添加单元测试。
- 更新了数据库驱动程序,以尝试重新连接到已断开的数据库服务器。
- Joomla! 平台的 PostgreSQL 驱动程序 [清理版本 _ v3]。
- 用于逐步弃用库的旧版类路径。
- 添加了 JStringNormalise::fromCamelCase()
- 为相关媒体文件添加卸载支持
- 为复选框字段添加默认值
- 为 FROM 和 INSERT 元素及其测试添加了子查询功能。
- 将 curl 和 socket 添加到 Joomla 的更新过程中
- 添加了新的 JStringInflector 类
- 新的 Crypt 包。
- 添加 JDocumentImage。
- 重新组织和重构了数据库包。
- 向 JDocument 添加了一些简单的 HTML5 支持。
- 改进了系统自动加载器。
- 实现文件修补程序
- 添加 JGithubCommits 类
- 向 JPath::find() 添加迭代器支持
- 添加 Union 方法
- 向数据库驱动程序添加最低支持版本信息
- 更新 libraries/joomla/application/menu.php
- JInput 实现 Serializable
- 添加了 JDatabaseQuery 函数以提取时间戳的一部分。
弃用
- 删除 JLog 中已弃用的方法 + 其他修复
- 删除 JStringNormalise 中的 JString 用法
- 弃用 JXMLElement
- 处理 JRequest 的一些出现情况
- 为 B/C 添加 JDatabase::splitSql()。
- 删除 JFormFieldTemplateStyle。
- dl() 函数已从 5.3 中的大多数 PHP SAPI 中删除。
- 安装程序包:删除 db->error
- 客户端包:将一个 return JError 更改为 Exception
- 表格包:db 错误和 Exception/JText 更改
- 邮件包:Exception 和 JError
- 表单包:db->error、Exception/JText 修改
- 日志包:删除 DB 错误语句
- CMS 分离:检查 CMS 常量是否已定义
- 插件包:删除一个 ->getErrorMsg
- 事件包:将 JError 返回更改为 Exception
- 将 MooTools 更新到 1.4.5 版本。
- 将 JDate->_tz 重命名为 JDate->tz
- 将 JToolBar 移动到 CMS 并将其重命名为 JToolbar。
- 为 B/C 添加 JDatabase::getConnectors
- 实现 JAccess::getActionsFromFile 和 JAccess::getActionsFromData 方法
- 删除旧版代码
- 减少对 JObject 的依赖
- 删除更多已弃用的代码。
- 弃用 JRequest,转而使用 JInput
- 将 JFormFieldMenuitem 移动到 CMS
- 删除一些旧版代码。
- 删除 JBrowser 中已弃用的 API。
- 将 JFTP 重命名为 JClientFTP,将 JLDAP 重命名为 JClientLdap 以进行自动加载。
- 弃用 JObject 中属于旧版错误系统的 method 和属性。
- 删除名称不以 mod_ 开头的模块的旧版支持。
- 删除自动加载器已使其过时的代码。
- 将 MooTools 更新到 1.4.4 版本,并放弃与 MooTools 1.2 的兼容性
- 将 PHPMailer 更新到 5.2.1 版本。
- 删除已弃用的 JXMLElement 代码
- 删除 JUpdater 中已弃用的代码
- 将 JHelp 移动到 CMS
- 替换文档包中的 JRequest
- 替换表单包中的 JRequest
- 删除 JHtml 中已弃用的代码
- 替换 HTML 包中的 JRequest
- 弃用基于包的异常。
- 在 JSession 中提供已弃用的 JRequest::checkToken() 的替代方法。
- 删除已弃用的 JError::isError()。
- 将 JTableContent 移动到 CMS。
- 弃用 JController::authorise
- 删除 JRegistry 中的另一部分已弃用的代码。
- 删除安装程序包中的旧版代码
- 删除 JApplicationHelper 中的旧版代码
- 删除已弃用的 JFormFieldEditors。
- 删除已弃用的 JObject::toString
- 删除 JController 中已弃用的代码
- 删除 JUtility 中已弃用的代码
- 将 JFormFieldMedia 和 JFormFieldHelpsite 移动到 CMS。
- 删除 JFactory 中已弃用的代码。
- 弃用 JUser::getParameters()
- 删除 JRequest:clean()。
- 删除安装程序包中的已弃用代码
- 删除 JDate 中已弃用的代码
- 删除用户包中已弃用的代码
- 删除 JTable 中已弃用的方法
- 删除 JParameter 和 JElement
- 删除已弃用的 JDatabase* 代码
- 删除 JRegistry 中已弃用的代码
- 删除 JLanguage 中已弃用的方法
- 删除 HTML 包中已弃用的方法
- 删除 JSimpleXML。
重构
- 代码清理
- 将更多 CMS 特定的类移动到 legacy。
- 删除 JStringNormalise 中的 JString 用法
- JLog 异常、类名大写和小写以及 DBO
- 将 JDatabase 中剩余的代码移动到 JDatabaseDriver。
- 使更多类可自动加载。
- 删除对数据库包中几个类的依赖。
- 使 JHtml::tooltip 更简洁
- 旧版支持的延续。
- 删除 JLanguage 中 PHP 5.3.0 的解决方法。
- 简化 JFactory::getUser()
- JError 到 JLog
- 将 HTML 和表单包中抛出的异常消息转换为纯文本
- 添加类型提示并更正方法 docblock
- 将 JError::raiseError() 调用移动到 throw new Exception()。
- 将文件系统路径类与 JUser 分离。
- 删除不必要的 JObject jimport。
- 用于逐步弃用库的旧版类路径。
- 将 JObject 移动到其自己的包中
- 进行一些早春大扫除。
- 安装程序适配器中的清理
- 使更多类可自动加载。
- 更改 JDatabaseDriver、JCacheStorage 和 JSessionStorage 以使用 isSupported() 而不是 test()。
- 将 methods.php 分割成两个文件。
- 更新一些数据库引用名称以利用更改。
- 重新组织和重构了数据库包。
- 将 JArchive 移动到其自己的包中。
- 将 JFormFieldUser 移动到 CMS。
- 使 JDatabaseQuery 子类可自动加载。
- 也使用 JApplicationBase 作为 JApplication 的基础。
- 将 JWebClient 重命名为 JApplicationWebClient 以进行自动加载。
- 通用应用程序基础第 4 轮
- 将剩余的 $() 用法替换为 document.id()。
- 将 JInput 移动到其自己的包中。
- 删除 DS 常量。
- 更新 libraries/joomla/database/database.php
- 将 JTable 移动到其自己的包中。
- 删除 JURI 中对 JObject 的依赖。
- 删除除其定义和 JParameter 外的剩余 DS 出现情况。
- 开始拥抱 PHP 5.3
- 删除 JString 和 JLog 旧位置处的存根文件。
- JDaemon 重命名和清理
测试
- 扩展了 JApplicationWeb 的模拟方法定义,并为 JApplicationBase 添加了新的模拟。
- 修复已定义的语法错误 - 缺少引号
- 修复 JTEST_HTTP_STUB 检查中的错误逻辑
- 向 JFormRule::test() 添加类型提示。在此过程中修复 E_STRICT 错误。
- 修复失败的单元测试 + 旧代码清理
- 修复 #1076 中破坏的单元测试。
- 向测试库添加模拟 JCache 类。
- 修复 #1028 中引入的单元测试警告。
- 对单元测试进行了一些小的改进。
- 将 JTEST_HTTP_STUB 添加到 phpunit 配置中
- 修复因 #827 导致的测试中断
- 添加 JTableLanguage 的测试
- 修复了一些对旧模拟构建器的引用。
- 重构 JApplicationCli 和 JApplicationWeb 的测试检查器
- 改进单元测试
- 更新 PHPUnit 版本的引用
- 修复单元测试。
- UT 1/4:为 application 包添加单元测试
- 将测试方法名称更改为 testIsMinimumVersion
- 完成访问的单元测试
- 提高了 JFormField 类别的测试覆盖率
- 为 JDatabaseSQLSrv 添加基本测试
- 修复损坏的单元测试。
- 允许 ReflectionHelper 的 getValue 和 setValue 访问父类的私有属性
- 修复 JFormField 的单元测试
- 添加 CMS 邮件包的测试
- 添加基本的 JUser 测试
- 提高 JDatabase 测试覆盖率
- 添加 CMS 中的 JFolder 测试
- 修复失败的单元测试和样式错误。
- 来自 eBay 内容存储库的测试改进
文档
- 更正一些文档块
- 更新 PHPUnit 和 CodeSniffer 的文档
- 修复 JHttp 文档中的一些错别字。
- 连接 HTTP 文档;修复 MVC 文档中的格式问题
- 修复 JForm 文档块
- 修复一个文档块
- 修复和改进 legacy 文件夹中的文档块。
- Crypt 包:在 Docblock 中添加异常
- 修复注释
- 新的 Exceptions 部分的小型文档更改
- 修复 DocBook 问题;HTTP 包文档;变更日志脚本;自定义 JHttp 标头
- 单元测试文档更新
- 修复拼写错误
- 添加了异常处理的编码标准;修复了“elseif”示例。
- 更多魔法
- 魔法
- 少量注释编辑。
- 使文档块与实际存在的内容相匹配。
- 修复 JInput 文档块中的小问题。
- 添加了 JInput 包的文档
- 内联注释的详细文档
- 清理一些注释和用户组表中别名列的引用…
- 更新了自动加载器文档以了解新的 registerPrefix 方法。
- 文档:添加了关于平台引导和自动加载的介绍
- 修复表包中的子包标签。
问题已解决
- 更改了 PostgreSQL 的 getTableColumns。
- 几个小的重构。
- 删除 JText 对 JStreamString 的依赖以用于 die 语句
- 修复了自动加载时 JGrid 和 JHtmlGrid 之间的冲突。
- 修复了 JDatabaseQueryPreparable 以支持绑定输出参数
- 与 PostgreSQL 相关的各种修复。
- grid.php 静态调用 isCheckedOut
- 允许完全禁用媒体字段
- 避免除以零(针对问题 #708)
- 检查安装方法与 discover_install
- 修复 JForm::load() 未替换同一位置的表单字段(问题 #129)
- 更正了 JDatabaseDriverPostgresql 对象名称,从 JDatabasePostgresql 更改
- 修复 JLanguageStemmerPorteren。
- 修复标签中语言输入框的 id
- JImage PHP 5.2 JPEG 兼容性 - 跟踪器 #28364
- 修复 #1110 中的解析错误
- 设置 JInputFiles 构造函数
- 修复问题 #529
- Joomla CMS [#27961] 模板未在样式(后端)中显示
- 修复 #1013 中损坏的 JFactory::getUser()。
- [#28210] 重置两次时调用了 onchange
- Joomla CMS [#26564] JHTML 列表用户和 J1.6
- 来自 Joomla 2.5.3 的安全修复。
- $path 未初始化。
- 允许 JFormFieldInteger 使用负步长向后迭代。
- 修复 JDate::setTimezone() 中的 PHP 严格警告
- 更新 libraries/joomla/input/input.php
- 修复多余的异常
- 只读自定义日历问题 - 新请求
- 修复 JError->JLog 转换中的小错误。
- [#28210] onchange 事件未在 JFormFieldMedia 中触发(回归)
- 要使用 HEAD 方法,应将 CURL_NOBODY 设置为 true
- 向同一 URI 发送新请求时,需要先关闭连接。
- 修复 import.legacy.php 中的错误路径,并为重命名的类添加另一个条目。
- 针对 CMS 跟踪器问题 28156 的建议修复(仅使用标题模块的一个模板位置)
- JSession 存储数据库适配器无法正常工作。
- 更正了电话号码清理正则表达式
- JModuleHelper 调用受保护的 JRequest::_cleanVar。
- 修复 #791 中的回归。
- Joomla CMS [#28039] 使用 Chrome for Android 在 browser.php(第 562 行)中生成错误
- SQLite 驱动程序的修复。
- CMS 跟踪器: [#28001] 路径分隔符在 SQL Server 和 SQL Azure 上无法正常工作
- 修复错误 #28039
- *某些带有 iconv 的语言包的 PHP 5.3.8 通知。
- Joomla CMS [#26906] Zip 存档本机解压错误结果
- 修复 #934 中损坏的 JModuleHelper::_load()。
- 从模块列表中删除缓存
- 更新 libraries/joomla/mail/mail.php
- 修复 JRequest::checkToken('default')。
- jimport JFolder
- 从 #803 重新拉取
- 修改 JDatabaseDriver::getConnectors() 的类生成
- 修复模态行为。
- 修复 #839 中的几个错误。这些是由 phpmd 发现的。
- 修复了 JDatabaseQuery::quoteName 和 JDatabaseDriver::quoteName 及其别名之间的一些不一致。
- 在访客用户的情况下,JAccess::getGroupsByUser 无法按预期工作
- 删除 PHPUnit 3.6 的弃用警告
- 修复 JDocument 中的错误。
- 修复失败的单元测试。
- 修复 JApplicationWeb 基本 URI 检测。
- 修复插件卸载
- 修复了 JApplicationWeb 中的重定向问题,该问题导致路径中多次重复“/index.php”。
- 修复了 memcache 并添加了新的 memcached 驱动程序。
- 从 JInput 序列化中删除 $_SERVER 和 $_ENV 变量。
- 分配给“除…之外的所有”的模块应在没有 itemid 的页面上显示。
- 问题 #849 的修复。
- 始终使用开发人员声明的数据库实例
- 更新 libraries/joomla/html/html/tabs.php
- 修复 JTable::addIncludePath 中的错误
- 添加缺少的分号
- 更新 libraries/joomla/database/database.php
- JInstaller 改进/调整
- 问题 [#27780] 修复导致表单字段中出现重复模板样式的错误
- 问题 #27898
- 改进了多数据库环境的 charLength 函数。
- 继续开发 JDaemon
- 修复 countMenuChildren 中的错误
- JLanguage:避免调试时出现 BOM 错误,因为使用 parse_ini 时 BOM 是可以的
- 卸载语言包显示错误
- 修复了 JFormFieldMedia 错误的文件夹处理
- 修改 JDatabaseSQLSrv::getVersion() 以使用 sqlsrv_server_info
- JText::plural(),任意数字的动态复数
- 修复 SQL 查询
- 修复 MySQL 特定的查询
- 删除特定于 DB 的引用,添加 AS 语句
- 修复了多数据库环境的查询。
- 修复一些小问题
- 修复数据库不可用时的错误。
- Joomla CMS [#27630] replacePrefix 问题 - 仅对 SQLServer 有效
- CMS [#27587] 更新生成器标签
- 修复 JInstallerLibrary 中多数据库的查询
- 从模块卸载中删除 MySQL 引用
- 修复 JLoggerFormattedText 信息泄露
- 修复在修复 https://github.com/joomla/joomla-platform/commit/a962ad7ed99cc46c5407377e07efa01f06e58bfa 中引入的错误
- 对 JDispatcher 进行少量改进
- 更新 JLDAP::search 以仅返回请求的属性
- 修复与多个 SPL 加载器一起使用时自动加载器出现的问题。
- 修复 PHP 严格错误
样式
- 清理一些代码样式问题(行长、文档块、注释)。
- 向 JFormRule::test() 添加类型提示。在此过程中修复 E_STRICT 错误。
- 修复和改进 legacy 文件夹中的文档块。
- 重命名 JUpdater、JUpdateadapter 和扩展类中的受保护成员
- 重命名 JStream 和 JStreamString 中的受保护成员
- 重命名 JSessionStorageDatabase 中受保护(且未使用)的成员
- 重命名 JInstaller 中的受保护成员
- 重命名 JAuthentication 中的受保护成员
- 缓存包:返回 JError
- 对最近的提交进行了一些小的修复。
- 数据库包:异常 JText
- 文档包:从异常中删除 JText
- 文件系统包:异常的 JText 删除
- HTML 包:异常、JError、->getError
- 会话包:异常
- 用户包:->error、异常、JError
- 重命名 JBuffer 中的公共成员
- 表单字段中的数据库连接器 JText
- 重命名 JHtmlSelect 中的受保护成员
- 修复 JApplicationWeb 中 loadSession 方法的可见性
- 重命名 JDocumentXml 中的受保护成员
- 重命名 JInstallerLanguage 中的受保护成员
- 重命名 JBrowser 中的受保护成员
- 重命名 JUri 中的受保护成员
- 重命名 JProfiler 中的受保护成员
- 修复 #995 中的代码样式。
- 修复暂存分支中的 checkstyle 错误和警告。
- 特殊的第 1000 个拉取请求。
- 根据 Louis 的建议改进 JHttpFactory。
- 文档块样式。
- 文档块样式
- 编码风格
- 修复了 SingleCommentSniff 中的一些 PHP 通知
- 修复 checkstyle 错误。
- 修复错别字
- 修复一些注释
- 添加更多 phpcs 嗅探器
- 修复一些 phpmd 警告。
- 修复注释中的语法错误。
- 更改文档块并删除类型提示。
- 根据 PhpStorm 检查更新文档块
- 删除 JClientFtp 中的一些重复代码。
- 代码风格:单行注释嗅探器
- 修复失败的单元测试和样式错误。
- 删除遗漏的 $id$ 用法。
- 修复自动格式化程序发现的几个代码样式问题。
以下由社区贡献者提交的拉取请求已合并
- [#1186] JViewHtml 的小改进 (eddieajau)
向 JViewHtml 添加了 __toString(渲染方法的代理)。在 JViewHtml 中添加了对 setLayout 和 setPaths 的链式支持。
- [#1183] 删除 JLog 中的弃用方法 + 其他修复 (realityking)
最重要的更改:-oldstatic 作为模块缓存选项重新引入-插件的旧路径支持已删除
- [#1189] 添加 JDatabaseDriver::disconnect() 以支持干净地断开与数据库的连接。 (robschley)
这在使用 JApplicationDaemon 构建应用程序时非常有用,因为在分叉后复制的数据库资源在父进程和子进程之间共享,如果任一进程关闭连接,则两个进程都会关闭。有了它,您可以使用 onFork 事件断开并重新连接数据库以获取新的、未共享的资源。
- [#1182] 代码清理 (simonharrer)
删除未使用的变量和未使用的变量初始化。
- [#1181] 扩展 JApplicationWeb 的模拟方法定义并为 JApplicationBase 添加新的模拟。 (eddieajau)
将所有公共方法添加到模拟 JApplicationWeb。添加了专门用于 JApplicationBase 对象的模拟。
- [#1177] 更正一些文档块 (elinw)
- [#1176] 修复已定义的语法错误 - 缺少引号 (ianmacl)
defined 期望常量名称为字符串,而不是常量的计算值。
- [#1175] 修复检查 JTEST_HTTP_STUB 的错误逻辑 (ianmacl)
目前无法使用环境变量设置此值,因为逻辑或短路。
- [#1174] 更改了 PostgreSQL 的 getTableColumns。 (gpongelli)
现在返回具有“Default”属性的对象,而不是“default”,就像 MySQL 和其他驱动程序一样。更改了相应的测试。
添加了将PostgreSQL的空值转换为PHP的空值的功能,包含“NULL::character varying”的默认字段将被用作字符串,否则将被视为其他类型。
- [#1173] 更新 PHPUnit 和 CodeSniffer 的文档 (mbabker)
此更新修改了关于运行 PHPUnit 和 CodeSniffer 的手册页面。
- 更新与 JHttpTransport 测试相关的配置值。
- 添加关于使用 Ant 从 build.xml 运行 phpunit 和 phpcs 的信息。
- [#1169] 设置 JForm 字段标签的 CSS 类 (vietvh)
此 Pull Request 旨在允许开发者为表单字段的标签设置 CSS 类。这对于样式设置很有用。
例如,Twitter Bootstrap 要求表单字段标签使用 "control-label" 类。
用法:在表单 XML 清单中添加 labelclass="your-css-class"
<......description="" required="true" labelclass="control-label" />
- [#1171] 一些小的重构 (simonharrer)
一些小的重构。更多细节请查看提交信息。
- [#1170] 清理一些代码风格问题(行长、文档块、注释) (elinw)
- [#1105] 显示媒体预览 (benjaminpick)
使用 "media" 字段时,显示当前选定图像的预览。
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=28176
- [#1165] 移除 JText 对 JStreamString 的依赖(用于 die 语句) (AmyStephen)
此类中 JText 的唯一出现是为了翻译 die 语句。似乎不值得依赖它。
- [#1043] 修复 JGrid 和 JHtmlGrid 在自动加载时发生的冲突 (bembelimen)
重现错误的步骤
- 加载 JGrid:jimport('joomla.html.grid');
- 调用 JHtmlGrid 方法:JHtml::_('grid.id', $i, $item->id)
- 现在 JHtml::_() 为 JHtmlGrid 调用 "class_exists"
- 如果未找到,Joomla! 自动加载器将尝试查找 JHtmlGrid 类的路径。
- 自动加载器将类 JHtmlGrid 转换为路径 (libraries/joomla/)html/grid.php
- 此文件存在(当然),并且将被加载(再次参见步骤 1),但不幸的是这是错误的文件。
- => 致命错误:在 html\grid.php 的第 22 行无法重新声明类 JGrid
解决方案
自动加载器不应在 JHtml::_() 中被调用,并且 JHtml 应该自行处理加载。
- [#1152] 将更多 CMS 特定的类移动到 legacy (realityking)
将 JFormFieldContentLanguage、JHtmlCategory、JHtmlContentLanguage 和 JHtmlMenu 移动到 legacy。
- [#1140] 为 JFormRule::test() 添加类型提示。在此过程中修复了一个 E_STRICT 错误 (realityking)
- [#1163] 修复 JDatabaseQueryPreparable 以支持绑定输出参数 (robschley)
在与使用输出参数的存储过程交互时,JDatabaseQueryPreparable 不会像预期的那样使用存储过程输出的值更新最初传入的参数。为了解决这个问题,该值通过引用传递,以便在将其绑定到查询时,可以在查询执行后使用新值正确更新它。
- [#1162] 移除 JStringNormalise 中的 JString 使用 (eddieajau)
使用 JString 而不是普通的字符串方法会导致明显的性能下降。移除 JString 包装器可以解决此问题。由于此类是为程序化值设计的,因此这应该不会造成太大问题。
同时弃用 JString::splitCamelCase 并将其与 JStringNormalise::fromCamelCase 合并。
- [#1161] 修复 JHttp 文档中的一些错别字 (eddieajau)
并将手册版本更新到 12.1。
- [#1120] 简化 Model、View 和 Controller 的基础类 (LouisLandry)
此 Pull Request 引入了一种新的 Model-View-Controller 范式格式。主要的是,类
JModel
、JView
和JController
现在是接口,而基本抽象类现在分别为JModelBase
、JViewBase
和JControllerBase
。此外,所有类都已简化,以移除许多与独立 Joomla 平台应用程序无关的 Joomla CMS 耦合。此更改的一项指导原则是使基本实现尽可能地不具有规定性。Model、View 和 Controller 类只是连接依赖项并让开发者自行构建,以便他们能够以对给定应用程序有意义的方式构建内容。
组织
所有控制器、模型和视图的 API 已从 Application 包分别移动到 Controller、Model 和 View 包。由于自动加载器方面的改进或通过使用
JLoader
显式注册或发现类,因此已移除之前用于为每个类添加包含路径的大部分 API。控制器
默认情况下,控制器每个类仅支持一个可执行任务,通过 execute 方法执行。这与将任务映射到单个类中的方法的传统
JController
类有所不同。消息和重定向并非总是必需的,因此已在此基类中删除。它们可以在下游类中提供以适应各个应用程序。同样,创建模型和视图的方法也已被删除,取而代之的是使用应用程序或包工厂类。虽然很容易构建一个包含逻辑以支持任务映射到控制器方法、重定向等的
JControllerTasker
(或者在 CMS 的情况下为JControllerCMS
)类,但我们强烈建议考虑将来使用一个控制器对应一个操作。新的JControllerBase
类非常轻量级,并且让一个控制器映射到一个任务有很多好处。其中一个好处是易于使用 HMVC 模式或链接任务。另一个是能够序列化控制器及其输入并将其存储以供以后异步执行。无论哪种方式,此实现都没有规定如何在极其简单的接口之外构建和使用控制器,我们认为这是一件好事。模型
与它们的传统对应物相比,模型已大大简化。基本模型只不过是一个保存状态的类。除了
JModelDatabase
中的数据库对象支持之外,所有数据库支持方法都已被删除。视图
视图也已大大简化。视图现在注入了一个模型和一个控制器。魔术 get 方法已被删除,取而代之的是直接使用模型。类似地,赋值方法也被删除,取而代之的是显式设置类属性。
JViewHtml
类仍然以简化的方式实现布局支持。 - [#1131] 与 PostgreSQL 相关的各种修复 (gpongelli)
来自 此 Pull Request 报告的各种修复,这些修复可以纠正 PostgreSQL 数据库出现的错误。添加了 insertObject 的测试。
工程师 Gabriele Pongelli。
- [#1159] JLog 异常、类名大小写和 DBO (AmyStephen)
使用核心最新副本重新创建了 @LouisLandry 审查的 PR。没有包含逻辑错误问题。我怀疑这不是问题,在再次测试之前我需要更仔细地研究它。在完成此审查后,我将为单优先级、单类别记录器添加一个新的测试。
其他更改在此 PR 中,并且所有测试都通过了 - - 传入 DBO 对象的选项 - 对于回显日志,将 /n 更改为 br 标签以获得更好的显示效果(不换行) - 将 WC3 更改为 Wc3 以保持类命名的一致性 - 将 FormattedText 更改为 Formattedtext 以保持类命名的一致性 - 将 SysLog 更改为 Syslog 以保持类命名的一致性 - 将数组移动到 JLogger 中并从所有子类中移除 - 将 LogException 更改为 PHP SPL 异常
我还添加了 @realityking 建议的用于解决 JDate/JDatabase 对象问题的 SQL 更改。
感谢大家的帮助和反馈。如果需要更改,请告诉我。
- [#1160] 连接 HTTP 文档;修复 MVC 文档中的格式问题 (eddieajau)
- [#1158] 将 JDatabase 中剩余的代码移动到 JDatabaseDriver (realityking)
- [#1143] grid.php 静态调用 isCheckedOut (blueboar2)
我使用 Joomla 2.5.1,我的请求与文件 libraries/joomla/database/table.php 有关。现在(在最新的 trunk joomla-platform 中 - 它位于 libraries/joomla/table/table.php 中)。但无论如何,请求都是相同的。此文件中有一个函数 isCheckedOut。我在我的网站上工作并收到许多此类消息
"严格标准:非静态方法 JTable::isCheckedOut() 不应在 /srv/www/libraries/joomla/html/html/grid.php 的第 198 行静态调用"
如 AmyStephen 在 https://github.com/joomla/joomla-platform/issues/1116 中所讨论,我更改了代码
- [#1151] 允许完全禁用媒体字段 (mbabker)
在表单 XML 或模型的 getForm 方法中(对于扩展 JModelForm 的那些方法),可以设置表单字段的 disabled 属性。在尝试将此用于我正在处理的一些代码时,我发现以其当前形式,媒体字段无法真正禁用或设置为只读。在使用
$form->setFieldAttribute('logo', 'disabled', 'true');
在我的模型的 getForm 方法中,选择和清除按钮仍然处于活动状态并且可以使用。因此,为了使此字段真正禁用,我在渲染这两个按钮之前添加了对 disabled 元素的检查。用例:我在后端使用相同的模型加载具有两种布局之一的表单:常规编辑布局和“详细信息”布局,该布局基本上以只读状态加载表单数据并添加更多数据供用户查看。
- [#1095] 避免除以零(针对问题 #708) (Buddhima)
文件:libraries/joomla/image/image.php 方法:prepareDimensions()
问题:如果为参数 $height 或 $width 之一提供了零,则以下部分将产生错误。解决方案:处理 $height=0、$width=0 和两者都不等于零的 3 种情况。
签署者:Buddhima Wijeweera
- [#1150] 修复 JForm 的文档块 (elinw)
- [#1139] 使更多类可自动加载 (realityking)
此 Pull Request 使 JDate、JDispatcher 和 JSimpleCrypt 可自动加载。
- JDate 移动到其自己的包中 - JDispatcher 重命名为 JEventDispatcher - JSimpleCrypt 移动到 legacy 文件夹(现在应该使用 JCrypt)
这也删除了几个不再需要的 import() 调用。
- [#1145] 检查 install 方法与 discover_install (mbabker)
比较奇怪的是,在组件安装适配器的 discover_install 方法中,我们检查脚本文件中是否存在 discover_install 方法(实际上没有任何文档说明需要此方法),这可能导致此检查始终失败。如果成功,则实际触发的是脚本文件的 install 方法。
这是解决该问题两种潜在方案之一。我已经更改了检查方式,现在我们检查 install 方法是否存在。另一种方案需要进行文档说明,即在脚本文件中使用 discover_install 方法。
无关的是,组件适配器是唯一一个在 discover_install 时实际触发脚本文件的适配器,尽管许多其他适配器也支持此功能,因此在解决此问题后,下一个目标是将此支持引入其他适配器。
- [#1069] 修复 JForm::load() 未在相同位置替换表单字段(问题 #129) (aaronschmitz)
此代码导致在加载新定义以替换旧定义时,JForm 会就地替换字段。现在,重复的字段将保留在原始位置,而不是移动到文档末尾。
- [#1141] 弃用 JXMLElement (realityking)
JXMLElement 现在已经不太有用。它只有两种方法,其中一种只是父类内部方法的别名。在大多数情况下,另一种方法可以用父类的方法替换,如果用户需要美化输出,他们可以将该方法移动到自己的代码中,或者使用 DOMDocument 来完成。
- [#1146] 处理一些 JRequest 的情况 (realityking)
还没有完全完成,但我想先发布我已有的内容。
合并此更改后,只有以下类仍将使用 JRequest
JClientHelper JSession JControllerAdmin JControllerForm JModuleHelper
此外,JDocumentRendererAtom 和 JDocumentRendererRSS 的测试也仍然使用 JRequest。
- [#1149] 修复一个 docblock (elkuku)
- [#1147] 将 JDatabaseDriverPostgresql 对象名称从 JDatabasePostgresql 更正为 (AmyStephen)
- [#1144] 修复单元测试失败 + 旧版清理 (realityking)
- [#1135] 修复 JLanguageStemmerPorteren。 (realityking)
我想我在修复代码风格以包含 JLanguageStemmer 时有点过于热心了。注释实际上告诉您不要执行我所做的操作……
- [#977] Android 平板电脑检测 (elinw)
此拉取请求将大多数 Android 平板电脑的检测添加到 JApplicationWebClient 中的平台检测中。检测比智能手机尺寸更大的移动设备非常有用,因为通常最好呈现站点的桌面版本而不是移动版本。
这使得 Android 的检测更像 iOS 设备上可用的检测,例如,iOS 设备已经区分了 iPhone 和 iPad。
Android 平板电脑的检测比 iOS 更复杂,因为制造商众多,并且每个制造商都会创建自己的 UA 字符串。此外,大多数 Android 平板电脑的检测方法仅在使用默认的 WebKit 浏览器时有效,如果用户安装了其他浏览器则无效。此代码试图克服其中的一些问题,尽管检测仍然不完美。
基本决策规则是,假设 UA 字符串中包含 Android
- 遵循 Google 的建议,不包含 Mobile 的字符串被认为来自平板电脑(http://googlewebmastercentral.blogspot.com/2011/03/mo-better-to-also-detect-mobile-user.html)
- Android 3.x(蜂巢)仅用于平板电脑
- 一些替代浏览器(例如 Opera、Fennec)会在 UA 字符串中添加或允许用户添加 Tablet。
- Kindle Fire 在非 Silk/Android 模式下的 UA 字符串包含 Mobile,这与 Google 的建议相反,但它始终包含 Silk。由于在平板电脑中它相当常见,因此值得将其作为特定设备包含在内。
这保留了此类方法保持轻量级的总体方法,开发人员需要更详细的检测(例如基于屏幕尺寸)才能扩展它。
- [#1126] 修复和改进旧版文件夹中的 docblocks。 (realityking)
除了更改子包标签以匹配文件夹外,最大的变化是取消了以下划线开头的受保护类成员的弃用。
这些提示 - 而不提供真正的替代方案 - 只会让开发人员感到困惑,我认为我们不想在旧版文件夹中进行这样的更改,因为这些类最终会被删除或移动到 CMS 中。
- [#1132] 修复标签中语言输入框的 id (Bakual)
语言选择器的标签有一个错误的“for”属性,因此点击标签不会选中输入框。
- [#1133] 为 B/C 添加 JDatabase::splitSql() (mbabker)
splitSql 方法是公共函数,因此可以直接从 JDatabase 调用。这为 JDatabaseDriver 添加了一个代理方法,类似于 JDatabase 中保留的其他静态方法。
- [#1123] 分别考虑 iPad 和 iPod(针对问题 #1122) (Buddhima)
文件:joomla-platform / libraries / joomla / application / web / client.php 方法:detectPlatform()
针对问题 #1122:移动设备检测错误
修复方法:添加 2 个单独的 else if 子句以分别考虑 iPad 和 iPod
签署者:Buddhima Wijeweera
此电子邮件地址正在受到垃圾邮件机器人的保护。您需要启用 JavaScript 才能查看它。 - [#1052] 删除对数据库包中几个类的依赖关系。 (realityking)
已删除对以下类的依赖关系:JError JObject JFolder JTable
JTable 可能会有点争议,因为这意味着我必须删除 JDatabaseFactory::getTable(),但考虑到它只是 JTable::getInstance() 的代理,我认为不值得添加额外的依赖关系 - 特别是考虑到表包本身具有非常大量的依赖关系。
我还使 JDatabaseException 成为 RuntimeException 的子类。这样,捕获 RuntimeException(现在在数据库包中使用)也将捕获 JDatabaseException。
- [#1127] 删除 JFormFieldTemplateStyle。 (realityking)
由于某种我未知的原因,CMS 已经将 JFormFieldTemplateStyle 移动到了 CMS 库中。由于此字段在 CMS 之外没有用处,因此应将其从平台中删除。
- [#1128] JImage PHP 5.2 JPEG 兼容性 - 跟踪程序 #28364 (n3t)
JImage 无法检测 PHP 5.2 中的 JPEG 支持
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_id=8103&tracker_item_id=28364
- [#1108] 重命名 JUpdater、JUpdateadapter 和扩展类中的受保护成员 (elkuku)
- [#1111] 重命名 JStream 和 JStreamString 中的受保护成员 (elkuku)
- [#1112] 修复 #1110 中的解析错误 (elkuku)
- [#1110] dl() 函数已从 5.3 版中的大多数 PHP SAPI 中删除。 (realityking)
@ 掩盖了错误,但显然在某些主机上存在问题。
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=28333
- [#1109] 重命名 JSessionStorageDatabase 中的受保护(且未使用)成员 (elkuku)
这似乎也从未在任何地方使用过。
- [#1107] 重命名 JInstaller 中的受保护成员 (elkuku)
- [#1106] 获取身份 (robschley)
添加了 JApplicationBase::getIdentity() 以检索应用程序现在支持加载的用户对象。还为模拟构建器添加了此方法的模拟支持。
- [#1103] 简化 JHtml::tooltip (benjaminpick)
不确定您是否喜欢这种代码风格 - 它会减少重复,但可能更难阅读。
- [#1104] 旧版支持的延续。 (LouisLandry)
通过此拉取请求,几个更多 CMS 特定的类已移动到旧版树中。其中包括
JComponentHelper
、JModuleHelper
、JController*
、JModel*
和JView
。所有对已弃用的JException
类的引用都已从非旧版库中删除。所有对已弃用的JError
类的引用都已删除或调整为临时引用,直到该类最终从旧版树中删除。单元测试
单元测试运行器也已更新,以支持独立运行旧版测试套件。要运行旧版套件,您将使用
phpunit -c legacy.xml.dist
或者如果您有自定义文件,则使用phpunit -c legacy.xml
要运行主单元和数据库套件,您仍然只需使用phpunit
单元测试运行器的其他更改包括配置更改,以便在代码覆盖率报告中包含所有非旧版 Joomla 平台库,而无论文件在测试运行期间是否自然包含在内。这将影响报告的代码覆盖率数字,但将反映我们平台代码的测试覆盖率的更准确情况。 - [#1101] JHttp:扩展请求方法 (piotr-cz)
对于每个添加的请求方法,变量 $timeout 具有回退到类选项的功能。添加了从类选项读取的 $useragent 字符串。
请参阅问题 #1027
- [#1091] 安装程序包:删除 db->error (AmyStephen)
- [#1073] 客户端包:将一个返回 JError 更改为 Exception (AmyStephen)
- [#1086] 表包:db 错误和 Exception/JText 更改 (AmyStephen)
我在此 PR 中保留了 JException,因为我不确定那里的计划是什么,并且想收到反馈 https://groups.google.com/d/msg/joomla-dev-platform/SJopGknhizs/ssWpyIMazgAJ
如果需要,我们可以在此 PR 之后再返回并更改 JException 为 PHP Exception。这很可能导致 API 更改,因为当前失败由“false”而不是异常指示。但是,在 3.0 CMS 版本中进行此更改可能是好时机。
但是,此 PR 仅限于删除 $db 错误处理、使用 Exception(和 JException)调用摆脱 JText 以及任何 JError 语句。
另外 - 我认为,'package' 表应该属于 CMS,而不是框架。也许整个文件夹应该移动到 legacy 并保持原样?
- [#1087] 邮件包:异常和 JError (AmyStephen)
- [#1090] 表单包:db->error,异常/JText 修改 (AmyStephen)
- [#1100] 日志包:删除 DB 错误语句 (AmyStephen)
在更改前后运行单元测试,没有发现问题。
认为也许我们应该再次尝试。我合并了最新的更改。也许与此有关?
将关闭 https://github.com/joomla/joomla-platform/pull/1088
- [#1075] CMS 分离:检查 CMS 常量是否已定义 (AmyStephen)
目前,在 CMS 外使用 JURI 时,这将很有帮助。
(稍后,传入应用程序路径将会有所帮助)
- [#1060] 重命名 JAuthentication 中的受保护成员 (elkuku)
- [#1098] 设置 JInputFiles 构造函数 (mbabker)
所以,之前在 CMS 列表中,有人提出无法使用 JInputFiles 从
$_FILES
超全局变量中提取数据。根据 Ian(https://groups.google.com/d/topic/joomla-dev-cms/0CR3NKmiBg8/discussion),应该有一个类似于 JInputCookie 中的构造函数。好吧,这最终添加了该构造函数。 - [#1079] 缓存包:返回 JError (AmyStephen)
- [#1096] 对最近提交进行了一些小的修复。(realityking)
还删除了最近在 CMS 错误中出现的过时的待办事项。
- [#1089] 插件包:删除一个 ->getErrorMsg (AmyStephen)
- [#1092] 数据库包:异常 JText (AmyStephen)
- [#1074] 加密包:在 Docblock 中添加异常 (AmyStephen)
- [#1081] 文档包:从异常中删除 JText (AmyStephen)
- [#1082] 文件系统包:异常的 JText 删除 (AmyStephen)
- [#1083] HTML 包:异常、JError、->getError (AmyStephen)
- [#1084] 会话包:异常 (AmyStephen)
- [#1085] 用户包:->error、异常、JError (AmyStephen)
- [#1078] 修复 #1076 中中断的单元测试。(realityking)
- [#1076] 事件包:将 JError 返回更改为异常 (AmyStephen)
- [#1070] 实现数据库迭代器 (chdemko)
打开新的拉取请求(#903):在重新设置基准时出现问题
- [#1026] 问题 #529 的错误修复 (dianaprajescu)
JMail 在 addAttachment 上忽略 name 参数。
- [#903] 为所有 SQL 引擎实现可计数的数据库迭代器 (chdemko)
此拉取请求为所有 SQL 引擎实现了可计数的数据库迭代器。用法是
$dbo = JFactory::getDbo(); $iterator = $dbo->getIterator($dbo->getQuery(true)->select('*')->from('#__content')->execute()); foreach ($iterator as $row) { // Deal with $row } $count = count($iterator);
用于结果查询
- [#1055] 重命名 JBuffer 中的公共成员 (elkuku)
这还将修改相应的单元测试
- [#1065] 修复注释 (elinw)
- [#1059] 在表单字段中使用 JText 连接数据库 (mbabker)
这允许下游应用程序在使用数据库连接表单字段时,使用文本字符串表示数据库选项。例如,目前在安装 CMS 时,SQL Server 的选项显示为“Sqlsrv”。通过此更改,可以使用语言字符串
SQLSRV="SQL Server"
代替,以避免使用简写驱动程序名称。当然,如果应用程序决定不想使用此功能,则无需按照语言键的设置方式进行。 - [#1063] 重命名 JHtmlSelect 中的受保护成员 (elkuku)
- [#1062] 新异常部分的少量文档更改 (AmyStephen)
- [#1064] 修复 JApplicationWeb 中 loadSession 方法的可见性 (eddieajau)
方法应该设置为公共的。
- [#1058] 重命名 JDocumentXml 中的受保护成员 (elkuku)
- [#1057] 向 JApplicationBase 添加可选标识;使 JApplicationWeb 中的依赖项注入更加灵活 (eddieajau)
已向 JApplicationBase 添加可选的“identity”。这是为了能够支持充当 Web 服务或连接到需要某种身份的其他 Web 服务的应用程序做准备(很可能是用户,但也可能存在其他情况)。loadDispatcher 方法已设置为公共方法,并添加了一个新的 loadIdentity 方法(目前与 JUser 耦合)。如果应用程序需要这两个依赖项中的任何一个,它只需调用加载器。不传递参数会加载默认对象,但允许通过将对象传递给方法来进行依赖项注入。如果两者都没有调用,则假定不支持调度程序或身份支持。
JApplicationWeb 中的 initialise 方法已被弃用,取而代之的是将 loadDocument、loadLanguage 和 loadSession 设置为公共方法,这使得将来能够更好地扩展以支持更多可选的依赖项。三态行为与 JApplicationBase 中加载器的行为相同。不调用意味着不支持该对象,不带参数调用会加载默认对象,带参数调用会将对象注入应用程序。
所有依赖项加载器都是可链接的。
- [#1048] Joomla CMS [#27961] 模板未显示在样式(后端)中 (realityking)
请参阅 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=27961
- [#1056] 重命名 JInstallerLanguage 中的受保护成员 (elkuku)
- [#1054] 重命名 JBrowser 中的受保护成员 (elkuku)
- [#1053] 将 MooTools 更新到 1.4.5 版。(realityking)
只有两个错误修复(http://mootools.net/blog/2012/02/26/mootools-1-4-5-released/)
CMS 2.5.4 版本也将随其一起发布。
- [#1049] 重命名 JUri 中的受保护成员 (elkuku)
- [#1045] 修复 DocBook 问题;HTTP 包文档;更改日志脚本;自定义 JHttp 标头 (eddieajau)
修复了两本手册中的一些 DocBook 错误。在开发人员手册中添加了 HTTP 包的脚手架和内容。在开发人员手册中添加了有关引导旧版平台的说明。升级了更改日志构建器脚本。向 JHttp 请求方法添加了自定义标头支持(通过将“headers.”添加到传递到 JHttp 构造函数中的选项注册表对象)。
- [#1051] 将模拟 JCache 类添加到测试库。(eddieajau)
- [#1050] 修复 #1028 中引入的单元测试警告。(realityking)
- [#1028] 对单元测试进行了一些小的改进。(realityking)
- [#1046] 修复 #1013 中损坏的 JFactory::getUser()。(realityking)
显然它被简化得太多了;)
- [#1021] [#28210] 重置两次时调用 onchange (benjaminpick)
针对暂存环境的拉取请求。
- [#1044] 重命名 JProfiler 中的受保护成员 (elkuku)
这可能是另一个可以安全重命名以符合编码标准的类。
- [#996] Joomla CMS [#26564] JHTML 列表用户和 J1.6 (oc666)
JHTML 用户列表在列表中创建重复值 另请参阅:http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26564
- [#1002] 来自 Joomla 2.5.3 的安全修复。(realityking)
改进即将推出;)
- [#1003] 删除 JLanguage 中针对 PHP 5.3.0 的解决方法。(realityking)
这将最低要求提高到 5.3.1。
即使是 Ubuntut 8.0.4(最旧的仍在支持的 LTS)也具有 PHP 5.3.2,而 Debian 稳定版具有 PHP 5.3.3,因此我认为要求 5.3.1 没有任何危害。
- [#1017] 添加 JLanguageStemmer。为 JLanguage 添加单元测试。(realityking)
这是从当前在 CMS 中提供的查找器代码直接移植过来的。我稍微清理了一下以匹配我们的代码风格,并再次为移植者添加了版权声明。
此拉取请求不包含 snowball 词干提取器。我不确定 snowball for PHP 是否仍然有效,因为最后一个版本发布已近 4 年了。
拉取请求确实包含了 porter 和转写类的单元测试。
单元测试和代码风格在我的本地机器上运行良好。
- [#1015] $path 未初始化。(Naouak)
避免 PHP 提示。
- [#1042] 允许 JFormFieldInteger 使用负步长进行反向迭代。 (aaronschmitz)
此代码将使诸如 <field type="integer" first="10" last="0" step="-1"... 之类的字段按预期工作。此外,此代码可以防止在类似 <field type="integer" first="0" last="0" step="-1"... 的 xml 中出现的无限循环。
修复 #983
- [#1039] 单元测试文档更新 (AmyStephen)
编辑测试说明以反映 SQLite 的更改并分离真正的数据库测试。
- [#1041] 修复 JDate::setTimezone() 中的 PHP 严格警告 (elkuku)
这修复了一个 PHP 严格警告,因为 PHP 的 DateTime::setTimezone() 似乎在内部没有使用类型提示(在 PHP 5.4.0 上测试)。抱歉,造成不便。
- [#1040] 更新 libraries/joomla/input/input.php (stevenloppe)
除非我遗漏了一些非常明显的东西,否则这看起来像是一个复制粘贴错误?
- [#1031] 将 JDate->_tz 重命名为 JDate->tz (elkuku)
这将重命名 JDate 的受保护成员以符合编码标准。这是尝试将 #637 分解成更小的部分;)
- [#1036] 将 JTEST_HTTP_STUB 添加到 phpunit 配置中 (mbabker)
添加 JTEST_HTTP_STUB 常量,在 JHttpTransportTest 中使用,到 phpunit.xml.dist 文件中。默认路径假设平台已检出到您的 Web 根目录。
- [#1038] 修复拼写错误 (AmyStephen)
- [#1034] 修复因 #827 导致的测试中断 (mbabker)
那个讨厌的 @mbabker 字符可能创造了用单个拉取请求破坏最多单元测试的记录。现在,那个讨厌的字符正在修复这些破坏。
- [#1033] 修复 #995 中的代码风格。 (realityking)
这应该允许 Jenkins 再次运行。我仍然认为第 839 行不正确,但这在 #995 中讨论会更好。
- [#827] 添加 JTableLanguage 的测试 (mbabker)
此拉取请求为 JTableLanguage 添加了单元测试。DDL 与 CMS #__languages 表同步,因此拉取测试程序将被破坏,因为添加了站点名称和排序列。
- [#1032] 修复多余的异常 (elkuku)
我相信这些是来自 JError 的转换。
- [#677] 弃用 JNode 和 JTree 并关闭代码覆盖率 (Hackwar)
JNode 和 JTree 是不可用的类。如果有人扩展了这些类,他必须重写所有方法。因此直接在 12.1 中弃用它。
这是一个新的拉取请求,因为我通过将错误的内容合并到分支中弄乱了之前的请求。之前的请求是 #513。
- [#1029] 添加了异常处理的编码标准;修复了“elseif”示例。 (eddieajau)
- [#995] 只读时自定义日历问题 - 新请求 (infograf768)
参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=28175
- [#1013] 简化 JFactory::getUser() (realityking)
这是由 Vladimir Romanov 提议的。
原始报告:http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_id=8103&tracker_item_id=28147
- [#1018] 更新数据库驱动程序以尝试从已断开的数据库服务器重新连接。 (robschley)
这修复了一个数据库服务器与 PHP 连接资源断开连接的问题。据我所知,这可能发生在两种情况下
- 数据库服务器负载过重并断开连接。
- 资源已复制到派生进程中,这在派生 JDaemon 时会发生。如果子进程关闭连接或完成执行,则父资源将断开连接。
为了解决这两个问题,如果在执行查询时未返回有效的游标,驱动程序将检查资源是否仍连接到数据库。如果资源断开连接,它将尝试重新连接并再次执行查询。如果重新连接失败或服务器仍显示为已连接,则将抛出正常的异常。
对于 PDO 驱动程序,这需要对 connected() 方法进行更好的实现。我尝试使用 PDO::getAttribute(ATTR_CONNECTION_STATUS),但此功能在 Sqlite 或 Oracle 上不受支持,可能还有其他一些。为了解决这个问题,connected() 方法将尝试执行一个简单的数据库查询。为了防止驱动程序状态的污染,先备份以前的查询信息,然后在查询执行后恢复。
- [#1016] 修复 JError->JLog 转换中的小错误。 (realityking)
- [#1011] 修复暂存分支中的 checkstyle 错误和警告。 (eddieajau)
- [#1012] [#28210] onchange 事件未在 JFormFieldMedia 中触发(回归) (benjaminpick)
参见 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=28210
- [#1010] JError 到 JLog (AmyStephen)
将 JError::raiseWarning 和 JError::raiseNotice 更改为 JLog 调用。
- [#1004] 要使用 HEAD 方法,应将 CURL_NOBODY 设置为 true (piotr-cz)
要使用 HEAD 方法,应将 CURL_NOBODY 设置为 true。如果不是,则 curl 会等待响应正文,该正文永远不会收到,并且脚本会达到 max_execution_time。设置 CURLOPT_CUSTOMREQUEST 仅对 GET 或 HEAD 以外的方法有意义。
请参考 https://php.ac.cn/manual/en/function.curl-setopt.php,CURLOPT_NOBODY 和 http://stackoverflow.com/questions/770179/php-curl-head-request-takes-a-long-time-on-some-sites#770200
- [#1005] 向相同 URI 发送新请求时,需要先关闭连接。 (piotr-cz)
收到响应后,其元数据将设置为“eof”,并且无法再次使用。
参见 https://php.ac.cn/manual/en/function.stream-get-meta-data.php
- [#1000] 特殊的第 1000 个拉取请求。 (realityking)
为了纪念我们的第 1000 个拉取请求,我想做一些特别的事情,所以这里就是。
- [#999] 根据 Louis 的建议改进 JHttpFactory。 (realityking)
- [#993] Docblock 样式。 (elinw)
- [#994] Doc 块样式 (elinw)
- [#992] 修复 import.legacy.php 中的错误路径并为重命名的类添加另一个条目。(realityking)
- [#991] 编码风格 (piotr-cz)
我们应该修复注释中的这些小问题或错别字吗?
- [#989] 针对 CMS 跟踪器问题 28156(仅使用带标题的模块的一个模板位置)的建议修复 (vovtz)
第一次提交代表代码质量修复。
第二个是针对两个跟踪器问题(实际上它们是彼此的副本)的建议修复。
- [#988] 修复了一些对旧模拟构建器的引用。 (robschley)
- [#984] Joomla! 平台的 PostgreSQL 驱动程序 [清理版本_v3]。 (gpongelli)
此驱动程序实现了从 JDatabaseDriver 类继承的功能,并添加了一些其他有用的功能,以便能够在 PostgreSQL 数据库上使用 Joomla!。还有一个类继承自 JDatabaseQuery,以便能够使用 PostgreSQL 方言创建查询对象。这两个类由“test”文件夹下的另外两个类进行测试。
PostgreSQL 添加的功能:- getAlterDbCharacterSet,设置数据库编码 - getCreateDbQuery,返回一个使用 $option 数组成员创建数据库的查询字符串 - getRandom,获取一个随机数 - getStringPositionSQL,返回字符串在另一个字符串中的位置 - getTableSequences,返回一个包含表序列信息的数组 - releaseTransactionSavepoint,在事务期间释放给定的保存点 - showTables,列出数据库中的所有表 - transactionSavepoint,创建事务保存点
覆盖的功能:- connected - dropTable - escape - execute - fetchArray - fetchAssoc - fetchObject - freeResult - getAffectedRows - getCollation - getNumRows - getQuery - getTableColumns - getTableCreate - getTableKeys - getTableList - getVersion - insertid - insertObject - lockTable - renameTable - replacePrefix - select - setUTF - transactionCommit - transactionRollback - transactionStart - unlockTables - updateObject
PostgreSQL 数据库查询添加的功能:- limit,setQuery 中 limit 的可能替代 - offset,setQuery 中 limit 的可能替代 - forShare,在 SELECT 期间锁定表/行 - forUpdate,在 SELECT 期间锁定表/行 - getInsertTable,在“indertid()”中用于检索最后 INSERT INTO 的表名 - noWait,不等待锁定的表 - returning,INSERT INTO 的可选子句,用于返回最后一个插入的 ID
还添加了 Postgresql 的导出器和导入器类及其测试类。
- [#986] JSession 存储数据库适配器无法工作。 (LouisLandry)
修复数据库会话处理程序,使其简单地使用 try/catch 而不是显式检查数据库连接。这处理了 JDatabaseDriver 的新的延迟连接方法。
- [#980] 更正了电话号码清理正则表达式 (danyaPostfactum)
更正了 $cleanvalue = preg_replace('/[+. -()]/', '', $value) 中的正则表达式,以修复包含“-”符号的电话号码问题。
- [#973] 在 HTML 和 Form 包中将抛出的异常消息转换为纯文本 (eddieajau)
删除了在硬抛出的异常消息(开发人员需要修复的内容)中使用 JText 的情况。
- [#982] 添加类型提示并更正方法 docblock (elkuku)
这将类型提示添加到 JDate::setTimeZone() 并更正了方法 docblock 中指定的返回值 (ref)。
- [#979] 更多魔法 (elkuku)
为通过 magic
__get()
方法访问的受保护类成员提供自动完成和文档。遵循 #978 - [#978] 魔法 (elkuku)
在现代 IDE 中为通过 magic
__get()
方法访问的受保护类成员提供自动完成和文档。这也解决了 @AmyStephen 在 #475 中报告的“问题”;)
- [#974] JModuleHelper 调用受保护的 JRequest::_cleanVar。 (AmyStephen)
移除受保护的方法,改为在原处执行过滤。
- [#975] 少量注释编辑。 (elinw)
- [#972] 重构 JApplicationCli 和 JApplicationWeb 的测试检查器 (eddieajau)
同时也修复了 JView 测试中的一个错误。
- [#971] 改进单元测试 (LouisLandry)
我一直以来对测试套件的一个困扰是,需要花费时间设置环境才能运行最简单的测试。现在我们有了 SQLite 数据库驱动,我认为让基础测试套件无需任何设置或配置即可运行会很棒。您只需克隆存储库并调用
phpunit
即可运行套件。为了实现这一点,需要做一些事情
- 创建了用于 SQLite 的
tests/ddl.sql
模式文件 - 修改了
tests/includes/JoomlaDatabaseTestCase.php
以使用 SQLite 内存数据库。 - 要执行 JHttp 测试存根文件的 URL,必须将其设置为 PHP 常量
JTEST_HTTP_STUB
或操作系统环境变量JTEST_HTTP_STUB
,否则这些测试将被跳过。 - 删除了
tests/config.dist.php
,因为运行默认测试不需要测试配置。
测试数据库驱动程序。
通过这些更改,数据库驱动程序已分解到其自己的路径中:
tests/suites/database
,可以在其中编写独立于主套件的测试。如果您查看 phpunit.xml.dist 文件,您会发现其中有一节被注释掉了,其中包含 PHP 常量定义。要启用特定驱动程序的测试,只需添加相关的常量,并使用要针对其运行测试的数据库实例的 DSN 字符串即可。注释掉的示例与之前存在的默认配置相同。不错的副作用。
此练习(以及未来)的一个不错的副作用是使用非 MySQL 引擎来发现跨数据库问题。在此过程中发现了一些错误和限制,继续走这条路只会帮助解决这一问题。
- 创建了用于 SQLite 的
- [#940] 修复 #791 中的回归错误。 (realityking)
这需要对 JInput API 进行少量添加,这对其他人也应该有所帮助。
- [#946] Joomla CMS [#28039] 使用 Chrome for Android 在 browser.php 中生成错误(第 562 行) (vietvh)
跟踪器项目
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_id=8103&tracker_item_id=28039
- [#965] 修复了 SingleCommentSniff 中的一些 PHP 提示 (robschley)
- [#964] 将 JError::raiseError() 调用移动到 throw new Exception()。 (LouisLandry)
所有对
JError::raiseError($code, $message);
的调用都已更改为throw new Exception($message, $code);
这是逐步淘汰 JError 的第一步。下一步将评估所有 Exception 类,并使用适当的语义 SPL 异常类。
对单元测试的调整
最大的调整是在添加代码以跳过
JSessionStorage
类,其中存储机制不可用。除此之外,我还更改了JHtml::_()
的测试,以便预期异常,而不是设置一个精心设计的模拟回调类来验证是否通过JError
引发了JException
。非常感谢 Elin 为我使用 grep 搜索了代码库中的 JError::raiseError() 调用。节省了大量时间。
- [#963] 将文件系统路径类与 JUser 解耦。 (AmyStephen)
使用随机值创建临时文件名,以测试脚本是否拥有该路径。目前,此过程调用 JUser 中的方法来构建随机值。该补丁将该过程更改为改用 mt_rand(),以便将路径类与 JUser 解耦。
- [#962] SQLite 驱动程序的修复。 (LouisLandry)
将 SQLite 驱动程序设置为使用反引号进行名称引用,同时我们找到一种更强大的方法来跨平台处理此问题。还修复了 SQLite 驱动程序在转义和获取表名称列表方面的一些问题。
- [#959] 更新对 PHPUnit 版本的引用 (elinw)
- [#957] CMS 跟踪器:[#28001] 路径分隔符在 SQL Server 和 SQL Azure 上无法正常工作(dextercowley)
- [#942] 修复错误 #28039 (oc666)
该错误导致 preg_match 未检查返回值。错误报告:PHP 提示:未定义的偏移量:1 因为它尝试在错误行之前的 preg_match 函数中声明的匹配项($version)数组中查找第二个项目。请在此处查看更多信息:http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=28039
- [#727] *某些使用 iconv 的语言包的 PHP 5.3.8 提示。 (infograf768)
提示:iconv() [function.iconv]:在输入字符串中检测到非法字符 D:\wamp\www\j173\libraries\joomla\utilities\string.php 第 562 行(在 1.7.3 上显示错误,在 2.5 测试版上也一样)
看起来是 PHP 该版本特有的问题。已使用柬埔寨语语言包进行了测试。目前除了阻止提示显示之外,我找不到其他解决方案。
- [#955] 删除了对 JObject 的不必要 jimport。 (robschley)
现在可以自动加载 JObject,因此我们不需要 jimport() 它。
- [#947] 用于优雅地弃用库的旧版类路径。 (LouisLandry)
关于如何继续进行 CMS 和平台分离的一个重要问题是,平台将如何以一种不会造成过度干扰的方式删除 CMS(以及其他下游项目)仍然依赖的库。此拉取请求尝试解决此问题。
以前位于
libraries/cms
文件夹中的库已移动到新的libraries/legacy
文件夹。此外,还有一个名为libraries/import.legacy.php
的文件。为了使用旧版类引导平台,您只需包含libraries/import.legacy.php
。如果您只想使用最新版本,并且不希望使用旧版类支持,则像往常一样继续包含libraries/import.php
。这允许更优雅地退出已弃用的类,以及以一种会创建一些硬性中断的方式修改现有类,同时如果应用程序需要,仍然保留旧版行为。该解决方案仅依赖于自动加载器及其搜索文件的顺序。
如果加载了旧版导入文件,则自动加载器将始终首先按名称在旧版路径中查找类,然后回退到主库路径。如果加载了常规导入文件,则自动加载器将完全忽略旧版树。
除了此拉取请求之外,我还将一些 CMS 特定和已弃用的类移动到旧版树中,并修改了测试套件,以便所有内容都能成功运行。
- [#951] 添加了 JStringNormalise::fromCamelCase() (robschley)
JStringNormalise::fromCamelCase() 将采用驼峰式格式的字符串并将其转换为以空格分隔的字符串。我添加了单元测试以验证它对一些基本字符串是否有效
左侧的输入将生成右侧的输出:FooBar => Foo Bar fooBar => foo Bar Foobar => Foobar foobar => foobar
这目前仅适用于 ASCII 字符,可以扩展以支持更广泛的字符。
- [#945] 将 JObject 移动到其自己的包中 (robschley)
- [#950] 修复 Checkstyle 错误。 (eddieajau)
- [#949] 修复单元测试。 (LouisLandry)
PHP 的
call_user_func_array()
函数不尊重标准对象作为引用的范例……必须保留&符号。 - [#938] Joomla CMS [#26906] Zip 存档本机解包错误的结果 (n3t)
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_id=8103&tracker_item_id=26906
- [#948] 使文档块与实际存在的内容匹配。 (elinw)
对该库进行了一项更改,导致此文档块描述不正确。由于用户组名称不需要唯一,因此它不能用作 loadAssocList 返回的数组中的键。请参阅 CMS 跟踪器 #28125(相应的更改已提交)。
- [#937] 进行一些早春大扫除。 (realityking)
这是一些我不希望为其创建单独拉取请求的内容:-删除少量 die() 出现的情况,我们决定只使用 die -添加一些类型提示-删除大量旧版 PHP 对象按值调用符号-更改一些文档块以更详细地说明变量的类型
- [#944] 修复 JInput 文档块中的小问题。 (eddieajau)
从@method中移除getArray。
- [#943] 添加了 JInput 包的文档 (eddieajau)
为 Input 包中的 JInput 和 JInputCli 类添加文档。将魔法方法声明添加到 JInput 以访问过滤器快捷方式。将魔法方法声明添加到 JDatabaseDriver 以获取 q 和 qn。修复了手册中指向历史记录页面的错误链接。
- [#936] 修复 #934 中损坏的 JModuleHelper::_load()。 (realityking)
JModuleHelper::getModules() 依赖于从 0 开始的索引。
- [#934] 从模块列表中删除缓存 (nonumber)
[这是对有故障的请求的重新请求:https://github.com/joomla/joomla-platform/pull/867]
由于模块可以基于时间发布(publish_up / publish_down),因此初始已发布模块列表上的缓存毫无意义。
缓存键($cacheid)仅考虑 $Itemid、$groups、$clientId、$lang。但是,缓存的模块列表是基于时间的。
这意味着只要列表仍处于缓存状态,publish up/down 设置就无效。所以这是一个错误。
当查看实际缓存的内容时,缓存本身并没有太多好处。它只是一个数据库查询和对返回的对象列表的一些基本检查。
考虑到以上因素(缓存导致基于时间的问题,并且缓存几乎没有收益),解决方案是完全去除缓存。
关于性能:据我所知,只有从数据库返回的模块列表存储在该缓存中。而不是渲染后的模块本身。
高级模块管理器和MetaMod Pro已经覆盖了这个模块辅助文件,使用了一个(除其他外)不使用此缓存的文件。我们没有发现由于不使用模块列表缓存而导致的页面加载时间有任何明显的变化。数千人正在使用这些扩展,并且我们没有收到与之相关的页面加载时间问题的报告。
在我的本地测试中,注释掉 `$cache->store` 行后,加载时间(调试信息)没有明显差异,内存使用量略有下降。
- [#907] UT 1/4:为应用程序包添加单元测试 (Hackwar)
修复 JController 和 JPathway 中的问题
这是拉取请求 #516 的修复版本
- [#935] 将 JToolBar 移至 CMS 并将其重命名为 JToolbar。 (realityking)
- [#709] 为相关媒体文件添加卸载支持 (matrikular)
在卸载/安装一些扩展类型时,我注意到媒体文件不会被库的卸载过程捕获。
- [#928] 内联注释的详细文档 (elinw)
- [#932] 清理安装程序适配器 (mbabker)
- 审查和编辑了许多适配器的内联注释,以实现一致的格式,删除旧的 API 参考等。
- 删除了处理 `
` 标签的实例(在模块适配器中标记为已弃用,在插件卸载中进行了检查) - 删除了在插件卸载中执行预检
- 删除了适配器中对没有完整实现的脚本文件方法的引用(例如,语言适配器正在检查自定义更新方法,但目前不支持脚本文件)
- [#911] 为复选框字段添加默认值 (chdemko)
复选框字段缺少默认值。
- [#924] 使更多类可自动加载。 (realityking)
还删除了一些与自动加载器相关的旧代码。
- [#931] 更新 libraries/joomla/mail/mail.php (brandtOSS)
JMail 类的 addAttachment 方法没有将参数 $name、$encoding 和 $type 传递给其 PHPMailer 父类。这使得无法例如为附件指定其他文件名。
- [#927] 清理用户组表中的一些注释和别名列引用... (elinw)
....
- [#926] 将测试方法名称更改为 testIsMinimumVersion (mbabker)
当创建 #919 时,JDatabaseTest 中从 isSupported 重命名为 isMinimumVersion 的方法的测试方法也应该重命名为 testIsMinimumVersion。这使测试类与该更改同步。
- [#919] 更改 JDatabaseDriver、JCacheStorage 和 JSessionStorage 以使用 isSupported() 而不是 test()。 (realityking)
这使得所有打包的内容都相同,并且 isSupported() 比 test() 更具描述性。我还更改了所有测试以使用对静态方法的动态访问,而不是 call_user_func_array(),因为我们知道在 PHP 5.3 环境中。
- [#922] 修复 JRequest::checkToken('default')。 (realityking)
- [#925] jimport JFolder (mbabker)
在 JHttpFactory::getHttpTransports() 中,应导入 JFolder 以确保其可用。使用我用于测试正在处理的包的基本 CLI,如果没有此 jimport,脚本将失败。
- [#913] 从 #803 重新拉取 (signotorez)
默认情况下,JDatabaseMySQL::getTableColumns() 的第二个参数为 'true'
- [#921] 修改 JDatabaseDriver::getConnectors() 的类生成 (mbabker)
由于类已重命名,因此不再需要检查文件名中的 'sql'。按原样,在 Rouven 的 joomla30 分支上安装由于类名生成不正确而导致无法列出 MySQL(i) 适配器。
- [#923] 为 B/C 添加 JDatabase::getConnectors (mbabker)
这在 JDatabase 中添加了一个方法来连接到 JDatabaseDriver 方法,以帮助维护 B/C。
- [#916] 为 FROM 和 INSERT 元素添加了子查询功能及其测试。 (gpongelli)
通过此拉取请求,可以创建以下示例查询。
在 FROM 元素内使用子查询
$q = new JDatabaseQuery ; $subq = new JDatabaseQuery; $subq->select('col2')->from('table')->where('a=1'); $q->select('col')->from($subq, 'alias');
这将转换为
SELECT col FROM ( SELECT col2 FROM table WHERE a=1 ) AS `alias`
现在是一个 INSERT INTO 元素示例
$q = new JDatabaseQuery; $subq = new JDatabaseQuery; $subq->select('col2')->where('a=1'); $q->insert('table')->columns('col')->values($subq);
这将转换为
INSERT INTO table (col) ( SELECT col2 WHERE a=1)
对于每个元素,都保持了关于不使用子查询的使用向后兼容性。
- [#914] 修复模态行为。 (realityking)
模态现在需要 MooTools More,因为在 1.3 中 Hash 已移至 More。可能可以修复 Squeezebox,但这修复了紧迫问题。
- [#918] 将 methods.php 分割成两个文件。 (realityking)
这两个属于不同包的类位于同一个文件中,我一直觉得很奇怪。
- [#915] 修复 #839 中的几个错误。这些错误是由 phpmd 发现的。 (realityking)
抄送 @oc666
- [#912] 完成访问的单元测试 (chdemko)
- [#839] 将 curl 和 socket 添加到 Joomla 的更新过程中 (oc666)
由于用户请求在阻止 allow_url_fopen 时能够更新 joomla(错误跟踪器 #27852 和 https://groups.google.com/forum/#!msg/joomla-dev-framework/lP1ql5K8Rdw/ZuVRB8JL_SAJ),此拉取请求添加了使用 curl 和 socket 的功能。此拉取请求更改了更新通信的方式,并且使用了平台的新 JHttpTransport 层。默认首选的传输方式是 curl,并且可以更改(请参阅 JUpdater::getAvailableDriver)。我在 JHttpTransport 接口中添加了 isAvailable 方法,并且每个子类都相应地实现了此方法(包含在拉取请求中)。请审查。
- [#905] 更新一些数据库引用名称以利用更改。 (elinw)
- [#910] 修复了 JDatabaseQuery::quoteName 和 JDatabaseDriver::quoteName 及其别名之间的一些不一致。 (robschley)
还修复了两个静态变量初始化警告。
- [#612] 添加了新的 JStringInflector 类 (juliopontes)
我实现了 JStringInflector 并尝试创建单元测试,也需要帮助进行测试。
https://github.com/joomla/joomla-platform/pull/304#issuecomment-2261744
- [#909] 新的 Crypt 包。 (LouisLandry)
这在 Joomla 平台中添加了一个新的 crypt 包,以替换和增强旧的 JSimpleCrypt 库。JSimpleCrypt 已被弃用,取而代之的是 JCrypt。目前 JCrypt 实现了 4 个“密码”,但将来可以添加任意数量的密码。需要注意的是,除了从 JSimpleCrypt 继承的弱加密之外,所有其他密码都使用 PHP mcrypt 扩展进行加密。
我确定这个东西并不完美,而且我确定会有很多人提出改进和批评,但这给了我们一个机会,能够以一种可扩展且易于使用的方式真正解决在平台内加密/解密数据的问题。
- [#745] 在访客用户的情况下,JAccess::getGroupsByUser 的工作原理与预期不符 (Chraneco)
您好,
我认为我在 'JAccess::getGroupsByUser' 方法中发现了一个小问题。默认情况下,该方法返回一个数组,其中包含当前用户所属的每个组 ID(包括继承的组 ID),但这对于访问站点的访客来说并非如此。
因此,此错误仅在用户管理器中的选项“访客用户组”未设置为默认的“公共”组时才会发生。
我创建了一个补丁,尝试修复此问题。
测试说明
- 创建一个新的用户组“访客”,其父级为默认的“公共”组。
- 将用户管理器中的选项“访客用户组”设置为此新用户组。
- 删除 Cookie(以清除会话)
- 在代码中的任何位置放置以下行
var_dump(JFactory::getUser()->getAuthorisedGroups());
=> 数组中只有“访客”组。
- 应用补丁
- 删除 Cookie(以清除会话)
- 刷新页面
=> 现在数组中应该包含“访客”组以及默认的“公共”组。
这也在 joomlacode.org 上有报道:http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=27706
此致,Chraneco
- [#776] 添加 JDocumentImage。 (realityking)
来自 #683 的另一个部分。
- [#906] 重新组织和重构数据库包。 (LouisLandry)
大部分工作是由 Omar Ramos 完成的。Rob 和 Andrew 尝试使所有内容更新并准备合并,现在我也尝试了。在此分支中,所有测试都通过了,并且情况看起来不错。我们可能还需要为向后兼容性或其他方面做一些额外的事情,但我认为我们可以在将这些内容放入其中之后完成这些事情。
- [#898] 实现 JAccess::getActionsFromFile 和 JAccess::getActionsFromData 方法(chdemko)
这使用 xml 文件和 xpath 参数实现了 JAccess::getActionsFromFile,并使用 xml 字符串或 JXMLElement 和 xpath 参数实现了 JAccess::getActionsFromData。
测试现在已完全覆盖。
- [#861] 删除旧代码 (jonnsl)
- [#902] 更新了新 registerPrefix 方法的自动加载器文档。 (eddieajau)
- [#904] 修复错别字 (elinw)
- [#899] 修复了一些注释 (elinw)
- [#897] 删除 PHPUnit 3.6 的已弃用警告 (LouisLandry)
PHPUnit 3.6 产生的一些弃用警告已被清理。警告内容是
The functionality of PHPUnit_Extensions_OutputTestCase has been merged into PHPUnit_Framework_TestCase. Please update your test by extending PHPUnit_Framework_TestCase instead of PHPUnit_Extensions_OutputTestCase.
- [#683] 修复 JDocument 中的一个错误。 (realityking)
修复了带有 http-equiv 属性的元元素设置不正确的错误。这破坏了 JDocument::SetMetadata() 的 API 兼容性。
- [#699] 为 JDocument 添加一些简单的 HTML5 支持。 (realityking)
另一个从 #683 分离出来的分支。
在与 Christophe 讨论后,我认为这与 CMS 的耦合度太高了。这样可以,我们可以在 JApplicationSite 中实现模板的魔法。
- [#896] 修复单元测试失败问题。 (realityking)
- [#894] 减少对 JObject 的依赖 (realityking)
为 @LouisLandry 特别创建的拉取请求。;)
以下类不再扩展 JObject:JBrowser JClientLdap JDocumentRenderer JFeedEnclosure JFeedImage JFeedItem JFilterInput JProfiler JOpenSearchImage JOpenSearchUrl JToolBar
同时弃用 JObject::__toString()。
- [#892] 添加更多 phpcs 代码嗅探器 (realityking)
这添加了许多代码嗅探器,我每个嗅探器都提交了一次,所以如果我们有任何不需要的,我可以轻松地从这个拉取请求中删除它们。
我还添加了一些 XML 来排除我们的第三方库,这样我们现在就可以安全地在整个库文件夹上运行代码嗅探器了。Jenkins 可能应该更改为检查该文件夹。这发现了 phpmailer lang 文件中的一些样式错误。
我还添加了我们的第一个 CSS 代码嗅探器。当前,last-line-must-be-blank 嗅探器存在错误,因此 jenkings 可能不应该立即检查这些文件,CSS 嗅探器本身运行良好。
最后,我修复了之前存在的 2 个警告,所以现在警告应该减少了。
抄送 @elkuku
- [#893] 删除更多已弃用的代码。 (realityking)
- [#791] 弃用 JRequest,转而使用 JInput (Dj83)
开始在平台中从 JRequest 切换到 JInput 的过程。如果所有文件都还没有准备好使用 JInput,请告诉我... 否则,我将继续在看到它们时进行更改。
感谢大家
- [#869] 修复一些 phpmd 警告。 (realityking)
- [#891] 改进系统自动加载器。 (LouisLandry)
- 使用系统自动加载器为类名中的数字添加支持。
- 添加使用系统自动加载器注册多个查找路径的功能。
要为 Joomla 库(以
J
为前缀的类)使用系统自动加载器注册新的文件系统位置,只需php // 为 Joomla 平台库注册我的库基路径。 JLoader::registerPrefix('J', '/path/to/my/joomla/libraries');
要为一组库注册不同的类前缀(在此示例中为C
),只需php // 注册我的库。 JLoader::registerPrefix('C', '/path/to/custom/libraries');
- [#890] 更新 libraries/joomla/table/asset.php (elinw)
修复错别字。
- [#888] 实现文件修补程序 (chdemko)
这可以在更新程序中用于修补文件。用法是
$patcher = JFilesystemPatcher::getInstance(); $patcher->add($udiff); $patcher->addFile($diff_file); $patcher->apply();
- [#887] 修复注释中的语法错误。 (elinw)
- [#886] 修复 JApplicationWeb 基本 URI 检测。 (LouisLandry)
目前,如果未明确给出基本 URI,JApplicationWeb 不会执行任何检测... 它只会将传入的 URI 作为基本 URI。显然,这在基于重写的请求路由中不起作用,因此已修复此问题。此外,我还为传入 URI 中检测到的非基本路径添加了一个“uri.route”值。
- [#884] 修复插件卸载 (mbabker)
在从插件安装适配器中删除一些旧代码时,一些文件检查未正确处理,这会导致插件卸载失败,因为 XML 清单找不到。这修复了这个问题。
- [#885] 文档:添加关于平台引导和自动加载的介绍 (eddieajau)
在开发者手册中添加了一个关于引导平台、自动加载、JPlatform 和 JLoader 的介绍部分。还重新配置了手册,以便所有核心包都在一个章节中,各个类在单独的文件夹中进行记录。更改日志文件已转换为更简洁的版本历史记录。
- [#881] 添加 JGithubCommits 类 (mbabker)
添加一个类来处理 GitHub 提交 API,根据
- http://developer.github.com/v3/repos/commits/
- http://developer.github.com/v3/git/commits/
- [#883] 修复 JApplicationWeb 中的一个重定向问题,该问题会导致路径中多次重复“/index.php”。 (robschley)
- [#882] 为 JPath::find() 添加迭代器支持 (robschley)
添加了对将迭代器对象传递到 JPath::find() 的支持。以前,JPath::find() 会将输入强制转换为数组,在迭代器的情况下,会导致空数组。
- [#838] 修复 memcache 并添加新的 memcached 驱动程序 (oc666)
修复错误 #26514 并添加 memcached 驱动程序(功能跟踪器中的 #27979)
- [#880] 将 JArchive 移动到它自己的包中。 (realityking)
为 JArchive 添加类型提示。添加 JArchiveExtractable 接口。
- [#879] 更改文档块并删除类型提示。 (elinw)
- [#878] 基于 PhpStorm 检查更新文档块 (mbabker)
浏览了许多文档块,并根据需要更新了各种参数和返回值的描述类型。
- [#754] 添加 Union 方法 (elinw)
这为 JDatabaseQuery 添加了一个 union 方法,以及 unionDistinct,它为具有 distinct 的 union 方法提供代理。这是基于 JXtended 库中的方法,但已针对 JDatabaseQuery 的当前实现进行了更新。包括测试。
- [#875] 删除 JClientFtp 中的一些重复代码。 (realityking)
修复 JClientLdap 中的 phpmd 警告。
- [#877] 将 JFormFieldMenuitem 移动到 CMS (mbabker)
该类依赖于 CMS com_menus。因此,将其移动。
- [#871] 提高 JFormField 类别的测试覆盖率 (mbabker)
- [#854] 将 JFormFieldUser 移动到 CMS。 (realityking)
- [#872] 为 JDatabaseSQLSrv 添加基本测试 (mbabker)
PHPUnit 本身在使用 SQL Server 进行测试时不支持数据库操作,因此在不编写我们自己的测试类的情况下,我们无法测试太多内容。基本上,如果它不需要查询,那么我们似乎可以对其进行测试(所以,基本上测试的是类是否已返回以进行链接,查询是否已使用正确的引用正确构建等)。
我已经以与 MySQL(i) 测试类相同的方式实现了这个测试类,即如果不存在配置文件,则应跳过该类(在本地验证此操作按预期工作)。
我还重命名了 MySQL DDL 并为 SQL Server 添加了一个 DDL,以备将来测试支持可用。
- [#873] 从 JInput 序列化中删除 $_SERVER 和 $_ENV 变量。 (eddieajau)
- [#824] 使 JDatabaseQuery 子类可自动加载。 (realityking)
由于 import.php 中添加的行,应该具有完全向后兼容性。
- [#870] 删除更多旧代码。 (realityking)
扩展现在必须设置 registeredurlparams。
- [#868] 分配给“全部除外”的模块应在没有 itemid 的页面上显示。 (elinw)
分配给“全部除外”的模块应在没有 itemid 的页面上显示。请参阅 CMS 跟踪器问题 28017。
- [#863] 从 JBrowser 中删除已弃用的 API。 (realityking)
- [#864] 为了自动加载,将 JFTP 重命名为 JClientFTP,将 JLDAP 重命名为 JClientLdap。 (realityking)
这还添加了一些类型提示并修复了一个严格警告。我还将平台中未使用的一些其他方法标记为静态,以防有人将其用作静态方法。
- [#865] 弃用 JObject 中属于旧错误系统的 method 和属性。(realityking)
- [#859] 删除对名称不以 mod_ 开头的模块的旧支持 (realityking)
- [#857] 修复损坏的单元测试。 (realityking)
在 #855 中错过了包含一个文件。
- [#852] 问题 #849 的修复。 (okonomiyaki3000)
在传递给 JLogger 之前克隆 JLogEntry 实例
- [#855] 删除自动加载器使其过时的代码。 (realityking)
- [#856] 将 MooTools 更新到 1.4.4 版,并放弃对 MooTools 1.2 的兼容性 (realityking)
这涉及更改几个(未维护的)第三方脚本,以便它们在没有兼容性层的情况下工作。
我还对 mootools-core 使用了闭包编译器以节省更多权重。该文件现在比我们之前使用的文件小 12%。我没有对更多文件执行此操作,因为编译器对该文件中的 Unicode 字符执行了一些奇怪的操作。
- [#847] 也使用 JApplicationBase 作为 JApplication 的基础。 (realityking)
拉取请求部分恢复了 #843。
此更改并非仅让 JApplicationCli 和 JApplicationWeb 共享一个公共基类,而是使 JApplication 也扩展 JApplicationBase。为了限制 API 更改的数量,我只在 JApplicationBase 中保留了所有三个类共享的方法/变量。
我认为这将是整合新旧应用程序类的一个好的第一步。
- [#848] 将 PHPMailer 更新到 5.2.1 版本。 (realityking)
- [#850] 始终使用开发人员声明的数据库实例 (fastslack)
- [#828] 将 JWebClient 重命名为 JApplicationWebClient 以进行自动加载。 (realityking)
同时为 JRule 和 JRules 添加弃用警告。
- [#845] 允许 ReflectionHelper 的 getValue 和 setValue 方法访问父类的私有属性(eddieajau)
对 ReflectionHelper 进行了修改,使其 getValue 和 setValue 方法能够访问父类的私有属性。这在测试抽象类时非常有用,可以通过创建派生的具体类来实现,其中属性在抽象类中是私有的。
- [#843] 通用应用程序基础第 4 轮 (robschley)
添加了抽象类 JApplicationBase。重新设计了 JApplicationWeb 和 JApplicationCli 以使用 JApplicationBase。
- [#835] 将剩余的 $() 使用替换为 document.id()。 (realityking)
这将有助于与其他使用 $() 的 JS 框架(如 jQuery)的兼容性。
- [#837] 将 JInput 移动到其自己的包中。 (realityking)
- [#836] 修复表包中的子包标签。 (realityking)
- [#832] 修复 JFormField 的单元测试 (chdemko)
- [#830] 向数据库驱动程序添加最低支持版本信息 (mbabker)
这将最低支持版本信息添加到数据库驱动程序中,并提供一个检索该字符串的方法。当前使用的值为 MySQL 5.0.4(当前 CMS 的最低版本)和 SQL Server 2008 R2(内部版本 10.50.1600.1,根据我昨天与 Sudhi 的讨论)。我还修改了 SQL Server 的 getVersion 方法,使其仅返回版本字符串,而不是 sqlsrv_server_info 方法返回的完整数组。
- [#700] 更新 libraries/joomla/application/menu.php (ssv445)
这将允许开发人员覆盖菜单类。
- [#823] 更新 libraries/joomla/html/html/tabs.php (xilocex)
libraries/joomla/html/html/tabs.php 中的 $group 变量需要指定类型(字符串)以避免在某些使用情况下出现警告。
此问题已发布到 Joomla! CMS 问题跟踪器,您可以在以下链接中找到它。
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_id=8103&tracker_item_id=27958
- [#825] 删除 DS 常量。 (realityking)
- [#826] 修复 JTable::addIncludePath 中的错误 (mbabker)
通过将 JTable 移动到一个单独的包中,引入了一个错误,即 addIncludePath 现在将为 JTable 子类添加不正确的基目录。此修复程序修复了该错误,并为该方法添加了一个测试用例。
- [#822] 添加缺少的分号 (mbabker)
根据 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=27843
- [#821] 更新 libraries/joomla/database/database.php (matrikular)
如跟踪器中所述,项目 27951 - 这修复了名称引用问题在魔术代理方法中缺少参数处理的问题
- [#777] JInstaller 改进/调整 (hieblmedia)
-
包适配器执行了两次 install 方法。这可能会插入重复的数据库条目。请参阅:http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=27802
-
在某些安装适配器上,检查 is_a($updateElement, 'JXMLElement') 始终返回 true 并强制更新。这不是理想的。
-
模板安装适配器从未返回现有的扩展 ID(setQuery 未设置)。这也会强制更新并在扩展表(以及模板样式)中创建重复的数据库条目。使用异常和直接回滚更新查询。
-
- [#814] 问题 [#27780] 修复导致表单字段中出现重复模板样式的错误 (hieblmedia)
如果其他类型的扩展具有相同的名称,则会出现重复的模板样式。
我已为查询添加了一个类型为 template 的过滤器。
请参阅 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=27780
- [#815] 更新 libraries/joomla/database/database.php (AmyStephen)
databaseexception.php 不再存在,已重命名为 exception.php。
- [#805] 问题 #27898 (laoneo)
添加了一个检查,以确定文档中的缓冲区是否真的是一个数组。问题编号为 joomlacode 上的 #27898。
- [#806] 删除已弃用的 JXMLElement 代码 (mbabker)
- [#807] 从 JUpdater 中删除已弃用的代码 (mbabker)
- [#808] 将 JHelp 移动到 CMS (mbabker)
- [#812] 替换 Document 包中的 JRequest (mbabker)
- [#811] 替换 Form 包中的 JRequest (mbabker)
- [#809] 删除 JHtml 中的已弃用代码 (mbabker)
- [#810] 替换 HTML 包中的 JRequest (mbabker)
- [#801] 将 JTable 移动到其自己的包中。 (realityking)
- [#800] 弃用基于包的异常。 (realityking)
- [#799] 删除 JURI 对 JObject 的依赖。 (realityking)
为 JURI 添加了一些类型提示。
据我所知,删除对 JObject 的依赖不会破坏任何东西,我可能是错的,所以如果其他人能仔细看看会很好。
- [#796] 在 JSession 中提供已弃用的 JRequest::checkToken() 的替代方案。 (realityking)
这使用了 JInput,因此没有引入对 JRequest 的依赖关系。
- [#802] 删除已弃用的 JError::isError()。 (realityking)
我们可能需要保留 JError 一段时间,因为它在各处都被使用,但 isError() 方法很容易替换,可以安全地删除。
- [#798] 改进了多数据库环境的 charLength 函数。 (gpongelli)
添加了两个额外的参数用于比较 charLength 整数返回值。第二个参数是比较运算符,第三个参数是要与 charLength 比较的整数。
- [#794] JInput 实现 Serializable (robschley)
更新 JInput 以实现 Serializable,以便您可以序列化输入,它将在序列化之前将当前请求环境复制到对象中。这允许您反序列化对象并检索原始请求环境。
- [#795] 将 JTableContent 移动到 CMS。 (realityking)
- [#797] 弃用 JController::authorise (mbabker)
在已删除的 JController 中的其他代码(已弃用)的情况下,JController::authorise() 实际上不再有任何功能。我已将其弃用并删除了它在 JController::execute() 中的唯一用法。
- [#788] 更多关于 JDaemon 的工作 (robschley)
添加了一个选项以使 JDaemon 应用程序保持在前台。修复了一些在 JDaemon 中尝试处理未定义信号的问题。修复了分叉的 JDaemon 应用程序尝试管理 PID 文件的问题。
- [#765] 删除 JRegistry 中的另一部分已弃用的代码。 (realityking)
显然,这在 #759 中被遗漏了。
- [#792] 修复 countMenuChildren 中的错误 (katalystsol)
$query 正在生成一个未定义变量错误通知,然后是一个致命错误通知,因为它之前未在该方法中定义。在我的网站上更改此设置后(我刚刚升级到 2.5.0),它开始再次工作。
- [#758] 添加了 JDatabaseQuery 函数以提取时间戳的一部分。 (gpongelli)
此函数用于以独立于数据库的方式从时间戳中提取日期的一部分。添加了 MySQL 元素字符串转换测试。
用法:对于 MySQL,$query->day($query->quoteName('dateColumn')) 将返回 "DAY( dateColumn )"
$query->month($query->quoteName('dateColumn')) 对于 MySQL 将返回 "MONTH( dateColumn )"
$query->year($query->quoteName('dateColumn')) 对于 MySQL 将返回 "YEAR( dateColumn )"
$query->hour($query->quoteName('dateColumn')) 对于 MySQL 将返回 "HOUR( dateColumn )"
$query->minute($query->quoteName('dateColumn')) 对于 MySQL 将返回 "MINUTE( dateColumn )"
$query->second($query->quoteName('dateColumn')) 对于 MySQL 将返回 "SECOND( dateColumn )"
- [#785] 代码风格:单行注释嗅探 (elkuku)
这将“嗅探”单行注释(
//
)。它基于 @elinw 的文档:注释规则。已应用以下规则
- 不允许使用井号注释(
#
)。 - 第一个字母必须以空格开头。(
//Bad
->// Good
) - 第一个字母必须是大写,除非句子跨越多行 (
// bad
->// Good
) - 注释不能与代码在同一行。它应该位于其引用的代码之前。
- 如果注释被代码包围,则必须在其前面加上空行。
- 如果有多于两行单行注释,则应将其转换为
/* */
样式的注释。
偶尔,代码风格检查器会检测到注释掉的代码。我已经用 TODO: 删除代码 标记了这些发现。
- 不允许使用井号注释(
- [#790] 从安装程序包中删除遗留代码 (mbabker)
所做的更改
- 组件适配器:放弃对 com_install 和 com_uninstall 的支持
- 语言适配器:元文件标签中支持 client=both
- 插件适配器:删除了检查 CMS 1.5 文件结构插件的代码
- [#789] 从 JApplicationHelper 中删除遗留代码 (mbabker)
从 JApplicationHelper 中删除一些遗留代码
- 在 getPath 方法中,用 JInput 替换 JRequest 的使用,并删除对 CMS 1.5 插件路径的路径检查
- 在 parseXMLInstallFile 方法中,删除对扩展 XML 中遗留安装标签的检查,并从
$data['legacy']
中删除 mosinstall 标签(可以完全删除吗?) - 在 parseXMLLangMetaFile 方法中,更正有效 XML 根标签的注释
- [#784] 为 CMS 的邮件包添加测试 (mbabker)
- [#775] 删除已弃用的 JFormFieldEditors。 (realityking)
- [#778] 添加基本的 JUser 测试 (mbabker)
这添加了 CMS 中 JUserTest 类的一些测试。
- [#779] 删除已弃用的 JObject::toString (mbabker)
- [#780] 删除 JController 中已弃用的代码 (mbabker)
- [#781] 从 JUtility 中删除已弃用的代码 (mbabker)
- [#782] 提高 JDatabase 测试覆盖率 (mbabker)
- [#783] 添加来自 CMS 的 JFolder 测试 (mbabker)
- [#774] 修复失败的单元测试和样式错误。 (realityking)
修复了 #742 和 #764 中引入的失败单元测试。修复了 #764 中引入的样式错误。
- [#742] 将 JFormFieldMedia 和 JFormFieldHelpsite 移动到 CMS。 (realityking)
- [#763] 从 JFactory 中删除已弃用的代码。 (realityking)
其中一些被标记为 12.3,但 IMO 删除它们是可以的。无论如何它们都是受保护的,并且 JFactory 可能不会经常被扩展。
我还修复了一个文档块并添加了一些类型提示。
- [#773] 弃用 JUser::getParameters() (mbabker)
基于 Hannes 在 http://groups.google.com/group/joomla-dev-platform/t/45fe515e53940db2 上的回复,这弃用了 JUser::getParameters() 方法并从 JUser 中删除了
$usertype
属性,因为这是此属性仍在使用的唯一位置。 - [#764] 删除 JRequest:clean()。 (realityking)
这意味着我们不再支持 register_globals 了。
- [#771] 删除安装程序包中已弃用的代码 (mbabker)
- 删除 getOverwrite 和 getUpgrade 方法
- 不再允许 install 标签作为扩展安装中有效的 XML 根标签
- [#772] 从 JDate 中删除已弃用的代码 (mbabker)
- 已删除已弃用的代码
- 测试用例现在扩展了 JoomlaDatabaseTestCase 以允许隔离测试
- [#770] 删除用户包中已弃用的代码 (mbabker)
除了 JUser 中的
$usertype
属性之外,所有其他属性都被删除。有关讨论,请参阅 http://groups.google.com/group/joomla-dev-platform/t/45fe515e53940db2。 - [#768] 从 JTable 中删除已弃用的方法 (mbabker)
- [#762] JLanguage:在调试时避免 BOM 错误,因为在使用 parse_ini 时 BOM 是可以的(infograf768)
JLanguage:避免调试时出现 BOM 错误,因为使用 parse_ini 时 BOM 是可以的
- [#767] 卸载语言包显示错误 (infograf768)
Sine 2.5 JFolder: :delete: 路径不是文件夹。路径:ROOT/administrator/manifests/packages/fr-FR 感谢 Christophe 提供的补丁程序 正在创建跟踪器
- [#744] 删除 JParameter 和 JElement (mbabker)
- [#743] 删除已弃用的 JDatabase* 代码 (mbabker)
从 JDatabase* 类中删除的大部分是 12.1 中已弃用的代码。保留的项目包括 getErrorNum、getErrorMsg、stdErr、$errorNum 和 $errorMsg。
- [#728] 修复了 JFormFieldMedia 文件夹处理错误 (piotr-cz)
测试说明:配置了 'image_path' 为 2+ 级目录的 com_media(即 media/Pliki),当 image_path 配置为 1 级目录(images)时,错误不会发生(请参阅内容 > 媒体管理器 > 选项 > 图像文件夹路径)
详细信息:JFormFieldMedia 具有一个硬编码方法,通过剥离图像路径值中的第一个目录和文件名来计算 $folder 变量。然后,在调用 com_media 组件时,将 $folder 变量作为查询 'folder=$folder' 传递
补丁程序将在 $folder 数组中剥离完整的配置图像路径
关闭 #342
- [#759] 从 JRegistry 中删除已弃用的代码 (mbabker)
根据路线图,这删除了 JRegistry 中已弃用的代码。还有一些其他说明
- 在 JRegistryTest 中删除了已注释掉的方法,因为它们已经在文件中的其他地方实现了
- 对 JUser::getParameters 做了一个我不太确定的更改,它调用了
$this->_params->loadSetupFile()
,但根据对旧的 JParameter::loadSetupFile 方法的审查,我相当确定此调用的实际预期行为已恢复(加载文件而不是设置布尔值 true,就像 JRegistry::loadSetupFile 那样)
- [#757] 删除 JLanguage 中已弃用的方法 (mbabker)
根据路线图,从 JLanguage 中删除了已弃用的方法。
- [#760] 修改 JDatabaseSQLSrv::getVersion() 以使用 sqlsrv_server_info (mbabker)
根据 PHP 文档,sqlsrv_server_info 似乎等同于 mysql_get_server_info 的 PHP 函数,因此我已修改了 getVersion 方法以使用它来获取相应的信息。
@sseshachala,你有什么异议吗?
- [#748] 没有理由保护 (romacron)
protected function dayToString($day, $abbr = false) protected function monthToString($month, $abbr = false)
- [#755] 从 HTML 包中删除已弃用的方法 (mbabker)
根据路线图,从 JHtml* 类以及 JPane 中删除了已弃用的方法。
此外,此拉取请求完全删除了 JHtmlImage 类(之前未标记为已弃用),因为它的两种方法都被删除了。
- [#753] 删除 JSimpleXML。 (realityking)
- [#726] JText::plural(),任意数字的动态复数 (WebMechanic)
此单行补丁程序允许对特定数值的语言键进行“动态”复数化,从而无需为
getPluralSuffixes
编写和分配回调函数。本质上允许传递给JText::plural()
的任何“魔术”数字,如果开发人员或模板/UI 设计师希望这样做,则会导致更有意义的(语义的、人类的)短语。示例用法,数字(7、14、30)是虚构的,用于说明这个想法:
# 标准行为 STATISTICS="Statistcs" STATISTICS_0="No Statistcs available" STATISTICS_1="Todays Statistcs" STATISTICS_MORE="All Time Statistcs" # 增强的行为 STATISTICS_7="Weekly Statistcs" STATISTICS_14="Bi-Weekly Statistcs" STATISTICS_30="Monthly Statistcs"
在代码中:echo JText::plural('Statistics'); // "Statistics" echo JText::plural('Statistics', 0); // "No Statistcs Statistics" echo JText::plural('Statistics', 1); // "Current Statistics" echo JText::plural('Statistics', 7); // "Weekly Statistics" echo JText::plural('Statistics', 14); // "Bi-Weekly Statistics" echo JText::plural('Statistics', 30); // "Monthly Statistics" echo JText::plural('Statistics', 42); // "All Time Statistics"
- [#734] 除了其定义和 JParameter 之外,删除 DS 的其余出现情况。(realityking)
这使我们能够在删除 DS 方面取得 90% 的进展。一旦我们删除了 JParameter,平台将不再使用它,我们就可以决定是否删除它。
- [#752] 删除 $id$ 的遗漏用法。 (realityking)
- [#739] 修复自动格式化程序发现的几个代码样式问题。 (realityking)
- [#741] 开始拥抱 PHP 5.3 (realityking)
由于从现在开始似乎没有人反对使用 PHP 5.3,让我们开始使用它。此拉取请求删除了一个 PHP 5.2 解决方案,并将 dirname(FILE) 替换为 DIR。
- [#666] 修复 SQL 查询 (sseshachala)
参考:https://github.com/joomla/joomla-platform/pull/665/files#r309254
- [#746] 修复 MySQL 特定查询 (mbabker)
这修复了 JInstaller 中的几个 MySQL 特定查询,从而防止在组件安装/更新时更新 #__schemas 表。
- [#747] 删除数据库特定引号,添加 AS 语句 (mbabker)
这应该是处理数据库查询的 MySQL 特定引号的最后一个拉取请求。此外,我还向一个未使用 AS 关键字的查询中添加了几个 AS 关键字(在 MySQL 中可以正常工作,但不能确定它在其他地方是否也能正常工作,所以安全起见)。
- [#738] 更新 libraries/joomla/html/html/menu.php (vinset)
- [#704] 修复了多数据库环境的查询。 (gpongelli)
- [#737] 修复一些小问题 (realityking)
-缺少 index.html -一些潜入的 CRLF。
- [#733] 修复数据库不可用时的错误。 (realityking)
关闭 #689,减去几条注释。
- [#719] Joomla CMS [#27630] replacePrefix 问题 - 仅对 SQLServer 有效 (sseshachala)
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=27630
抱歉造成混淆。
- [#561] 移除 JString 和 JLog 旧位置的存根文件。 (realityking)
自动加载器无论如何都会在正确的位置加载它们。
- [#729] CMS [#27587] 更新生成器标签 (mbabker)
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=27587
- [#717] 来自 eBay 内容库的测试改进 (pasamio)
此拉取请求对 JWeb 和 JSession 的模拟进行了一些测试改进,以提高测试启用会话的 JWeb 应用程序的能力。
- [#723] 修复 JInstallerLibrary 中多数据库的查询 (mbabker)
有一些查询使用了特定于 MySQL 的引号,这阻止了库扩展的安装。此修复程序修复了这些查询。
- [#724] 从模块卸载中移除 MySQL 引号 (mbabker)
- [#721] 修复 JLoggerFormattedText 信息泄露问题 (pasamio)
此拉取请求解决了 JLoggerFormattedText 中的一个问题,由于 PHP 错误,日志文件的内容可能会意外地被查看。此拉取请求引入了 PHP 错误的解决方法,该方法恢复了正确的行为。
Joomla! Bug Squad 邮件列表上的讨论:http://groups.google.com/group/joomlabugsquad/browse_thread/thread/61d2a0979c55b418/908f7fcaee6a723d
PHP 错误:https://bugs.php.net/bug.php?id=60677
可能受影响的 PHP 版本:- PHP 5.2 - PHP 5.3
受影响的 Joomla! 版本:- CMS 1.5、1.6、1.7 和 2.5 Beta 版 - 所有平台版本
- [#710] 修复在修复程序 https://github.com/joomla/joomla-platform/commit/a962ad7ed99cc46c5407377e07efa01f06e58bfa 中引入的错误 (beat)
修复 https://github.com/joomla/joomla-platform/commit/a962ad7ed99cc46c5407377e07efa01f06e58bfa 以检查恢复管理应用程序工具栏检查:由于“if”内部存在“隐藏”的非干净赋值,因此添加到“if”中的“&&”不适用于 if,而是适用于 $path,使其成为布尔值而不是所需的字符串,这导致所有工具栏都无法在后端工作。
- [#720] 对 JDispatcher 的小改进 (robschley)
将 JDispatcher::register() 更改为使用 is_callable() 而不是 function_exists() 以支持更灵活的回调。
- [#718] JDaemon 重命名和清理 (robschley)
将 JDaemon 重命名为 JApplicationDaemon 并移动到应用程序目录。重新设计了 JApplicationDaemon::fork() 以使其更通用,并添加了 detach() 方法以从控制台分离。添加了 JApplicationDeamon::postFork() 以触发 onFork 事件,以便对象可以替换在 PHP 中分叉时存在问题的共享资源(如数据库连接)。
- [#712] 更新 JLDAP::search 以仅返回请求的属性 (pasamio)
此拉取请求添加了在执行 JLDAP::search 时指定属性列表的功能。
$ldap->search('(uid=pasamio)', 'DC=joomla,DC=org', array('givenName', 'sn', 'mail'));
这将返回 givenName、sn、mail 和 DN 属性。始终包含 DN。默认情况下,不指定任何属性将返回所有属性(当前行为)。
- [#715] 修复与多个 SPL 加载器一起使用时的自动加载器问题。 (LouisLandry)
当使用多个加载器向 SPL 自动加载器注册时,人们可能期望 PHP 在找到类后停止查找。情况并非如此,它将继续迭代加载器,如果您没有在加载器中处理这种情况,则如果一个类存在于两个地方,您可能会遇到致命错误。
- [#711] 修复 PHP 严格错误 (sseshachala)
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=27634 PHP 严格错误。
342 个拉取请求。
- realityking:86
- mbabker:56
- AmyStephen:27
- elkuku:21
- elinw:20
- eddieajau:20
- robschley:17
- LouisLandry:14
- chdemko:7
- gpongelli:7
- piotr-cz:5
- oc666:4
- benjaminpick:4
- infograf768:4
- sseshachala:3
- pasamio:3
- hieblmedia:2
- matrikular:2
- Hackwar:2
- ianmacl:2
- Buddhima:2
- vietvh:2
- n3t:2
- aaronschmitz:2
- simonharrer:2
- xilocex:1
- ssv445:1
- okonomiyaki3000:1
- fastslack:1
- romacron:1
- vinset:1
- beat:1
- WebMechanic:1
- Dj83:1
- katalystsol:1
- laoneo:1
- juliopontes:1
- blueboar2:1
- vovtz:1
- stevenloppe:1
- Naouak:1
- Bakual:1
- dianaprajescu:1
- danyaPostfactum:1
- dextercowley:1
- signotorez:1
- Chraneco:1
- brandtOSS:1
- bembelimen:1
- nonumber:1
- jonnsl:1
合并者
- LouisLandry:112
- eddieajau:68
- chdemko:65
- robschley:42
- realityking:34
- ianmacl:10
- pasamio:9
- : 1
- Hackwar:1