Joomla! Developer Network

Version 12.1 ("Louis Landry") of the Joomla Platform was tagged and released on 9 May 2012. It is the first release of the 12.x serie. In addition to numerous bug fixes, it also brings new features, the main ones: 

  • Simplified foundational classes for Model, View and Controller
  • Database iterator
  • PostgreSQL driver
  • New Crypt package
  • File patcher

The full list of commits is available here and the api doc here

Project size

  • Classes: 309 (270 in platform 11.4)
  • Methods: 2122 (2000 in platform 11.4)
  • Lines: 28540 (25970 in platform 11.4)
  • Comments: 56837 (62155 in platform 11.4)
  • Blank lines: 10472 (11877 in platform 11.4)

Summary of code quality

  • Check style: 142 warnings (199 in platform 11.4)
  • Duplicate code: 27 warnings (26 in platform 11.4)
  • Programming Mess Detector (PMD): 702 warnings (1002 in platform 11.4)
  • Test Coverage: 39.70% (41% in platform 11.4). The decrease is due to the move of some classes to the legacy folder.

New feature





Issue fixed


The following pull requests made by community contributors were merged:

  1. [#1186] Small improvements to JViewHtml (eddieajau)

    Added __toString to JViewHtml (proxies for the render method). Added chaining support to setLayout and setPaths in JViewHtml.

  2. [#1183] Remove deprecated methods in JLog + additional fixes (realityking)

    Most significant changes: -oldstatic is reintroduced as a module cache option -the support for legacy paths for plugins is removed

  3. [#1189] Added JDatabaseDriver::disconnect() to support disconnecting from the database cleanly. (robschley)

    This is useful when building applications with JApplicationDaemon because the database resource that gets copied after forking is shared between parent and child and if either of the processes close the connect, it is closed for both. With this, you can use the onFork event to disconnect and reconnect the database to get a new, unshared resource.

  4. [#1182] Code Cleanup (simonharrer)

    Removed unused variables and unused variable initializations.

  5. [#1181] Expanded mock method definitions for JApplicationWeb and added new mock for JApplicationBase. (eddieajau)

    Added all public methods to the mock JApplicationWeb. Added mock for testing specifically with a JApplicationBase object.

  6. [#1177] Correct some doc blocks (elinw)
  7. [#1176] Fixing defined syntax error - missing quotes (ianmacl)

    defined expects the constant name to be a string and not the evaluated value of the constant.

  8. [#1175] Fixing false logic in check for JTEST_HTTP_STUB (ianmacl)

    It is currently impossible to set this value using an environment variable because the logical or short circuits.

  9. [#1174] Changed PostgreSQL's getTableColumns. (gpongelli)

    Now returns object with "Default" property instead of "default", as MySQL and other driver does. Changed corresponding test.

    Added conversion between PostgreSQL's null to PHP's null value, default field containing "NULL::character varying" will be used as string otherwise.

  10. [#1173] Update docs on PHPUnit and CodeSniffer (mbabker)

    This updates the manual page on running PHPUnit and the CodeSniffer to:

    • Update the config value concerning the JHttpTransport tests
    • Add info about running phpunit and phpcs from build.xml using Ant
  11. [#1169] Set the CSS class for JForm field label (vietvh)

    This pull is intended to allow developer to set CSS class for form field's label. It can be useful for styling purpose.

    For example Twitter Bootstrap requires class="control-label" for form field label tag.

    Usage: add labelclass="your-css-class" in your form xml manifest

    <......description="" required="true" labelclass="control-label" />

  12. [#1171] Several small refactorings. (simonharrer)

    Several small refactorings. For more details, see the commit messages.

  13. [#1170] Clean up some code style issues (line length, doc blocks, comments). (elinw)
  14. [#1105] Show Media preview (benjaminpick)

    Show a preview of the currently chosen image when using the field "media".

  15. [#1165] Remove JText dependency on JStreamString for die Statement (AmyStephen)

    The only occurrence of JText in this class is to translate the die Statement. Doesn't seem worth a dependency.

  16. [#1043] Fixed conflict between JGrid and JHtmlGrid when autoloaded. (bembelimen)

    Steps to reproduce the error:

    1. load JGrid: jimport('joomla.html.grid');
    2. call a JHtmlGrid method: JHtml::_('', $i, $item->id)
    3. Now JHtml::_() calls "class_exists" for JHtmlGrid
    4. when not found, the Joomla! autoloader tries to find the path for the class JHtmlGrid.
    5. the autoloader convert the class JHtmlGrid to the path (libraries/joomla/)html/grid.php
    6. This file exists (of course) and will be loaded (again, see step 1), but unfortunately this is the wrong file
    7. => Fatal error: Cannot redeclare class JGrid in html\grid.php on line 22


    The autoloader shouldn't be called in JHtml::_() and JHtml should handle the loading by itself

  17. [#1152] Move more CMS specific classes to legacy. (realityking)

    Move JFormFieldContentLanguage, JHtmlCategory, JHtmlContentLanguage and JHtmlMenu to legacy.

  18. [#1140] Add type hinting to JFormRule::test(). Fix an E_STRICT error in the process. (realityking)
  19. [#1163] Fixed JDatabaseQueryPreparable to support binding output parameters (robschley)

    When interacting with stored procedures that use output parameters, JDatabaseQueryPreparable would not update the original passed in parameter as expected with the values output from the stored procedure. To solve this, the value is passed by reference so that when it is bound to the query, it can be updated properly with the new value after query execution.

  20. [#1162] Removed JString usage in JStringNormalise (eddieajau)

    Using JString instead of normal string methods causes a significant performance hit. Removing the JString wrapper fixes this problem. As this class was designed for programatic values, this should not cause much of an issue.

    Also deprecate JString::splitCamelCase and merged it with JStringNormalise::fromCamelCase.

  21. [#1161] Fix up some more typos in JHttp documentation. (eddieajau)

    Also increment manual versions to 12.1.

  22. [#1120] Simplified foundational classes for Model, View and Controller. (LouisLandry)

    This pull request introduces a new format for the model-view-controller paradigm. Principly, the classesJModelJView and JController are now interfaces and the base abstract classes are nowJModelBaseJViewBase and JControllerBase respectively. In additional, all classes have been simplified to remove a lot of coupling with the Joomla CMS that is unnecessary for standalone Joomla Platform applications.

    One of the guiding principles of this change was to make the base implementations as non-prescriptive as possible. The Model, View and Controller classes simply wire up dependencies and get out of the developers way so that he or she can build things the way they make sense for the given application.


    All the API for controllers, models and views has moved from the Application package into separate Controller, Model and View packages respectively. Much of the API previously devoted to adding include paths for each of the classes has been removed because of improvements in the auto-loader or by registering or discovering classes explicitly using JLoader.


    Controllers, by default, only support one executable task per class via the execute method. This differs from the legacy JController class which mapped tasks to methods in a single class. Messages and redirection are not always required so have been dropped in this base class. They can be provided in a downstream class to suit individual applications. Likewise, methods to create models and views have been dropped in favor of using application or package factory classes.

    While it is easy to build a JControllerTasker (or in the case of the CMS a JControllerCMS) class that encompasses logic to support task mapping to controller methods, redirection, etc that has been removed, we strongly recommend considering using one controller to one action moving forward. The newJControllerBase class is very lightweight, and having one controller mapping to one task gives several benefits. One such benefit is the easy use of the HMVC pattern or chaining tasks. Another is the ability to serialize a controller with it's input and stored for later execution asynchronously. Either way, this implementation doesn't prescribe how you build and use controllers beyond an incredibly simple interface, and we believe that's a good thing.


    Models have been greatly simplified in comparison to their legacy counterpart. The base model is nothing more than a class to hold state. All database support methods have been dropped except for database object support in JModelDatabase.


    Views have also been greatly simplified. Views are now injected with a single model and a controller. Magic get methods have been dropped in favor of using the model directly. Similarly, assignment methods have also been dropped in favor of setting class properties explicitly. The JViewHtml class still implements layout support albeit in a simplified manner.

  23. [#1131] Various fixes related to PostgreSQL. (gpongelli)

    Various fixes reported from this pull request that correct errors coming with PostgreSQL database. Added insertObject's test.

    Eng. Gabriele Pongelli.

  24. [#1159] JLog Exception, Class Name capitalization, and DBO (AmyStephen)

    Redid the PR that @LouisLandry reviewed with a fresh copy of core. Did not include the logic error issue. I doubt it's a problem and I need to study it more closely before testing again. I will add a new test for the single priority, single category logger when I get this review done.

    The other changes are in this PR and all tests pass - - Options to pass in DBO object - For echo log, change /n to br tag for better display (no wrapping) - Change WC3 to Wc3 for consistent Class naming - Change FormattedText to Formattedtext for consistent Class names - Change SysLog to Syslog for consistent Class Naming - Move array into JLogger and remove from all child classes - Change LogException to PHP SPL Exceptions

    I also added the SQL change recommended by @realityking for the JDate/JDatabase object issue.

    Appreciate everyone's help and feedback. Please let me know if changes are needed.

  25. [#1160] Wire up HTTP documentation; fix up formatting problems in MVC documentation(eddieajau)
  26. [#1158] Move remaining code from JDatabase to JDatabaseDriver. (realityking)
  27. [#1143] grid.php calls isCheckedOut statically (blueboar2)

    I use Joomla 2.5.1, and my request is about file libraries/joomla/database/table.php. Now (in latest trunk joomla-platform - it is in libraries/joomla/table/table.php). But neverthless, request is the same. There is a function isCheckedOut in this file. I worked on my site and receive many such messages

    "Strict Standards: Non-static method JTable::isCheckedOut() should not be called statically in /srv/www/libraries/joomla/html/html/grid.php on line 198"

    As discussed here by AmyStephen, i change the code

  28. [#1151] Allow media field to be disabled fully (mbabker)

    In either the form XML or in a model's getForm method (for those extending JModelForm), it is possible to set the disabled attribute on form fields. In trying to use this for some code I'm working on, I've found that in its current form, the media field cannot truly be disabled or read-only. In using $form->setFieldAttribute('logo', 'disabled', 'true'); in my model's getForm method, the Select and Clear buttons are still active and usable. So, for this field to be truly disabled, I've added a check for the disabled element prior to rendering the two buttons.

    Use Case: I'm using the same model in the back end to load a form with one of two layouts: the regular edit layout, and a "details" layout which loads the form data in basically a read-only state and adds a little more data to be viewed by the user.

  29. [#1095] Avoid division by zero (for issue #708) (Buddhima)

    File: libraries/joomla/image/image.php Method: prepareDimensions()

    Issue: If zero is given for the one of the arguments $height or $width, following section will produce an error. Solution: Treat 3 instances where $height=0,$width=0 and both not equals zero

    Signed-off-by: Buddhima Wijeweera

  30. [#1150] Fix up JForm docblocks (elinw)
  31. [#1139] Make more classes autoloadable. (realityking)

    This pull request makes JDate, JDispatcher and JSimpleCrypt autoloadable.

    -JDate is moved to it's own package -JDispatcher is renamed to JEventDispatcher -JSimpleCrypt is moved to the legacy folder (JCrypt should be used now)

    This also removed a couple of import() calls that aren't needed.

  32. [#1145] Check for install method versus discover_install (mbabker)

    In a rather odd twist, in the discover_install method of the component install adapter, we check if there is a discover_install method in the script file (which isn't documented anywhere as actually needed), which presumably causes this check to always fail. Should it succeed, the script file's install method is the one actually triggered.

    This is one of two potential solutions to the problem. I've changed the check so that we check if the install method exists. The other option, which would need documenting, would be to use a discover_install method in the script files.

    On an unrelated note, the component adapter is the only one which actually triggers the script file at discover_install, though it is supported in many other adapters, so once this is sorted out, the next goal is to get that support into the other adapters.

  33. [#1069] Fix JForm::load() not replacing form field in same location (Issue #129) (aaronschmitz)

    This code causes JForm to replace fields in place when a new definition is loaded to replace the old definition. Duplicate fields will now remain in their original location rather than being moved to the end of the document.

  34. [#1141] Deprecate JXMLElement (realityking)

    JXMLElement isn't all that useful anymore. It only has two methods, one is just an alias to an internal method of the parent class. The other can be replaced by a method of the parent class in most cases, in case people need to pretty print they can either move the method to their own code or use DOMDocument to do it for them.

  35. [#1146] Deal with some occurrences of JRequest (realityking)

    Not quite finished, but I wanted to get out what I had.

    After this is merged only the following classes would still use JRequest:

    JClientHelper JSession JControllerAdmin JControllerForm JModuleHelper

    Also the tests for JDocumentRendererAtom and JDocumentRendererRSS also still use JRequest.

  36. [#1149] Fix a docblock (elkuku)
  37. [#1147] Corrected JDatabaseDriverPostgresql object name from JDatabasePostgresql(AmyStephen)
  38. [#1144] Fix failing unit tests + legacy clean up (realityking)
  39. [#1135] Fix JLanguageStemmerPorteren. (realityking)

    I guess I was a bit overzealous when I fixed the code style to include JLanguageStemmer. The comments actually tell you not to do what I did...

  40. [#977] Android Tablet Detection (elinw)

    This pull request adds detection of most Android tablets to the platform detection in JApplicationWebClient. It is highly useful to detect mobile devices that are larger than smart phones because often it is preferable to render the desktop version of a site rather than the mobile version.

    This makes the detection for Android more like that available for iOS devices, which already differentiate between iPhone and iPad for example.

    Detection for Android tablets is more complex than for iOS since there are many manufacturers and they each create their own UA strings. In addition, most detection methods for Android tablets work only when the default WebKit browser is used, not if users have installed a different browser. This code attempts to overcome some of these issues although detection will still not be perfect.

    The basic decision rules are that, given that Android is in the UA string:

    • Following Google recommendations strings that do not include Mobile are assumed to be from tablets (
    • Android 3.x (Honeycomb) is only used for tablets
    • Some alternative browsers (e.g. Opera, Fennec) add or allow users to add Tablet to the UA string.
    • Kindle Fire's UA string when it is in non Silk/Android mode includes Mobile contrary to the Google recommendation, but it will always include Silk. Since among tablets it is fairly common it is worth including it as a specific device.

    This retains the general approach of this class of keeping the methods lightweight with developers who need more detailed detection (based on screen size for example) able to extend it.

  41. [#1126] Fix and improve the docblocks in the legacy folder. (realityking)

    Besides changing the subpackage tags to match the folders the biggest change is to undeprecated the protected class members that start with an underscore.

    Those hints - without offering a real alternative - only confuse developers, I don't think we'll want to do a change like this in the legacy folder anyways since those classes are eventually gonna be removed or moved to the CMS.

  42. [#1132] Fixed id of the language inputbox in the label tag (Bakual)

    The label for the language selector had a wrong "for" attribut, thus clicking on the label didn't select the inputbox.

  43. [#1133] Add JDatabase::splitSql() for B/C (mbabker)

    The splitSql method is a public function, and as such, can be called upon directly from JDatabase. This adds a proxy method to JDatabaseDriver, similar to the other static methods remaining in JDatabase.

  44. [#1123] Consider iPad and iPod in two separate cases (for issue #1122) (Buddhima)

    File: joomla-platform / libraries / joomla / application / web / client.php Method: detectPlatform()

    For issue #1122 : Mobile detection is wrong

    Fixed by: adding 2 separate else if clauses to consider iPad and iPod seperately

    Signed-off-by: Buddhima Wijeweera This email address is being protected from spambots. You need JavaScript enabled to view it.

  45. [#1052] Remove dependency on several classes from the database package. (realityking)

    Classes the dependency on is removed: JError JObject JFolder JTable

    The JTable one may be a bit controversial since it meant I had to remove JDatabaseFactory::getTable() but considering it's just a proxy for JTable::getInstance() I don't see it as being worth adding an additional dependency - especially considering that the table package has it's own very large set of dependencies.

    I also made JDatabaseException a subclass of RuntimeException. This way catching RuntimeExceptions (which are now used in the database package) will also catch JDatabaseExceptions.

  46. [#1127] Remove JFormFieldTemplateStyle. (realityking)

    For some reason unknown to me the CMS already moved JFormFieldTemplateStyle to the CMS libraries. Since that field isn't useful outside of the CMS it should be removed from the platform.

  47. [#1128] JImage PHP 5.2 JPEG compatibility - tracker #28364 (n3t)

    JImage fails to detect JPEG support in PHP 5.2

  48. [#1108] Rename protected members in JUpdater, JUpdateadapter and extending classes (elkuku)
  49. [#1111] Rename protected members in JStream and JStreamString (elkuku)
  50. [#1112] Fix a parse error from #1110 (elkuku)
  51. [#1110] The dl() function has been removed from most PHP SAPI's in 5.3. (realityking)

    The @'s masked the error but apparently it's a problem on some hosts.

  52. [#1109] Rename a protected (and unused) member in JSessionStorageDatabase (elkuku)

    This also seems not to be used anywhere..

  53. [#1107] Rename protected members in JInstaller (elkuku)
  54. [#1106] Get Identity (robschley)

    Added JApplicationBase::getIdentity() to retrieve the user object that the application now supports loading. Also added mock support for this method to the mock builders.

  55. [#1103] DRY out JHtml::tooltip (benjaminpick)

    Not sure if you like this code style - it would be less repitition, but maybe more complex to read.

  56. [#1104] Continuation of legacy support. (LouisLandry)

    With this pull request several more CMS specific classes have been moved to the legacy tree. Among them are JComponentHelperJModuleHelperJController*JModel* and JView. All references to the deprecated JException class have been removed from non-legacy libraries. All references to the deprecated JError class have either been removed or are adjusted to be temporary until the class is finally removed from the legacy tree.

    Unit Tests

    The unit test runner has also been updated to support independent running of the legacy test suite. To run the legacy suite you would use:

    phpunit -c legacy.xml.dist or if you have a custom file:

    phpunit -c legacy.xml To run the main unit and database suites you would still simply use:

    phpunit Other changes to the unit test runner includes a change in configuration to include all non-legacy Joomla Platform libraries in the code coverage report regardless of whether or not the files were naturally included during the test run. This will impact the reported code coverage numbers, but will reflect a more accurate account of how well our platform code is covered by tests.

  57. [#1101] JHttp: extending request methods (piotr-cz)

    For each request method added variable $timeout with fallback to class options. Added $useragent string that's being read from class options.

    See Issue #1027

  58. [#1091] Installer Package: db->error removal (AmyStephen)
  59. [#1073] Client Package: Change one return JError to Exception (AmyStephen)
  60. [#1086] Table Package: db error and Exception/JText changes (AmyStephen)

    I left JException in this PR since I am not certain what the plan is there and wanted to hear back

    We can go back through this and change JException to a PHP Exception even after this PR, if it's desired. More than likely, this will result in an API change since currently a failure is indicated by "false" not an exception. But, it's probably a good time to make that change with the 3.0 CMS release.

    This PR, however, is restricted to removing the $db error processing, getting rid of JText with Exception (and JException) calls, and any JError statments.

    Also - IMO, the tables 'package' belongs in the CMS, not the framework. Maybe the entire folder should be moved into legacy and left, as is?

  61. [#1087] Mail package: Exception and JError (AmyStephen)
  62. [#1090] Form Package: db->error, Exception/JText modifications (AmyStephen)
  63. [#1100] Log Package: remove DB Error statement (AmyStephen)

    Ran unit tests before and after this change without issue.

    Thought maybe we should try this again. I merged in most recent changes. Maybe it was related to that?

    Will close

  64. [#1075] CMS Separation: Check if CMS constants are defined (AmyStephen)

    For now, this would be helpful when using JURI outside of the CMS.

    (Later, passing in the application path will be helpful)

  65. [#1060] Rename protected members in JAuthentication (elkuku)
  66. [#1098] Set JInputFiles constructor (mbabker)

    So a while back on the CMS list, it was brought up that you can't use JInputFiles to pull from the $_FILESsuperglobal. According to Ian (, there should be a constructor similar to that in JInputCookie. Well, this finally adds that constructor.

  67. [#1079] Cache Package: return JError (AmyStephen)
  68. [#1096] Some small fixes to recent commits. (realityking)

    Also removes an outdated todo that recently came up in a CMS bug.

  69. [#1089] Plugin Package: Remove one ->getErrorMsg (AmyStephen)
  70. [#1092] Database Package: Exception JText (AmyStephen)
  71. [#1074] Crypt Package: Add Exception to Docblock (AmyStephen)
  72. [#1081] Document Package: Remove JText from Exceptions (AmyStephen)
  73. [#1082] Filesystem Package: JText removal for Exceptions (AmyStephen)
  74. [#1083] HTML Package: Exception, JError, ->getError (AmyStephen)
  75. [#1084] Session Package: Exceptions (AmyStephen)
  76. [#1085] User Package: ->error, Exceptions, JError (AmyStephen)
  77. [#1078] Fix unit tests broken in #1076. (realityking)
  78. [#1076] Event Package: Change JError return to Exception (AmyStephen)
  79. [#1070] Implementing database iterator (chdemko)

    Opening new pull request (#903): problem while rebasing

  80. [#1026] Bug fix for Issue #529 (dianaprajescu)

    JMail is ignoring name parameter on addAttachment.

  81. [#903] Implement Countable Database Iterators for iterating on queries (chdemko)

    This pull request implement Countable Database Iterators for all SQL engines. The use is:

    $dbo = JFactory::getDbo(); $iterator = $dbo->getIterator($dbo->getQuery(true)->select('*')->from('#__content')->execute()); foreach ($iterator as $row) { // Deal with $row } $count = count($iterator); 

    for results queries

  82. [#1055] Rename a public member in JBuffer (elkuku)

    This will also modify the corresponding unit test

  83. [#1065] Fix comment (elinw)
  84. [#1059] JText the database connectors in the form field (mbabker)

    This allows downstream applications to use a text string for the database options when using the Database Connection form field. For example, currently when installing the CMS, the option for SQL Server is displayed as "Sqlsrv". With this change, a language string SQLSRV="SQL Server" could be used instead to avoid the use of shorthand driver names. Of course, if an application decides they don't want to use this feature, then they won't need to with the way the language key is set up.

  85. [#1063] Rename protected members in JHtmlSelect (elkuku)
  86. [#1062] Minor doc changes for new Exceptions section (AmyStephen)
  87. [#1064] Fix up visibility of loadSession method in JApplicationWeb (eddieajau)

    Method should have been made public.

  88. [#1058] Rename a protected member in JDocumentXml (elkuku)
  89. [#1057] Add optional identity to JApplicationBase; make dependency injection more flexible in JApplicationWeb (eddieajau)

    Add optional "identity" has been added to JApplicationBase. This is in preparation for being able to support applications that act as web services, or connect with other web services that need to have some sort of identity (most probably a user but other cases are possible). The loadDispatcher method has been made public and a new loadIdentity method (coupled, for now, to JUser) has been added. If the application needs either of these dependancies, it simply calls the loader. Passing no argument loads a default object but dependency injection is allowed by passing an object to the method. If neither is called, then no dispatcher or identity support is assumed.

    The initialise method in JApplicationWeb has been deprecated in favour of making the loadDocument, loadLanguage and loadSession public which allows for better scaling for more optional dependancies in the future. The tri-state behaviour is the same as for the loaders in JApplicationBase. No call means the object is not supported, a call without argument loads a default object and a call with an argument injects the object into the application.

    All dependency loaders are chainable.

  90. [#1048] Joomla CMS [#27961] Template is not displayed in the Styles (backend) (realityking)


  91. [#1056] Rename a protected member in JInstallerLanguage (elkuku)
  92. [#1054] Rename protected members in JBrowser (elkuku)
  93. [#1053] Update MooTools to version 1.4.5. (realityking)

    Just two bug fixes (

    The CMS version 2.5.4 is going to ship with it too.

  94. [#1049] Rename protected members in JUri (elkuku)
  95. [#1045] Fix up DocBook problems; HTTP package docs; Changlog script; Custom JHttp headers headers (eddieajau)

    Fixed up some DocBook errors in both manuals. Added scaffolding and content for the HTTP package in the Developer Manual. Added instructions about bootstrapping the legacy platform in the Developer Manual. Upgraded changelog builder script. Added custom headers support to JHttp request methods (by adding "headers." to the options registry object passed into the JHttp constructor).

  96. [#1051] Added mock JCache class to test library. (eddieajau)
  97. [#1050] Fix a unit test warning introduced in #1028. (realityking)
  98. [#1028] Some small improvements to unit tests. (realityking)
  99. [#1046] Fix JFactory::getUser() broken in #1013. (realityking)

    Apparently it was simplified too much ;)

  100. [#1021] [#28210] onchange was called when reset twice (benjaminpick)

    Pull request against staging.

  101. [#1044] Rename protected members in JProfiler (elkuku)

    This might be another class that can be safely renamed to comply with the coding standards.

  102. [#996] Joomla CMS [#26564] JHTML List User an J1.6 (oc666)

    JHTML user list create duplicate values in the list See also:

  103. [#1002] Secruity fixes from Joomla 2.5.3. (realityking)

    Improvements to follow ;)

  104. [#1003] Remove a workaround for PHP 5.3.0 in JLanguage. (realityking)

    This raises the minimum requirement to 5.3.1.

    Even Ubuntut 8.0.4 (the oldest still supported LTS) has PHP 5.3.2 and Debian stable has PHP 5.3.3 so I see no harm in requiring 5.3.1.

  105. [#1017] Add JLanguageStemmer. Add unit tests for JLanguage. (realityking)

    This a straight port from the finder code currently shipped in the CMS. I cleaned it a bit up to match our code style and added the copyright notice for porter again.

    This pull request does not contain the snowball stemmer. I'm not sure snowball for PHP still works considering the last release was almost 4 years ago.

    The pull does contain unit tests for porter and the transliterate class.

    Unit tests and code style work fine on my local machine.

  106. [#1015] $path was not initialized. (Naouak)

    Avoiding a PHP notice.

  107. [#1042] Allow JFormFieldInteger to iterate backwards using a negative step. (aaronschmitz)

    This code will make fields such as <field type="integer" first="10" last="0" step="-1"... work as expected. In addition, this code prevents infinite loops that occur when for xml like <field type="integer" first="0" last="0" step="-1"...

    Fixes #983

  108. [#1039] Unit Testing Documentation update (AmyStephen)

    Edit testing instructions to reflect changes to SQLite and separating the true database tests.

  109. [#1041] Fix a PHP strict warning in JDate::setTimezone() (elkuku)

    This fixes a PHP strict warning, since PHP's DateTime::setTimezone() seems not using type hinting internally (tested on PHP 5.4.0) Sorry for the mess..

  110. [#1040] Update libraries/joomla/input/input.php (stevenloppe)

    Unless I am missing something very obvious this looks like a copy and paste error?

  111. [#1031] Rename JDate->_tz to JDate->tz (elkuku)

    This will rename a protected member of JDate to comply with the coding standards. It is an attempt to break up #637 into smaller pieces ;)

  112. [#1036] Add JTEST_HTTP_STUB to phpunit config (mbabker)

    Adds the JTEST_HTTP_STUB constant, used in JHttpTransportTest, to the phpunit.xml.dist file. Default path assumes the platform is checked out at your web root.

  113. [#1038] Fix Spelling Error (AmyStephen)
  114. [#1034] Fix tests broken due to #827 (mbabker)

    That pesky @mbabker character may have set the record for most unit tests broken with a single pull request. Now that pesky character is fixing said broken-ness.

  115. [#1033] Fix code style from #995. (realityking)

    This should allow jenkins to run again. I still think line 839 isn't correct, but that's better discussed in #995.

  116. [#827] Add tests for JTableLanguage (mbabker)

    This pull adds unit tests for JTableLanguage. The DDL is sync'd to the CMS #__languages table, so the pull tester will be broken since the sitename and ordering columns are added.

  117. [#1032] Fix extraneous exceptions (elkuku)

    I believe those are from the conversion from JError..

  118. [#677] Deprecating JNode and JTree and switching off code coverage (Hackwar)

    JNode and JTree are classes that are not usable. If someone ever extended these classes, he had to rewrite all methods. Thus deprecating it directly for 12.1.

    This is a new pull request, since I messed up the earlier one by merging the wrong stuff into the branch. The earlier request is #513.

  119. [#1029] Added coding standards for exception handling; fixed up "elseif" example. (eddieajau)
  120. [#995] Custom Calendar issue when read-only -new request (infograf768)


  121. [#1013] Simplify JFactory::getUser() (realityking)

    This was suggested by Vladimir Romanov

    Original report:

  122. [#1018] Updated database drivers to attempt to reconnect from database servers that have been disconnected. (robschley)

    This fixes an issue where the database server gets disconnected from the PHP connection resource. This can happen in two situations that I am aware of:

    • The database server is heavily loaded and drops a connection.
    • The resource was copied into a forked process which happens when forking JDaemon. If the child process closes the connection or finishes execution, the parent resource will be disconnected.

    To address these two issues, if a valid cursor is not returned when executing a query, the driver will check if the resource is still connected to the database. If the resource is disconnected, it will attempt to reconnect and execute the query again. If the reconnect fails or if the server still shows as connected, the normal exception will be thrown.

    For PDO drivers, this required a better implementation of the connected() method. I attempted to use PDO::getAttribute(ATTR_CONNECTION_STATUS) but that feature is not supported on Sqlite or Oracle, possibly others. To work around that, the connected() method will attempt to execute a simple database query. To prevent contamination of the driver state, the previous query information is backed up and then restored after the query is executed.

  123. [#1016] Fix minor error in the JError->JLog conversion. (realityking)
  124. [#1011] Fix checkstyle errors and warnings in staging branch. (eddieajau)
  125. [#1012] [#28210] onchange event does not fire at JFormFieldMedia (Regression) (benjaminpick)


  126. [#1010] JError to JLog (AmyStephen)

    Changes JError::raiseWarning and JError::raiseNotice to JLog calls.

  127. [#1004] To use HEAD method, CURL_NOBODY should be set to true (piotr-cz)

    To use HEAD method, CURL_NOBODY should be set to true. If it's not, curl is waiting for response body, which will never receive and script reaches max_execution_time. Setting CURLOPT_CUSTOMREQUEST makes sense only for methods other than GET or HEAD.

    Please refer to, CURLOPT_NOBODY and

  128. [#1005] When sending new requests to same URI, need to close connection first. (piotr-cz)

    After response is received, it's meta is set to 'eof', and cannot be reused anymore.


  129. [#1000] Special 1000th pull request. (realityking)

    To commemorate our 1000th pull request I thought I'd do something special, so here it is.

  130. [#999] Improve JHttpFactory based on Louis suggestions. (realityking)
  131. [#993] Docblock style. (elinw)
  132. [#994] Doc block style (elinw)
  133. [#992] Fix wrong paths in import.legacy.php and add another entry for a renamed class.(realityking)
  134. [#991] coding style (piotr-cz)

    Should we fix such small things or typos in comments?

  135. [#989] Proposed fix for CMS tracker issue 28156 (only one template position for titled module used) (vovtz)

    The first commit represents a code quality fix.

    The second is a proposed fix for two tracker issues (which are in fact each other's duplicates).

  136. [#988] Fixed some references to old mock builders. (robschley)
  137. [#984] PostgreSQL driver for Joomla! platform [clean version _ v3]. (gpongelli)

    This driver implements inherited function from JDatabaseDriver class and add some other useful function to be able to use Joomla! on PostgreSQL database. There is also a class that inherits from JDatabaseQuery to be able to create query object using PostgreSQL dialect. These two classes are tested by other two classes under "test" folder.

    PostgreSQL's added functions: - getAlterDbCharacterSet, set database encoding - getCreateDbQuery, returns a query string to create a database using $option array members - getRandom, get a random number - getStringPositionSQL, returns string's position inside another string - getTableSequences, returns an array of table's sequences information - releaseTransactionSavepoint, release given savepoint during transaction - showTables, lists all table in database - transactionSavepoint, creates transaction savepoint

    Overridden functions: - 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 database query added functions: - limit, a possible replace for limit in setQuery - offset, a possible replace for limit in setQuery - forShare, lock table/row during SELECT - forUpdate, lock table/row during SELECT - getInsertTable, used in "indertid()" to retrieve last INSERT INTO's table name - noWait, no wait a locked table - returning, an INSERT INTO optional clause to returns last insert id

    Added also Postgresql's exporter and importer classes and their test classes.

  138. [#986] JSession storage database adapter doesn't work. (LouisLandry)

    Fixing up the database session handler to simply use try/catch instead of explicit checks for database connectivity. This handles the new lazy-connecting methodology of JDatabaseDriver.

  139. [#980] Corrected phone nubmer cleanup regex (danyaPostfactum)

    Corrected regex in $cleanvalue = preg_replace('/[+. -()]/', '', $value) to fix problem with phone numbers, containing "-" symbol

  140. [#973] Convert thrown exception messages to plain text in HTML and Form packages (eddieajau)

    Removed the use of JText in hard thrown exception messages that are runtime errors (something the developer needs to fix).

  141. [#982] Add type hinting and correct the method docblock (elkuku)

    This adds type hinting to JDate::setTimeZone() and corrects the return value (ref) specified in the methods docblock.

  142. [#979] More magic (elkuku)

    Provide auto complete and documentation for protected class members accessed via the magic__get() method. Following #978

  143. [#978] Magic (elkuku)

    Provide auto complete and documentation for protected class members accessed via the magic__get() method in modern IDEs.

    This also resolves the "issue" @AmyStephen reported in #475 ;)

  144. [#974] JModuleHelper calls JRequest::_cleanVar which is protected. (AmyStephen)

    Remove the protected method, instead performing the filtering in place.

  145. [#975] Small comment edits. (elinw)
  146. [#972] Refactor test inspectors for JApplicationCli and JApplicationWeb (eddieajau)

    Also fixes a bug in the JView tests.

  147. [#971] Revamping Unit Tests (LouisLandry)

    One of of my frustrations with the test suite for a while has been the necessity to spend time setting up an environment to run the simplest of tests. Now that we have an SQLite database driver I thought it would be great to have the base test suite not require any setup or configuration to run. You simply clone the repository and call phpunit to have the suite run.

    To achieve this a few things had to be done:

    • tests/ddl.sql schema file for SQLite was created
    • tests/includes/JoomlaDatabaseTestCase.php was modified to utilize an SQLite memory database.
    • To execute the URL to the JHttp test stub file must be set either as a PHP constantJTEST_HTTP_STUB or as an operating system environment variable JTEST_HTTP_STUB, otherwise those tests will be skipped.
    • tests/config.dist.php was removed since a tests configuration isn't necessary to run the default tests.

    Testing database drivers.

    With these changes database drivers have been broken out into their own path:tests/suites/database where tests can be written independent of the main suite. If you look in the phpunit.xml.dist file you will find a section commented out with PHP constant definitions in it. To enable testing of specific drivers you simply add the relevant constant with a DSN string for the database instance you want the tests to run against. The commented out examples are the same default configuration that has been present.

    Nice side effects.

    One of the nice side effects of this exercise (and going forward) is the use of a non-MySQL engine for discovering cross-database problems. Several bugs and limitations were uncovered during the process and continuing down this path will only help in this area.

  148. [#940] Fix a regression from #791. (realityking)

    This required a small addition to the JInput API that should be helpful for others as well.

  149. [#946] Joomla CMS [#28039] Using Chrome for Android generates an error in browser.php (line 562) (vietvh)

    Tracker item:

  150. [#965] Fixed some PHP notices in the SingleCommentSniff (robschley)
  151. [#964] Move JError::raiseError() calls to throw new Exception(). (LouisLandry)

    All calls to JError::raiseError($code, $message); were changed to throw new Exception($message, $code);

    This is phase one of the move off of JError. The next step will be to evaluate all of the Exception classes and use an appropriate semantic SPL exception class.

    Adjustments to the Unit Tests

    The biggest adjustment was adding code to skip JSessionStorage classes where the storage mechanism was not available. Aside from that I changed the tests for JHtml::_() so that exceptions were expected instead of setting up an elaborate mock callback class to verify that a JException was raised via JError.

    Big thanks to Elin for grep'ing the codebase for JError::raiseError() calls for me. Huge time saver.

  152. [#963] Uncouple the Filesystem Path Class from JUser. (AmyStephen)

    A temporary file name is created using a random value in order to test if the script owns the path. Currently, this process invokes a method from JUser to build a random value. The patch changes that process to instead use mt_rand() so as to uncouple the Path Class from JUser.

  153. [#962] Fixes to the SQLite driver. (LouisLandry)

    Setting the SQLite driver to use backticks for name quoting while we figure out a more robust way of handling this cross platform. Also fixing a few issues with the SQLite driver around escaping and getting a list of table names.

  154. [#959] Update references to PHPUnit version (elinw)
  155. [#957] CMS Tracker: [#28001] path delimiter doesn't work properly on SQL Server and SQL Azure(dextercowley)
  156. [#942] fix bug #28039 (oc666)

    The bug produce cause preg_match not checked for return value. The bug report: PHP Notice: Undefined offset: 1 Cause it tries to find the second item in the matches ($version) array, where is declared from preg_match function before the line error. See more here:

  157. [#727] *PHP 5.3.8 Notice for some language packs with iconv. (infograf768)

    Notice: iconv() [function.iconv]: Detected an illegal character in input string in D:\wamp\www\j173\libraries\joomla\utilities\string.php on line 562 (error shown on 1.7.3, same on 2.5 beta)

    Looks like an issue specific to that version of PHP. Tested with Cambodian language pack. I see no other solution atm than preventing the Notice display.

  158. [#955] Removed unnecessary jimport of JObject. (robschley)

    JObject can be autoloaded now so we don't need to jimport() it.

  159. [#947] Legacy class path for gracefully deprecating libraries. (LouisLandry)

    One the important questions about how to proceed with the separation of the CMS and Platform has been how the platform will remove libraries that are still depended on by the CMS (and other downstream projects) in a way that isn't overly disruptive. This pull requests takes a stab at answering that question.

    The libraries formerly found in the libraries/cms folder have been moved to a newlibraries/legacy folder. Additionally there is a not libraries/import.legacy.php file. In order to bootstrap the platform with legacy classes you simply include libraries/import.legacy.php. If you want to bootstrap the platform with only the latest and greatest and no legacy class support, continue including libraries/import.php as always.

    This allows for a more graceful exiting of deprecated classes, and a path for modifying existing classes in a way that creates some hard breakages while still retaining legacy behavior if an application needs it. The solution simply relies on the autoloader and the order in which it searches for files.

    If the legacy import file was loaded then the autoloader will always look for a class by name first in the legacy path, then fall back to the main library path. If the regular import file was loaded then the autoloader ignores the legacy tree altogether.

    Along with this pull request I also moved some CMS specific and deprecated classes into the legacy tree and modified the test suites so that everything runs successfully.

  160. [#951] Added JStringNormalise::fromCamelCase() (robschley)

    JStringNormalise::fromCamelCase() will take a string in camel case format and convert it to a space separated string. I've added unit test to verify it works for some basic strings:

    The input on the left will produce the output on the right: FooBar => Foo Bar fooBar => foo Bar Foobar => Foobar foobar => foobar

    This currently only works for ASCII characters could be expanded to support a wider range of characters.

  161. [#945] Moved JObject to its own package (robschley)
  162. [#950] Fix checkstyle errors. (eddieajau)
  163. [#949] Fixing up the unit tests. (LouisLandry)

    PHP's call_user_func_array() function doesn't respect the standard objects as references paradigm ... have to leave the & symbols.

  164. [#938] Joomla CMS [#26906] Zip Archive native unpack wrong result (n3t)

  165. [#948] Make doc block match what is actually present. (elinw)

    There was a change made to this library that made this doc block description incorrect. Because user group name is not required to be unique it can't be used as a key in an array returned by loadAssocList. See CMS tracker #28125 (corresponding change already committed).

  166. [#937] Do some early spring cleaning. (realityking)

    This a mix of things that I didn't wanna create individual pull requests for: -Remove the few occurrences of die(), we decided to just use die -Add a few type hints -Remove a lot of the legacy PHP call-by-value of objects ampersands -Change a couple of docblocks to be more informative regarding the type of variables

  167. [#944] Fix up minor issue in JInput docblock. (eddieajau)

    Remove getArray from the @method's.

  168. [#943] Added documentation for the JInput package (eddieajau)

    Adds documentation for the JInput and JInputCli classes in the Input package. Adds the magic method declarations to JInput to access the filter shortcuts. Adds the magic method declarations to JDatabaseDriver for q and qn. Fixed a bad link to the history page in the manual.

  169. [#936] Fix JModuleHelper::_load() broken in #934. (realityking)

    JModuleHelper::getModules() relies on the index starting at 0.

  170. [#934] Removed caching from module list (nonumber)

    [this is a re-request from the faulty:]

    Since modules can be published based on time (publish_up / publish_down), the caching on the initial published module list makes no sense.

    The caching key ($cacheid) only takes into consideration the $Itemid, $groups, $clientId, $lang. However, the cached module list is time based.

    This means that the publish up/down settings have no effect as long as the list is still cached. So that is a bug.

    When looking at what is actually cached, there is not much to be gained by the caching as it is. It is only a database query and some basic checks on the returned object list.

    So taking above into account (that caching causes the timed based bug and that there is little to no gain in caching), the solution is to simply take out the caching altogether.

    Regarding performance: As far as I can tell only the module list that is returned from the database is stored in that cache. Not the rendered modules themselves.

    Advanced Module Manager and MetaMod Pro have been overruling this module helper file as it is with one that (among other things) doesn't use this cache. We have seen no noticeable effects on page load time due to this non-use of module list cache. Thousands of people are using these extensions and we have had no reports of pageload time problems related to this.

    In what I have been able to test locally, there is no noticeable difference in load time (debug info) and a small decrease in memory usage when commenting out the $cache->store line.

  171. [#907] UT 1/4: Adding unittests for application package (Hackwar)

    Fixing issues in JController and JPathway

    This is a fixed version of pull request #516

  172. [#935] Move JToolBar to the CMS and rename it to JToolbar. (realityking)
  173. [#709] Adds uninstall support for related media files (matrikular)

    While un-/installing a few extension types, i noticed that media files won't be catched for the uninstall process of libraries.

  174. [#928] Detailed Documentation for Inline Commenting (elinw)
  175. [#932] Cleanup in installer adapters (mbabker)
    • Reviewed and edited many of the inline comments for the adapters for consistent formatting, removing legacy API references, etc.
    • Removed instances where an <images> tag was processed (noted as deprecated in module adapter, checked for in plugin uninstall)
    • Removed preflight from being executed in plugin uninstall
    • Removed references to script file methods in adapters that do not have full implementation (for example, language adapter was checking for a custom update method but doesn't support script files at this time)
  176. [#911] Adding a default value for checkbox field (chdemko)

    Checkbox field miss a default value.

  177. [#924] Make more classes autoloadable. (realityking)

    Also remove some legacy code related to the autoloader.

  178. [#931] Update libraries/joomla/mail/mail.php (brandtOSS)

    The addAttachment method of the JMail class does not pass on the parameters $name, $encoding and $type to its PHPMailer parent class. This makes it impossible to e.g. specify another file name for an attachment.

  179. [#927] Clean up some comments and aliased column references in usergroups table... (elinw)


  180. [#926] Change test method name to testIsMinimumVersion (mbabker)

    When #919 was formed, the test method for the method renamed from isSupported to isMinimumVersion in JDatabaseTest should have been renamed to testIsMinimumVersion as well. This syncs the test class with that change.

  181. [#919] Change JDatabaseDriver, JCacheStorage and JSessionStorage to use isSupported() instead of test(). (realityking)

    This makes this the same across all packaged and isSupported() is just much more descriptive than test(). I also changed all the tests to use dynamic access to static methods instead of call_user_func_array() since we're know in PHP 5.3 land.

  182. [#922] Fix JRequest::checkToken('default'). (realityking)
  183. [#925] jimport JFolder (mbabker)

    In JHttpFactory::getHttpTransports(), JFolder should be imported to ensure it is available. With a basic CLI I'm using to test a package I'm working on, without this jimport, the script fails.

  184. [#913] renew pull from #803 (signotorez)

    by default JDatabaseMySQL::getTableColumns() second arguments is 'true'

  185. [#921] Modify class generation for JDatabaseDriver::getConnectors() (mbabker)

    The check for 'sql' in file names is no longer needed with the classes having been renamed. As is, install on Rouven's joomla30 branch fails to list the MySQL(i) adapters due to the class names being incorrectly generated.

  186. [#923] Add JDatabase::getConnectors for B/C (mbabker)

    This adds a method to JDatabase to connect to the JDatabaseDriver method to help maintain B/C.

  187. [#916] Added subquery capability for FROM and INSERT elements and their tests. (gpongelli)

    With this pull request it's possible to create queries as following examples.

    Using subqueries inside FROM element

    $q = new JDatabaseQuery ; $subq = new JDatabaseQuery; $subq->select('col2')->from('table')->where('a=1'); $q->select('col')->from($subq, 'alias');

    This will be translated to

    SELECT col FROM ( SELECT col2 FROM table WHERE a=1 ) AS `alias`

    Now an INSERT INTO element example

    $q = new JDatabaseQuery; $subq = new JDatabaseQuery; $subq->select('col2')->where('a=1'); $q->insert('table')->columns('col')->values($subq);

    This will be translated to

    INSERT INTO table (col) ( SELECT col2 WHERE a=1)

    For each element is maintained backward compatibility about use without subqueries.

  188. [#914] Fix the modal behavior. (realityking)

    Modals now require MooTools More because with 1.3 Hash moved to More. It may be possible to fixe Squeezebox but for this fixes the immediate issue.

  189. [#918] Split methods.php into two files. (realityking)

    It always bugged me that these two classes that belong into different packages sit in the same file.

  190. [#915] Fix a couple of bugs in #839. These were discovered by phpmd. (realityking)

    CC @oc666

  191. [#912] Completing unit test for access (chdemko)
  192. [#839] add curl and socket to update process of Joomla (oc666)

    Due to requests of users to be able update joomla when allow_url_fopen is block (bug tracker #27852 &!msg/joomla-dev-framework/lP1ql5K8Rdw/ZuVRB8JL_SAJ), this pull request add the ability to use curl & socket. The pull request change the way the update communicate, and it's using the new JHttpTransport layer of the platform. The default prefer way to transport is curl and it can be change (see JUpdater::getAvailableDriver). I've added isAvailable method to JHttpTransport interface, and each sub-class implemented this method accordingly (include in the pull request). Please review.

  193. [#905] Update some database quote names to take advantage of changes. (elinw)
  194. [#910] Fixed some inconsistency between JDatabaseQuery::quoteName and JDatabaseDriver::quoteName and their aliases. (robschley)

    Also fixed two static variable initialization warnings.

  195. [#612] Added new JStringInflector class (juliopontes)

    I´ve implemented JStringInflector and tried to create unittest too need help to test.

  196. [#909] New Crypt package. (LouisLandry)

    This adds a new crypt package to the Joomla Platform to replace and enhance the old JSimpleCrypt library. JSimpleCrypt has been deprecated in favor of JCrypt. There are currently 4 "cipers" implemented for JCrypt though any number of them could be added down the road. It should be noted that besides the weak encryption carried over from JSimpleCrypt all of the other ciphers use the PHP mcrypt extension for cryptography.

    I'm sure this thing isn't perfect, and I'm sure there will people with lots of improvements and criticisms, but this gives us an opportunity to really address encrypting/decrypting data within the platform in a way that is extensible and easy to use.

  197. [#745] JAccess::getGroupsByUser doesn't work as expected in case of guest user (Chraneco)


    I think I found a small problem in method 'JAccess::getGroupsByUser'. By default, the method returns an array containing every group ID the current user belongs to (also the inherited ones), but this is not the case for a guest visiting the site.

    As a consequence the bug only occurs if option 'Guest User Group' in user manager is not set to the default 'Public' group.

    I created a patch which tries to fix this issue.

    Test instructions:

    1. Create a new user group 'Visitors' with default 'Public' group as parent.
    2. Set option 'Guest User Group' in user manager to this new user group.
    3. Delete cookies (for cleaning session)
    4. Anywhere in the code put following line:


    => Only the group 'Visitors' will be in array.

    1. Apply patch
    2. Delete cookies (for cleaning session)
    3. Refresh page

    => Group 'Visitors' as well as the default 'Public' group should be in the array now.

    This is also reported on

    Regards Chraneco

  198. [#776] Add JDocumentImage. (realityking)

    Another piece from #683.

  199. [#906] Reorganized and refactored database package. (LouisLandry)

    Most of this work was done by Omar Ramos. Rob and Andrew took a crack at getting it all up to date and ready to be merged, and now so have I. In this branch the tests all the tests are passing and things seem pretty good. There may be some extra things we need to get done for backward compatibility or whatnot, but I feel it is something we can get done after getting this stuff in there.

  200. [#898] Implement JAccess::getActionsFromFile and JAccess::getActionsFromData method(chdemko)

    This implements JAccess::getActionsFromFile using an xml file and an xpath parameter and JAccess::getActionsFromData using an xml string or a JXMLElement and an xpath parameter.

    Tests are now fully covered.

  201. [#861] Remove legacy code (jonnsl)
  202. [#902] Updated auto-loader docs for new registerPrefix method. (eddieajau)
  203. [#904] Fix typo (elinw)
  204. [#899] Fix a few comments (elinw)
  205. [#897] Remove deprecated warnings for PHPUnit 3.6 (LouisLandry)

    There were a few deprecated warnings being generated by PHPUnit 3.6 that have been cleaned up. The warning is:

    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. 
  206. [#683] Fix a bug in JDocument. (realityking)

    Fix the bug that meta elements with the attribute http-equiv weren't set corretly. This breaks API compatability on JDocument::SetMetadata().

  207. [#699] Add some simple HTML5 support to JDocument. (realityking)

    Another split off #683.

    After a discussion with Christophe I think this is to tightly couple to the CMS. This will do, we can do the template magic in JApplicationSite.

  208. [#896] Fix failing unit tests. (realityking)
  209. [#894] Reduce dependency on JObject (realityking)

    Special pull request for @LouisLandry. ;)

    The following classes no longer extend JObject JBrowser JClientLdap JDocumentRenderer JFeedEnclosure JFeedImage JFeedItem JFilterInput JProfiler JOpenSearchImage JOpenSearchUrl JToolBar

    Also deprecate JObject::__toString().

  210. [#892] Add more phpcs sniffs (realityking)

    This adds quite a few more sniffs, I made about one commit per sniff so if there are any we don't want I can easily remove them from this pull.

    I also added some XML to exclude our 3rd party libraries so we can now safely run the sniffer on the whole libraries folder. Jenkins should probably changed to check that folder. This picked up some style errors in the phpmailer lang file.

    I also added our first CSS sniffs. There's currently an error with the last-line-must-be-blank sniff so jenkings probably shouldn't check those files just yet, the CSS sniffs themselves pass just fine.

    Lastly I fixed 2 warnings that were there before so now there should be less warnings.

    CC @elkuku

  211. [#893] Remove more deprecated code. (realityking)
  212. [#791] Deprecating JRequest in favour of JInput usage (Dj83)

    Beginning the process of switching from JRequest to JInput in the Platform. If all files are not ready to use JInput please someone throw me a heads up... otherwise I will continue to change them as I see them.

    Thanks all

  213. [#869] Fix a few phpmd warnings. (realityking)
  214. [#891] Improvements to the system autoloader. (LouisLandry)
    • Add support for numeric digits in class names with the system autoloader.
    • Add ability to register multiple lookup paths with the system autoloader.

    To register a new filesystem location for Joomla libraries (J prefixed classes) with the system autoloader is as simple as:

    php // Register my library base path for Joomla platform libraries. JLoader::registerPrefix('J', '/path/to/my/joomla/libraries'); To register a set of libraries with a different class prefix (in this example C) it is as simple as:

    php // Register my libraries. JLoader::registerPrefix('C', '/path/to/custom/libraries');

  215. [#890] Update libraries/joomla/table/asset.php (elinw)

    Fix typo.

  216. [#888] Implement a file patcher (chdemko)

    This could be used in the updater for patching files. Use is:

    $patcher = JFilesystemPatcher::getInstance(); $patcher->add($udiff); $patcher->addFile($diff_file); $patcher->apply(); 
  217. [#887] Fix grammar mistake in comment. (elinw)
  218. [#886] Fixing JApplicationWeb base uri detection. (LouisLandry)

    Currently JApplicationWeb doesn't do any detection of a base uri if one isn't given explicitly... it will simply use the incoming URI as the base. Obviously this won't work in rewrite based request routing, so this has been fixed. Additionally I've added an 'uri.route' value for the detected non-base path in the incoming URI.

  219. [#884] Fix plugin uninstall (mbabker)

    In removing some of the legacy code from the plugin installation adapter, some of the file checks weren't properly handled, which is causing uninstall for plugins to fail since, as is, the XML manifest isn't being found. This fixes that.

  220. [#885] Docs: Added introduction about platform bootstrapping and auto-loading (eddieajau)

    Added an introductory section to the Developer Manual about bootstrapping the platform, auto-loading, JPlatform and JLoader. Also reconfigured the manual so that all of the core packages are in one chapter and individual classes a documented in a separate folder. Changelog file has been converted to a more succinct version history.

  221. [#881] Add JGithubCommits class (mbabker)

    Added class to work with GitHub commits API per:

  222. [#883] Fixed a redirect problem in JApplicationWeb that causes '/index.php' to be repeated in the path multiple times. (robschley)
  223. [#882] Add Iterator support to JPath::find() (robschley)

    Added support for passing Iterator objects into JPath::find(). Previously, JPath::find() would typecast the input into an array which, in the case of iterators, results in an empty array.

  224. [#838] fixed memcache and add new memcached driver (oc666)

    fix bug #26514 and add memcached driver (#27979 in the feature tracker)

  225. [#880] Move JArchive to it's own package. (realityking)

    Add type hinting to JArchive. Add the JArchiveExtractable interface.

  226. [#879] Change doc block and get rid of type hinting. (elinw)
  227. [#878] Update docblocks based on PhpStorm inspection (mbabker)

    Browsed through many of the docblocks and updated the described types of various params and returns as appropriate.

  228. [#754] Add Union method (elinw)

    This adds a union method to JDatabaseQuery along with unionDistinct which provides a proxy to the union method with distinct. This is based on the method that was in the JXtended libraries but updated for the current implementation of JDatabaseQuery. Tests included.

  229. [#875] Remove some duplicate code in JClientFtp. (realityking)

    Fix a phpmd warning in JClientLdap.

  230. [#877] Move JFormFieldMenuitem to the CMS (mbabker)

    The class has a dependency on the CMS com_menus. So, move it.

  231. [#871] Improved test coverage on JFormField classes (mbabker)
  232. [#854] Move JFormFieldUser to the CMS. (realityking)
  233. [#872] Add basic tests for JDatabaseSQLSrv (mbabker)

    PHPUnit natively doesn't support database operations when testing with SQL Server, so without writing our own test class, there isn't much we can test. Basically, if it doesn't require a query, it appears we can test it (so, basically testing that the class is returned for chaining, the queries are built correctly with proper quoting, etc.).

    I've implemented this test class the same way as the MySQL(i) test classes in that the class should be skipped if a config file isn't present (verified locally that this works as intended).

    I've also renamed the MySQL DDL and added a DDL for SQL Server should future testing support become available.

  234. [#873] Remove $_SERVER and $_ENV variables from JInput serialize. (eddieajau)
  235. [#824] Make JDatabaseQuery subclasses autoloadable. (realityking)

    There should be full backwards compatibility due to the lines added in import.php.

  236. [#870] Remove some more legacy code. (realityking)

    Extensions now have to set registeredurlparams.

  237. [#868] Modules assigned to 'all except' should show on pages without itemids. (elinw)

    Modules assigned to 'all except' should show on pages without itemids. See CMS tracker issue 28017.

  238. [#863] Remove deprecated API from JBrowser. (realityking)
  239. [#864] Rename JFTP to JClientFTP and JLDAP to JClientLdap for autoloading. (realityking)

    This also adds some type hinting and fixes one strict warning. I also marked a couple of other methods we don't use in the platform as static in case someone is using them as a static method.

  240. [#865] Deprecate methods and properties in JObject that belong to the legacy error system.(realityking)
  241. [#859] Remove legacy support for modules whose name doesn't start with mod_ (realityking)
  242. [#857] Fix broken unit tests. (realityking)

    Missed to include a file in #855.

  243. [#852] Fix for issue #849. (okonomiyaki3000)

    clone the JLogEntry instance before passing to JLogger

  244. [#855] Remove code that was made obsolete by the autoloader. (realityking)
  245. [#856] Upate MooTools to version 1.4.4 and drop compatibility with MooTools 1.2 (realityking)

    This involves changing a couple of the (unmaintained) 3rd party scripts so they work without the compatibility layer.

    I also used the closure compiler for mootools-core to save some additional weight. The file is now 12% smaller than the one we had before. I didn't do the same for more because the compiler does something weird with the unicode characters in that file.

  246. [#847] Use JApplicationBase as the foundation for JApplication as well. (realityking)

    The pull request partly reverts #843.

    Instead of just having JApplicationCli and JApplicationWeb share a common base class this makes JApplication also extend JApplicationBase. To limit the amount of API change I only left those methods/variables in JApplicationBase that were shared by all 3 classes.

    I think this would be a good first step in consolidating the new and old application classes.

  247. [#848] Update PHPMailer to version 5.2.1. (realityking)
  248. [#850] Always use the database instance declared by devs (fastslack)
  249. [#828] Rename JWebClient to JApplicationWebClient for autoloading. (realityking)

    Also add deprecation warnings to JRule and JRules.

  250. [#845] Allow ReflectionHelper getValue and setValue to access private properties of parent class(eddieajau)

    Made changes to ReflectionHelper to allow getValue and setValue methods to access private properties of the parent class. This is useful when testing an abstract class, by way of making a derived concrete class, where properties are private in the abstract class.

  251. [#843] Common Application Base Round 4 (robschley)

    Added abstract class JApplicationBase. Reworked JApplicationWeb and JApplicationCli to use JApplicationBase.

  252. [#835] Replace the remaining uses of $() with (realityking)

    This will help compatibility with other JS frameworks that use $() like jQuery.

  253. [#837] Move JInput into its own package. (realityking)
  254. [#836] Fix subpackage tags in the table package. (realityking)
  255. [#832] Fixing unit test for JFormField (chdemko)
  256. [#830] Add minimum supported version information to database drivers (mbabker)

    This adds the minimum supported version information to the database drivers and a method to retrieve that string. The values currently used are MySQL 5.0.4 (the CMS minimum version at present) and SQL Server 2008 R2 (internal version 10.50.1600.1, per a discussion I had with Sudhi yesterday). I've also modified the getVersion method for SQL Server to just return the version string instead of the full array the sqlsrv_server_info method returns.

  257. [#700] Update libraries/joomla/application/menu.php (ssv445)

    This will allow developers to override the menu class.

  258. [#823] Update libraries/joomla/html/html/tabs.php (xilocex)

    $group var in libraries/joomla/html/html/tabs.php needs to be typed (string) to avoid warnings in certain use cases.

    This issue has been posted to the Joomla! CMS Issue Tracker and can be found at the following link.

  259. [#825] Remove the DS constant. (realityking)
  260. [#826] Fix bug in JTable::addIncludePath (mbabker)

    By moving JTable to a separate package, a bug was introduced in that the addIncludePath would now add the incorrect base directory for the JTable child classes. This fixes that bug and adds a test case for this method.

  261. [#822] Add missing semi-colon (mbabker)


  262. [#821] Update libraries/joomla/database/database.php (matrikular)

    As mentioned in the tracker, item 27951 - this fixes the missing parameter handling in magic proxy methods for the name quote issue

  263. [#777] JInstaller improvements/adjustments (hieblmedia)
    1. The package adapter executes the install method twice. This can insert dublicate database entries. See:

    2. On some install adapters a check is_a($updateElement, 'JXMLElement') return always true and force an update. This is not desirable.

    3. The template install adapter never return an existing extension id (setQuery was not set). This forces and update also and create dublicate database entries in the extensions table (also template styles). Updated query with exception and direct rollback.

  264. [#814] Issue [#27780] Fixed bug causing duplicate template styles in form field (hieblmedia)

    Duplicate template styles if other type of extension exists with the same name.

    I have added a filter with type=template for the query.


  265. [#815] Update libraries/joomla/database/database.php (AmyStephen)

    databaseexception.php no longer exists, has been renamed to exception.php.

  266. [#805] Issue #27898 (laoneo)

    Added a check if the buffer from the document is really an array. Issue number is #27898 on joomlacode.

  267. [#806] Remove deprecated JXMLElement code (mbabker)
  268. [#807] Remove deprecated code from JUpdater (mbabker)
  269. [#808] Move JHelp to CMS (mbabker)
  270. [#812] Replace JRequest in Document package (mbabker)
  271. [#811] Replace JRequest in Form package (mbabker)
  272. [#809] Remove deprecated code in JHtml (mbabker)
  273. [#810] Replace JRequest in HTML package (mbabker)
  274. [#801] Move JTable to its own package. (realityking)
  275. [#800] Deprecate the exceptions that are based on packages. (realityking)
  276. [#799] Remove dependency on JObject in JURI. (realityking)

    Add some type hints to JURI.

    As far as I could tell removing the dependency on JObject doesn't break anything, I could be wrong so it'd be good if someone else could take a closer look.

  277. [#796] Provide a replacement for the deprecated JRequest::checkToken() in JSession. (realityking)

    This uses JInput so there's no dependency on JRequest introduced.

  278. [#802] Remove the deprecated JError::isError(). (realityking)

    We probably need to keep JError for a while since it is used all over the place but the isError() method is easy to replace and can be safely removed.

  279. [#798] Improved charLength function for multidb environment. (gpongelli)

    Added two extra parameter used to compare charLength integer returning value. Second parameter is comparison's operator, third parameter is integer value to compare charLength with.

  280. [#794] JInput implements Serializable (robschley)

    Updated JInput to implement Serializable so that you can serialize an input and it will copy the current request environment into the object before serializing. This allows you to unserialize the object and retrieve the original request environment.

  281. [#795] Move JTableContent to the CMS. (realityking)
  282. [#797] Deprecate JController::authorise (mbabker)

    Without the other code from JController that has been removed as deprecated, JController::authorise() really has no function any longer. I've deprecated it and removed its only use in JController::execute().

  283. [#788] More Work on JDaemon (robschley)

    Added an option to keep a JDaemon application in the foreground. Fixed some issues with trying to handle undefined signals in JDaemon. Fixed an issue with forked JDaemon applications trying to manage the PID file.

  284. [#765] Remove another bit of deprecated code in JRegistry. (realityking)

    Apparently this was missed in #759.

  285. [#792] Fix bug in countMenuChildren (katalystsol)

    $query was generating an undefined variable error notice and then a fatal error notice because it is not defined previously in that method. After changing that on my site, which I had just upgraded to 2.5.0, it started working again.

  286. [#758] Added JDatabaseQuery function to extract part of timestamp. (gpongelli)

    This function is used to extract part of date from timestamp in a database independent manner. Added MySQL test of element string conversion.

    Usage: $query->day($query->quoteName('dateColumn')) for MySQL will return "DAY( dateColumn )"

    $query->month($query->quoteName('dateColumn')) for MySQL will return "MONTH( dateColumn )"

    $query->year($query->quoteName('dateColumn')) for MySQL will return "YEAR( dateColumn )"

    $query->hour($query->quoteName('dateColumn')) for MySQL will return "HOUR( dateColumn )"

    $query->minute($query->quoteName('dateColumn')) for MySQL will return "MINUTE( dateColumn )"

    $query->second($query->quoteName('dateColumn')) for MySQL will return "SECOND( dateColumn )"

  287. [#785] Code style: Single comment sniff (elkuku)

    This will "sniff" the single line comments (//). It is based on a document by @elinw: Comment Rules.

    The following rules have been applied:

    • Hash comments (#) are not allowed.
    • The first letter must be preceded by a space. (//Bad -> // Good)
    • The first letter must be upper case, unless a sentence spans over multiple lines (// bad -> // Good)
    • The comment must not be on the same line as the code. It should instead precede the code it refers to.
    • If the comment is surrounded by code, it must be preceded by a blank line.
    • If there are more than two single comment lines, those should be converted in a /* */ style comment.

    Occasionally the sniff hits commented out code. I have marked those findings with a TODO: remove code.

  288. [#790] Remove legacy code from Installer package (mbabker)

    Changes made:

    • Component adapter: Dropped support for com_install and com_uninstall
    • Language adapter: Support for client=both in metafile tag
    • Plugin adapter: Removed code which checked for plugins with CMS 1.5 file structure
  289. [#789] Remove legacy code from JApplicationHelper (mbabker)

    Removing some legacy code from JApplicationHelper:

    • In method getPath, replace use of JRequest with JInput and remove path check for CMS 1.5 plugin path
    • In method parseXMLInstallFile, remove check for legacy install tag in extension XML and remove mosinstall tag from $data['legacy'] (can this be completely removed?)
    • In method parseXMLLangMetaFile, correct the comment for the valid XML root tag
  290. [#784] Add tests for the Mail package from the CMS (mbabker)
  291. [#775] Remove deprecated JFormFieldEditors. (realityking)
  292. [#778] Add basic JUser tests (mbabker)

    This adds some of the tests from the JUserTest class in the CMS.

  293. [#779] Remove deprecated JObject::toString (mbabker)
  294. [#780] Remove deprecated code in JController (mbabker)
  295. [#781] Remove deprecated code from JUtility (mbabker)
  296. [#782] Improve JDatabase test coverage (mbabker)
  297. [#783] Add JFolder tests from the CMS (mbabker)
  298. [#774] Fix failing unit tests and a style error. (realityking)

    Fixes failing unit tests introduced in #742 and #764. Fixes style error introduced in #764.

  299. [#742] Move JFormFieldMedia and JFormFieldHelpsite to the CMS. (realityking)
  300. [#763] Remove deprecated code from JFactory. (realityking)

    Some of them were marked with 12.3 but IMO it's fine to remove those. They are protected anyways and JFactory probably isn't extended all that often.

    I also fixed a docblock and added a couple of type hints.

  301. [#773] Deprecate JUser::getParameters() (mbabker)

    Based on Hannes' response at, this deprecates the JUser::getParameters() method and removes the $usertype property from JUser as this was the only place this property was still in use.

  302. [#764] Remove JRequest:clean(). (realityking)

    This means we don't support register globals anymore.

  303. [#771] Remove deprecated code in Installer package (mbabker)
    • Removes getOverwrite and getUpgrade methods
    • No longer allows install tag as valid XML root tag in extension installation
  304. [#772] Remove deprecated code from JDate (mbabker)
    • Deprecated code removed
    • Test case now extends JoomlaDatabaseTestCase to allow for testing in isolation
  305. [#770] Remove deprecated code in User package (mbabker)

    Removes all but the $usertype property in JUser. See for discussion.

  306. [#768] Remove deprecated methods from JTable (mbabker)
  307. [#762] JLanguage: Avoid BOM error when debug, as BOM is OK when using parse_ini(infograf768)

    JLanguage: Avoid BOM error when debug, as BOM is OK when using parse_ini

  308. [#767] Uninstalling Language pack displays error (infograf768)

    Sine 2.5 JFolder: :delete: Path is not a folder. Path: ROOT/administrator/manifests/packages/fr-FR Thanks Christophe for the patch Creating tracker now

  309. [#744] Remove JParameter and JElement (mbabker)
  310. [#743] Remove deprecated JDatabase* code (mbabker)

    Removed from JDatabase* classes is most of the 12.1 deprecated code. Items that remain are getErrorNum, getErrorMsg, stdErr, $errorNum, and $errorMsg.

  311. [#728] Fixed JFormFieldMedia incorrect folder processing (piotr-cz)

    test instructions: com_media with configured 'image_path' as a 2+ level directory (ie. media/Pliki), bug doesn't occur when image_path configured to 1 level directory (images) (see Content > Media manager > Options > Path to images folder)

    details: JFormFieldMedia has a hardcoded method to compute $folder variable by stripping first directory in the image path value and a filename. $folder variable is then passed in a query 'folder='.$folder when calling com_media component

    patch will strip complete configured image_path in the $folder array

    Closes #342

  312. [#759] Remove deprecated code from JRegistry (mbabker)

    Per the roadmap, this removes deprecated code in JRegistry. A couple of additional notes as well:

    • Removed commented out methods in JRegistryTest as they had been implemented already elsewhere in the file
    • Made a change in JUser::getParameters that I'm not 100% on that calls $this->_params->loadSetupFile(), but based on reviewing the old JParameter::loadSetupFile method, I'm fairly certain that the actual intended behavior of this call has been restored (load the file instead of set a boolean true as was happening with JRegistry::loadSetupFile)
  313. [#757] Remove deprecated methods in JLanguage (mbabker)

    Per roadmap, removed deprecated methods from JLanguage.

  314. [#760] Modify JDatabaseSQLSrv::getVersion() to use sqlsrv_server_info (mbabker)

    Per the PHP docs, the sqlsrv_server_info appears to be the equivalent PHP function to mysql_get_server_info, so I've modified the getVersion method to use this to get the appropriate information.

    @sseshachala, any objections from you?

  315. [#748] There is no reason to protect (romacron)

    protected function dayToString($day, $abbr = false) protected function monthToString($month, $abbr = false)

  316. [#755] Remove deprecated methods from HTML package (mbabker)

    Per the roadmap, removed deprecated methods from JHtml* classes as well as JPane.

    Also, this pull request completely removes the JHtmlImage (not previously marked as deprecated) class since both of its methods were removed.

  317. [#753] Remove JSimpleXML. (realityking)
  318. [#726] JText::plural(), dynamic plurals for arbitrary numbers (WebMechanic)

    This oneliner patch allows "dynamic" pluralization of language keys for specific numeric values, eliminating the need to write and assign a callback for getPluralSuffixes. Essentially allowing any "magic" number passed into JText::plural() to result in more meaningful (semantic, human) phrases if a developer or template/UI designer wishes to do so.

    Sample usage, numbers (7, 14, 30) are made up to illustrate the idea: # standard behaviour STATISTICS="Statistcs" STATISTICS_0="No Statistcs available" STATISTICS_1="Todays Statistcs" STATISTICS_MORE="All Time Statistcs" # enhanced behavior STATISTICS_7="Weekly Statistcs" STATISTICS_14="Bi-Weekly Statistcs" STATISTICS_30="Monthly Statistcs" In code: 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"

  319. [#734] Remove the remaining occurences of DS except for its definition and JParameter.(realityking)

    This gets us 90% of the way on removing DS. As soon as we remove JParameter it won't be used by the platform anymore and we can decide to remove it.

  320. [#752] Remove missed uses of $id$. (realityking)
  321. [#739] Fix a couple of codestyle problems found by the autoformatter. (realityking)
  322. [#741] Start embracing PHP 5.3 (realityking)

    Since there seems to be no opposition to using PHP 5.3 from now on, lets start using it. This pull request removes one PHP 5.2 workaround and replaces dirname(FILE) with DIR.

  323. [#666] Fix SQL query (sseshachala)

    Reference :

  324. [#746] Fix MySQL specific query (mbabker)

    This fixes a couple MySQL specific queries in JInstaller which prevents the #__schemas table from being updated on component install/update.

  325. [#747] Remove DB specific quoting, add AS statement (mbabker)

    This should be the last pull request that handles MySQL specific quoting for database queries. Also, I've added a couple of AS keywords to a query that wasn't using them (works OK in MySQL, but can't be so sure it'll work the same elsewhere, so better safe than sorry).

  326. [#738] Update libraries/joomla/html/html/menu.php (vinset)
  327. [#704] Fixed queries for multidb environment. (gpongelli)
  328. [#737] Fix some small stuff (realityking)

    -Missing index.html -Some CRLF that sneaked in.

  329. [#733] Fix error when no database is available. (realityking)

    Closes #689 minus a couple of comments.

  330. [#719] Joomla CMS [#27630] Issue with replacePrefix -- valid only for SQLServer (sseshachala)

    sorry for the confusion.

  331. [#561] Remove the stub files at the old locations for JString and JLog. (realityking)

    The autoloader picks them up at the right location anyways.

  332. [#729] CMS [#27587] Update Generator Tag (mbabker)

  333. [#717] Test Improvement from eBay Content repository (pasamio)

    This pull request has some test improvements around the mocks for JWeb and JSession to improve the ability to test session enabled JWeb applications.

  334. [#723] Fix queries for multi-db in JInstallerLibrary (mbabker)

    There's a couple of queries which use MySQL specific quoting that prevents library extensions from being installed. This fixes those queries.

  335. [#724] Remove MySQL quote from module uninstall (mbabker)
  336. [#721] Fix for JLoggerFormattedText information disclosure (pasamio)

    This pull request resolves an issue in JLoggerFormattedText where due to a PHP bug, the contents of a log file could be viewed inadvertently. This pull request introduces a work around for the PHP bug which restores the proper behaviour.

    Discussion on Joomla! Bug Squad mailing list:

    PHP bug:

    Likely impacted PHP versions: - PHP 5.2 - PHP 5.3

    Impacted Joomla! versions: - CMS 1.5, 1.6, 1.7 and 2.5 Betas - All Platform releases

  337. [#710] Fixing bug introduced in the fix (beat)

    Fixing for checking Restore the admin application check for toolbar: As there was a "hidden" unclean assignment inside the "if", the "&&" added to the "if" was not applying to the if but to $path, making it a boolean instead of the required string, and that stopped all toolbars from working in backend.

  338. [#720] Small Improvement to JDispatcher (robschley)

    Changed JDispatcher::register() to use is_callable() instead of function_exists() to support more flexible callbacks.

  339. [#718] JDaemon rename and cleanup (robschley)

    Renamed JDaemon to JApplicationDaemon and moved to application directory. Reworked JApplicationDaemon::fork() to be more generic and added detach() method to detach from the console. Added JApplicationDeamon::postFork() to trigger an onFork event so objects can replace shared resources (like database connections) that are problematic when forking in PHP.

  340. [#712] Updating JLDAP::search to return only requested attributes (pasamio)

    This pull request adds the ability to specify a list of attributes when performing a JLDAP::search.

    $ldap->search('(uid=pasamio)', 'DC=joomla,DC=org', array('givenName', 'sn', 'mail'));

    This will return the givenName, sn, mail and DN attributes. DN is always included. Specifying no attributes will return all attributes by default (current behaviour).

  341. [#715] Fix a problem with the autoloader when used with multiple SPL loaders. (LouisLandry)

    When multiple loaders are registered with the SPL autoloader one might expect that PHP will stop looking once a class is found. This is not the case, it will continue to iterate through the loaders and if you don't handle the case within the loader you may end up with fatal errors if a class exists in two places.

  342. [#711] Fix for PHP Strict Error (sseshachala) PHP strict Error.

342 pull requests.

  1. realityking: 86
  2. mbabker: 56
  3. AmyStephen: 27
  4. elkuku: 21
  5. elinw: 20
  6. eddieajau: 20
  7. robschley: 17
  8. LouisLandry: 14
  9. chdemko: 7
  10. gpongelli: 7
  11. piotr-cz: 5
  12. oc666: 4
  13. benjaminpick: 4
  14. infograf768: 4
  15. sseshachala: 3
  16. pasamio: 3
  17. hieblmedia: 2
  18. matrikular: 2
  19. Hackwar: 2
  20. ianmacl: 2
  21. Buddhima: 2
  22. vietvh: 2
  23. n3t: 2
  24. aaronschmitz: 2
  25. simonharrer: 2
  26. xilocex: 1
  27. ssv445: 1
  28. okonomiyaki3000: 1
  29. fastslack: 1
  30. romacron: 1
  31. vinset: 1
  32. beat: 1
  33. WebMechanic: 1
  34. Dj83: 1
  35. katalystsol: 1
  36. laoneo: 1
  37. juliopontes: 1
  38. blueboar2: 1
  39. vovtz: 1
  40. stevenloppe: 1
  41. Naouak: 1
  42. Bakual: 1
  43. dianaprajescu: 1
  44. danyaPostfactum: 1
  45. dextercowley: 1
  46. signotorez: 1
  47. Chraneco: 1
  48. brandtOSS: 1
  49. bembelimen: 1
  50. nonumber: 1
  51. jonnsl: 1

Merged by:

  1. LouisLandry: 112
  2. eddieajau: 68
  3. chdemko: 65
  4. robschley: 42
  5. realityking: 34
  6. ianmacl: 10
  7. pasamio: 9
  8. : 1
  9. Hackwar: 1

LTS Release

STS Release

Note: View known compatibility Issues

Current Release: 1.1.0

Upcoming Release: 1.2

Joomla! Reading

Joomla! Programming

Joomla! Programming

Mark Dexter & Louis Landry
Joomla! Templates

Joomla! Templates

Angie Radtke