/** * Process the package tag. * * @param int $errorpos The line number where the error occurs. * * @return void */ protected function processpackage($errorpos) { global $CFG; $package = $this->commentparser->getPackage(); $filename = str_replace($CFG->dirroot, '', $this->currentfile->getfilename()); $path_parts = explode('/', $filename); if (in_array($path_parts[1], $this->core_folders)) { $expected_package = 'moodlecore'; } else { // Replace slashes or backslashes in file path with dashes $expected_package = strtolower(str_replace('/', '-', $filename)); if (strpos($expected_package, '-')) { $expected_package = strtolower(str_replace('\\', '-', $filename)); } // Strip off last part: the name of the searched file $expected_package = substr($expected_package, 0, strrpos($expected_package, '-')); // Remove first dash if present $expected_package = ltrim($expected_package, '-'); } if ($package !== null) { $content = $package->getcontent(); if ($content !== $expected_package) { $error = "Package name \"{$content}\" is not valid; \"{$expected_package}\" expected."; $this->currentfile->adderror($error, $errorpos); } else { if ($content !== '') { if (!preg_match('/^[a-z\\-]*$/', $content)) { $error = "Package name \"{$content}\" is not valid; must be lower-case with optional hyphens."; $this->currentfile->adderror($error, $errorpos); } } else { $error = '@subpackage tag must contain a name'; $this->currentfile->adderror($error, $errorpos); } } } }