<?php require_once dirname(__FILE__).'/accesscheck.php'; require_once dirname(__FILE__).'/EmailSender.php'; include_once dirname(__FILE__).'/defaultplugin.php'; require_once dirname(__FILE__).'/AnalyticsQuery.php'; require_once dirname(__FILE__).'/Updater.php'; $GLOBALS['plugins'] = array(); $GLOBALS['editorplugin'] = false; $GLOBALS['authenticationplugin'] = false; $GLOBALS['emailsenderplugin'] = false; $GLOBALS['analyticsqueryplugin'] = false; $GLOBALS['updaterplugin'] = false; $pluginRootDirs = array(); if (PLUGIN_ROOTDIRS != '') { $pluginRootDirs = explode(';', PLUGIN_ROOTDIRS); } $pluginRootDirs[] = PLUGIN_ROOTDIR; $pluginRootDirs = array_filter(array_unique($pluginRootDirs)); $pluginFiles = array(); foreach ($pluginRootDirs as $pluginRootDir) { //# try to expand to subdir of the admin dir if (!is_dir($pluginRootDir)) { $pluginRootDir = dirname(__FILE__).'/'.$pluginRootDir; } // print '<h3>'.$pluginRootDir.'</h3>'; if (is_dir($pluginRootDir) && ($dh = opendir($pluginRootDir))) { while (false !== ($file = readdir($dh))) { if ($file != '.' && $file != '..' && !preg_match('/~$/', $file)) { // print $pluginRootDir.' '.$file.'<br/>'; if (is_file($pluginRootDir.'/'.$file) && preg_match("/\.php$/", $file)) { // print "ADD $file<br/>"; array_push($pluginFiles, $pluginRootDir.'/'.$file); } elseif (is_dir($pluginRootDir.'/'.$file) && is_dir($pluginRootDir.'/'.$file.'/plugins')) { // print 'SUBROOT'.$pluginRootDir.' '.$file.'<br/>'; $subRoot = $pluginRootDir.'/'.$file.'/plugins'; $subDir = opendir($subRoot); while (false !== ($subFile = readdir($subDir))) { if (is_file($subRoot.'/'.$subFile) && preg_match("/\.php$/", $subFile)) { // print "ADD $subFile<br/>"; array_push($pluginFiles, $subRoot.'/'.$subFile); } else { // print "NOT A FILE: $subRoot.'/'.$subFile<br/>"; } } } else { // print 'NOT A DIR: '.$pluginRootDir.'/'.$file.'/plugins<br/>'; } } } closedir($dh); } } $auto_enable_plugins = array(); if (isset($GLOBALS['plugins_autoenable'])) { $auto_enable_plugins = $GLOBALS['plugins_autoenable']; } //var_dump($pluginFiles);exit; $disabled_plugins = unserialize(getConfig('plugins_disabled')); if (is_array($disabled_plugins)) { foreach ($disabled_plugins as $pl => $plstate) { if (!empty($plstate) && !in_array($pl, $auto_enable_plugins)) { $GLOBALS['plugins_disabled'][] = $pl; } } } //var_dump($GLOBALS['plugins_disabled']);exit; foreach ($pluginFiles as $file) { list($className, $ext) = explode('.', basename($file)); if (preg_match("/[\w]+/", $className)) { // && !in_array($className,$GLOBALS['plugins_disabled'])) { if (!class_exists($className)) { include_once $file; if (class_exists($className)) { $pluginInstance = new $className(); $pluginInstance->origin = $file; // print "Instance $className<br/>"; //# bit of a duplication of plugins, but $GLOBALS['plugins'] should only contain active ones //# using "allplugins" allow listing them, and switch on/off in the plugins page $GLOBALS['allplugins'][$className] = $pluginInstance; if (!in_array($className, $GLOBALS['plugins_disabled'])) { $plugin_initialised = getConfig(md5('plugin-'.$className.'-initialised')); if (!empty($plugin_initialised)) { $GLOBALS['plugins'][$className] = $pluginInstance; $pluginInstance->enabled = true; } elseif (in_array($className, $auto_enable_plugins)) { $GLOBALS['plugins'][$className] = $pluginInstance; $pluginInstance->initialise(); $pluginInstance->enabled = true; } else { // plugin is not enabled and not disabled, so disable it and don't process this plugin any further $pluginInstance->enabled = false; $disabled_plugins[$className] = 1; saveConfig('plugins_disabled', serialize($disabled_plugins), 0); continue; } // remember the first plugins that provide editor, authentication or email sending if (!$GLOBALS['editorplugin'] && $pluginInstance->editorProvider && method_exists($pluginInstance, 'editor') ) { $GLOBALS['editorplugin'] = $className; } if (!$GLOBALS['authenticationplugin'] && $pluginInstance->authProvider && method_exists($pluginInstance, 'validateLogin') ) { $GLOBALS['authenticationplugin'] = $className; } if (!$GLOBALS['emailsenderplugin'] && $pluginInstance instanceof EmailSender) { $GLOBALS['emailsenderplugin'] = $pluginInstance; } if (!$GLOBALS['analyticsqueryplugin'] && $pluginInstance instanceof AnalyticsQuery) { $GLOBALS['analyticsqueryplugin'] = $pluginInstance; // Add 'plugin' as an option on the Settings page $default_config['analytic_tracker']['values'] += array('plugin' => $analyticsqueryplugin->name); } if (!$GLOBALS['updaterplugin'] && $pluginInstance instanceof Updater) { $GLOBALS['updaterplugin'] = $pluginInstance; } if (!empty($pluginInstance->DBstruct)) { foreach ($pluginInstance->DBstruct as $tablename => $tablecolumns) { $GLOBALS['tables'][$className.'_'.$tablename] = $GLOBALS['table_prefix'].$className.'_'.$tablename; } } } else { $pluginInstance->enabled = false; dbg($className.' disabled'); } } else { Error('initialisation of plugin '.$className.' failed. Remove the plugin and try again.','https://resources.phplist.com/documentation/errors/pluginfailed'); } //print "$className = ".$pluginInstance->name."<br/>"; } } } // Activate plugins in descending priority order uasort( $plugins, function($a, $b) { return $b->priority - $a->priority; } ); foreach ($plugins as $className => $pluginInstance) { if (!pluginCanEnable($className)) { // an already enabled plugin now does not meet its dependencies, do not enable it $pluginInstance->enabled = false; unset($plugins[$className]); continue; } $pluginInstance->activate(); } $GLOBALS['pluginsendformats'] = array(); foreach ($GLOBALS['plugins'] as $className => $pluginInstance) { $plugin_sendformats = $pluginInstance->sendFormats(); if (is_array($plugin_sendformats) && count($plugin_sendformats)) { foreach ($plugin_sendformats as $val => $desc) { $val = preg_replace("/\W/", '', strtolower(trim($val))); $GLOBALS['pluginsendformats'][$val] = $className; } } } function upgradePlugins($toUpgrade) { foreach ($toUpgrade as $pluginname) { // print '<h2>Upgrading '.$pluginname. '</h2><br/> '; // print md5('plugin-'.$pluginname.'-versiondate'); $currentDate = getConfig(md5('plugin-'.$pluginname.'-versiondate')); // print 'CUrrent '.$currentDate; if ($GLOBALS['allplugins'][$pluginname]->upgrade($currentDate)) { // print "Saving ".'plugin-'.$pluginname.'-versiondate'; SaveConfig(md5('plugin-'.$pluginname.'-versiondate'), date('Y-m-d'), 0); } } } $commandlinePluginPages = array(); $commandlinePlugins = array(); if (count($GLOBALS['plugins'])) { foreach ($GLOBALS['plugins'] as $pluginName => $plugin) { $cl_pages = $plugin->commandlinePluginPages; if (count($cl_pages)) { $commandlinePlugins[] = $pluginName; $commandlinePluginPages[$pluginName] = $cl_pages; } } } /* * central function to call a method on all plugins * not sure to go down this route yet, MD 201212 */ function pluginsCall($method) { $args = func_get_args(); $m = array_shift($args); // the first is the method itself foreach ($GLOBALS['plugins'] as $pluginname => $plugin) { if (method_exists($plugin, $method)) { $plugin->$method($args); } } } function pluginCanEnable($plugin) { global $allplugins; $canEnable = false; if (isset($allplugins[$plugin])) { $dependencies = $allplugins[$plugin]->dependencyCheck(); $dependencyDesc = array_search(false, $dependencies); if ($dependencyDesc === false) { $canEnable = true; } else { $allplugins[$plugin]->dependencyFailure = $dependencyDesc; } } return $canEnable; }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
PEAR | Folder | 0755 |
|
|
PHPMailer | Folder | 0755 |
|
|
PHPMailer6 | Folder | 0755 |
|
|
actions | Folder | 0755 |
|
|
css | Folder | 0755 |
|
|
data | Folder | 0755 |
|
|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
inc | Folder | 0755 |
|
|
info | Folder | 0755 |
|
|
js | Folder | 0755 |
|
|
locale | Folder | 0755 |
|
|
onyxrss | Folder | 0755 |
|
|
plugins | Folder | 0755 |
|
|
tests | Folder | 0755 |
|
|
ui | Folder | 0755 |
|
|
.gitignore | File | 20 B | 0644 |
|
.htaccess | File | 489 B | 0644 |
|
.minceconf | File | 994 B | 0644 |
|
AnalyticsQuery.php | File | 985 B | 0644 |
|
CsvReader.php | File | 1.27 KB | 0644 |
|
EmailSender.php | File | 477 B | 0644 |
|
Updater.php | File | 193 B | 0644 |
|
about.php | File | 7.4 KB | 0644 |
|
accesscheck.php | File | 715 B | 0644 |
|
addprefix.php | File | 1.01 KB | 0644 |
|
adduser.php | File | 46 B | 0644 |
|
admin.php | File | 12.77 KB | 0644 |
|
adminattributes.php | File | 7.46 KB | 0644 |
|
admins.php | File | 5.16 KB | 0644 |
|
analytics.php | File | 2.84 KB | 0644 |
|
attributes.php | File | 26.2 KB | 0644 |
|
blacklistemail.php | File | 1.22 KB | 0644 |
|
bounce.php | File | 11.14 KB | 0644 |
|
bouncemgt.php | File | 1.44 KB | 0644 |
|
bouncerule.php | File | 4.27 KB | 0644 |
|
bouncerules.php | File | 6.33 KB | 0644 |
|
bounces.php | File | 7.57 KB | 0644 |
|
catlists.php | File | 3.34 KB | 0644 |
|
checkbouncerules.php | File | 1.43 KB | 0644 |
|
checki18n.php | File | 3.13 KB | 0644 |
|
checkprerequisites.php | File | 1.62 KB | 0644 |
|
class.image.inc | File | 3.9 KB | 0644 |
|
class.phplistmailer.php | File | 30.73 KB | 0644 |
|
class.phplistmailerbase.php | File | 1.67 KB | 0644 |
|
community.php | File | 3.5 KB | 0644 |
|
communityfeed.php | File | 2.36 KB | 0644 |
|
configure.php | File | 7.85 KB | 0644 |
|
connect.php | File | 89.86 KB | 0644 |
|
convertstats.php | File | 5.83 KB | 0644 |
|
converttoutf8.php | File | 3.78 KB | 0644 |
|
cron.php | File | 3.34 KB | 0644 |
|
date.php | File | 7.65 KB | 0644 |
|
dbcheck.php | File | 3.7 KB | 0644 |
|
defaultFrontendTexts.php | File | 9.79 KB | 0644 |
|
defaultconfig.php | File | 30.66 KB | 0644 |
|
defaultplugin.php | File | 31.59 KB | 0644 |
|
defaults.php | File | 3.64 KB | 0644 |
|
defaultsystemtemplate.php | File | 15.29 KB | 0644 |
|
defaulttest.php | File | 1.23 KB | 0644 |
|
dlusers.php | File | 235 B | 0644 |
|
domainbounces.php | File | 507 B | 0644 |
|
domainstats.php | File | 371 B | 0644 |
|
editattributes.php | File | 8.78 KB | 0644 |
|
editlist.php | File | 7.4 KB | 0644 |
|
eventlog.php | File | 4.68 KB | 0644 |
|
export.php | File | 6.86 KB | 0644 |
|
exportuserdata.php | File | 8.26 KB | 0644 |
|
fckphplist.php | File | 49.84 KB | 0644 |
|
gchart.php | File | 903 B | 0644 |
|
generatebouncerules.php | File | 5.51 KB | 0644 |
|
home.php | File | 6.56 KB | 0644 |
|
hostedprocessqueuesetup.php | File | 3.09 KB | 0644 |
|
htaccess | File | 311 B | 0644 |
|
image.php | File | 2.01 KB | 0644 |
|
import.php | File | 2.75 KB | 0644 |
|
import1.php | File | 11.09 KB | 0644 |
|
import2.php | File | 34.16 KB | 0644 |
|
import3.php | File | 22.72 KB | 0644 |
|
import4.php | File | 16.86 KB | 0644 |
|
importadmin.php | File | 17.08 KB | 0644 |
|
importsimple.php | File | 7.32 KB | 0644 |
|
index.php | File | 32.82 KB | 0644 |
|
info.php | File | 1.07 KB | 0644 |
|
init.php | File | 27.36 KB | 0644 |
|
initialise.php | File | 12.05 KB | 0644 |
|
initlanguages.php | File | 867 B | 0644 |
|
languages.php | File | 21.37 KB | 0644 |
|
lib.php | File | 86.79 KB | 0644 |
|
list.php | File | 11.32 KB | 0644 |
|
listbounces.php | File | 4.13 KB | 0644 |
|
login.php | File | 6.39 KB | 0644 |
|
logout.php | File | 865 B | 0644 |
|
massremove.php | File | 2.55 KB | 0644 |
|
mclicks.php | File | 7.28 KB | 0644 |
|
members.php | File | 19.99 KB | 0644 |
|
mergeduplicates.php | File | 4.48 KB | 0644 |
|
message.php | File | 9.08 KB | 0644 |
|
messages.php | File | 26.27 KB | 0644 |
|
minify.txt | File | 201 B | 0644 |
|
msgbounces.php | File | 3.4 KB | 0644 |
|
msgstatus.php | File | 1.27 KB | 0644 |
|
mviews.php | File | 6.27 KB | 0644 |
|
mysql.inc | File | 40 B | 0644 |
|
mysqli.inc | File | 14.02 KB | 0644 |
|
pageaction.php | File | 1.11 KB | 0644 |
|
phpListAdminAuthentication.php | File | 6.82 KB | 0644 |
|
pluginlib.php | File | 9.43 KB | 0644 |
|
plugins.php | File | 17.78 KB | 0644 |
|
preparesend.php | File | 669 B | 0644 |
|
processbounces.php | File | 35.36 KB | 0644 |
|
processqueue.php | File | 3.71 KB | 0644 |
|
readtestmail.php | File | 11.59 KB | 0644 |
|
reconcileusers.php | File | 27.71 KB | 0644 |
|
redirecttoupdater.php | File | 187 B | 0644 |
|
reindex.php | File | 1.82 KB | 0644 |
|
rsslib.php | File | 3.17 KB | 0644 |
|
runcommand.php | File | 583 B | 0644 |
|
send.php | File | 6.17 KB | 0644 |
|
send_core.php | File | 63.91 KB | 0644 |
|
sendemaillib.php | File | 69.84 KB | 0644 |
|
sendprepared.php | File | 4.87 KB | 0644 |
|
sessionlib.php | File | 2.7 KB | 0644 |
|
setpermissions.php | File | 2.08 KB | 0644 |
|
setup.php | File | 2.56 KB | 0644 |
|
spage.php | File | 4.35 KB | 0644 |
|
spageedit.php | File | 19.08 KB | 0644 |
|
statsmgt.php | File | 1.23 KB | 0644 |
|
statsoverview.php | File | 6.19 KB | 0644 |
|
stresstest.php | File | 4.82 KB | 0644 |
|
structure.php | File | 29.21 KB | 0644 |
|
subscribelib2.php | File | 70.22 KB | 0644 |
|
subscriberstats.php | File | 617 B | 0644 |
|
suppressionlist.php | File | 1.71 KB | 0644 |
|
system.php | File | 795 B | 0644 |
|
systemstats.php | File | 5.73 KB | 0644 |
|
template.php | File | 16.4 KB | 0644 |
|
templates.php | File | 3.01 KB | 0644 |
|
tests.php | File | 1.67 KB | 0644 |
|
uclicks.php | File | 6.74 KB | 0644 |
|
update.php | File | 187 B | 0644 |
|
updateLib.php | File | 2.2 KB | 0644 |
|
updatetlds.php | File | 358 B | 0644 |
|
updatetranslation.php | File | 2.51 KB | 0644 |
|
upgrade.php | File | 23.82 KB | 0644 |
|
user.php | File | 23.08 KB | 0644 |
|
usercheck.php | File | 2.55 KB | 0644 |
|
userclicks.php | File | 11.57 KB | 0644 |
|
userhistory.php | File | 8.25 KB | 0644 |
|
usermgt.php | File | 1.9 KB | 0644 |
|
users.php | File | 19.3 KB | 0644 |
|
vCard.php | File | 1.9 KB | 0644 |
|
viewmessage.php | File | 635 B | 0644 |
|
viewtemplate.php | File | 1.86 KB | 0644 |
|
vote.php | File | 38 B | 0644 |
|