' .
sprintf(
__('You can use wildcards %s') ,
'%year%, %module_id%, %module_name%, %module_author%, %module_type%, %user_cn%, %user_name%, %user_email%, %user_url%'
) . ' ' . __('Do not put structural elements to the begining of lines.') . '
' .
'
' . __('Exemple') .'
' . self::$exemple . '
';
}
public function openModule(): ?bool
{
$this->replaceInfo();
return null;
}
public function openDirectory(): ?bool
{
$skipped = $this->stop_scan;
$this->stop_scan = false;
if (!empty($this->getSetting('exclude_locales')) && preg_match('/\/(locales|libs)(\/.*?|)$/', $this->path_full)) {
if (!$skipped) {
$this->setWarning(__('Skip directory'));
}
$this->stop_scan = true;
}
return null;
}
public function readFile(&$content): ?bool
{
if ($this->stop_scan || $this->path_extension !='php' || $this->hasError()) {
return null;
}
if (!empty($this->getSetting('remove_old'))) {
$content = $this->deleteOldBloc($content);
}
if (empty($this->getSetting('bloc_action'))) {
return null;
}
$clean = $this->deleteDocBloc($content);
if ($this->getSetting('bloc_action') == 'remove') {
$content = $clean;
return null;
}
if ($content != $clean && $this->getSetting('bloc_action') == 'create') {
return null;
}
if ($content == $clean && $this->getSetting('bloc_action') == 'replace') {
return null;
}
$content = $this->writeDocBloc($clean);
return true;
}
private function replaceInfo()
{
$bloc = trim($this->getSetting('bloc_content'));
if (empty($bloc)) {
self::notice(__('bloc is empty'), false);
return null;
}
$bloc = trim(str_replace("\r\n", "\n", $bloc));
try {
$this->bloc = preg_replace_callback(
// use \u in bloc content for first_upper_case
'/(\\\u([a-z]{1}))/',
function($str) { return ucfirst($str[2]); },
str_replace(
$this->bloc_wildcards,
[
date('Y'),
$this->module['id'],
$this->module['name'],
$this->module['author'],
$this->module['type'],
$this->core->auth->getInfo('user_cn'),
$this->core->auth->getinfo('user_name'),
$this->core->auth->getInfo('user_email'),
$this->core->auth->getInfo('user_url')
],
$bloc
)
);
$this->setSuccess(__('Prepare header info'));
} catch (Exception $e) {
$this->setError(__('Failed to parse bloc'));
return null;
}
}
private function writeDocBloc($content)
{
$res = preg_replace(
'/^(\<\?php[\n|\r\n]+)/',
'bloc)) . "\n */\n\n",
$content,
1,
$count
);
if ($count) {
$this->setSuccess(__('Write new doc bloc content'));
}
return $res;
}
private function deleteDocBloc($content)
{
$res = preg_replace(
'/^(\<\?php\s*[\n|\r\n]{0,1}\s*\/\*\*.*?\s*\*\/\s*[\n|\r\n]+)/msi',
"setSuccess(__('Delete old doc bloc content'));
}
return $res;
}
private function deleteOldBloc($content)
{
$res = preg_replace(
'/((# -- BEGIN LICENSE BLOCK ([-]+))(.*?)(# -- END LICENSE BLOCK ([-]+))([\n|\r\n]{1,}))/msi',
"",
$content,
-1,
$count
);
if ($count) {
$this->setSuccess(__('Delete old style bloc content'));
}
return $res;
}
}