release 2022.11.20

master
Jean-Christian Paul Denis 2022-11-20 22:36:32 +01:00
parent 13ce9e52ad
commit 99fb9bad55
Signed by: JcDenis
GPG Key ID: 1B5B8C5B90B6C951
14 changed files with 297 additions and 337 deletions

View File

@ -1,3 +1,6 @@
2022.11.20
- fix compatibility with Dotclear 2.24 (required)
2021.09.10 2021.09.10
- clean up code - clean up code
- Tested for Dotclear 2.19 - Tested for Dotclear 2.19

View File

@ -1,5 +1,12 @@
# README # README
[![Release](https://img.shields.io/github/v/release/JcDenis/licenseBootstrap)](https://github.com/JcDenis/licenseBootstrap/releases)
[![Date](https://img.shields.io/github/release-date/JcDenis/licenseBootstrap)](https://github.com/JcDenis/licenseBootstrap/releases)
[![Issues](https://img.shields.io/github/issues/JcDenis/licenseBootstrap)](https://github.com/JcDenis/licenseBootstrap/issues)
[![Dotclear](https://img.shields.io/badge/dotclear-v2.24-blue.svg)](https://fr.dotclear.org/download)
[![Dotaddict](https://img.shields.io/badge/dotaddict-official-green.svg)](https://plugins.dotaddict.org/dc2/details/licenseBootstrap)
[![License](https://img.shields.io/github/license/JcDenis/licenseBootstrap)](https://github.com/JcDenis/licenseBootstrap/blob/master/LICENSE)
## WHAT IS LICENSEBOOTSTRAP ? ## WHAT IS LICENSEBOOTSTRAP ?
licenseBootstrap is a plugins for the open-source licenseBootstrap is a plugins for the open-source
@ -13,7 +20,7 @@ themes and plugins from Dotclear administration pages.
licenseBootstrap requires: licenseBootstrap requires:
* Super administrator permissions * Super administrator permissions
* Dotclear 2.6 * Dotclear 2.24
## USAGE ## USAGE
@ -26,8 +33,14 @@ go to ''configure plugin'', fill in form.
Once it's done you can manage your modules license from menu Once it's done you can manage your modules license from menu
''License bootstrap'' on sidebar or you can add dashboard icon. ''License bootstrap'' on sidebar or you can add dashboard icon.
## MORE ## LINKS
* License : GNU GPL v2 * License : [GNU GPL v2](https://www.gnu.org/licenses/old-licenses/lgpl-2.0.html)
* Source & contribution : [GitHub Page](https://github.com/licenseBootstrap) * Source & contribution : [GitHub Page](https://github.com/licenseBootstrap)
* Packages & details: [Dotaddict Page](https://plugins.dotaddict.org/dc2/details/licenseBootstrap) * Packages & details : [Dotaddict Page](https://plugins.dotaddict.org/dc2/details/licenseBootstrap)
## CONTRIBUTORS
* Jean-Christian Denis
You are welcome to contribute to this code.

View File

@ -10,22 +10,21 @@
* @copyright Jean-Christian Denis * @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/ */
if (!defined('DC_CONTEXT_ADMIN')) { if (!defined('DC_CONTEXT_ADMIN')) {
return null; return null;
} }
$core->blog->settings->addNamespace('licenseBootstrap'); dcCore::app()->blog->settings->addNamespace('licenseBootstrap');
$core->addBehavior('adminDashboardFavorites', [ dcCore::app()->addBehavior('adminDashboardFavoritesV2', [
'licenseBootstrapBehaviors', 'adminDashboardFavorites' 'licenseBootstrapBehaviors', 'adminDashboardFavorites',
]); ]);
$core->addBehavior('packmanBeforeCreatePackage', [ dcCore::app()->addBehavior('packmanBeforeCreatePackage', [
'licenseBootstrapBehaviors', 'packmanBeforeCreatePackage' 'licenseBootstrapBehaviors', 'packmanBeforeCreatePackage',
]); ]);
$_menu['Plugins']->addItem( dcCore::app()->menu[dcAdmin::MENU_PLUGINS]->addItem(
__('License bootstrap'), __('License bootstrap'),
'plugin.php?p=licenseBootstrap', 'plugin.php?p=licenseBootstrap',
'index.php?pf=licenseBootstrap/icon.png', 'index.php?pf=licenseBootstrap/icon.png',
@ -33,24 +32,24 @@ $_menu['Plugins']->addItem(
'/plugin.php\?p=licenseBootstrap(&.*)?$/', '/plugin.php\?p=licenseBootstrap(&.*)?$/',
$_SERVER['REQUEST_URI'] $_SERVER['REQUEST_URI']
), ),
$core->auth->isSuperAdmin() dcCore::app()->auth->isSuperAdmin()
); );
class licenseBootstrapBehaviors class licenseBootstrapBehaviors
{ {
public static function adminDashboardFavorites($core, $favs) public static function adminDashboardFavorites($favs)
{ {
$favs->register('licenseBootstrap', array( $favs->register('licenseBootstrap', [
'title' => __('License bootstrap'), 'title' => __('License bootstrap'),
'url' => 'plugin.php?p=licenseBootstrap', 'url' => 'plugin.php?p=licenseBootstrap',
'small-icon' => 'index.php?pf=licenseBootstrap/icon.png', 'small-icon' => 'index.php?pf=licenseBootstrap/icon.png',
'large-icon' => 'index.php?pf=licenseBootstrap/icon-big.png', 'large-icon' => 'index.php?pf=licenseBootstrap/icon-big.png',
'permissions' => $core->auth->isSuperAdmin(), 'permissions' => dcCore::app()->auth->isSuperAdmin(),
'active_cb' => array( 'active_cb' => [
'licenseBootstrapBehaviors', 'licenseBootstrapBehaviors',
'adminDashboardFavoritesActive' 'adminDashboardFavoritesActive',
) ],
)); ]);
} }
public static function adminDashboardFavoritesActive($request, $params) public static function adminDashboardFavoritesActive($request, $params)
@ -60,8 +59,8 @@ class licenseBootstrapBehaviors
&& $params['p'] == 'licenseBootstrap'; && $params['p'] == 'licenseBootstrap';
} }
public static function packmanBeforeCreatePackage($core, $module) public static function packmanBeforeCreatePackage($module)
{ {
licenseBootstrap::addLicense($core, $module); licenseBootstrap::addLicense($module);
} }
} }

View File

@ -10,29 +10,27 @@
* @copyright Jean-Christian Denis * @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/ */
if (!defined('DC_CONTEXT_MODULE')) { if (!defined('DC_CONTEXT_MODULE')) {
return null; return null;
} }
$redir = empty($_REQUEST['redir']) ? $redir = empty($_REQUEST['redir']) ?
$list->getURL() . '#plugins' : $_REQUEST['redir']; dcCore::app()->admin->list->getURL() . '#plugins' : $_REQUEST['redir'];
# -- Get settings -- # -- Get settings --
$core->blog->settings->addNamespace('licenseBootstrap'); dcCore::app()->blog->settings->addNamespace('licenseBootstrap');
$s = $core->blog->settings->licenseBootstrap; $s = dcCore::app()->blog->settings->licenseBootstrap;
$lb_overwrite = (boolean) $s->overwrite; $lb_overwrite = (bool) $s->overwrite;
$lb_write_full = (boolean) $s->write_full; $lb_write_full = (bool) $s->write_full;
$lb_write_php = (boolean) $s->write_php; $lb_write_php = (bool) $s->write_php;
$lb_write_js = (boolean) $s->write_js; $lb_write_js = (bool) $s->write_js;
$lb_exclude_locales = (boolean) $s->exclude_locales; $lb_exclude_locales = (bool) $s->exclude_locales;
$lb_license_name = licenseBootstrap::getName($s->license_name); $lb_license_name = licenseBootstrap::getName($s->license_name);
$lb_license_head = licenseBootstrap::gethead($s->license_name, licenseBootstrap::decode($s->license_head)); $lb_license_head = licenseBootstrap::gethead($s->license_name, licenseBootstrap::decode($s->license_head));
# -- Set settings -- # -- Set settings --
if (!empty($_POST['save'])) { if (!empty($_POST['save'])) {
try { try {
$lb_overwrite = !empty($_POST['lb_overwrite']); $lb_overwrite = !empty($_POST['lb_overwrite']);
$lb_write_full = !empty($_POST['lb_write_full']); $lb_write_full = !empty($_POST['lb_write_full']);
@ -42,24 +40,23 @@ if (!empty($_POST['save'])) {
$lb_license_name = $_POST['lb_license_name']; $lb_license_name = $_POST['lb_license_name'];
$lb_license_head = licenseBootstrap::gethead($lb_license_name, !empty($_POST['lb_license_head_' . $lb_license_name]) ? $_POST['lb_license_head_' . $lb_license_name] : ''); $lb_license_head = licenseBootstrap::gethead($lb_license_name, !empty($_POST['lb_license_head_' . $lb_license_name]) ? $_POST['lb_license_head_' . $lb_license_name] : '');
$s->put('overwrite', $lb_overwrite); $s->put('overwrite', $lb_overwrite);
$s->put('write_full', $lb_write_full); $s->put('write_full', $lb_write_full);
$s->put('write_php', $lb_write_php); $s->put('write_php', $lb_write_php);
$s->put('write_js', $lb_write_js); $s->put('write_js', $lb_write_js);
$s->put('exclude_locales', $lb_exclude_locales); $s->put('exclude_locales', $lb_exclude_locales);
$s->put('license_name', licenseBootstrap::getName($lb_license_name)); $s->put('license_name', licenseBootstrap::getName($lb_license_name));
$s->put('license_head', licenseBootstrap::encode($lb_license_head)); $s->put('license_head', licenseBootstrap::encode($lb_license_head));
dcPage::addSuccessNotice( dcPage::addSuccessNotice(
__('Configuration has been successfully updated.') __('Configuration has been successfully updated.')
); );
http::redirect( http::redirect(
$list->getURL('module=licenseBootstrap&conf=1&redir='. dcCore::app()->admin->list->getURL('module=licenseBootstrap&conf=1&redir=' .
$list->getRedir()) dcCore::app()->admin->list->getRedir())
); );
} } catch (Exception $e) {
catch (Exception $e) { dcCore::app()->error->add($e->getMessage());
$core->error->add($e->getMessage());
} }
} }
@ -74,7 +71,7 @@ __('Overwrite existing licenses') .
'</label></p> '</label></p>
<p><label class="classic" for="lb_write_full">' . <p><label class="classic" for="lb_write_full">' .
form::checkbox('lb_write_full', 1, $lb_write_full) .' ' . form::checkbox('lb_write_full', 1, $lb_write_full) . ' ' .
__('Add full LICENSE file to module root') . __('Add full LICENSE file to module root') .
'</label></p> '</label></p>
@ -98,17 +95,16 @@ __('Do not add license block to files from locales folder') .
<div class="fieldset"> <div class="fieldset">
<h4>' . __('Licenses') . '</h4>'; <h4>' . __('Licenses') . '</h4>';
foreach(licenseBootstrap::getLicenses() as $name) { foreach (licenseBootstrap::getLicenses() as $name) {
$check = false; $check = false;
$head = licenseBootstrap::getHead($name); $head = licenseBootstrap::getHead($name);
if ($name == $lb_license_name) { if ($name == $lb_license_name) {
$check = true; $check = true;
$head = licenseBootstrap::getHead($name, $lb_license_head); $head = licenseBootstrap::getHead($name, $lb_license_head);
} }
echo ' echo '
<p><label class="classic" for="license_' . $name . '">' . <p><label class="classic" for="license_' . $name . '">' .
form::radio(array('lb_license_name', 'license_' . $name), $name, $check) . ' ' . form::radio(['lb_license_name', 'license_' . $name], $name, $check) . ' ' .
sprintf(__('License %s:'), $name) . '</label></p> sprintf(__('License %s:'), $name) . '</label></p>
<p class="area">' . <p class="area">' .
form::textarea('lb_license_head_' . $name, 50, 10, html::escapeHTML($head)) . ' form::textarea('lb_license_head_' . $name, 50, 10, html::escapeHTML($head)) . '

View File

@ -10,7 +10,6 @@
* @copyright Jean-Christian Denis * @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/ */
if (!defined('DC_RC_PATH')) { if (!defined('DC_RC_PATH')) {
return null; return null;
} }
@ -19,13 +18,13 @@ $this->registerModule(
'License bootstrap', 'License bootstrap',
'Add license to your plugins and themes', 'Add license to your plugins and themes',
'Jean-Christian Denis', 'Jean-Christian Denis',
'2021.09.10', '2022.11.20',
[ [
'requires' => [['core', '2.19']], 'requires' => [['core', '2.24']],
'permissions' => null, 'permissions' => null,
'type' => 'plugin', 'type' => 'plugin',
'support' => 'https://github.com/JcDenis/licenseBootstrap', 'support' => 'https://github.com/JcDenis/licenseBootstrap',
'details' => 'https://plugins.dotaddict.org/dc2/details/licenseBootstrap', 'details' => 'https://plugins.dotaddict.org/dc2/details/licenseBootstrap',
'repository' => 'https://raw.githubusercontent.com/JcDenis/licenseBootstrap/master/dcstore.xml' 'repository' => 'https://raw.githubusercontent.com/JcDenis/licenseBootstrap/master/dcstore.xml',
] ]
); );

View File

@ -10,79 +10,76 @@
* @copyright Jean-Christian Denis * @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/ */
if (!defined('DC_CONTEXT_ADMIN')) { if (!defined('DC_CONTEXT_ADMIN')) {
return null; return null;
} }
# -- Module specs -- # -- Module specs --
$dc_min = '2.6'; $dc_min = '2.24';
$mod_id = 'licenseBootstrap'; $mod_id = 'licenseBootstrap';
$mod_conf = array( $mod_conf = [
array( [
'overwrite', 'overwrite',
'Overwrite existing licence', 'Overwrite existing licence',
false, false,
'boolean' 'boolean',
), ],
array( [
'write_full', 'write_full',
'Add complete licence file', 'Add complete licence file',
true, true,
'boolean' 'boolean',
), ],
array( [
'write_php', 'write_php',
'Write license into php files', 'Write license into php files',
true, true,
'boolean' 'boolean',
), ],
array( [
'write_js', 'write_js',
'Write license into js files', 'Write license into js files',
false, false,
'boolean' 'boolean',
), ],
array( [
'exclude_locales', 'exclude_locales',
'Exclude locales from license', 'Exclude locales from license',
true, true,
'boolean' 'boolean',
), ],
array( [
'license_name', 'license_name',
'License short name', 'License short name',
'gpl2', 'gpl2',
'string' 'string',
), ],
array( [
'license_head', 'license_head',
'File header licence text', 'File header licence text',
licenseBootstrap::encode( licenseBootstrap::encode(
licenseBootstrap::getHead('gpl2') licenseBootstrap::getHead('gpl2')
), ),
'string' 'string',
), ],
array( [
'behavior_packman', 'behavior_packman',
'Add LicenceBootstrap to plugin pacKman', 'Add LicenceBootstrap to plugin pacKman',
false, false,
'boolean' 'boolean',
) ],
); ];
# -- Nothing to change below -- # -- Nothing to change below --
try { try {
# Check module version # Check module version
if (version_compare( if (version_compare(
$core->getVersion($mod_id), dcCore::app()->getVersion($mod_id),
$core->plugins->moduleInfo($mod_id, 'version'), dcCore::app()->plugins->moduleInfo($mod_id, 'version'),
'>=' '>='
)) { )) {
return null; return null;
} }
@ -90,28 +87,34 @@ try {
if (!method_exists('dcUtils', 'versionsCompare') if (!method_exists('dcUtils', 'versionsCompare')
|| dcUtils::versionsCompare(DC_VERSION, $dc_min, '<', false)) { || dcUtils::versionsCompare(DC_VERSION, $dc_min, '<', false)) {
throw new Exception(sprintf( throw new Exception(sprintf(
'%s requires Dotclear %s', $mod_id, $dc_min '%s requires Dotclear %s',
$mod_id,
$dc_min
)); ));
} }
# Set module settings # Set module settings
$core->blog->settings->addNamespace($mod_id); dcCore::app()->blog->settings->addNamespace($mod_id);
foreach($mod_conf as $v) { foreach ($mod_conf as $v) {
$core->blog->settings->{$mod_id}->put( dcCore::app()->blog->settings->{$mod_id}->put(
$v[0], $v[2], $v[3], $v[1], false, true $v[0],
$v[2],
$v[3],
$v[1],
false,
true
); );
} }
# Set module version # Set module version
$core->setVersion( dcCore::app()->setVersion(
$mod_id, $mod_id,
$core->plugins->moduleInfo($mod_id, 'version') dcCore::app()->plugins->moduleInfo($mod_id, 'version')
); );
return true; return true;
} } catch (Exception $e) {
catch (Exception $e) { dcCore::app()->error->add($e->getMessage());
$core->error->add($e->getMessage());
return false; return false;
} }

View File

@ -10,12 +10,9 @@
* @copyright Jean-Christian Denis * @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/ */
if (!defined('DC_RC_PATH')) { if (!defined('DC_RC_PATH')) {
return null; return null;
} }
$d = dirname(__FILE__).'/inc/'; Clearbricks::lib()->autoload(['licenseBootstrap' => __DIR__ . '/inc/class.license.bootstrap.php']);
Clearbricks::lib()->autoload(['libLicenseBootstrap' => __DIR__ . '/inc/lib.license.bootstrap.php']);
$__autoload['licenseBootstrap'] = $d.'class.license.bootstrap.php';
$__autoload['libLicenseBootstrap'] = $d.'lib.license.bootstrap.php';

View File

@ -10,7 +10,6 @@
* @copyright Jean-Christian Denis * @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/ */
if (!defined('DC_CONTEXT_ADMIN')) { if (!defined('DC_CONTEXT_ADMIN')) {
return null; return null;
} }
@ -18,29 +17,45 @@ if (!defined('DC_CONTEXT_ADMIN')) {
$mod_id = 'pacKman'; $mod_id = 'pacKman';
$this->addUserAction( $this->addUserAction(
/* type */ 'settings', /* type */
/* action */ 'delete_all', 'settings',
/* ns */ $mod_id, /* action */
/* desc */ __('delete all settings') 'delete_all',
/* ns */
$mod_id,
/* desc */
__('delete all settings')
); );
$this->addUserAction( $this->addUserAction(
/* type */ 'plugins', /* type */
/* action */ 'delete', 'plugins',
/* ns */ $mod_id, /* action */
/* desc */ __('delete plugin files') 'delete',
/* ns */
$mod_id,
/* desc */
__('delete plugin files')
); );
$this->addDirectAction( $this->addDirectAction(
/* type */ 'settings', /* type */
/* action */ 'delete_all', 'settings',
/* ns */ $mod_id, /* action */
/* desc */ sprintf(__('delete all %s settings'), $mod_id) 'delete_all',
/* ns */
$mod_id,
/* desc */
sprintf(__('delete all %s settings'), $mod_id)
); );
$this->addDirectAction( $this->addDirectAction(
/* type */ 'plugins', /* type */
/* action */ 'delete', 'plugins',
/* ns */ $mod_id, /* action */
/* desc */ sprintf(__('delete %s plugin files'), $mod_id) 'delete',
/* ns */
$mod_id,
/* desc */
sprintf(__('delete %s plugin files'), $mod_id)
); );

View File

@ -1,12 +1,13 @@
<?xml version="1.0"?>
<modules xmlns:da="http://dotaddict.org/da/"> <modules xmlns:da="http://dotaddict.org/da/">
<module id="licenseBootstrap"> <module id="licenseBootstrap">
<name>License bootstrap</name> <name>License bootstrap</name>
<version>2021.09.10</version> <version>2022.11.20</version>
<author>Jean-Christian Denis</author> <author>Jean-Christian Denis</author>
<desc>Add license to your plugins and themes</desc> <desc>Add license to your plugins and themes</desc>
<file>https://github.com/JcDenis/licenseBootstrap/releases/download/v2021.09.10/plugin-licenseBootstrap.zip</file> <file>https://github.com/JcDenis/licenseBootstrap/releases/download/v2022.11.20/plugin-licenseBootstrap.zip</file>
<da:dcmin>2.19</da:dcmin> <da:dcmin>2.24</da:dcmin>
<da:details>https://plugins.dotaddict.org/dc2/details/licenseBootstrap</da:details> <da:details>https://plugins.dotaddict.org/dc2/details/licenseBootstrap</da:details>
<da:support>https://github.com/JcDenis/licenseBootstrap</da:support> <da:support>https://github.com/JcDenis/licenseBootstrap</da:support>
</module> </module>
</modules> </modules>

View File

@ -10,14 +10,13 @@
* @copyright Jean-Christian Denis * @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/ */
if (!defined('DC_CONTEXT_ADMIN')) { if (!defined('DC_CONTEXT_ADMIN')) {
return null; return null;
} }
class licenseBootstrap class licenseBootstrap
{ {
protected static $licenses = array(); protected static $licenses = [];
/** /**
* Add license to a module. * Add license to a module.
@ -25,17 +24,15 @@ class licenseBootstrap
* Note that you must check if module exists * Note that you must check if module exists
* before calling this method. * before calling this method.
* *
* @param object $core dcCore instance
* @param array $module Module info * @param array $module Module info
*/ */
public static function addLicense($core, $module) public static function addLicense($module)
{ {
$s = $core->blog->settings->licenseBootstrap; $s = dcCore::app()->blog->settings->licenseBootstrap;
# --BEHAVIOR-- licenseBootstrapBeforeAddLicense # --BEHAVIOR-- licenseBootstrapBeforeAddLicense
$core->callBehavior( dcCore::app()->callBehavior(
'licenseBootstrapBeforeAddLicense', 'licenseBootstrapBeforeAddLicense',
$core,
$module $module
); );
@ -50,7 +47,7 @@ class licenseBootstrap
$s->license_name, $s->license_name,
licenseBootstrap::decode($s->license_head), licenseBootstrap::decode($s->license_head),
$module, $module,
$core->auth, dcCore::app()->auth,
$s->overwrite, $s->overwrite,
$s->write_php, $s->write_php,
$s->write_js, $s->write_js,
@ -58,9 +55,8 @@ class licenseBootstrap
); );
# --BEHAVIOR-- licenseBootstrapAfterAddLicense # --BEHAVIOR-- licenseBootstrapAfterAddLicense
$core->callBehavior( dcCore::app()->callBehavior(
'licenseBootstrapAfterAddLicense', 'licenseBootstrapAfterAddLicense',
$core,
$module $module
); );
} }
@ -74,7 +70,7 @@ class licenseBootstrap
{ {
if (empty(licenseBootstrap::$licenses)) { if (empty(licenseBootstrap::$licenses)) {
$file_reg = '/^([a-z0-9]+)\.head\.txt$/'; $file_reg = '/^([a-z0-9]+)\.head\.txt$/';
$res = array(); $res = [];
foreach (files::scandir(dirname(__FILE__) . '/licenses/') as $file) { foreach (files::scandir(dirname(__FILE__) . '/licenses/') as $file) {
if (preg_match($file_reg, $file, $matches)) { if (preg_match($file_reg, $file, $matches)) {
$res[] = $matches[1]; $res[] = $matches[1];
@ -94,7 +90,7 @@ class licenseBootstrap
* @param string $name License name * @param string $name License name
* @return string License name * @return string License name
*/ */
public static function getName($name='gpl2') public static function getName($name = 'gpl2')
{ {
return in_array($name, self::getLicenses()) ? $name : 'gpl2'; return in_array($name, self::getLicenses()) ? $name : 'gpl2';
} }
@ -106,10 +102,10 @@ class licenseBootstrap
* @param string $content Header content * @param string $content Header content
* @return string Header content * @return string Header content
*/ */
public static function getHead($name='gpl2', $content='') public static function getHead($name = 'gpl2', $content = '')
{ {
if (!in_array($name, self::getLicenses())) { if (!in_array($name, self::getLicenses())) {
$name = 'gpl2'; $name = 'gpl2';
$content = ''; $content = '';
} }
@ -123,7 +119,7 @@ class licenseBootstrap
* @param string $name License name * @param string $name License name
* @return string Full license content * @return string Full license content
*/ */
public static function getFull($name='gpl2') public static function getFull($name = 'gpl2')
{ {
return self::getContent($name, 'full'); return self::getContent($name, 'full');
} }
@ -135,12 +131,12 @@ class licenseBootstrap
* @param string $part License part (head or full) * @param string $part License part (head or full)
* @return string License content * @return string License content
*/ */
public static function getContent($name='gpl2', $part='head') public static function getContent($name = 'gpl2', $part = 'head')
{ {
if (!in_array($name, self::getLicenses())) { if (!in_array($name, self::getLicenses())) {
$name = 'gpl2'; $name = 'gpl2';
} }
if (!in_array($part, array('head', 'full'))) { if (!in_array($part, ['head', 'full'])) {
$part = 'head'; $part = 'head';
} }
@ -173,13 +169,12 @@ class licenseBootstrap
$user $user
); );
foreach(self::getModuleFiles($module['root']) as $file) { foreach (self::getModuleFiles($module['root']) as $file) {
if ($locales && preg_match('/(\.lang\.php|libs)/', $file)) { if ($locales && preg_match('/(\.lang\.php|libs)/', $file)) {
continue; continue;
} }
$path = $module['root'] . '/' . $file; $path = $module['root'] . '/' . $file;
$extension = files::getExtension($file); $extension = files::getExtension($file);
if ($php && $extension == 'php') { if ($php && $extension == 'php') {
@ -191,8 +186,7 @@ class licenseBootstrap
$overwrite $overwrite
) )
); );
} } elseif ($js && $extension == 'js') {
elseif ($js && $extension == 'js') {
file_put_contents( file_put_contents(
$file, $file,
self::replaceJsContent( self::replaceJsContent(
@ -218,7 +212,6 @@ class licenseBootstrap
throw new Exception(); throw new Exception();
} }
if (file_exists($module['root'] . '/LICENSE') && !$overwrite) { if (file_exists($module['root'] . '/LICENSE') && !$overwrite) {
return null; return null;
} }
@ -246,7 +239,6 @@ class licenseBootstrap
); );
if ($clean != $content && !$overwrite) { if ($clean != $content && !$overwrite) {
return $content; return $content;
} }
@ -255,7 +247,7 @@ class licenseBootstrap
'<?php' . '<?php' .
"\r\n# -- BEGIN LICENSE BLOCK ----------------------------------\r\n" . "\r\n# -- BEGIN LICENSE BLOCK ----------------------------------\r\n" .
"#\r\n" . "#\r\n" .
'# ' . str_replace("\n", "\n# ", trim($license)). '# ' . str_replace("\n", "\n# ", trim($license)) .
"\r\n#" . "\r\n#" .
"\r\n# -- END LICENSE BLOCK ------------------------------------\r\n", "\r\n# -- END LICENSE BLOCK ------------------------------------\r\n",
$clean, $clean,
@ -281,14 +273,13 @@ class licenseBootstrap
); );
if ($clean != $content && !$overwrite) { if ($clean != $content && !$overwrite) {
return $content; return $content;
} }
return return
"/* -- BEGIN LICENSE BLOCK ----------------------------------\r\n" . "/* -- BEGIN LICENSE BLOCK ----------------------------------\r\n" .
" *\r\n" . " *\r\n" .
' * ' . str_replace("\n", "\n * ", trim($license)). ' * ' . str_replace("\n", "\n * ", trim($license)) .
"\r\n *" . "\r\n *" .
"\r\n * -- END LICENSE BLOCK ------------------------------------*/\r\n\r\n" . "\r\n * -- END LICENSE BLOCK ------------------------------------*/\r\n\r\n" .
$clean; $clean;
@ -305,7 +296,7 @@ class licenseBootstrap
protected static function replaceInfo($content, $module, $user) protected static function replaceInfo($content, $module, $user)
{ {
return str_replace( return str_replace(
array( [
'%year%', '%year%',
'%module_id%', '%module_id%',
'%module_name%', '%module_name%',
@ -314,9 +305,9 @@ class licenseBootstrap
'%user_cn%', '%user_cn%',
'%user_name%', '%user_name%',
'%user_email%', '%user_email%',
'%user_url%' '%user_url%',
), ],
array( [
date('Y'), date('Y'),
$module['id'], $module['id'],
$module['name'], $module['name'],
@ -325,8 +316,8 @@ class licenseBootstrap
$user->getInfo('user_cn'), $user->getInfo('user_cn'),
$user->getinfo('user_name'), $user->getinfo('user_name'),
$user->getInfo('user_email'), $user->getInfo('user_email'),
$user->getInfo('user_url') $user->getInfo('user_url'),
), ],
$content $content
); );
} }
@ -339,12 +330,11 @@ class licenseBootstrap
* @param array $res Ignore * @param array $res Ignore
* @return array List of files * @return array List of files
*/ */
protected static function getModuleFiles($path, $dir='', $res=array()) protected static function getModuleFiles($path, $dir = '', $res = [])
{ {
$path = path::real($path); $path = path::real($path);
if (!is_dir($path) || !is_readable($path)) { if (!is_dir($path) || !is_readable($path)) {
return [];
return array();
} }
if (!$dir) { if (!$dir) {
@ -353,18 +343,18 @@ class licenseBootstrap
$files = files::scandir($path); $files = files::scandir($path);
foreach($files AS $file) { foreach ($files as $file) {
if (substr($file, 0, 1) == '.') { if (substr($file, 0, 1) == '.') {
continue; continue;
} }
if (is_dir($path . '/' . $file)) { if (is_dir($path . '/' . $file)) {
$res = self::getModuleFiles( $res = self::getModuleFiles(
$path . '/' . $file, $dir . '/' . $file, $path . '/' . $file,
$dir . '/' . $file,
$res $res
); );
} } else {
else {
$res[] = empty($dir) ? $file : $dir . '/' . $file; $res[] = empty($dir) ? $file : $dir . '/' . $file;
} }
} }

View File

@ -10,15 +10,13 @@
* @copyright Jean-Christian Denis * @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/ */
if (!defined('DC_CONTEXT_ADMIN')) { if (!defined('DC_CONTEXT_ADMIN')) {
return null; return null;
} }
class libLicenseBootstrap class libLicenseBootstrap
{ {
public static function modules($modules, $type, $title)
public static function modules($core, $modules, $type, $title)
{ {
$type = $type == 'themes' ? 'themes' : 'plugins'; $type = $type == 'themes' ? 'themes' : 'plugins';
@ -38,7 +36,7 @@ class libLicenseBootstrap
echo echo
'<form action="plugin.php" method="post">' . '<form action="plugin.php" method="post">' .
'<table class="clear"><tr>' . '<table class="clear"><tr>' .
'<th class="nowrap">' . __('Id') .'</th>' . '<th class="nowrap">' . __('Id') . '</th>' .
'<th class="nowrap">' . __('Version') . '</th>' . '<th class="nowrap">' . __('Version') . '</th>' .
'<th class="nowrap maximal">' . __('Name') . '</th>' . '<th class="nowrap maximal">' . __('Name') . '</th>' .
'<th class="nowrap">' . __('Root') . '</th>' . '<th class="nowrap">' . __('Root') . '</th>' .
@ -48,9 +46,9 @@ class libLicenseBootstrap
echo echo
'<tr class="line">' . '<tr class="line">' .
'<td class="nowrap"><label class="classic">' . '<td class="nowrap"><label class="classic">' .
form::checkbox(array('modules[' . html::escapeHTML($id) . ']'), 1) . form::checkbox(['modules[' . html::escapeHTML($id) . ']'], 1) .
html::escapeHTML($id) . html::escapeHTML($id) .
'</label></td>'. '</label></td>' .
'<td class="nowrap count">' . '<td class="nowrap count">' .
html::escapeHTML($module['version']) . html::escapeHTML($module['version']) .
'</td>' . '</td>' .
@ -67,18 +65,19 @@ class libLicenseBootstrap
'</table>' . '</table>' .
'<p class="checkboxes-helpers"></p>' . '<p class="checkboxes-helpers"></p>' .
'<p>' . '<p>' .
(!empty($_REQUEST['redir']) ? (
!empty($_REQUEST['redir']) ?
form::hidden( form::hidden(
array('redir'), ['redir'],
html::escapeHTML($_REQUEST['redir']) html::escapeHTML($_REQUEST['redir'])
) : '' ) : ''
). ) .
form::hidden(array('p'), 'licenseBootstrap') . form::hidden(['p'], 'licenseBootstrap') .
form::hidden(array('type'), $type) . form::hidden(['type'], $type) .
form::hidden(array('action'),'addlicense') . form::hidden(['action'], 'addlicense') .
'<input type="submit" name="addlicense" value="' . '<input type="submit" name="addlicense" value="' .
__('Add license to selected modules') . '" />' . __('Add license to selected modules') . '" />' .
$core->formNonce() . '</p>' . dcCore::app()->formNonce() . '</p>' .
'</form>' . '</form>' .
'</div>'; '</div>';
@ -86,8 +85,8 @@ class libLicenseBootstrap
protected static function sort($modules) protected static function sort($modules)
{ {
$sorter = array(); $sorter = [];
foreach($modules as $id => $module) { foreach ($modules as $id => $module) {
$sorter[$id] = $id; $sorter[$id] = $id;
} }
array_multisort($sorter, SORT_ASC, $modules); array_multisort($sorter, SORT_ASC, $modules);

View File

@ -10,7 +10,6 @@
* @copyright Jean-Christian Denis * @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/ */
if (!defined('DC_CONTEXT_ADMIN')) { if (!defined('DC_CONTEXT_ADMIN')) {
return null; return null;
} }
@ -18,59 +17,55 @@ if (!defined('DC_CONTEXT_ADMIN')) {
dcPage::checkSuper(); dcPage::checkSuper();
# Queries # Queries
$p_url = 'plugin.php?p=licenseBootstrap'; $p_url = 'plugin.php?p=licenseBootstrap';
$action = isset($_POST['action']) ? $_POST['action'] : ''; $action = $_POST['action'] ?? '';
$type = isset($_POST['type']) && in_array($_POST['type'], array('plugins', 'themes')) ? $_POST['type'] : ''; $type = isset($_POST['type']) && in_array($_POST['type'], ['plugins', 'themes']) ? $_POST['type'] : '';
# Settings # Settings
$core->blog->settings->addNamespace('licenseBootstrap'); dcCore::app()->blog->settings->addNamespace('licenseBootstrap');
$s = $core->blog->settings->licenseBootstrap; $s = dcCore::app()->blog->settings->licenseBootstrap;
# Modules # Modules
if (!isset($core->themes)) { if (!isset(dcCore::app()->themes)) {
$core->themes = new dcThemes($core); dcCore::app()->themes = new dcThemes();
$core->themes->loadModules($core->blog->themes_path, null); dcCore::app()->themes->loadModules(dcCore::app()->blog->themes_path, null);
} }
$themes = $core->themes; $themes = dcCore::app()->themes;
$plugins = $core->plugins; $plugins = dcCore::app()->plugins;
# Rights # Rights
$is_editable = $is_editable = !empty($type)
!empty($type)
&& !empty($_POST['modules']) && !empty($_POST['modules'])
&& is_array($_POST['modules']); && is_array($_POST['modules']);
# Actions # Actions
try try {
{
# Add license to modules # Add license to modules
if ($action == 'addlicense' && $is_editable) { if ($action == 'addlicense' && $is_editable) {
$modules = array_keys($_POST['modules']); $modules = array_keys($_POST['modules']);
foreach ($modules as $id) { foreach ($modules as $id) {
if (!${$type}->moduleExists($id)) { if (!${$type}->moduleExists($id)) {
throw new Exception('No such module'); throw new Exception('No such module');
} }
$module = ${$type}->getModules($id); $module = ${$type}->getModules($id);
$module['id'] = $id; $module['id'] = $id;
$module['type'] = $type == 'themes' ? 'theme' : 'plugin'; $module['type'] = $type == 'themes' ? 'theme' : 'plugin';
licenseBootstrap::addLicense($core, $module); licenseBootstrap::addLicense($module);
} }
dcPage::addSuccessNotice( dcAdminNotices::addSuccessNotice(
__('License successfully added.') __('License successfully added.')
); );
http::redirect(empty($_POST['redir']) ? http::redirect(
$p_url : $_POST['redir'] empty($_POST['redir']) ?
dcCore::app()->admin->getPageURL() : $_POST['redir']
); );
} }
} } catch(Exception $e) {
catch(Exception $e) { dcCore::app()->error->add($e->getMessage());
$core->error->add($e->getMessage());
} }
# Display # Display
@ -80,27 +75,25 @@ dcPage::jsPageTabs() .
dcPage::jsLoad('index.php?pf=licenseBootstrap/js/licensebootstrap.js') . dcPage::jsLoad('index.php?pf=licenseBootstrap/js/licensebootstrap.js') .
# --BEHAVIOR-- licenseBootstrapAdminHeader # --BEHAVIOR-- licenseBootstrapAdminHeader
$core->callBehavior('licenseBootstrapAdminHeader', $core) . dcCore::app()->callBehavior('licenseBootstrapAdminHeader') .
'</head><body>' . '</head><body>' .
dcPage::breadcrumb( dcPage::breadcrumb(
array( [
__('Plugins') => '', __('Plugins') => '',
__('License bootstrap') => '' __('License bootstrap') => '',
) ]
) . ) .
dcPage::notices(); dcPage::notices();
libLicenseBootstrap::modules( libLicenseBootstrap::modules(
$core,
$plugins->getModules(), $plugins->getModules(),
'plugins', 'plugins',
__('Installed plugins') __('Installed plugins')
); );
libLicenseBootstrap::modules( libLicenseBootstrap::modules(
$core,
$themes->getModules(), $themes->getModules(),
'themes', 'themes',
__('Installed themes') __('Installed themes')

View File

@ -1,48 +0,0 @@
<?php
// Language: Français
// Module: licenseBootstrap - 2013.10.25
// Date: 2013-10-28 10:27:46
// Translated with dcTranslater - 2013.05.11
#_config.php:56
$GLOBALS['__l10n']['Configuration has been successfully updated.'] = 'La configuration a été mise à jour avec succés.';
#_config.php:71
#_config.php:124
$GLOBALS['__l10n']['Files'] = 'Fichiers';
#_config.php:75
$GLOBALS['__l10n']['Overwrite existing licenses'] = 'Écraser les licences existantes';
#_config.php:80
$GLOBALS['__l10n']['Add full LICENSE file to module root'] = 'Ajouter le fichier de licence complet à la racine du module';
#_config.php:85
$GLOBALS['__l10n']['Add license block to PHP files'] = 'Ajouter le bloc de licence aux ficheirs PHP';
#_config.php:90
$GLOBALS['__l10n']['Add license block to JS files'] = 'Ajouter le bloc de licence aux ficheirs JS';
#_config.php:95
$GLOBALS['__l10n']['Do not add license block to files from locales folder'] = 'Ne pas ajouter la licence aux fichiers du dossier locales';
#_config.php:101
$GLOBALS['__l10n']['Licenses'] = 'Licences';
#_config.php:114
$GLOBALS['__l10n']['License %s:'] = 'Licence %s :';
#inc/lib.license.bootstrap.php:40
$GLOBALS['__l10n']['Id'] = 'Id';
#inc/lib.license.bootstrap.php:43
$GLOBALS['__l10n']['Root'] = 'Racine';
#inc/lib.license.bootstrap.php:79
$GLOBALS['__l10n']['Add license to selected modules'] = 'Ajouter la licence aux modules selectionner';
#index.php:67
$GLOBALS['__l10n']['License successfully added.'] = 'Licence ajouter avec succès';
#index.php:119
$GLOBALS['__l10n']['Configuration'] = 'Configuration';

View File

@ -1,4 +1,5 @@
<?php <?php
# -- BEGIN LICENSE BLOCK ---------------------------------- # -- BEGIN LICENSE BLOCK ----------------------------------
# #
# This file is part of licenseBootstrap, a plugin for Dotclear 2. # This file is part of licenseBootstrap, a plugin for Dotclear 2.
@ -12,10 +13,9 @@
# -- END LICENSE BLOCK ------------------------------------ # -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_RC_PATH')) { if (!defined('DC_RC_PATH')) {
return null; return null;
} }
if (!empty($_REQUEST['module']) && $_REQUEST['module'] == 'licenseBootstrap') { if (!empty($_REQUEST['module']) && $_REQUEST['module'] == 'licenseBootstrap') {
$__resources['help']['core_plugins_conf'] = dirname(__FILE__).'/help/help.html'; dcCore::app()->resources['help']['core_plugins_conf'] = __DIR__ . '/help/help.html';
} }