Version 11.3 ("Dennis Ritchie") of the Joomla Platform was tagged and released on 24 November 2011. It is the logical continuation of the 11.2 version published 27 July 2011. 

Version 11.3 of the Joomla Platform released

In addition to numerous bug fixes, it also brings new features, the main ones:

  • image manipulation (JImage)
  • creation of web applications (JWeb)
  • generation of HTML tables (JGrid)
  • package for strings added (JString)
  • migration to mootools 1.4
  • curl, socket and stream support (JHttp)
  • github API (JGithub)

The full list of commits is available here https://github.com/joomla/joomla-platform/commits/11.3 and the api doc here https://api.joomla.org

Project size

  • Classes: 231 (205 in platform 11.2)
  • Methods: 1946 (1639 in platform 11.2)
  • Lines: 24717 (19476 in platform 11.2)

Summary of code quality

  • Check style: 235 warnings (4616 in platform 11.2)
  • Duplicate code: 26 warnings (88 in platform 11.2)
  • Programming Mess Detector (PMD): 1006 warnings (1249 in platform 11.2)
  • Test Coverage: 41% (28% in platform 11.2)

New features

Issues fixed

Deprecation work

Documentation

Unit tests

  • 4 august 2011

Code style

The following pull requests made by community contributors were merged:

      1. [#310] Fix a regression with controllers for specific formats. (realityking)

      2. [#496] Adding features to the JForm library + correcting some errors (chdemko)

        The purpose of these modifications is to bring two new features to the JForm library and two new methods to the library JString as a side effect:

        • the possibility to prefix field and rule classes by any string (currently, it's only 'J'). To use the field FooFormFieldBar in an xml, simply put type="foo.bar"
        • the possibility to guess the field type using the class name.
          • A class named JFormFieldBar would have his type guessed as 'Bar'
          • A class named JFormFieldModal_Bar would have his type guessed as 'Modal_Bar'
          • A class named FooFormFieldBar would have his type guessed as 'FooBar'
          • A class named FooFormFieldModal_Bar would have his type guessed as 'FooModal_Bar'
        • the method JString::splitCamelCaseallow to split a string using a camel case notation
          • "FooBarABCDef" becomes array("Foo", "Bar", "ABC", "Def")
          • "JFooBar" becomes array("J", "Foo", "Bar")
          • "J001FooBar002" becomes array("J001", "Foo", "Bar002")
          • "abcDef" becomes array("abc", "Def")
          • "abc_defGhi_Jkl" becomes array("abc_def", "Ghi_Jkl")
          • "ThisIsA_NASAAstronaut" becomes array("This", "Is", "A_NASA", "Astronaut")
          • "JohnFitzgerald_Kennedy" becomes array("John", "Fitzgerald_Kennedy")
        • the method JString::ucfirstEachallow to ucfirst all words of a string
          • JString::ucfirstEach('dr jekill and mister hyde') becomes 'Dr Jekill And Mister Hyde'
          • JString::ucfirstEach('dr jekill and mister hyde',' ', '_') becomes 'Dr_Jekill_And_Mister_Hyde'
          • JString::ucfirstEach('dr jekill and mister hyde',' ', '') becomes 'DrJekillAndMisterHyde'

        Last, there was an error in the JForm library: the array_unshift in the JFormHelper::loadClass method only allow to look in the first half of paths.

      3. [#543] Update PHPMailer to version 5.2 (mbabker)

        Update PHPMailer library to 5.2. Added the POP3 class, removed the English language file as it is set within the code and not distributed anymore, and alphabetized the Joomla! language file.

      4. [#550] Adding cache directory so that unit tests don't fail on first run (ianmacl)

        Some of the cache tests will fail if this directory doesn't exist. This directory may have been lost somewhere along the way because you can't commit directories in git. This should solve some of the issues and make tests easier to run.

      5. [#549] Make changes to JHtmlBehaviorTest setup because of failing tests. (elinw)

        24 tests in JHtmlBehavior were failing because of missing $_SERVER['HTTP_HOST'], probably this showed up for me because of the order in which the tests were run.

      6. [#542] Add truncate function to JDatabase (mbabker)

      7. [#540] Added missing references =& instead of assignments = for array of module... (beat)

        Proposing to add missing references =& instead of assignments = for array of module objects in the references chain. JModuleHelper::_load returns a reference, but it is used is by assignment, instead of by reference assignment.

      8. [#547] Add JOIN support to JDatabaseQuery UPDATE query (mbabker)

        JDatabaseQuery::__toString() currently does not handle JOIN statements in the UPDATE case. This causes UPDATE queries that are joined to another table to fail due to the table not being joined. Added support for this as well as a unit test testing the toString update case.

      9. [#526] Refactored JHttp class that supports CURL, sockets and streams, and a Github library (ianmacl)

        Github library currently supports: * Pull requests * Issues * References * Gists

      10. [#548] Fix a PHP strict warning in JForm. (realityking)

      11. [#186] Unit test fails on document package (ianmacl)

        Fixed unit test. The test for parse verified that the method returned null. The method now returns a JDocument object. Test changed to reflect that.

      12. [#185] JDocument fluent interface (WebMechanic)

        • changed setters and mutators to return $this instead of "void".
        • cleanup of duplicate jimport('joomla.document.document')
        • whitespace and indents
      13. [#158] Joomla CMS [#26263] direct access in JDocumentOpensearch (elinw)

        See http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26399 Fix access check.

      14. [#389] Joomla CMS [#25291] Front end clear link for media field and file field closes form(chdemko)

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

      15. [#541] Some style fixes. (realityking)

      16. [#545] Changing file modes (chdemko)

        Some files are 775. They should be 664.

      17. [#544] Correcting errors for migrating the CMS to 11.3 (chdemko)

      18. [#395] Joomla CMS [#25643] JComponentHelper::renderComponent assumes $app variable unchanged (chdemko)

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

      19. [#490] Adding the possibility to load (un)compressed css and js file whether debug in on or off (chdemko)

        To improve the speed of loading a web page, it may be interesting to automatically detect the debug mode and to load compressed files (css and js) or not.

        The logic is as follow:

        if debug is on try to load the uncompressed version of a file named *file*-uncompressed.(js,css) else load the classical file *file*.(js,css) else load the classical file *file*.(js,css) endif

        The use is as follow:

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

        will look for files in media/com_foo/js/

        if debug is on try to load bar-uncompressed.js else load bar.js else load bar.js endif

        For stylesheets:

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

        will look for files in media/com_foo/css/

        if debug is on try to load bar-uncompressed.css else load bar.css else load bar.css endif

        Unit tests have been added in modified classes

      20. [#539] Fix a small incompatability with MooTools 1.4. (realityking)

        SqueezeBox is checking for a type that had to be renamed in MooTools.

      21. [#370] Add JHtmlDate class with relative time function (mbabker)

        JHtmlDate::relative allows users to convert a given date/time combo to a relative time in minutes, hours, days, or weeks, and returns the absolute time if the date is over a month in the past.

      22. [#536] Clone2 (elinw)

        This adds a __clone method for handling deep cloning to JDatabaseQuery and JDatabaseQueryElement and tests for those methods.

      23. [#514] UT 1/10: Fixes and Unittests for JRegistry package (Hackwar)

        This is the first of 10 pull requests that split up the commits from pull #466 into more or less digestable packages.

        This request implements extended unittests for the registry package and fixes a few of the JRegistryFormat handlers. The specific changes: JRegistryFormatPHP: Up till now, nested objects were simply ignored, when converting an object to a string. This now converts objects to arrays and then tries to handle them as nested arrays. Otherwise data would be lost.

        JRegistryFormatXML: The first iteration through the childs of the root node was a duplicate of the method that is later called for every childs child element. Simply less code.

        JRegistry: Deprecated methods (that sometimes don't even work anymore) should not be covered by unittests and also should not need any code coverage checks.

        JRegistryFormatTest: The exception handling in the test was uncool in my book, since the function code did an assertion, but it didn't get that far and instead threw and exception. For a developer its not directly obvious that the exception handling is done through the doc-block and that an exception is expected here.

        JRegistryTest: loadINI & loadJSON are deprecated in favor of loadString() and thus loadString() should be tested, not the other two.

        JRegistryFormatIniTest, JRegistryFormatPHPTest, JRegistryFormatXMLTest, JRegistryFormatJSONTest: The tests have been fleshed out a bit more to check for the majority of possible input. just checking for "foo=bar" is not much of a test.

      24. [#377] Joomla CMS [#24919] JHtml::_('grid.boolean', $i, $value) should add void(0) if not given a task (chdemko)

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

      25. [#384] Joomla CMS [#24796] Error removing styles in uninstall function (chdemko)

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

      26. [#535] Fix require in bootstrap (mbabker)

        There's a slight typo in the test suite bootstrap causing the tests to fail. Fixed it.

      27. [#534] Added ReflectionHelper class to test framework (eddieajau)

        The ReflectionHelper class provides an alternative to using inspectors to access protected class methods and properties in tests. The getValue and setValue methods work on both static and non-static properties.

      28. [#530] UT 2/10: Using realpath() in JLoaderTest to remove platform issues (Hackwar)

        Adding unittest to JAccessTest to achieve more code coverage

      29. [#525] Allows JWeb to have a configurable themes path. (elinw)

        This adjusts JWeb::Render to use a configuration variable "themes.base" if it is available and then if not to use the convention based path.

      30. [#528] Remove unnecessary HTML files. (LouisLandry)

        The platform project does not have a need for for the index.html files found in all Joomla CMS code folders to prevent directory browsing from web servers. Presumably if someone is using the platform independent of the Joomla CMS then there will be steps taken to prevent directory browsing either by placing the platform outside of the server document root, or by some other web server directive.

      31. [#527] Secruity fixes from Joomla 1.7.3. (realityking)

      32. [#517] UT 4/10: Codecoverage fixes for base package (Hackwar)

        Adding unittests for cache package

      33. [#519] UT 6/10: Adding Unittests for document and error package (Hackwar)

        Fixing unittests of JURI and JDocumentRenderer for 100% code coverage

      34. [#520] UT 7/10: Adding unittests for filesystem package (Hackwar)

        extending unittests for JDispatcher

      35. [#522] UT 9/10: Adding unittests to log, mail, plugin and session package (Hackwar)

      36. [#524] Fix code comments in JWeb (elinw)

        Fix two comments so they match the code.

      37. [#511] Some minor changes to improve exceptions and fix unit test issues with PHPUnit 3.6(ianmacl)

        1. PHPUnit 3.6 doesn't like you to expect generic exceptions. This issue is addressed by using exceptions that are a bit more specific.

        2. There is a JString unit test that somehow passes but is wrong. This fails on PHPUnit 3.6 without the enclosed fix. Very curious.

      38. [#510] MooTree - wrong Request.send usage (n3t)

        reported here

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

      39. [#509] Collection updater not working in Joomla! 1.7 (n3t)

        As reported in Joomla tracker

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

      40. [#506] Fix a bug in tab.js (realityking)

        Just a small JS error.

      41. [#508] Fix some PMD warnings (realityking)

        Also fixes a bug in JHtmlBehavior and a couple of warnings in the process.

      42. [#507] Remove more uneccesary calls to jimport(). (realityking)

      43. [#463] Refactoring JDispatcher and JEvent, deprecating JObserver and JObservable(Hackwar)

        This pull request refactors JDispatcher and JEvent to directly extend JObject and deprecates JObservable and JObserver.

        JObservable and JObserver are both broken and should not be used anymore.

        Besides refactoring the code, JDispatcher and JEvent were both covered by Unittests, which should have full coder coverage.

        The discussion regarding this change can be found here: https://groups.google.com/group/joomla-dev-platform/browse_thread/thread/4b195ce76d200e3e#

      44. [#502] Fix _ protected names (chdemko)

        Another way to detect protected function/var beginning with _: if they are marked deprecated don't generate warning. Application to JFactory

        See https://github.com/joomla/joomla-platform/issues/501

      45. [#504] CMS issue [#26439] Editors have problems with quotes in content plugins syntax(dextercowley)

        Fix CMS issue http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26439

        JFilterInput is too restrictive with valid HTML content. This change tweaks a regex value to not filter content in well-formed HTML element.

      46. [#505] First step in getting rid of now unneccessary jimport() calls. (realityking)

        The new autoloader makes several jimport calls immediately redundant.

      47. [#503] Unify code style. (realityking)

        Unify the style for the JPATH_PLATFORM check and remove the last occurrences of _JEXEC.

      48. [#495] Adding a true autoloader to the Joomla Platform. (LouisLandry)

        As of now there is no such thing as a true autoloader for the Joomla Platform. What we have is a way to explicitly register files with a loader class to be lazy-loaded when necessary.

        This pull request adds another method to the SPL autoloader queue that would provide true autoloading functionality for classes that follow a given naming convention for files and class names without having to use jimport() or JLoader explicitly.

        To leverage the autoloader the following conventions must be met:

        Class Names

        • All class names must be prefixed with an upper-case J to indicate that the class file will be found within the libraries/joomla folder.
        • All class names must be in camel case where the first character after the J prefix is upper-case. For example: JClass or JClassExtended

        Class File Paths

        • The first sections of a class name indicate the folder path for the class file, and the final section of the class name indicates the class file name. For the example JClassExtended J indicates a Joomla library, Class indicates the folder path, and Extended indicates the file name for the class. Therefore within libraries/joomla/class/extended.php you will find the class JClassExtended defined.
        • If there is only one section of the class name then that section is used both for a folder path and class file name. For example JRegistry is found defined in the file libraries/joomla/registry/registry.php.

        Backward Compatability

        The implementation of this new autoloader is supplemental to the current lazy-loading system and should have no impact on backward compatability. In point of fact, the current lazy-loading system is called first by the SPL autoloading queue, then if the file is not found the new autoloader mechanism is called. This should make it easy to transition libraries into the appropriate conventions over time without any impact to third party developers or downstream software.

        Further Example

        As it happens, the Registry package is a perfect case study for the new autoloader. With the autoloader enabled, there is no need to ever explicitly call jimport('joomla.registry.registry'); because the classes already follow this convention perfectly. You would just simply use JRegistry as if it is already loaded. The class name to file path mapping is shown below:

        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

        It should be noted that the autoloader gracefully handles when a segment is all caps as in the case above. The important bit is the transition from lowercase to uppercase.

      49. [#499] Make unit tests work with phpUnit 3.6. (realityking)

        Add JImport to the whitelist.

      50. [#497] Changing all cases of static instance variables (Hackwar)

        Changing all cases of static instance variables in functions to class static properties. This should cover all cases where a class stores itself in an $instance variable and makes all occurences identical. It only changed $instance(s) cases, some methods use different variables for different cases, which have not been touched and still need to be changed.

      51. [#493] Deprecate the feature and quirk related parts of JBrowser. (realityking)

        Also add a warning that this class may change significantly in the near future.

        The class is incredibly outdated and we need to be able to clean it up.

      52. [#481] Use an autoformatter for the indentation. (realityking)

      53. [#486] Run the autoformatting on the unit tests. (realityking)

      54. [#491] Add variable type context to JDatabase getQuery method and JTable _db property.(elkuku)

        I know this is technically not correct as the classes mentioned are not used but the extending classes but... it would make the following auto complete available in modern IDEs for the base classes - you decide ;)

        ```php <?php class MyTable extends JTable { function foo() { $query = $this->_db->//-- Auto complete for JDatabase

        $query = $this->_db->getQuery(true) $query->//--Auto complete for JDatabaseQuery }

        } ```

      55. [#492] Don't run PHPMD on 3rd party libraries. (realityking)

      56. [#482] Fixed JController::getName() (Hackwar)

        JController::getName() calculated the name of the controller upon each function call. This change does it once and then caches the value.

      57. [#487] JModellist: Replacing !empty() with isset() for performance (Hackwar)

        JModellist uses !empty() to check for cached data. If the query returned an empty result, the array key is set, but the variable is empty, thus the caching does not take effect and the query is executed again when the function is called again. Using isset() instead only checks if the variable has already been set (=the query has been executed) and then returns that result, regardless if that result is empty or not.

      58. [#379] Joomla CMS [#26840] Generate manifest_cache on file install (mbabker)

        CMS Issue Report: http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26840

      59. [#484] _createId() takes no arguments (rvsjoen)

        The function declared in JSession::_createId() takes no arguments

      60. [#483] Fix commented out else keyword in JForm (rvsjoen)

        This is probably just a mishap

      61. [#488] Code style: adjusting line lengths (elkuku)

        This should reduce the amount of warnings reported by the code sniffer and, of course, make the code look much prettier ;)

      62. [#460] Fixed issue with JFormHelper:loadClass() including only first filename match(nonumber)

        Now it includes all matched files till it finds the required classname. Fixes #455

      63. [#480] JUpdater does not work for components (nikosdion)

        JUpdater does not work for components if their XML update element did not explicitly include a folder and client_id child node. This is undesirable, because it is always folder="" and client_id=1 for components. The workaround is to set these values as defaults in JUpdaterExtension. Plugins, modules and templates don't have a problem, as they do specify those elements when necessary.

        This pull request is a follow-up to the Joomla! CMS tracker item #27023 (http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_id=8103&tracker_item_id=27023) and the related discussion on the Joomla! Dev General list (https://groups.google.com/forum/#!topic/joomla-dev-general/R4g0-Q2pWXk)

      64. [#478] Modified JDaemon test to prevent writing files in global tmp directory. (ianmacl)

        On the build server we have tests running under two different accounts. They both try to write to the same pid file and this causes problems. This modification to the tests fixes that issue.

      65. [#427] New JImage class. (LouisLandry)

        This is a collaboration between Rune and myself to create a new JImage class for the platform. There is good unit test coverage and a simple but effective API. The library supports cropping, resizing, rotating and applying several different filters to an image using GD.

      66. [#477] Getting back to blue. (LouisLandry)

        Fixing the build.

      67. [#474] Menutypetest (elinw)

        Fix a stupid mistake.

      68. [#472] Adding a missing jimport which is causing the unit tests to raise an erro (elinw)

        Adding a missing jimport which is causing the unit tests to raise an error in menutype.

      69. [#469] Minor Cleanup and Fixes (robschley)

        Fixed missing dependency import in JSession. Added getDocument(), getLanguage(), and getSession() to JWeb. Fixed some issues in JDaemon test when PCNTL is not installed.

      70. [#470] Codestyle clean up (elinw)

        Some cleanup of database and databaseconnection.

      71. [#471] Removed test because server is not publicly accessible. (ianmacl)

        build.joomla.org:8080 is not publicly accessible. As a result the test will fail on most systems.

      72. [#468] Fix JDatabase::getConnectors and add a databaseconnection field (elinw)

        This addresses some problems in getConnectors which made it not work with the current file structure in the database folder and with the newer naming conventions for the database class. It also adds a new field that uses getConnectors to dynamically create a list of available database connection/driver combinations optionally constrained to a list of supported databases for the application.

        This will be important for multidatabase support since not all servers will support all databases and not all applications will support all available drivers.

      73. [#467] Coding standards: Concat operator must be surrounded by spaces (elkuku)

        Another "edge case" - The concat operator (.) must be surrounded by spaces.

      74. [#362] Update MooTools to version 1.4 + a bugfix in tabs.js (realityking)

      75. [#465] Documentation: Update coding standards (elkuku)

        This adds the new multi line rules for function declarations and control structures to the coding standards.

      76. [#464] Coding standards: Constructor and destructor comments must not have a @return tag. (elkuku)

        This was ment to be added to #462... You are merging too fast ;)

        • Removes the @return tags from class destructors.
        • Fixes the function comment sniff to detect a @return tag in class constructors and destructors docblocks.
      77. [#462] Fix spelling in docblocks and removed @return labels in constructors. (mbabker)

        Using the code inspector in PhpStorm, evaluated the following conditions from the results:

        • Spelling errors (specifically in code comments and doc blocks)
        • A method declared void should not return anything
        • Doc block doesn't match method declaration

        There was also an instance of DatabaseException that I saw while looking through the results that I switched to JDatabaseException.

      78. [#11] AJAX improvements (realityking)

        Small library modification to make it easier to use AJAX or other JS functionality with the Joomla framework.

      79. [#459] Fixing docblock in JButton (jonnsl)

        Closes #457 - removes left-over merge text.

      80. [#456] Fixed improper database reference in JAdapterInstance. (AmyStephen)

        Changed &$db to $db in the if statement.

      81. [#458] Fixed two missing jimport calls in JDocument package (robschley)

        Fixed two missing jimport calls in JDocumentHTML and JDocument. These were discovered when using JWeb with a template which brings in JDocument. These files were normally always included in the CMS bootstrap files.

      82. [#452] Fix to check document has a setHeadData function (pasamio)

        This adds a check to see if the current JDocument instance features a setHeadData function ahead of attempting to call it. This should fix some cases where caching is attempted with head data for document types that don't support that functionality for what ever reasons. This is potentially a bug elsewhere in the code however the platform should ignore these requests instead of blindly attempting to call a function that doesn't exist.

      83. [#451] Added JRules mock (eddieajau)

        Added a new mock for JRules in /tests/includes/mocks/JRulesMock.php. This has some pre-baked results to allow for dependancy testing in other classes.

        Also improved code coverage of JRules by adding object test case to the constructor test, and added docblocks to the JRules and JRule test files.

      84. [#446] JHtmlNumber and tests fail on 32 bit systems (rvsjoen)

        By removing the explicit cast we allow PHP to automatically convert to float when needed in order to avoid overflowing on 32-bit systems.

        Fixes #443

      85. [#442] Fix typo in daemon.php (chdemko)

      86. [#441] Fixed improperly aligned doc blocks in cli.php and web.php (ianmacl)

        Doc blocks were not aligned properly.

      87. [#440] Changes to fetchConfigData to increase flexibility and avoid testing conflicts with multiple JConfig classes. (ianmacl)

        Currently tests bail depending on the order the tests are executed in because of the existence of multiple JConfig classes. This change improves the flexibility of the classes that use it so we can avoid the problem.

      88. [#416] Default Layout should not be set in JController->display() as it's already been set in the JView Constructor (Bakual)

        Only setting the view layout if a layout is passed in the request. The default value should not be set here as it already has been set by the JView constructor, allowing for a view to have a different default value than 'default'.

      89. [#437] Improve JHtml test coverage (mbabker)

        Improved JHtml library test coverage by:

        • Adding test case for JHtmlBatch::language, which inherently tests JHtmlContentLanguage
        • Adding test cases for JHtmlEmail
        • Adding test cases for JHtmlList users and positions methods
        • Adding test cases for JHtmlMenu menus and menuitems methods
        • Adding test cases for JHtmlTel
        • Renamed JHtmlNumber.php to JHtmlNumberTest.php, now including it in the test suite
        • Renamed the DB dataset file since it is can and should be used elsewhere as needed
      90. [#438] Added a new line to end of the JFTP class file (AmyStephen)

        Added a new line to end of the JFTP class

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

      91. [#431] Fixes strict issue in JFTP::get() (AmyStephen)

        Strict Standards: Declaration of JFTP::get() should be compatible with that of JObject::get() in /users/amystephen/sites/molajo/libraries/jplatform/joomla/client/ftp.php on line 1741

      92. [#435] $obj not defined in JTable canDelete. Changing to $row (andreatarr)

      93. [#436] Extending Unittests for JGrid to reach 100% coverage. (Hackwar)

        Trying to reach 100% code coverage for JGrid. This should make that happen.

      94. [#400] Joomla CMS [#24973] JHTML select.options with html entities (chdemko)

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

      95. [#434] Check-style and duplicate code fixes. (eddieajau)

        Fixed check-style error in JError class. Refactored SQL Azure query class to reduce duplicate code.

      96. [#433] Test fixes (eddieajau)

        Fixes invalid file name in JAccess tests, and check style errors in JError.

      97. [#432] Added delay to fix tests on build server (ianmacl)

        On the build server there is a weird issue where the select in this test doesn't return all the data. This usleep call fixes the issue.

      98. [#430] Sniff fixes (elkuku)

        This will

        • Fix the else and elseif sniff
        • Fix the standard for multi line function declaration
        • Fix the standard for multi line if declaration as discussed in #424 and requested by @eddieajau
        • Fix the last line empty sniff not working in classes
        • Remove the "File is being conditionally included" sniff as suggested by @LouisLandry in #424

        (Includes unmerged changes from #425)

        Result

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

        Time: 47 seconds, Memory: 14.25Mb ```

        which means there are no more errors - hooray - Could we include the sniffer in the process of approving pull requests and reject code that doesn't meet the standards ? (this will also prevent further annoying pull requests changing white space only ;) )

        BTW: There are still some

        Warnings

        ```

        SOURCE COUNT

        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

        A TOTAL OF 450 SNIFF VIOLATION(S) WERE FOUND IN 5 SOURCE(S)

        ```

      99. [#409] Joomla CMS [#26491] Date Icon "string untranslated" (chdemko)

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

      100. [#403] Joomla CMS [#26885] JText do not recognize "" no-string (chdemko)

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

      101. [#429] Fixed fatal error in Sql Azure driver (AmyStephen)

        Fixed this => Fatal error: require() [function.require]: Failed opening required '/users/amystephen/sites/molajo/libraries/jplatform/joomla/database/databasesqlsrv.php' (include_path='.:/Applications/MAMP/bin/php5.3/lib/php') in /users/amystephen/sites/molajo/libraries/jplatform/joomla/database/database/sqlazure.php on line 12

      102. [#428] Unit Test Tree Wrangling: Phase 1 (LouisLandry)

        This branch cleans up and makes consistent the folder structures and scaffolding for unit tests. Additionally it fixes some long standing issues in a few of the tests. As a bonus, for external projects the tests/includes folder can be linked or copied into your own tests folder to use all of the Joomla class mock objects available within the test suite.

      103. [#367] Minor improvements to error reporting (eddieajau)

        Replaced usage of JException with Exception in the Application package. Added unit test to verify exception is thrown. Fixed a problem in JError where an infinite loop is detected (defers to the echo handler). Added a check in the custom error page handler for if the document body is empty, defer to the echo handler otherwise no error will display at all.

      104. [#420] JGrid: Small refactoring (Hackwar)

        After some more thought, the function addRowCell is ill-named and should be setRowCell. I also added getter/setter for the Row Option. The unittests have been changed accordingly.

      105. [#424] Code formatting (elkuku)

        This fixes some remaining coding standards violations. Some of them have been introduced recently..

        I was not quite sure how to handle multi line ifs a)

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

        ruby if ($a && $b ) { true; } The coding standard says that version b) is the good one.

        I believe multiline ifs, function declarations, and function calls should be formatted in the same way. What do you think ?

        Also: The only remaining errors are those "File is being conditionally included; use "include_once" instead" - what to do about that ?

        So.. may we teach Mr. Jenkins (or ask Mr. Mc Lennan politely) to include the sniffer when approving pull requests ?

      106. [#423] CodeSniffer should run from any directory (elkuku)

        Right now it is required to copy or softlink the coding standards to your system standards directory in order to use them. I find this difficult for testing and it might also raise the barriers for developers.

        The reason the sniffs won't run from any directory is the fact that they make one reference to a system standard called "Joomla" - only to set the severity for inline control structures from error to warning...

        So, I removed that reference, updated the corresponding sniff file and also modified the build.xml to pick the Joomla! Standard found in the directory instead of the system standard.

      107. [#408] Joomla CMS [#26788] Add language field to batch widget (mbabker)

        See http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26788 for more info.

      108. [#396] Joomla CMS [#26636] Forgotten JRoute:_ in JControllerForm (chdemko)

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

      109. [#385] Joomla CMS [#26493] Class 'JRequest' not found in session.php (chdemko)

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

      110. [#369] Fix some code style (realityking)

        This may not be loved by all but I think the automatic code style correction has made some changes that make the code much less readable by removing the alignment on variable assignments. This is especially bad in large blocks like in JHtmlBehavior.

        There are more like these but I wanted to see first if this gets pulled.

      111. [#417] Use elseif instead else if. (realityking)

        Main reason is that it is much easier to parse when applying other style checks but it's also more consistent and as an added bonus there is a very small speed increase involved (probably < 1%).

      112. [#415] Typo in JGrid (Hackwar)

        A little bit embarassing, but the JGrid class has a typo in the rendering of the footer rows. It should beinstead of. This has been fixed in this pull request.

      113. [#414] Make all PHP keywords (but not built-in functions) lowercase. (realityking)

        Not sure if this is something we want but Andrew did say he preferred as over AS.

      114. [#413] Remove trailing commas in arrays and make sure there's a space after ever(realityking)

        Remove trailing commas in arrays and make sure there's a space after every comma.

      115. [#412] Fix some docblocks. (realityking)

      116. [#405] All files should end with a new line. (realityking)

        Just running phptidy (tidy ;) ) without any arguments so it only removed spaces at the end of a line and made sure all files end in a new line.

      117. [#404] Secruity issues fixed in Joomla 1.7.1. (realityking)

      118. [#399] Joomla CMS [#26275] Joomla automatic add meta robots=index,follow (chdemko)

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

      119. [#394] Added check to sending header when database connection cannot be established in JFactory (eddieajau)

        Fix to JFactory::_createDbo()

      120. [#388] Moved function static variable to class static variable (ssv445)

        Moved function static variable to class static variable, will help in independent unit test cases. Also added docblock. Please discard the previous pull request.

      121. [#391] Joomla CMS [#25199] Problem with preg_quote in function utf8_ireplace (chdemko)

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

      122. [#393] Joomla CMS [#26863] countMenuChildren has incorrect column reference and generates 1054 error when debug turned on (katalystsol)

        I'm using countMenuChildren in my template (using Joomla 1.7.0). It seems to work fine except when I turned on error reporting / debug. It gave me the following error message:

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

        The page gives a 500 error and has the following backtrace:

        Function Location

        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

        Line 112 in my template is where I call $this->countMenuChildren()

        I looked in the database and there is not a field called 'parent' in the #__menu table. However, there is a field called "parent_id"

        The libraries/joomla/document/html/html.php file on line 499 (line 452 in current library used in Joomla 1.7.0) is:

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

        but I think it should be:

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

        Whenever I make that change, everything seems to work fine.

      123. [#390] Joomla CMS [#26491] Date Icon "string untranslated" (chdemko)

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

      124. [#392] Joomla CMS [#25565] "Language string failed to load" showing up when sending an email (chdemko)

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

      125. [#383] Fixed case typo in modellist.php (changed getstart to getStart) (jmcameron)

        Fixed case typo in libraries/joomla/application/component/modellist.php:255.

        Should have been 'function getStart' but was 'function getstart.

        It worked fine but made it hard to find in case-dependent searches. Unit test unaffected.

      126. [#380] Joomla CMS [#26844] Improvements to batch processing (mbabker)

        There is a bug in the current batch processing method in that when items are copied, if the access level is also changed, then the access change is applied to the original item. The batchCopy process is modified to return an array of new item IDs to the batch process and the batch process is modified so that the copy/move command is executed first and that the $pks array is reset with the new IDs on a successful copy.

        See CMS issue: http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26844

      127. [#378] Application Layer Rework Phase 1: JWeb & JWebConfig (LouisLandry)

        This pull request introduces a new JWeb class to encapsulate a web application for the Joomla Platform. In addition to JWeb I am also adding JWebClient which serves as a very lightweight yet productive Web client detector -- many thanks to Elin Waring for helping with research. Both classes come thoroughly unit tested; 92% code coverage for JWeb and 82% coverage for JWebClient.

        As a part of this work I also ensured functional parity between JWeb and JCli so that writing applications for either SAPI is familiar and fluid. JCli also now sports 100% code coverage. Both JWeb and JCli also fully support dependency injection for all dependent objects for increased flexibility and testability.

        Also included in this pull request are a great number of additions/fixes to the unit testing system to make it easier to mock out various classes within the Joomla Platform.

      128. [#381] Correcting unit tests (chdemko)

        The unit test does not pass currently. This is due to the file JRequestCleanTest.phpwhich is loading the file JRequest-helper-dataset.php without loading JPATH_PLATFORM.'/joomla/environment/request.php

      129. [#376] Moved application examples (eddieajau)

        Application examples have been moved to a new repository.

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

      130. [#375] Joomla CMS [#26818] File and package installations are not updateable via the Joomla! Updater (chdemko)

        Merge http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26818 from the CMS g modified: libraries/joomla/installer/adapters/package.php

      131. [#161] Add an optional password strength meter. (realityking)

      132. [#366] Improve code coverage of JDatabaseQuery (eddieajau)

        Improves the testing coverage of JDatabaseQuery and JDatabaseQueryElement. Updated docblocks with example usage. Fixed a bug in JDatabaseQuery::escape where is was not actually returning anything. Moved tests up one level in the tree.

      133. [#368] Fix a small bug in JFormFieldRules. (realityking)

        Another small bug found by merging with the CMS.

      134. [#373] Fix unit tests errors caused by duplicate JDispatcher class. (eddieajau)

        This patch adds a global JDispatcher mock to the Joomla test cases and fixes a problem in the user package.

      135. [#340] Added testing notes and example database CLI app. (eddieajau)

      136. [#359] Converts JDispatcher::getInstance to use a protected static class to store its singleton. (eddieajau)

        Currently JDispatcher cannot be mocked due to static storage within the getInstance method. This method is changed to use a protected static class variable which can be overridden in child classes. Also adds base tests for JDispatcher and an inspector class that can inject a mock dispatcher if required.

      137. [#361] Allow $format in JHtml::date to contain a language key and call JText::_() if so.(WebMechanic)

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

        This patch tests if $format is an existing language key and should make the interface of this helper more convenient, "obvious" and DRY. Makes this a shortcut to the common, repetitive, and ugly looking JHtml::_('date', $datevalue, JText::_('DATE_FORMAT_LC4'));

      138. [#363] Coding standards in JFactory::getUser() (rvsjoen)

        This cleans up some end-of-line whitespaces and some other things.

      139. [#175] If given id is ourselves, behave like no id was given (rvsjoen)

        JFactory::getUser() and JFactory::getUser($id) does not behave the same even if $id is the same number as the currently logged in user, so that if a plugin has used JUser::bind() to change the user object, JFactory will not give back the correct object if given an id. This patch will make getUser() check if the given id matches the currently logged in user and behave like no id was given if that is the case.

      140. [#25] Fixes for #22587 and #24285 (klas)

        Issue 22587

        • Change modules cache lifetime to be set as intended (seconds must be converted to minutes)
        • Cache handler needs to use all parameters for static variable caching

        Also $_handler is a static variable and so can't be referenced as $this->_handler (this bug was introduced after #22587 report) - change back to self::$_handler

        Issue 24285

        Fix changes module caching to store only headers that changed after module was executed. Headers before and after callback are compared.

      141. [#153] Check return value of opendir against NULL and not FALSE (rvsjoen)

        We need to check the return value of opendir before it is passed to readdir, readdir does not seem to handle non-valid resources like expected. The following PHP statement will result in an infinite loop of stack traces.

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

        From the php documentation:

        The newer internal parameter parsing API has been applied across all the extensions bundled with PHP 5.3.x. This parameter parsing API causes functions to return NULL when passed incompatible parameters. There are some exceptions to this rule, such as the get_class() function, which will continue to return FALSE on error.

        So we either have to check the return value of opendir against NULL, or remove the type-specific comparison and simply use != instead of !==.

      142. [#351] Fixed ControlSignatureSniff (elkuku)

        This should fix the issue with elses..

        good

        if($a) { } else { }

        bad

        if($a) { } else { }

        Questions

        1. I did a search on the use of elseif vs else if. Turns out that it is almost 50:50 ;) - Should we care about this ?
        2. Would it make sense to add some ''Tests'' with bad code to verify that the sniffs actually work ?
      143. [#356] Joomla CMS [#26451] Favicon disappears (elinw)

        Links is needed in JCache:: setWorkarounds in order to not preserve the favicon on caching

        See patch for older code here: http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26451

      144. [#353] Fixed a typo in JApplication::login (realityking)

        Found a small but fatal typo while syncing stuff back to the CMS.

      145. [#355] Calling JResponse::setHeader with $replace = false more than once with th(chrisdavenport)

        Calling JResponse::setHeader with $replace = false more than once with the same name correctly adds multiple entries to the self::$headers array. But JResponse::sendHeaders would then always replace earlier headers of the same name because the 2nd argument to the PHP header function defaults to true, not false.

      146. [#349] Fix subpackage tag in JCache (elinw)

      147. [#344] Fixes wrong quotes in the js script in JHtmlBehavior::noframes. (eddieajau)

        This bug causes the CMS Administrator login page to appear blank.

      148. [#326] JGrid for dynamically generated HTML tables (Hackwar)

        The JGrid class in this pull request allows to generate valid HTML tables. The benefit over hard-coding the table in a layout is the possibility to run it through a plugin event and thus easily extend the table.

        A specific usage example: In the backend user list view, we generate a JGrid table object and then fill it with all the current columns and rows. Now we send that table object (together with the used data) through a plugin event. A shopping cart plugin now adds a column that displays if these users have open invoices, which is added before the "Last Visit Date" column. Another plugin takes the current "Name" column and changes the content for each user to display some more statistics when you hover over the name. Last but not least, when finally in the layout, you only do a echo $table->render(); and have a valid HTML table with properly indented markup.

        A few remarks to the implementation: The class does not escape or check the data for cells or attributes. This is done on purpose, since the developer should be able to use all sorts of mark-up and not have his code changed by the class. Basically, the class is only supposed to delay the rendering of the table and not interfer with the mark-up any further.

        The indentation of the generated table HTML is also not perfect. The moment a developer introduces line-breaks in his table content, the indentation is broken, but in general it should make reading the generated code a little bit easier. I also used it without the indentation and line breaks, but that became pretty much unreadable, which is why not all strings are done with single quotes, but for the indentation and line breaks with double quotes.

        After the last pull request, Andrew Eddie told me that I maybe should add support for chaining to the class. This is done in this revision. I also thought about breaking this up into smaller classes, like on a row or even cell base, but that seems to just overcomplicate stuff. So I intentionally stuck with this single monolithic class. I'm not entirely happy with the setting-object-to-a-current-row solution, but it was necessary for the chaining and it requires less code than the previous approach.

        Last but not least the class name. We are already using JTable and I didn't want to call it JHTMLTable, since it would then interfer with the JHTML class namespace. Who knows, maybe we want to have a JHTMLTable class in the future that generates some table content. So in the end, JGrid seemed to be the best compromise and its a reference to the Grid elements of Visual-C or Visual Basic.

        Here is a small example how it can be used in the user manager. This is a copy from the header of the table from the backend users view of com_users in 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] Add scaffolding for checkboxes test. (elinw)

        Replacing the messed up one

      150. [#341] Fixed uninitialized variable in JHtmlBehavior::multiselect (WebMechanic)

      151. [#338] Fixes to test framework and additions to JSession mock (eddieajau)

        Fixed up a naming problem in the variable that is storing the factory state.

        Added the ability to pass an array of options when creating the mock JSession object to make it easier for tests to tune the returned results. Currently supports modifying the session id and the id, name and username of the user object returned by $session->get('user').

      152. [#330] Convert queries to use JDatabaseQuery (mbabker)

        The document, form, html, installer, and user libraries have had most of their queries converted to be built with JDatabaseQuery. I think there are one or two left that need to be done now due to their advanced nature. Also, a couple of JExceptions have been changed to Exception.

      153. [#332] Adding a check for "getHeadData" in JCache (Bakual)

        Added a check to the Cache for the method "getHeadData" to prevent issue #327 when JDocumentRaw is loaded where the method doesn't exist.

      154. [#264] Joomla CMS [#25676] Suggestion for improved error handling for libraries/joomla/installer/adapters/component.php (jmcameron)

        Improves error reporting if there is any problem building the admin menus when installing a component.

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

      155. [#321] Coding standards: Various little fixes (elkuku)

        This adds two new sniffs to prevent the following errors:

        class Foo { public static function bar() { /* * Usage of "$this" in static methods will cause runtime errors * Classes_StaticThisUsageSniff */ echo $this->baz; /* * Space found before semicolon; expected "'foo';" but found "'foo' ;" * WhiteSpace_SemicolonSpacingSniff */ echo 'foo' ; } }
      156. [#318] CodeStyle: Remove some superfluous white space (elkuku)

        Checks that. * No whitespace proceeds the first content of the file. * No whitespace resides after content on any line. * There are not two or more empty lines in functions and classes. * There is a exactly one empty line after the last content of the file.

      157. [#315] Fixes wrong URLs in changelog generator (elkuku)

        Changes the URLs in the generated changelog e.g.: https://api.github.com/repos/joomla/joomla-platform/issues/100 to https://github.com/joomla/joomla-platform/issues/100

        And for the user: https://api.github.com/users/elkuku to https://github.com/elkuku

        The last one is 'hard coded' as the response does not provide a "good" URL.

        I discovered this while playing around with git pages and docbook build tools. This is the result => http://elkuku.github.com/joomla-platform/ <= pls Klick ! Feel free ;)

      158. [#317] Fix use of a deprectaed method in an unit test. (realityking)

      159. [#313] Test Coverage Improvements (mbabker)

        Another round of slight improvements on the test coverage. Mainly poking at methods that had one or two lines not covered and a couple methods had no test at all.

      160. [#311] Fix use of a deprecated method in JLog (realityking)

        Fixes use of deprecated JRegistry::getValue in the JLog class.

      161. [#306] Removing unnecessary empty braces when instancing classes, CodeSniffer standard (elkuku)

      162. [#309] CSS optimizations (realityking)

      163. [#305] Improve Test Coverage (mbabker)

        The test coverage should be improved slightly with these additions. Either methods or test cases have been added to try and cover cases in the code where existing tests missed a couple lines in a function.

      164. [#239] Behavior (realityking)

        A little bit more flexibility for developers.

      165. [#302] Adjustments to JCli::fetchConfigurationData (LouisLandry)

        Allow CLI apps to better handle default situations and not explicitly require JPATH_BASE to be defined.

      166. [#303] Fixes a bug in JFactory::getDate caused by serialisation of the cached JDate object.(eddieajau)

        Converted the internal storage of the date from a static function variable to a static class variable, and then return a clone in getDate to work around problems caused by serialising and unserialising the JDate object with embedded DateTimeZone objects (they are never restored properly).

        Also added the ability to save, override and restore the date property of JFactory in the Joomla test harnesses.

      167. [#273] Remove a MySQL 4 workaround. (realityking)

      168. [#294] Joomla CMS [#26694] Catchable fatal error: Object of class DateTimeZone could not be converted to string (eddieajau)

        Fixes error in JFactory::getDate where timezone is passed as a DateTimeZone.

        Restores backward compatibility of JFactory::getDate to Joomla 1.5 in that is caches the date for a given time.

        Adds unit test for JFactory::getDate.

        Adds addition test case for JDate constructor where timezone is passed as a DateTimeZone object.

        Adds universal JLanguage mock to Joomla test harnesses.

      169. [#226] Various little fixes. (realityking)

      170. [#298] Fixes bug in multi-line if indent rule; fix more check style warnings. (eddieajau)

        Fixes the error: Multi-line IF statement not indented correctly; expected 6 spaces but found 4 in multi-line conditional statements. It was adding 4 spaces instead of 1 tab.

        Fixes additional check-style warnings.

      171. [#295] Adds examples for three CLI applications (eddieajau)

        Adds three CLI application examples:

        1. A simple hello world application.
        2. An application that shows you how command line arguments are accessed.
        3. An application that shows you how to use a configuration.php file.
      172. [#297] Fix infinite loop when there is no error page (elinw)

      173. [#296] Adds headers argument to JHttp get, head and post, and some tests for JHttp.(eddieajau)

        This pull adds an addition $headers argument to JHttp's get, head and post methods so you can define additional headers for each request. It also adds some tests for the JHttp class.

      174. [#285] Fixes check style warnings and errors. (eddieajau)

      175. [#283] Convert JLoader::discover to use DirectoryIterator and add recursive option(eddieajau)

        Converts JLoader::discover to use PHP's DirectoryIterator or RecursiveDirectoryIterator.

        Adds a fourth argument to JLoader::discover to allow for recursion through child folders.

        Improves code coverage of unit tests.

        Fix naming of protected class properties per the style guide.

      176. [#292] Fixes legacy use of JXmlElement::getAttribute. (eddieajau)

      177. [#289] Make the PhpUnit configuration more closely match the platform file struc (elinw)

        Make the PhpUnit configuration more closely match the platform file structure.

      178. [#280] Fixes code styling. (elinw)

        Fix a number of codestyle issues.

      179. [#242] JHtmlBatch tweak and unit tests (mbabker)

        In this pull request, the $published param is removed from JHtmlBatch's item method as it was implemented incorrectly (using published versus category.options expected filter.publish) and was inconsistent with other uses of category.options in that this was the only time a filter for publishing was implemented. Additionally, basic unit tests for the class' methods have been added.

      180. [#282] Fix pcntl_signal errors when trying to set a signal that is not defined (dusto)

        Cancelled last pull request as it was against the master branch.

        This checks to make sure a signal doesn't equal 0 which causes pcntl_signal to throw an error.

      181. [#258] Adds Phing build file and XSL stylesheets for basic XHTML output of manuals.(eddieajau)

        Fixes validation problems in docbook files. Updates changelog. Adds more material to the PHP coding standards chapter.

        Use phing in the /docs/ folder to build the manuals (requires xsltproc on the command line).

      182. [#277] Fixes bad default value for the offset in JString::strrpos; more options for JHtmlTruncate. (eddieajau)

        Fixes a platform dependent error (utf8_strrpos expects parameter 3 to be long) caused by the offset of JString::strrpos having a default of false instead of integer zero.

        Also adds options to JHtmlString::truncate for allowing a word to be split at the length marker, and also to optionally strip out all HTML tags.

      183. [#263] Fixes code style issues. (elinw)

        Doc block work mainly in html/parameter

      184. [#266] Fixes typographical errors in docbook files. (elinw)

      185. [#271] Fixes code style issues. (elinw)

        Continued work on cleaning up doc blocs.

      186. [#262] Adds a JString::increment method and fixes bugs in JHtmlString::truncate. (eddieajau)

        Adds a JString::increment method to allow for easier incrementing of title/label strings such as "Title (2)" that are used in copying routines within an application.

        This method can be used to replace duplicate code in the CMS: CategoryModelCategory, MenusModelItem, ModulesModelMouldes and TemplatesModelStyle.

        Updates JModelAdmin to use the new method in generateNewTitle.

        Code coverage and code cleaning also included.

        Fixes bugs in JHtmlString::truncate where tags are not being properly closed.

        Adds unit tests for JHtmlString.

      187. [#272] Fixes DocBlocks in JTree and JParameter elements. (elinw)

      188. [#257] Adds JArrayHelper::pivot, improves JArrayHelper::sortObjects and provides full code coverage. (eddieajau)

        Alphabetised methods in JArrayHelperTest and adds test for arrayUnique method.

        Refactored unreachable code in _fromObject (arrays cannot be processed without the recurse argument being true. Added test case to verify).

        Changed testSortObjects to do most of the tests on a mac (ignoring only those that cause problems).

        Refactors sortObjects method to use internal static variables for sort properties, instead of some arbitrary [bad practice] global variable.

        Added JArrayHelper::pivot which allows you to create pure reverse lookups on an array of scalar, array or object elements, or lookups based on collections of common values or the designated array/object key.

      189. [#232] Joomla CMS [#25957] wrong behaviour of libraries/joomla/application/module/JModuleHelper:moduleCache() (elinw)

        Based on code proposed here: http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=25957 This issue has been in the tracker since May.

      190. [#260] Joomla CMS [#26612] Contacts Component sets Reply-To incorrectly in 1.7(infograf768)

        Fixes platform issues related to http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26612

      191. [#229] Joomla CMS [#25962] APC lock method seems to be returning the wrong thing (elinw)

        Fixes incorrect return value in docblocks.

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

      192. [#214] Adds universal mocks for testing and JDate::getInstance. (eddieajau)

        Added support for getting universal mock objects in JoomlaTestCase providing getters for JApplication, JConfig, JDatabase and JSession mocks.

        Converted JDatabaseQuery test to use the universal database mock.

        Improved setup and teardown of rules field test in JForm.

        Added tests for JDate (tests involving language are incomplete because of tight coupling to the CMS).

        Added static getInstance method to JDate as an alias for new JDate.

      193. [#255] Added JLog dependency to JError and JException (elinw)

        Add JLog for JError and JException since both are deprecated and deprecation logging was causing an infinite loop.

      194. [#256] Fixes login and module display issues in the CMS (eddieajau)

        Using database magic calls (qn and q) causes problems in the session database class, so these have been replaced with the fully qualified names. A small glitch in the module display was fixed. JAuthentication::authenticate was still being defined as static which caused problems with the plugins.

      195. [#254] Fixes comments in sniff and docblocks in JError (elinw)

      196. [#252] Turn JAuthentication back from static class and updated tests accordingly (pasamio)

        This fixes an issue with syncing the CMS where the CMS breaks because the plugins aren't loaded properly. This restores the pre-11.2 behaviour of not using a static class. Also a minor update to fix spaces used instead of tabs in the test.

      197. [#247] Check if module properly is set (elinw)

        In testing the JBs found a regression in that in getModule the module helper is now not setting $module->user to 0 for all modules any more. I did some digging and this seems to be a legacy property from 1.0 and seemed to possible check if you were a super user for menu modules. As far as I can tell it has no use at all in the current CMS. (Looking at the 1.0 module code explains a lot about some other parts of the module helper.)

      198. [#248] Added a command line application to automatically generate the changelog from closed pull requests. (eddieajau)

      199. [#236] Add a unit test for JFormRuleColor and fix the rule. (realityking)

      200. [#209] Updated changelog (nikosdion)

        Updated change log with the proposed change, as per Andrew's request at https://github.com/joomla/joomla-platform/pull/201#issuecomment-1776347

      201. [#222] Fixing checkstyle errors for JPagination. (LouisLandry)

      202. [#221] Fixing up some checkstyle issues. (LouisLandry)

      203. [#220] Fixed missing J prefix when registering JDatabaseException. (eddieajau)

      204. [#212] Fix login routine to display error message generated by authentication pl (roland-d)

        Fix login routine to display error message generated by authentication plugin.

      205. [#219] Merge with CMS trunk change. (LouisLandry)

        Closes #197.

        and

        Closes #172.

      206. [#218] Fix up specification of abstract JDatabase::getTableColumns. (eddieajau)

      207. [#215] Description for pull request 212 (roland-d)

      208. [#213] Fix annoying typo. (elinw)

      209. [#211] CodeSniffer Cleanup on JForm library (mbabker)

        Used the CodeSniffer to do a cleanup on the JForm library. With these changes, no further messages appear in the report.

      210. [#208] Changing access to JDatabase::replacePrefix() back to public (elkuku)

        As suggested on Gooogle groups and reported on the CMS Tracker #26596 and #26617

      211. [#201] Fixed a typo in JHttp (stream_set_timeout vs stream_settimeout) as it cau (nikosdion)

        Fixed a typo in JHttp (stream_set_timeout vs stream_settimeout) as it caused a fatal error when using the class. Hopefully, this time I got the pull request against the correct branch.

      212. [#207] Docblocks (elinw)

      213. [#205] Added missing jimport (ianmacl)

        Let's try this again. sigh

      214. [#204] Code style work (elinw)

        Easy wins

      215. [#193] Call to a member function qn() on a non-object (jonnsl)

      216. [#195] More doc block work (elinw)

        Code style

      217. [#203] Fixed function name mentioned in deprecated warning. (jlleblanc)

        Deprecated JDatabase::loadResultArray() logged a warning with the incorrect replacement function name. This patch changes it from getColumn() to loadColumn().

      218. [#191] Namespace more of Joomla's JavaScript functions and deprecate the old one(realityking)

        Namespace more of Joomla's JavaScript functions and deprecate the old ones.

      219. [#198] Various fixes (realityking)

        Again a couple of smaller fixes. (Take 2)

      220. [#194] Adding test execution instructions (ianmacl)

        Basic instructions on running phpunit and phpcs.

      221. [#192] Mising @since tags (elinw)

      222. [#189] Sync changes to the media folder from Joomla 1.7. (realityking)

        I made this against staging just to be sure, but for the future should we also make the pull requests against staging when no PHP code is involved?

      223. [#188] Various little fixes. (realityking)

      224. [#184] Code cleaning. (LouisLandry)

      225. [#182] Code cleaning (eddieajau)

        Fixing up the HTML package.

      226. [#180] Allow removal of admin menu entries (rvsjoen)

        This will allow developers to remove the backend entry in the components menu using for example the postflight() hook in the installer without throwing errors about missing menu entries when the component is uninstalled.

      227. [#179] Added String package, updated changelog (robschley)

        Moved JString from Utilites package to String package. Added JStringNormalize. Removed old CHANGELOG.

      228. [#178] Code cleaning. (eddieajau)

      229. [#174] Graceful return when update manifest cannot be parsed (rvsjoen)

        Instead of just dying when the update manifest cannot be parsed, give a warning and move on.

      230. [#173] Test (elinw)

        I noticed that the basic test to make sure rules load didn't have the newer rules.

      231. [#176] Database package cleanup (robschley)

        Renamed DatabaseException to JDatabaseException Fixed several instances of database exceptions being throw without error messages or codes.

      232. [#170] Docblocks Toolbar (elinw)

      233. [#168] Code cleaning. (eddieajau)

      234. [#166] Code cleaning. (eddieajau)

      235. [#165] Docblocks (elinw)

      236. [#167] Logging (elinw)

        Fix the problem that was making a test fail

      237. [#113] Logging (elinw)

        More work on deprecation logging

      238. [#163] Code cleaning; reduction of duplicate code in Database package. (eddieajau)

      239. [#162] Added changelog items for platform version 11.2. (eddieajau)

      240. [#157] Wrong access check (elinw)

        http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=26399 Fix access, thanks Smokerman Nikola.

      241. [#159] Code cleaning and code reduction (eddieajau)

        Code cleaning in Database package. Dupe code reduction by extending JDatabaseExporterMySqli from JDatabaseExporterMySql.

      242. [#154] Fix wrong subpackage tag (rvsjoen)

        This just fixes a @subpackage tag which is wrong

      243. [#147] Implement a color field for JForm. (realityking)

        This uses the native color picker in Opera 11 and falls back to MooRainbow in all other browsers.

        Also adds the corresponding JFormRule for validation.

      244. [#152] Added formatting standard for Eclipse PDT3 and the formatter plugin. (eddieajau)

      245. [#151] Minor tweak to build file. (LouisLandry)

      246. [#150] Modifications to the code sniffer and format rules -- and some code cleaning.(LouisLandry)

      247. [#149] Initial documentation and version 11.2 changelog (eddieajau)

        Adds a documentation sections to the tree with two books in Docbook format (which can be ultimately used to push to ePub, PDF and a variety of other formats). First is the platform manual which, at the moment, only holds the changelog appendix (up to date for version 11.2, version 11.1 needs a lot of work). With this appendix added, other developers doing pull requests can also make synchronous additions to at least the changelog (usually the explanation they put in the pull request, like this one) or notes about the feature changes in the body of the manual (when that is fleshed out more).

        The other book is the coding standards manual work in progress from other material that several people have been working on.

      248. [#145] Docblock fix (pasamio)

        Noticed a formatting issue, not sure what the return should be set to and fixed the incorrectly marked authorise function from 11.1 to 11.2

      249. [#144] Get rid of characters (elinw)

Number of pull requests made by individual contributors:

    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

. Update: Fix typo