mirror of
https://github.com/joomla-extensions/jedchecker.git
synced 2024-11-30 16:53:59 +00:00
check addfieldpath/addformpath/addrulepath directories exist
This commit is contained in:
parent
75e93bad90
commit
a88050c37b
@ -199,6 +199,111 @@ class JedcheckerRulesXMLFiles extends JEDcheckerRule
|
||||
$this->checkFolders($xml->update->schemas->schemapath, $admindir);
|
||||
}
|
||||
|
||||
// Check: config [add...path] directories exist
|
||||
if (isset($xml->config))
|
||||
{
|
||||
$attributes = array('addfieldpath', 'addformpath', 'addrulepath');
|
||||
|
||||
$extensionPath = false;
|
||||
|
||||
// @TODO move element name extraction into a helper (similar code is used in XMLinfo rule)
|
||||
switch ((string) $xml['type'])
|
||||
{
|
||||
case 'module':
|
||||
if (isset($xml->element))
|
||||
{
|
||||
$element = (string) $xml->element;
|
||||
}
|
||||
else
|
||||
{
|
||||
$element = (string) $xml->name;
|
||||
|
||||
if (isset($xml->files))
|
||||
{
|
||||
foreach ($xml->files->children() as $child)
|
||||
{
|
||||
if (isset($child['module']))
|
||||
{
|
||||
$element = (string) $child['module'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$element = strtolower(JFilterInput::getInstance()->clean($element, 'cmd'));
|
||||
|
||||
$extensionPath = 'modules/' . $element . '/';
|
||||
break;
|
||||
|
||||
case 'plugin':
|
||||
if (isset($xml->element))
|
||||
{
|
||||
$element = (string) $xml->element;
|
||||
}
|
||||
else
|
||||
{
|
||||
$element = (string) $xml->name;
|
||||
|
||||
if (isset($xml->files))
|
||||
{
|
||||
foreach ($xml->files->children() as $child)
|
||||
{
|
||||
if (isset($child['plugin']))
|
||||
{
|
||||
$element = (string) $child['plugin'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$element = strtolower(JFilterInput::getInstance()->clean($element, 'cmd'));
|
||||
|
||||
$group = (string) $xml['group'];
|
||||
|
||||
$extensionPath = 'plugins/' . $group . '/' . $element . '/';
|
||||
break;
|
||||
|
||||
case 'template':
|
||||
if (isset($xml->element))
|
||||
{
|
||||
$element = (string) $xml->element;
|
||||
}
|
||||
else
|
||||
{
|
||||
$element = (string) $xml->name;
|
||||
}
|
||||
|
||||
$element = strtolower(JFilterInput::getInstance()->clean($element, 'cmd'));
|
||||
|
||||
$extensionPath = 'templates/' . $element . '/';
|
||||
}
|
||||
|
||||
if ($extensionPath !== false)
|
||||
{
|
||||
foreach ($attributes as $attribute)
|
||||
{
|
||||
foreach ($xml->config->xpath('//*[@' . $attribute . ']') as $node)
|
||||
{
|
||||
$attrPath = (string) $node[$attribute];
|
||||
$folder = ltrim($attrPath, '/');
|
||||
|
||||
// Convert absolute path to relative (if matches extension path)
|
||||
if (strpos($folder, $extensionPath) === 0)
|
||||
{
|
||||
$folder = $sitedir . substr($folder, strlen($extensionPath));
|
||||
|
||||
if (!is_dir($folder))
|
||||
{
|
||||
$this->errors[] = JText::sprintf('COM_JEDCHECKER_XML_FILES_FOLDER_NOT_FOUND', $attrPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (count($this->errors))
|
||||
{
|
||||
$this->report->addError($file, implode('<br />', $this->errors));
|
||||
|
Loading…
Reference in New Issue
Block a user