pragmaticweb / pragmatic-drupal7-importer
Developer framework for importing data from Drupal 7 into WordPress.
Installs: 83
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 7
Forks: 1
Open Issues: 0
Type:wordpress-plugin
Requires
- php: >=7.3
- composer/installers: ~1.7
- humanmade/hm-content-import: dev-master
Requires (Dev)
- brainmaestro/composer-git-hooks: ~2.8
- humanmade/coding-standards: ~0.7
- overtrue/phplint: ~1.2
- phpunit/phpunit: ~8.5
- wp-phpunit/wp-phpunit: ~5.3
This package is auto-updated.
Last update: 2024-12-12 22:48:27 UTC
README
A project by Pragmatic.
Developer framework for importing data from Drupal 7 into WordPress.
Requirements
Usage Requirements
Ensure you have the prerequisite software installed:
Installation
- Add this plugin to your project with Composer:
composer require pragmaticweb/pragmatic-drupal7-importer
. - Activate the plugin as usual, and use it via WP-CLI.
The plugin assumes a database called wordpress_test
exists and is accessible using the credentials in your WordPress' wp-config.php
file. If you will be working on PHPUnit tests, you will need to manually make sure the database exists.
Use the filter pragmatic.drupal7_importer.map_drupal_roles_to_wp.roles_mapping
to map how Drupal user roles map to WordPress user roles.
Development Process
Contributions
This plugin mostly follows the standard Git Flow model.
Development happens in feature branches, which are merged into develop
, and then eventually merged into master
for deployment to production. When making changes, a feature branch should be created that branches from develop
(and the corresponding pull request should use develop
as the target branch).
Philosophy
PHP files should either declare symbols (classes, functions, etc) or run code (function calls, etc), but not both. Generally speaking, only one file per plugin should run code.
An exception is allowed for require statements only if there isn't a better way to include those files. As an example, a namespace file may require the namespace file for sub-namespaces, since PHP doesn't have a way to autoload namespaced functions.
For namespaced functions which are primarily action and filter callbacks, the add_action/filter
calls should generally live in a bootstrap()
function in the namespace. This allows the file to be loaded without adding hooks immediately, but still allows the hook declarations to live with the callbacks.
As an example, for a plugin called "pragmatic-coffee" with a namespace of Pragmatic\Coffee
, the directory structure should look like this:
- plugin.php – Declares autoloader and runs bootstrap functions.
- inc/ – Contains PHP code for
Pragmatic\Coffee
namespace.- functions.php – Declares functions and constants in the
Pragmatic\Coffee
namespace. - class-cup.php – Declares the
Pragmatic\Coffee\Cup
class. - beans.php – Declares functions and constants in the
Pragmatic\Coffee\Beans
namespace. (Good approach for simpler plugins)
- functions.php – Declares functions and constants in the
- sweeteners/ – Contains sub-namespace
Pragmatic\Coffee\Sweeteners
. (Good approach for larger plugins)- functions.php – Declares functions and constants in the
Pragmatic\Coffee\Sweeteners
namespace. - class-sugar.php – Declares the
Pragmatic\Coffee\Sweeteners\Sugar
class.
- functions.php – Declares functions and constants in the
Plugin Structure
This plugin maintains a basic file structure. The key areas are:
plugin.php
– The main plugin loader.inc/
– PHP.tests/
– Test files.
Within the inc/
directory, files should be organised hierarchically based on namespaces. If a namespace only contains functions, the filename should be functions.php
.
If a namespace also contains classes, group those classes together with the namespace file in a {sub-namespace}/
directory. The main functions file for this namespace would be{sub-namespace}/functions.php
, while classes should be in a file prefixed with class-
with a "slugified" class name.
Scripts and Tooling
composer run tests
-- run all of the following tasks:composer run test:phpunit
-- run PHPUnit tests.
composer run lint
-- crun all of the following tasks:composer run lint:phpcs
-- check PHP quality with a PHP linter and, PHPCS.