public function __construct(RouteGenerator $route, $controller_file = null)
 {
     if (!$route->isUsingController()) {
         throw new \Exception("Route must use Controller as action");
     }
     list($controller, $method) = explode('@', $route->getActionName());
     $this->route = $route;
     $this->files = new Filesystem();
     $this->controller_class = $controller;
     $this->controller_method = $method;
     $this->controller_file = $controller_file ?: app_path('controllers/' . str_replace("\\", "/", $controller)) . '.php';
 }
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function fire()
 {
     $routes = Route::getRoutes();
     $added_controllers = array();
     $added_methods = array();
     foreach ($routes as $route) {
         $route_generator = RouteGenerator::makeFromRoute($route);
         if ($route_generator->isUsingController()) {
             $route_generator->generateRouteAction();
             $action_generator = $route_generator->getActionGenerator();
             $controller = $action_generator->getControllerClass();
             $method = $action_generator->getControllerMethod();
             if ($action_generator->hasGenerateController()) {
                 $added_controllers[] = $controller;
                 $this->info("# Generate Controller '{$controller}'");
             }
             if ($action_generator->hasGenerateMethod()) {
                 $added_methods[] = $controller . ':' . $method;
                 echo "> Generate method '{$method}' in controller '{$controller}'\n";
             }
         }
     }
     $count_added_controllers = count($added_controllers);
     $count_added_methods = count($added_methods);
     if ($count_added_methods + $count_added_controllers > 0) {
         echo "\n";
     }
     $this->info("# DONE!! {$count_added_controllers} Controllers added, {$count_added_methods} Methods added");
 }
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function fire()
 {
     $uri = $this->argument("uri");
     $method = $this->argument("method");
     $route_file = base_path($this->option("file"));
     $conditions = $this->option("where");
     $action = ['uses' => $this->argument("uses"), 'after' => $this->option("after"), 'before' => $this->option("before"), 'as' => $this->option("name")];
     foreach ($action as $key => $val) {
         if (is_null($val)) {
             unset($action[$key]);
         }
     }
     $route_generator = new RouteGenerator($method, $uri, $action);
     foreach ($conditions as $cond) {
         list($param, $regex) = explode(':', $cond, 2);
         $route_generator->where($param, $regex);
     }
     $route_str = strtoupper($method) . " " . $route_generator->resolvedUri();
     $route_generator->generate($route_file, true);
     $this->info("# Generate route '{$route_str}' using '" . $route_generator->getActionName() . "'");
     $action_generator = $route_generator->getActionGenerator();
     $controller_class = $action_generator->getControllerClass();
     $controller_method = $action_generator->getControllerMethod();
     if ($action_generator->hasGenerateController()) {
         echo "> Generate controller '{$controller_class}'\n";
     }
     if ($action_generator->hasGenerateMethod()) {
         echo "> Generate method '{$controller_method}' in controller '{$controller_class}'\n";
     }
 }
Ejemplo n.º 4
0
 /**
  * @param string $name
  * @param array $args
  * @return string
  */
 public function generate($name, array $args = [])
 {
     return $this->generator->url($name, $args);
 }
