mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
[ticket/12273] Allow to filter events for extensions
PHPBB3-12273
This commit is contained in:
parent
bf8b9f0143
commit
ed669982c2
2 changed files with 51 additions and 23 deletions
|
@ -17,7 +17,10 @@ namespace phpbb\event;
|
||||||
*/
|
*/
|
||||||
class md_exporter
|
class md_exporter
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string Path where we look for files*/
|
||||||
|
protected $path;
|
||||||
|
|
||||||
|
/** @var string phpBB Root Path */
|
||||||
protected $root_path;
|
protected $root_path;
|
||||||
|
|
||||||
/** @var string */
|
/** @var string */
|
||||||
|
@ -51,15 +54,22 @@ class md_exporter
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $md_file
|
* @param string $md_file Relative from phpBB root
|
||||||
|
* @param mixed $extension String 'vendor/ext' to filter, null for phpBB core
|
||||||
* @return int Number of events found
|
* @return int Number of events found
|
||||||
* @throws \LogicException
|
* @throws \LogicException
|
||||||
*/
|
*/
|
||||||
public function crawl_phpbb_directory_adm($md_file)
|
public function crawl_phpbb_directory_adm($md_file, $extension = null)
|
||||||
{
|
{
|
||||||
$this->crawl_eventsmd($md_file, 'adm');
|
$this->path = $this->root_path;
|
||||||
|
if ($extension)
|
||||||
|
{
|
||||||
|
$this->path .= 'ext/' . $extension . '/';
|
||||||
|
}
|
||||||
|
|
||||||
$file_list = $this->get_recursive_file_list($this->root_path . 'adm/style/');
|
$this->crawl_eventsmd($md_file, 'adm', $extension);
|
||||||
|
|
||||||
|
$file_list = $this->get_recursive_file_list($this->path . 'adm/style/');
|
||||||
foreach ($file_list as $file)
|
foreach ($file_list as $file)
|
||||||
{
|
{
|
||||||
$file_name = 'adm/style/' . $file;
|
$file_name = 'adm/style/' . $file;
|
||||||
|
@ -70,19 +80,26 @@ class md_exporter
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $md_file
|
* @param string $md_file Relative from phpBB root
|
||||||
|
* @param mixed $extension String 'vendor/ext' to filter, null for phpBB core
|
||||||
* @return int Number of events found
|
* @return int Number of events found
|
||||||
* @throws \LogicException
|
* @throws \LogicException
|
||||||
*/
|
*/
|
||||||
public function crawl_phpbb_directory_styles($md_file)
|
public function crawl_phpbb_directory_styles($md_file, $extension = null)
|
||||||
{
|
{
|
||||||
$this->crawl_eventsmd($md_file, 'styles');
|
$this->path = $this->root_path;
|
||||||
|
if ($extension)
|
||||||
|
{
|
||||||
|
$this->path .= 'ext/' . $extension . '/';
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->crawl_eventsmd($md_file, 'styles', $extension);
|
||||||
|
|
||||||
$styles = array('prosilver', 'subsilver2');
|
$styles = array('prosilver', 'subsilver2');
|
||||||
foreach ($styles as $style)
|
foreach ($styles as $style)
|
||||||
{
|
{
|
||||||
$file_list = $this->get_recursive_file_list(
|
$file_list = $this->get_recursive_file_list(
|
||||||
$this->root_path . 'styles/' . $style . '/template/'
|
$this->path . 'styles/' . $style . '/template/'
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach ($file_list as $file)
|
foreach ($file_list as $file)
|
||||||
|
@ -96,12 +113,13 @@ class md_exporter
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $md_file
|
* @param string $md_file Relative from phpBB root
|
||||||
* @param string $filter
|
* @param string $filter Should be 'styles' or 'adm'
|
||||||
|
* @param mixed $extension String 'vendor/ext' to filter, null for phpBB core
|
||||||
* @return int Number of events found
|
* @return int Number of events found
|
||||||
* @throws \LogicException
|
* @throws \LogicException
|
||||||
*/
|
*/
|
||||||
public function crawl_eventsmd($md_file, $filter)
|
public function crawl_eventsmd($md_file, $filter, $extension = null)
|
||||||
{
|
{
|
||||||
$file_content = file_get_contents($this->root_path . $md_file);
|
$file_content = file_get_contents($this->root_path . $md_file);
|
||||||
$this->filter = $filter;
|
$this->filter = $filter;
|
||||||
|
@ -241,7 +259,7 @@ class md_exporter
|
||||||
$files = explode("\n + ", $file_details);
|
$files = explode("\n + ", $file_details);
|
||||||
foreach ($files as $file)
|
foreach ($files as $file)
|
||||||
{
|
{
|
||||||
if (!file_exists($this->root_path . $file))
|
if (!file_exists($this->path . $file))
|
||||||
{
|
{
|
||||||
throw new \LogicException("Invalid file '{$file}' not found for event '{$this->current_event}'", 1);
|
throw new \LogicException("Invalid file '{$file}' not found for event '{$this->current_event}'", 1);
|
||||||
}
|
}
|
||||||
|
@ -290,13 +308,13 @@ class md_exporter
|
||||||
*/
|
*/
|
||||||
public function crawl_file_for_events($file)
|
public function crawl_file_for_events($file)
|
||||||
{
|
{
|
||||||
if (!file_exists($this->root_path . $file))
|
if (!file_exists($this->path . $file))
|
||||||
{
|
{
|
||||||
throw new \LogicException("File '{$file}' does not exist", 1);
|
throw new \LogicException("File '{$file}' does not exist", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$event_list = array();
|
$event_list = array();
|
||||||
$file_content = file_get_contents($this->root_path . $file);
|
$file_content = file_get_contents($this->path . $file);
|
||||||
|
|
||||||
$events = explode('<!-- EVENT ', $file_content);
|
$events = explode('<!-- EVENT ', $file_content);
|
||||||
// Remove the code before the first event
|
// Remove the code before the first event
|
||||||
|
|
|
@ -17,7 +17,10 @@ namespace phpbb\event;
|
||||||
*/
|
*/
|
||||||
class php_exporter
|
class php_exporter
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string Path where we look for files*/
|
||||||
|
protected $path;
|
||||||
|
|
||||||
|
/** @var string phpBB Root Path */
|
||||||
protected $root_path;
|
protected $root_path;
|
||||||
|
|
||||||
/** @var string */
|
/** @var string */
|
||||||
|
@ -41,6 +44,7 @@ class php_exporter
|
||||||
public function __construct($phpbb_root_path)
|
public function __construct($phpbb_root_path)
|
||||||
{
|
{
|
||||||
$this->root_path = $phpbb_root_path;
|
$this->root_path = $phpbb_root_path;
|
||||||
|
$this->path = $phpbb_root_path;
|
||||||
$this->events = $this->file_lines = array();
|
$this->events = $this->file_lines = array();
|
||||||
$this->current_file = $this->current_event = '';
|
$this->current_file = $this->current_event = '';
|
||||||
$this->current_event_line = 0;
|
$this->current_event_line = 0;
|
||||||
|
@ -82,11 +86,18 @@ class php_exporter
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crawl the phpBB/ directory for php events
|
* Crawl the phpBB/ directory for php events
|
||||||
|
* @param mixed $extension String 'vendor/ext' to filter, null for phpBB core
|
||||||
* @return int The number of events found
|
* @return int The number of events found
|
||||||
*/
|
*/
|
||||||
public function crawl_phpbb_directory_php()
|
public function crawl_phpbb_directory_php($extension = null)
|
||||||
{
|
{
|
||||||
$files = $this->get_recursive_file_list($this->root_path);
|
$this->path = $this->root_path;
|
||||||
|
if ($extension)
|
||||||
|
{
|
||||||
|
$this->path .= 'ext/' . $extension . '/';
|
||||||
|
}
|
||||||
|
|
||||||
|
$files = $this->get_recursive_file_list();
|
||||||
$this->events = array();
|
$this->events = array();
|
||||||
foreach ($files as $file)
|
foreach ($files as $file)
|
||||||
{
|
{
|
||||||
|
@ -100,20 +111,19 @@ class php_exporter
|
||||||
/**
|
/**
|
||||||
* Returns a list of files in $dir
|
* Returns a list of files in $dir
|
||||||
*
|
*
|
||||||
* @param string $dir Directory to go through
|
|
||||||
* @return array List of files (including the path)
|
* @return array List of files (including the path)
|
||||||
*/
|
*/
|
||||||
public function get_recursive_file_list($dir)
|
public function get_recursive_file_list()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$iterator = new \RecursiveIteratorIterator(
|
$iterator = new \RecursiveIteratorIterator(
|
||||||
new \phpbb\event\recursive_event_filter_iterator(
|
new \phpbb\event\recursive_event_filter_iterator(
|
||||||
new \RecursiveDirectoryIterator(
|
new \RecursiveDirectoryIterator(
|
||||||
$dir,
|
$this->path,
|
||||||
\FilesystemIterator::SKIP_DOTS
|
\FilesystemIterator::SKIP_DOTS
|
||||||
),
|
),
|
||||||
$dir
|
$this->path
|
||||||
),
|
),
|
||||||
\RecursiveIteratorIterator::LEAVES_ONLY
|
\RecursiveIteratorIterator::LEAVES_ONLY
|
||||||
);
|
);
|
||||||
|
@ -162,7 +172,7 @@ class php_exporter
|
||||||
{
|
{
|
||||||
$this->current_file = $file;
|
$this->current_file = $file;
|
||||||
$this->file_lines = array();
|
$this->file_lines = array();
|
||||||
$content = file_get_contents($this->root_path . $this->current_file);
|
$content = file_get_contents($this->path . $this->current_file);
|
||||||
$num_events_found = 0;
|
$num_events_found = 0;
|
||||||
|
|
||||||
if (strpos($content, "dispatcher->trigger_event('") || strpos($content, "dispatcher->dispatch('"))
|
if (strpos($content, "dispatcher->trigger_event('") || strpos($content, "dispatcher->dispatch('"))
|
||||||
|
|
Loading…
Add table
Reference in a new issue