basedir, '.xml$', true, true); // Iterate through all the xml files foreach ($files as $file) { // Try to find the license $this->find($file); } } /** * Reads a file and searches for the license * * @param string $file The path to the file * @return boolean True if the license was found, otherwise False. */ protected function find($file) { $xml = JFactory::getXML($file); // Failed to parse the xml file. // Assume that this is not a extension manifest if (!$xml) return true; // Check if this is an extension manifest // 1.5 uses 'install', 1.6 uses 'extension' if ($xml->getName() != 'install' && $xml->getName() != 'extension') { return true; } // Check if there's a license tag if (!isset($xml->license)) { $this->report->addError($file, JText::_('COM_JEDCHECKER_ERROR_XML_LICENSE_NOT_FOUND')); return false; } // Check if the license is gpl if (stripos($xml->license, 'gpl') === false && stripos($xml->license, 'general public license') === false) { $this->report->addCompat($file, JText::_('COM_JEDCHECKER_ERROR_XML_LICENSE_NOT_GPL')); return false; } // All checks passed. Return true return true; } }