—- plugin —-
description: Supporting classes required by some other plugins.
author : Duncan Cameron
type :
lastupdate : 2022-08-30
compatible : phplist 3
depends : php 5.6
conflicts :
similar :
tags :
donationurl:
sourcerepo : https://github.com/bramley/phplist-plugin-common
This plugin provides support classes required by some other plugins. It also provides three pages which are added to the Config menu
The plugin also provides options to inline CSS styles when phplist sends campaign emails, and to embed images.
This plugin is now included with phplist, so you need to only enable it on the Manage Plugins page.
See the README file on the GitHub page https://github.com/bramley/phplist-plugin-common for how to install the plugin.
The plugin provides an option to inline CSS styles when phplist builds the email content. This allows you to include <style>
elements in the template for ease of maintenance, but those styles are added to the appropriate elements as style
attributes when the email is built.
Some email clients have limited or no support for <style>
elements in an HTML email, so inlining styles helps to ensure that the final email can be displayed properly on a wider range of clients.
For example, having a set of styles defined as
<style type="text/css"> p { margin-bottom: 0.5em; font-size: 15px; line-height: 20px; color: rgb(102, 102, 102); font-family: Tahoma,Verdana,Arial,sans-serif;} p.small { font-size: 13px; line-height: 18px;} h2 { margin-bottom: 0.5em; font-size: 20px; line-height: 20px; color: rgb(0, 36, 75); font-family: Georgia,Times New Roman,Times,serif;} h3 { margin-bottom: 0.5em; font-size: 16px; line-height: 20px; color: rgb(0, 36, 75); font-family: Georgia,Times New Roman,Times,serif;} td { padding: 5px 10px 5px 10px; } td.border { border-bottom: thin solid rgb(0, 36, 75);} ul { font-size: 15px; color: rgb(102, 102, 102); font-family: Tahoma,Verdana,Arial,sans-serif;} </style>
An h3 element in the template
<h3>EPTUG public meeting</h3>
will be changed to
<h3 style="margin-bottom: 0.5em; font-size: 16px; line-height: 20px; color: rgb(0, 36, 75); font-family: Georgia,Times New Roman,Times,serif;">EPTUG public meeting</h3>
There are two packages to do the inlining that are included in the plugin - PreMailer (https://github.com/crossjoin/PreMailer), and Emogrifier (https://github.com/MyIntervals/emogrifier). You can choose which package to use, or select not to inline CSS styles, in the Campaigns group of the Settings page.
This feature requires php 7.2 or later. You should not try to use this if you are running an earlier version of php.
The plugin provides an option to embed images - add images as inline attachments instead of being fetched when the email is displayed. This should be used with care as it can cause the size of each email to increase dramatically. Also, the approach might work better or worse in different email clients so you should test the effect of using this option.
The option is on the Settings page in the Campaign settings group
This feature requires php 8, the option is not displayed for earlier versions of php.
To have an image embedded you need to add a class attribute with value embed
or add embed
to an existing class attribute.
<img src="https://somesite.com/funny_cat.png" class="embed" />
or, if the image already has a class attribute
<img src="https://somesite.com/funny_cat.png" class="myclass embed" />
The plugin will create a cache of images to be embedded in the directory identified by the $tmpdir
setting in config.php. Ensure that the directory is writeable by the web server.
There is a mechanism to log the sql queries created by most plugins. This might be useful in debugging or to be able to run a query manually.
Add the following to the config.php file (at the end of the file is ok)
$log_options = array( 'threshold' => 'DEBUG', 'classes' => array( 'phpList\plugin\Common\DB' => true, ), );
Now queries will be logged to a file in the phplist temporary directory, identfied by the $tmpdir
variable in config.php. The file will be named for the current day, e.g. log_2018-07-13.txt.
Alternatively you can specify a particular directory for the log file. The directory must be writeable by the web server process.
$log_options = array( 'threshold' => 'DEBUG', 'classes' => array( 'phpList\plugin\Common\DB' => true, ), 'dir' => '/path/to/directory', );
Each query will be logged similar to this
[Fri 13 Jul 2018 10:09:15] [debug] phpList\plugin\Common\DB::_query, line 39 elapsed time 11.165857315063 ms SELECT id, email, confirmed, blacklisted FROM phplist_user_user u LEFT JOIN phplist_listuser lu ON u.id = lu.userid WHERE userid is NULL
To stop logging queries simply change DEBUG to OFF.