Ejemplo n.º 5
0
function &findRoutes(&$player)
{
    debug('Finding Routes');
    $galaxies =& SmrGalaxy::getGameGalaxies($player->getGameID());
    $tradeGoods = array(GOOD_NOTHING => false);
    $goods =& Globals::getGoods();
    foreach ($goods as $goodID => &$good) {
        if ($player->meetsAlignmentRestriction($good['AlignRestriction'])) {
            $tradeGoods[$goodID] = true;
        } else {
            $tradeGoods[$goodID] = false;
        }
    }
    unset($good);
    $tradeRaces = array();
    $races =& Globals::getRaces();
    foreach ($races as $raceID => &$race) {
        $tradeRaces[$raceID] = false;
    }
    unset($race);
    $tradeRaces[$player->getRaceID()] = true;
    $galaxy =& $player->getSector()->getGalaxy();
    $maxNumberOfPorts = 2;
    $routesForPort = -1;
    $numberOfRoutes = 1000;
    $maxDistance = 15;
    $startSectorID = $galaxy->getStartSector();
    $endSectorID = $galaxy->getEndSector();
    $db = new SmrMySqlDatabase();
    $db->query('SELECT routes FROM route_cache WHERE game_id=' . $db->escapeNumber($player->getGameID()) . ' AND max_ports=' . $db->escapeNumber($maxNumberOfPorts) . ' AND goods_allowed=' . $db->escapeObject($tradeGoods) . ' AND races_allowed=' . $db->escapeObject($tradeRaces) . ' AND start_sector_id=' . $db->escapeNumber($startSectorID) . ' AND end_sector_id=' . $db->escapeNumber($endSectorID) . ' AND routes_for_port=' . $db->escapeNumber($routesForPort) . ' AND max_distance=' . $db->escapeNumber($maxDistance));
    if ($db->nextRecord()) {
        $routes = unserialize(gzuncompress($db->getField('routes')));
        debug('Using Cached Routes: #' . count($routes));
        return $routes;
    } else {
        debug('Generating Routes');
        $allSectors = array();
        foreach ($galaxies as &$galaxy) {
            $allSectors += $galaxy->getSectors();
            //Merge arrays
        }
        unset($galaxy);
        $distances =& Plotter::calculatePortToPortDistances($allSectors, $maxDistance, $startSectorID, $endSectorID);
        if ($maxNumberOfPorts == 1) {
            $allRoutes = RouteGenerator::generateOneWayRoutes($allSectors, $distances, $tradeGoods, $tradeRaces, $routesForPort);
        } else {
            $allRoutes = RouteGenerator::generateMultiPortRoutes($maxNumberOfPorts, $allSectors, $tradeGoods, $tradeRaces, $distances, $routesForPort, $numberOfRoutes);
        }
        unset($distances);
        $allRoutes =& $allRoutes[RouteGenerator::EXP_ROUTE];
        $routesMerged = array();
        foreach ($allRoutes as $multi => &$routesByMulti) {
            $routesMerged += $routesByMulti;
            //Merge arrays
        }
        unset($routesByMulti);
        unset($allSectors);
        SmrPort::clearCache();
        SmrSector::clearCache();
        $db->query('INSERT INTO route_cache ' . '(game_id, max_ports, goods_allowed, races_allowed, start_sector_id, end_sector_id, routes_for_port, max_distance, routes)' . ' VALUES (' . $db->escapeNumber($player->getGameID()) . ', ' . $db->escapeNumber($maxNumberOfPorts) . ', ' . $db->escapeObject($tradeGoods) . ', ' . $db->escapeObject($tradeRaces) . ', ' . $db->escapeNumber($startSectorID) . ', ' . $db->escapeNumber($endSectorID) . ', ' . $db->escapeNumber($routesForPort) . ', ' . $db->escapeNumber($maxDistance) . ', ' . $db->escapeObject($routesMerged, true) . ')');
        debug('Found Routes: #' . count($routesMerged));
        return $routesMerged;
    }
}
Ejemplo n.º 6
0
foreach ($galaxies as &$galaxy) {
    $allSectors = $allSectors + $galaxy->getSectors();
}
unset($galaxy);
$maxNumberOfPorts = 2;
$goods = array(true, true, true, true, false, false, false, false, false, false, false, false, false);
$races = array(true, true, true, true, false, false, false, false, false, false, false, false, false, false);
//$distances =& Plotter::calculatePortToPortDistances($allSectors,10,0,1440);
$distances =& Plotter::calculatePortToPortDistances($allSectors, 10, 0, 14);
//var_dump($distances);
$routesForPort = -1;
$numberOfRoutes = 5;
if ($maxNumberOfPorts == 1) {
    $allRoutes = RouteGenerator::generateOneWayRoutes($allSectors, $distances, $goods, $races, $routesForPort);
} else {
    $allRoutes = RouteGenerator::generateMultiPortRoutes($maxNumberOfPorts, $allSectors, $goods, $races, $distances, $routesForPort, $numberOfRoutes);
}
//var_dump($allRoutes);
foreach ($allRoutes as $routeType) {
    $c = 0;
    foreach ($routeType as $routeMulti) {
        $c += count($routeMulti);
        //		foreach($routeMulti as $multi => $route) {
        //			echo $multi . ":  ".$route->getRouteString();
        //		}
        //		echo "\r\n";
        //		echo "\r\n";
    }
    var_dump($c);
}
/**/