Skip to content
This repository has been archived by the owner on Feb 21, 2024. It is now read-only.

PHP Archive for finding the old Joomla (< 3.8) class names

License

Notifications You must be signed in to change notification settings

vortrixs/joomla-namespace-checker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Joomla Namespace Checker (JNSC)

For migrating to Joomla 3.8.x

This script scans a directory recursively for PHP files containing calls to the old classes (e.g. JFactory).

DISCLAIMER: Keep in mind that the results from this tool are only suggestions and that these changes are NOT required for your application to work until Joomla 5 is released. Thanks to @anibalsanchez for pointing this out (#6).

As a side note you can always find the full definition for the new class names in Joomlas own repository.

Note: I'm not actively supporting this repository at the moment as I'm not working with Joomla anymore, but do feel free to submit PRs if you have any changes or found any bugs.

Requirements

  • PHP 7.x

Usage

Using Composer

Add the package to your composer.json

composer require --dev vortrixs/joomla-namespace-checker

Afterwards you can run it using

vendor/bin/jnsc path/to/your/project/

This should work as long as PHP is in your $PATH.

If this does not work you can always execute the PHAR directly

php vendor/vortrixs/joomla-namespace-checker/bin/jnsc.phar

Using the PHAR

Download the PHAR from the latest release and run it like so

$ php jnsc.phar path/to/your/project

If any calls are found you will get the following output:

FILE: path/to/your/project/someFile.php
-------------------------------------------------------------------------------------
Line: 12 | Class found: JTable        | Replace with: Joomla\CMS\Table\Table
Line: 21 | Class found: JPlugin       | Replace with: Joomla\CMS\Plugin\CMSPlugin
Line: 47 | Class found: JPluginHelper | Replace with: Joomla\CMS\Plugin\PluginHelper
Line: 56 | Class found: JFactory      | Replace with: Joomla\CMS\Factory
Line: 75 | Class found: JPluginHelper | Replace with: Joomla\CMS\Plugin\PluginHelper
Line: 84 | Class found: JFactory      | Replace with: Joomla\CMS\Factory
-------------------------------------------------------------------------------------

Excluding paths & files

Pass the --exclude option to exclude directories and files.

$ php jnsc.phar --exclude=/somepath/,somefile.php,some/other/path/ path/to/your/project

The exclusion is very basic so you might have to tweak the paths a bit, this also means wildcards like * are not supported.

e.g. if you pass --exclude=google, it will filter out anything that has google in it's path or filename.

To reliably filter out a whole directory wrap it in / / and for single files use filename.ext.

Automatically update files after scan

With the -u option on the command line, the classnames are replaced in the file, use statements are inserted immediately after the <?php tag, and the file is rewritten with the changes. JEventDispatcher, JDispatcher and JRequest calls will be excluded from fix list and should be fixed manually according to suggestions.

About

PHP Archive for finding the old Joomla (< 3.8) class names

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages