Esempio n. 1
0
 function __construct($process_classes_folder)
 {
     $processes = @glob("{$process_classes_folder}/class.*Process.php");
     $this->Logger = LoggerManager::getLogger('JobLauncher');
     $jobs = array();
     if (count($processes) > 0) {
         foreach ($processes as $process) {
             $filename = basename($process);
             $directory = dirname($process);
             Core::Load($filename, $directory);
             preg_match("/class.(.*)Process.php/s", $filename, $tmp);
             $process_name = $tmp[1];
             if (class_exists("{$process_name}Process")) {
                 $reflect = new ReflectionClass("{$process_name}Process");
                 if ($reflect) {
                     if ($reflect->implementsInterface("IProcess")) {
                         $job = array("name" => $process_name, "description" => $reflect->getProperty("ProcessDescription")->getValue($reflect->newInstance()));
                         array_push($jobs, $job);
                     } else {
                         Core::RaiseError("Class '{$process_name}Process' doesn't implement 'IProcess' interface.", E_ERROR);
                     }
                 } else {
                     Core::RaiseError("Cannot use ReflectionAPI for class '{$process_name}Process'", E_ERROR);
                 }
             } else {
                 Core::RaiseError("'{$process}' does not contain definition for '{$process_name}Process'", E_ERROR);
             }
         }
     } else {
         Core::RaiseError(_("No job classes found in {$ProcessClassesFolder}"), E_ERROR);
     }
     $options = array();
     foreach ($jobs as $job) {
         $options[$job["name"]] = $job["description"];
     }
     $options["help"] = "Print this help";
     $options["piddir=s"] = "PID directory";
     $Getopt = new Getopt($options);
     $opts = $Getopt->getOptions();
     if (in_array("help", $opts) || count($opts) == 0 || !$options[$opts[0]]) {
         print $Getopt->getUsageMessage();
         exit;
     } else {
         $this->ProcessName = $opts[0];
         if (in_array("piddir", $opts)) {
             $piddir = trim($Getopt->getOption("piddir"));
             if (substr($piddir, 0, 1) != '/') {
                 $this->PIDDir = realpath($process_classes_folder . "/" . $piddir);
             } else {
                 $this->PIDDir = $piddir;
             }
         }
     }
 }
Esempio n. 2
0
 public function testAccessMethods()
 {
     $getopt = new Getopt('a');
     $getopt->parse('-a foo');
     $options = $getopt->getOptions();
     $this->assertCount(1, $options);
     $this->assertEquals(1, $options['a']);
     $this->assertEquals(1, $getopt->getOption('a'));
     $operands = $getopt->getOperands();
     $this->assertCount(1, $operands);
     $this->assertEquals('foo', $operands[0]);
     $this->assertEquals('foo', $getopt->getOperand(0));
 }