phpList core module

这是 phpList 3 的继承者(phpList 4)的核心模块。(This is the core module of the successor to phpList 3.)

phpList core module

Build Status
Latest Stable Version
Total Downloads
Latest Unstable Version
License

About phpList

phpList is an open source newsletter manager. This project is a rewrite of the
original phpList.

About this package

This is the core module of the successor to phpList 3. It will have the
following responsibilities:

  • provide access to the DB via Doctrine models and repositories (and raw SQL
    for performance-critical parts that do not need the models)
  • routing (which the web frontend and REST API will use)
  • authentication (which the web frontend and REST API will use)
  • logging
  • a script for tasks to be called from the command line (or a cron job)
  • tasks to create and update the DB schema

Please note that this module does not provide a web frontend or a REST API.
There are the separate modules phpList/web-frontend and phpList/rest-api
for these tasks.

This module should not be modified locally. It should be updated via Composer.

Installation

Since this package is only a service required to run a full installation of phpList 4, the recommended way of installing this package is to run composer install from within the phpList base distribution which requires this package. phpList/base-distribution containrs detailed installation instructions in its README.

Contributing to this package

Contributions to phpList repositories are highly welcomed! To get started please take a look at the contribution guide. It contains everything you would need to make your first contribution including how to run local style checks and run tests.

Code of Conduct

This project adheres to a Contributor Code of Conduct.
By participating in this project and its community, you are expected to uphold
this code.

Structure

Running the web server

The phpList application is configured so that the built-in PHP web server can
run in development and testing mode, while Apache can run in production mode.

Please first set the database credentials in config/parameters.yml.

Development

To run the application in development mode using PHP's built-in server,
use this command:

bin/console server:run -d public/

The server will then listen on http://127.0.0.1:8000 (or, if port 8000 is
already in use, on the next free port after 8000).

You can stop the server with CTRL + C.

Development and Documentation

We use phpDocumentor to automatically generate documentation for classes. To make this process efficient and easier, you are required to properly "document" your classes,properties, methods ... by annotating them with docblocks.

More about generatings docs in PHPDOC.md

Testing

To run the server in testing mode (which normally will only be needed for the
automated tests, provide the --env option:

bin/console server:run -d public/ --env=test

Production

For documentation on running the application in production mode using Apache,
please see the
phpList base distribution README.

Changing the database schema

Any changes to the database schema must always be done both in phpList 3 and
later versions so that both versions always have the same schema.

For changing the database schema, please edit resources/Database/Schema.sql
and adapt the corresponding domain model classes and repository classes
accordingly.

Developing phpList modules (plugins)

In phpList, plugins are called modules. They are Composer packages which
have the type phplist-module.

Bundle and route configuration

If your module provides any Symfony bundles, the bundle class names need to be
listed in the extra section of the module's composer.json like this:

"extra": {
    "phplist/core": {
        "bundles": [
            "Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle",
            "PhpList\\Core\\EmptyStartPageBundle\\PhpListEmptyStartPageBundle"
        ]
    }
}

Please note that the key of the section with extra needs to always be
phplist/core, not the name of your module package. Please have a
look at the
composer.json in the rest-api module
for an example.

Similarly, if your module provides any routes, those also need to be listed in
the extra section of the module's composer.json like this:

"extra": {
    "phplist/core": {
        "routes": {
            "homepage": {
                "resource": "@PhpListEmptyStartPageBundle/Controller/",
                "type": "annotation"
            }
        }
    }
}

You can also provide system configuration for your module:

"extra": {
    "phplist/core": {
        "configuration": {
            "framework": {
                "templating": {
                    "engines": [
                        "twig"
                    ]
                }
            }
        }
    }
}

It is recommended to define the routes using
annotations
in the controller classes so that the route configuration in the composer.json
is minimal.

Accessing the database

For accessing the phpList database tables from a module, please use the
Doctrine model and repository classes
stored in src/Domain/ in the phplist/core package (this
package).

For accessing a repository, please have it injected via
dependency injection.
Please do not get the repository directly from the entity manager as this would
skip dependency injection for that repository, causing those methods to break
that rely on other services having been injected.

Currently, only a few database tables are mapped as models/repositories. If you
need a mode or a repository method that still is missing, please
submit a pull request or
file an issue.

Accessing the phpList data from third-party applications

To access the phpList data from a third-party application (i.e., not from a
phpList module), please use the
REST API.

phpList is copyright (C) 2000-2021 phpList Ltd.

主要指标

概览
名称与所有者phpList/core
主编程语言PHP
编程语言PHP (语言数: 1)
平台Linux, Mac, Windows
许可证GNU Affero General Public License v3.0
所有者活动
创建于2013-12-13 19:45:40
推送于2025-04-22 16:19:27
最后一次提交
发布数9
最新版本名称v5.0.0-alpha4 (发布于 )
第一版名称v4.0.0-alpha1 (发布于 2018-01-31 17:32:28)
用户参与
星数86
关注者数15
派生数29
提交数452
已启用问题?
问题数54
打开的问题数24
拉请求数270
打开的拉请求数4
关闭的拉请求数8
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?