phpBB

Code Changes

File: phpbb/event/php_exporter.php

  Unmodified   Added   Modified   Removed
Line 24Line 24

/** @var string phpBB Root Path */
protected $root_path;


/** @var string phpBB Root Path */
protected $root_path;

 

/** @var string The minimum version for the events to return */
protected $min_version;

/** @var string The maximum version for the events to return */
protected $max_version;


/** @var string */
protected $current_file;


/** @var string */
protected $current_file;

Line 43Line 49
	/**
* @param string $phpbb_root_path
* @param mixed $extension String 'vendor/ext' to filter, null for phpBB core

	/**
* @param string $phpbb_root_path
* @param mixed $extension String 'vendor/ext' to filter, null for phpBB core

 
	* @param string $min_version
* @param string $max_version

	*/

	*/

	public function __construct($phpbb_root_path, $extension = null)

	public function __construct($phpbb_root_path, $extension = null, $min_version = null, $max_version = null)

	{
$this->root_path = $phpbb_root_path;
$this->path = $phpbb_root_path;
$this->events = $this->file_lines = array();
$this->current_file = $this->current_event = '';
$this->current_event_line = 0;

	{
$this->root_path = $phpbb_root_path;
$this->path = $phpbb_root_path;
$this->events = $this->file_lines = array();
$this->current_file = $this->current_event = '';
$this->current_event_line = 0;

 
		$this->min_version = $min_version;
$this->max_version = $max_version;


$this->path = $this->root_path;
if ($extension)


$this->path = $this->root_path;
if ($extension)

Line 148Line 158

/**
* Format the php events as a wiki table


/**
* Format the php events as a wiki table

 
	*
* @param string $action

	* @return string
*/

	* @return string
*/

	public function export_events_for_wiki()







	public function export_events_for_wiki($action = '')
{
if ($action === 'diff')
{
$wiki_page = '=== PHP Events (Hook Locations) ===' . "\n";
}
else

	{
$wiki_page = '= PHP Events (Hook Locations) =' . "\n";

	{
$wiki_page = '= PHP Events (Hook Locations) =' . "\n";

 
		}

		$wiki_page .= '{| class="sortable zebra" cellspacing="0" cellpadding="5"' . "\n";
$wiki_page .= '! Identifier !! Placement !! Arguments !! Added in Release !! Explanation' . "\n";
foreach ($this->events as $event)

		$wiki_page .= '{| class="sortable zebra" cellspacing="0" cellpadding="5"' . "\n";
$wiki_page .= '! Identifier !! Placement !! Arguments !! Added in Release !! Explanation' . "\n";
foreach ($this->events as $event)

Line 214Line 233
					// Validate @since
$since_line_num = $this->find_since();
$since = $this->validate_since($this->file_lines[$since_line_num]);

					// Validate @since
$since_line_num = $this->find_since();
$since = $this->validate_since($this->file_lines[$since_line_num]);

 

$changed_line_nums = $this->find_changed('changed');
if (empty($changed_line_nums))
{
$changed_line_nums = $this->find_changed('change');
}
$changed_versions = array();
if (!empty($changed_line_nums))
{
foreach ($changed_line_nums as $changed_line_num)
{
$changed_versions[] = $this->validate_changed($this->file_lines[$changed_line_num]);
}
}

if (!$this->version_is_filtered($since))
{
$valid_version = false;
foreach ($changed_versions as $changed)
{
$valid_version = $valid_version || $this->version_is_filtered($changed);
}

if (!$valid_version)
{
continue;
}
}


// Find event description line
$description_line_num = $this->find_description();


// Find event description line
$description_line_num = $this->find_description();

Line 240Line 287
		}

return $num_events_found;

		}

return $num_events_found;

 
	}

/**
* The version to check
*
* @param string $version
* @return bool
*/
protected function version_is_filtered($version)
{
return (!$this->min_version || phpbb_version_compare($this->min_version, $version, '<='))
&& (!$this->max_version || phpbb_version_compare($this->max_version, $version, '>='));

	}

/**

	}

/**

Line 446Line 505
	public function find_since()
{
return $this->find_tag('since', array('event', 'var'));

	public function find_since()
{
return $this->find_tag('since', array('event', 'var'));

 
	}

/**
* Find the "@changed" Information lines
*
* @param string $tag_name Should be 'change', not 'changed'
* @return array Absolute line numbers
* @throws \LogicException
*/
public function find_changed($tag_name)
{
$lines = array();
$last_line = 0;
try
{
while ($line = $this->find_tag($tag_name, array('since'), $last_line))
{
$lines[] = $line;
$last_line = $line;
}
}
catch (\LogicException $e)
{
// Not changed? No problem!
}

return $lines;

	}

/**

	}

/**

Line 464Line 550
	* @param string $find_tag		Name of the tag we are trying to find
* @param array $disallowed_tags List of tags that must not appear between
* the tag and the actual event

	* @param string $find_tag		Name of the tag we are trying to find
* @param array $disallowed_tags List of tags that must not appear between
* the tag and the actual event

 
	* @param int $skip_to_line		Skip lines until this one

	* @return int Absolute line number
* @throws \LogicException
*/

	* @return int Absolute line number
* @throws \LogicException
*/

	public function find_tag($find_tag, $disallowed_tags)

	public function find_tag($find_tag, $disallowed_tags, $skip_to_line = 0)

	{

	{

		$find_tag_line = 0;
$found_comment_end = false;

		$find_tag_line = $skip_to_line ? $this->current_event_line - $skip_to_line + 1 : 0;
$found_comment_end = ($skip_to_line) ? true : false;

		while (strpos(ltrim($this->file_lines[$this->current_event_line - $find_tag_line], "\t "), '* @' . $find_tag . ' ') !== 0)
{
if ($found_comment_end && ltrim($this->file_lines[$this->current_event_line - $find_tag_line], "\t") === '/**')

		while (strpos(ltrim($this->file_lines[$this->current_event_line - $find_tag_line], "\t "), '* @' . $find_tag . ' ') !== 0)
{
if ($found_comment_end && ltrim($this->file_lines[$this->current_event_line - $find_tag_line], "\t") === '/**')

Line 558Line 645
		}

return $match[1];

		}

return $match[1];

 
	}

/**
* Validate "@changed" Information
*
* @param string $line
* @return string
* @throws \LogicException
*/
public function validate_changed($line)
{
$match = array();
$line = str_replace("\t", ' ', ltrim($line, "\t "));
preg_match('#^\* @changed (\d+\.\d+\.\d+(?:-(?:a|b|RC|pl)\d+)?)( (?:.*))?$#', $line, $match);
if (!isset($match[2]))
{
throw new \LogicException("Invalid '@changed' information for event "
. "'{$this->current_event}' in file '{$this->current_file}:{$this->current_event_line}'");
}

return $match[2];

	}

/**

	}

/**