$this->add_message(self::INFO, 'requiresmoodle', $this->versionphp['requires']);
}
- if (isset($info['plugin->component'])) {
- $this->versionphp['component'] = $info['plugin->component'];
- list($reqtype, $reqname) = core_component::normalize_component($this->versionphp['component']);
- if ($reqtype !== $this->assertions['plugintype']) {
- $this->add_message(self::ERROR, 'componentmismatchtype', array(
- 'expected' => $this->assertions['plugintype'],
- 'found' => $reqtype));
- return false;
- }
- if ($reqname !== $this->rootdir) {
- $this->add_message(self::ERROR, 'componentmismatchname', $reqname);
- return false;
- }
- $this->add_message(self::INFO, 'componentmatch', $this->versionphp['component']);
+ if (!isset($info['plugin->component'])) {
+ $this->add_message(self::ERROR, 'missingcomponent');
+ return false;
+ }
+
+ $this->versionphp['component'] = $info['plugin->component'];
+ list($reqtype, $reqname) = core_component::normalize_component($this->versionphp['component']);
+ if ($reqtype !== $this->assertions['plugintype']) {
+ $this->add_message(self::ERROR, 'componentmismatchtype', array(
+ 'expected' => $this->assertions['plugintype'],
+ 'found' => $reqtype));
+ return false;
+ }
+ if ($reqname !== $this->rootdir) {
+ $this->add_message(self::ERROR, 'componentmismatchname', $reqname);
+ return false;
}
+ $this->add_message(self::INFO, 'componentmatch', $this->versionphp['component']);
if (isset($info['plugin->maturity'])) {
$this->versionphp['maturity'] = $info['plugin->maturity'];
$string['validationmsg_foundlangfile'] = 'Found language file';
$string['validationmsg_maturity'] = 'Declared maturity level';
$string['validationmsg_maturity_help'] = 'The plugin can declare its maturity level. If the maintainer considers the plugin stable, the declared maturity level will read MATURITY_STABLE. All other maturity levels (such as alpha or beta) should be considered unstable and a warning is raised.';
+$string['validationmsg_missingcomponent'] = 'Plugin does not declare its component name';
+$string['validationmsg_missingcomponent_help'] = 'All plugins must provide their full component name via the `$plugin->component` declaration in the version.php file.';
+$string['validationmsg_missingcomponent_link'] = 'Development:version.php';
$string['validationmsg_missingexpectedlangenfile'] = 'English language file name mismatch';
$string['validationmsg_missingexpectedlangenfile_info'] = 'The given plugin type is missing the expected English language file {$a}.';
$string['validationmsg_missinglangenfile'] = 'No English language file found';
--- /dev/null
+<?php
+
+$string['pluginname'] = 'This is a plugin with $plugin->component missing in its version.php';
--- /dev/null
+<?php
+
+$plugin->version = 2015080600;
+$plugin->release = 'B.A.Z. Auth fake plugin';
+//$plugin->component is missing here so the validation must fail.
<?php
$plugin->version = 2014122455;
+$plugin->component = 'mod_bah';
--- /dev/null
+<?php
+
+$string['pluginname'] = 'This would be valid filename for module, not a block';
--- /dev/null
+<?php
+
+$plugin->version = 2014122455;
+$plugin->component = 'block_bah';
$this->assertFalse($validator->execute());
$this->assertTrue($this->has_message($validator->get_messages(), $validator::ERROR, 'versionphpsyntax', '$module'));
+ $validator = testable_tool_installaddon_validator::instance($fixtures.'/nocomponent', array(
+ 'baz/' => true,
+ 'baz/version.php' => true,
+ 'baz/lang/' => true,
+ 'baz/lang/en/' => true,
+ 'baz/lang/en/auth_baz.php' => true));
+ $validator->assert_plugin_type('auth');
+ $validator->assert_moodle_version(0);
+ $this->assertFalse($validator->execute());
+ $this->assertTrue($this->has_message($validator->get_messages(), $validator::ERROR, 'missingcomponent'));
+
$validator = testable_tool_installaddon_validator::instance($fixtures.'/plugindir', array(
'foobar/' => true,
'foobar/version.php' => true,
$this->assertTrue($this->has_message($validator->get_messages(), $validator::WARNING, 'multiplelangenfiles'));
$this->assertTrue(is_null($validator->get_language_file_name()));
- $validator = testable_tool_installaddon_validator::instance($fixtures.'/nolang', array(
+ $validator = testable_tool_installaddon_validator::instance($fixtures.'/wronglang', array(
'bah/' => true,
'bah/version.php' => true,
'bah/lang/' => true,
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'tool_installaddon';
-$plugin->version = 2015051100;
+$plugin->version = 2015080601;
$plugin->requires = 2015050500;
$plugin->maturity = MATURITY_STABLE;