mirror of
https://github.com/phpbb/phpbb.git
synced 2025-04-21 16:22:22 +02:00
Merge pull request #3633 from nickvergessen/ticket/13872
[ticket/13872] Allow template events to have a changed version
This commit is contained in:
commit
ef39f3a9ab
@ -157,20 +157,64 @@ class md_exporter
|
||||
}
|
||||
|
||||
list($file_details, $details) = explode("\n* Since: ", $details, 2);
|
||||
list($since, $description) = explode("\n* Purpose: ", $details, 2);
|
||||
|
||||
$changed_versions = array();
|
||||
if (strpos($details, "\n* Changed: ") !== false)
|
||||
{
|
||||
list($since, $details) = explode("\n* Changed: ", $details, 2);
|
||||
while (strpos($details, "\n* Changed: ") !== false)
|
||||
{
|
||||
list($changed, $details) = explode("\n* Changed: ", $details, 2);
|
||||
$changed_versions[] = $changed;
|
||||
}
|
||||
list($changed, $description) = explode("\n* Purpose: ", $details, 2);
|
||||
$changed_versions[] = $changed;
|
||||
}
|
||||
else
|
||||
{
|
||||
list($since, $description) = explode("\n* Purpose: ", $details, 2);
|
||||
$changed_versions = array();
|
||||
}
|
||||
|
||||
$files = $this->validate_file_list($file_details);
|
||||
$since = $this->validate_since($since);
|
||||
$changes = array();
|
||||
foreach ($changed_versions as $changed)
|
||||
{
|
||||
list($changed_version, $changed_description) = $this->validate_changed($changed);
|
||||
|
||||
if (isset($changes[$changed_version]))
|
||||
{
|
||||
throw new \LogicException("Duplicate change information found for event '{$this->current_event}'");
|
||||
}
|
||||
|
||||
$changes[$changed_version] = $changed_description;
|
||||
}
|
||||
$description = trim($description, "\n") . "\n";
|
||||
|
||||
if (!$this->version_is_filtered($since))
|
||||
{
|
||||
continue;
|
||||
$is_filtered = false;
|
||||
foreach ($changes as $version => $null)
|
||||
{
|
||||
if ($this->version_is_filtered($version))
|
||||
{
|
||||
$is_filtered = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$is_filtered)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$this->events[$event_name] = array(
|
||||
'event' => $this->current_event,
|
||||
'files' => $files,
|
||||
'since' => $since,
|
||||
'changed' => $changes,
|
||||
'description' => $description,
|
||||
);
|
||||
}
|
||||
@ -182,6 +226,7 @@ class md_exporter
|
||||
* The version to check
|
||||
*
|
||||
* @param string $version
|
||||
* @return bool
|
||||
*/
|
||||
protected function version_is_filtered($version)
|
||||
{
|
||||
@ -269,7 +314,7 @@ class md_exporter
|
||||
*/
|
||||
public function validate_since($since)
|
||||
{
|
||||
if (!preg_match('#^\d+\.\d+\.\d+(?:-(?:a|b|RC|pl)\d+)?$#', $since))
|
||||
if (!$this->validate_version($since))
|
||||
{
|
||||
throw new \LogicException("Invalid since information found for event '{$this->current_event}'");
|
||||
}
|
||||
@ -277,6 +322,44 @@ class md_exporter
|
||||
return $since;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate "Changed" Information
|
||||
*
|
||||
* @param string $changed
|
||||
* @return string
|
||||
* @throws \LogicException
|
||||
*/
|
||||
public function validate_changed($changed)
|
||||
{
|
||||
if (strpos($changed, ' ') !== false)
|
||||
{
|
||||
list($version, $description) = explode(' ', $changed, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
$version = $changed;
|
||||
$description = '';
|
||||
}
|
||||
|
||||
if (!$this->validate_version($version))
|
||||
{
|
||||
throw new \LogicException("Invalid changed information found for event '{$this->current_event}'");
|
||||
}
|
||||
|
||||
return array($version, $description);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate "version" Information
|
||||
*
|
||||
* @param string $version
|
||||
* @return bool True if valid, false otherwise
|
||||
*/
|
||||
public function validate_version($version)
|
||||
{
|
||||
return preg_match('#^\d+\.\d+\.\d+(?:-(?:a|b|RC|pl)\d+)?$#', $version);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate the files list
|
||||
*
|
||||
|
@ -293,6 +293,7 @@ class php_exporter
|
||||
* The version to check
|
||||
*
|
||||
* @param string $version
|
||||
* @return bool
|
||||
*/
|
||||
protected function version_is_filtered($version)
|
||||
{
|
||||
|
0
tests/event/fixtures/adm/style/acp_bbcodes.html
Normal file
0
tests/event/fixtures/adm/style/acp_bbcodes.html
Normal file
20
tests/event/fixtures/normal_events.md.test
Normal file
20
tests/event/fixtures/normal_events.md.test
Normal file
@ -0,0 +1,20 @@
|
||||
acp_bbcodes_actions_append
|
||||
===
|
||||
* Location: adm/style/acp_bbcodes.html
|
||||
* Since: 3.1.0-a3
|
||||
* Changed: 3.1.0-a4
|
||||
* Purpose: desc1
|
||||
|
||||
acp_bbcodes_actions_prepend
|
||||
===
|
||||
* Location: adm/style/acp_bbcodes.html
|
||||
* Since: 3.1.0-a5
|
||||
* Purpose: desc2
|
||||
|
||||
acp_bbcodes_actions_prepend2
|
||||
===
|
||||
* Location: adm/style/acp_bbcodes.html
|
||||
* Since: 3.1.0-a4
|
||||
* Changed: 3.1.0-a5 Moved up
|
||||
* Changed: 3.1.0-a6 Moved down
|
||||
* Purpose: desc2
|
@ -11,10 +11,99 @@
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||
|
||||
class phpbb_event_md_exporter_test extends phpbb_test_case
|
||||
{
|
||||
|
||||
static public function crawl_eventsmd_data()
|
||||
{
|
||||
return array(
|
||||
array('normal_events.md.test', null, null, array(
|
||||
'acp_bbcodes_actions_append' => array(
|
||||
'event' => 'acp_bbcodes_actions_append',
|
||||
'files' => array(
|
||||
'prosilver' => array(),
|
||||
'subsilver2' => array(),
|
||||
'adm' => array('acp_bbcodes.html'),
|
||||
),
|
||||
'since' => '3.1.0-a3',
|
||||
'changed' => array(
|
||||
'3.1.0-a4' => '',
|
||||
),
|
||||
'description' => 'desc1' . "\n",
|
||||
),
|
||||
'acp_bbcodes_actions_prepend' => array(
|
||||
'event' => 'acp_bbcodes_actions_prepend',
|
||||
'files' => array(
|
||||
'prosilver' => array(),
|
||||
'subsilver2' => array(),
|
||||
'adm' => array('acp_bbcodes.html'),
|
||||
),
|
||||
'since' => '3.1.0-a5',
|
||||
'changed' => array(),
|
||||
'description' => 'desc2' . "\n",
|
||||
),
|
||||
'acp_bbcodes_actions_prepend2' => array(
|
||||
'event' => 'acp_bbcodes_actions_prepend2',
|
||||
'files' => array(
|
||||
'prosilver' => array(),
|
||||
'subsilver2' => array(),
|
||||
'adm' => array('acp_bbcodes.html'),
|
||||
),
|
||||
'since' => '3.1.0-a4',
|
||||
'changed' => array(
|
||||
'3.1.0-a5' => 'Moved up',
|
||||
'3.1.0-a6' => 'Moved down',
|
||||
),
|
||||
'description' => 'desc2' . "\n",
|
||||
),
|
||||
)),
|
||||
array('normal_events.md.test', '3.1.0-a5', '3.1.0-a5', array(
|
||||
'acp_bbcodes_actions_prepend' => array(
|
||||
'event' => 'acp_bbcodes_actions_prepend',
|
||||
'files' => array(
|
||||
'prosilver' => array(),
|
||||
'subsilver2' => array(),
|
||||
'adm' => array('acp_bbcodes.html'),
|
||||
),
|
||||
'since' => '3.1.0-a5',
|
||||
'changed' => array(),
|
||||
'description' => 'desc2' . "\n",
|
||||
),
|
||||
'acp_bbcodes_actions_prepend2' => array(
|
||||
'event' => 'acp_bbcodes_actions_prepend2',
|
||||
'files' => array(
|
||||
'prosilver' => array(),
|
||||
'subsilver2' => array(),
|
||||
'adm' => array('acp_bbcodes.html'),
|
||||
),
|
||||
'since' => '3.1.0-a4',
|
||||
'changed' => array(
|
||||
'3.1.0-a5' => 'Moved up',
|
||||
'3.1.0-a6' => 'Moved down',
|
||||
),
|
||||
'description' => 'desc2' . "\n",
|
||||
),
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider crawl_eventsmd_data
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $min_version
|
||||
* @param string $max_version
|
||||
* @param array $events
|
||||
*/
|
||||
public function test_crawl_eventsmd($file, $min_version, $max_version, $events)
|
||||
{
|
||||
$exporter = new \phpbb\event\md_exporter(dirname(__FILE__) . '/fixtures/', null, $min_version, $max_version);
|
||||
$this->assertSame(sizeof($events), $exporter->crawl_eventsmd($file, 'adm'));
|
||||
$this->assertEquals($events, $exporter->get_events());
|
||||
}
|
||||
|
||||
static public function crawl_phpbb_eventsmd_data()
|
||||
{
|
||||
return array(
|
||||
array('styles'),
|
||||
@ -23,9 +112,9 @@ class phpbb_event_md_exporter_test extends phpbb_test_case
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider crawl_eventsmd_data
|
||||
*/
|
||||
public function test_crawl_eventsmd($filter)
|
||||
* @dataProvider crawl_phpbb_eventsmd_data
|
||||
*/
|
||||
public function test_crawl_phpbb_eventsmd($filter)
|
||||
{
|
||||
global $phpbb_root_path;
|
||||
$exporter = new \phpbb\event\md_exporter($phpbb_root_path);
|
||||
|
Loading…
x
Reference in New Issue
Block a user