LinkProtection/migrations/release_1_0_0.php

108 lines
3.9 KiB
PHP
Executable file

<?php
namespace pedodev\linkprotection\migrations;
class release_1_0_0 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return isset($this->config['pedodev_linkprotection']);
}
static public function depends_on()
{
return ['\phpbb\db\migration\data\v330\v330'];
}
public function update_data()
{
// openssl_cipher_key_length requires PHP >= 8.2
if (function_exists('openssl_cipher_key_length'))
{
$key_length = openssl_cipher_key_length('aes-128-cbc');
}
else
{
$key_length = 16;
}
$random_key = base64_encode(random_bytes($key_length));
return [
// A simple config variable so we know the migration is already completed
['config.add', ['pedodev_linkprotection', 1]],
/* Add the ACP modules */
['module.add', [
'acp',
'ACP_CAT_DOT_MODS',
'ACP_LINKPROTECTION_TITLE'
]],
['module.add', [
'acp',
'ACP_LINKPROTECTION_TITLE',
[
'module_basename' => '\pedodev\linkprotection\acp\link_replacement_module',
'modes' => ['settings'],
],
]],
['module.add', [
'acp',
'ACP_LINKPROTECTION_TITLE',
[
'module_basename' => '\pedodev\linkprotection\acp\protected_page_module',
'modes' => ['settings'],
],
]],
/* Add our configuration variables (with sane defaults) */
// Link replacement
['config.add', ['pedodev_linkprotection_maxlinks', 100]],
['config.add', ['pedodev_linkprotection_key', $random_key]],
['config.add', ['pedodev_linkprotection_cipher', 'aes-128-cbc']],
['config.add', ['pedodev_linkprotection_manualenabled', 1]],
['config.add', ['pedodev_linkprotection_manualtitle', 'Protected']],
['config.add', ['pedodev_linkprotection_strictmanual', 0]],
['config.add', ['pedodev_linkprotection_manuallength', 255]],
['config.add', ['pedodev_linkprotection_manualtags', 'dl,download']],
['config.add', ['pedodev_linkprotection_automaticenabled', 1]],
['config.add', ['pedodev_linkprotection_automaticlength', 255]],
['config.add', ['pedodev_linkprotection_automaticlinks', '{"1fichier.com":"1fichier"}']],
// Protected link page
['config.add', ['pedodev_linkprotection_protectedprefix', 'protected']],
['config.add', ['pedodev_linkprotection_captcha', 'core.captcha.plugins.nogd']],
['config.add', ['pedodev_linkprotection_solvetime', 60]],
['config.add', ['pedodev_linkprotection_showsubmit', 1]],
['config.add', ['pedodev_linkprotection_multiplelinks', 1]],
['config.add', ['pedodev_linkprotection_solveduration', 120]],
['config.add', ['pedodev_linkprotection_grouplinks', '']],
/* Configure our permissions and setup sane defaults for roles*/
['permission.add', ['u_pedodev_linkprotection_canprotectlinks']],
['permission.permission_set', ['ROLE_USER_LIMITED', 'u_pedodev_linkprotection_canprotectlinks']],
['permission.permission_set', ['ROLE_USER_STANDARD', 'u_pedodev_linkprotection_canprotectlinks']],
['permission.permission_set', ['ROLE_USER_FULL', 'u_pedodev_linkprotection_canprotectlinks']],
['permission.add', ['u_pedodev_linkprotection_canviewlinks']],
['permission.permission_set', ['ROLE_USER_LIMITED', 'u_pedodev_linkprotection_canviewlinks']],
['permission.permission_set', ['ROLE_USER_STANDARD', 'u_pedodev_linkprotection_canviewlinks']],
['permission.permission_set', ['ROLE_USER_FULL', 'u_pedodev_linkprotection_canviewlinks']],
['permission.add', ['m_pedodev_linkprotection_canbypasscaptcha']],
['permission.permission_set', ['ROLE_MOD_STANDARD', 'm_pedodev_linkprotection_canbypasscaptcha']],
['permission.permission_set', ['ROLE_MOD_FULL', 'm_pedodev_linkprotection_canbypasscaptcha']],
['permission.add', ['m_pedodev_linkprotection_vieworiginallinks']],
['permission.permission_set', ['ROLE_MOD_STANDARD', 'm_pedodev_linkprotection_vieworiginallinks']],
['permission.permission_set', ['ROLE_MOD_FULL', 'm_pedodev_linkprotection_vieworiginallinks']],
];
}
}