Example #1
0
 /**
  * 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);
             }
         }
     }
 }