Пример #1
0
 static function GetTrips($routes, $stops, $direction, $numberOfTrips = false, $startTime = false, $endTime = false)
 {
     // TODO: handling of $endTime in different service period than $startTime
     // TODO: actually decide /how/ before implementing...
     global $Database;
     if (is_array($routes) === false) {
         $routes = array($routes);
     }
     if (is_array($stops) === false) {
         $stops = array($stops);
     }
     if ($numberOfTrips !== false && is_int($numberOfTrips) === false) {
         throw new InvalidArgumentException('$numberOfTrips must be false or an integer');
     }
     if ($startTime !== false && is_numeric($startTime) === false) {
         throw new InvalidArgumentException('$startTime must be false or an integer, value provided: ' . $startTime);
     }
     if ($endTime !== false && is_int($endTime) === false) {
         throw new InvalidArgumentException('$endTime must be false or an integer, value provided: ' . $endTime);
     }
     $query = 'SELECT *, Trip.id AS id FROM Trip INNER JOIN StopTime ON (StopTime.trip_id = Trip.id) ' . ' INNER JOIN Stop ON (StopTime.stop_id = Stop.code) ' . ' INNER JOIN Service ON (Trip.service_id = Service.id) ' . ' INNER JOIN Route ON (Trip.route_id = Route.id) ' . ' WHERE Trip.direction = ? ';
     $sql_params[] = $direction;
     foreach ($routes as $route) {
         $sql_route_param_placeholders[] = '?';
         if (is_int($route) === true) {
             $sql_params[] = $route;
         } else {
             if (get_clasS($route) === "Route") {
                 $sql_params[] = $route->GetID();
             } else {
                 throw new InvalidArgumentException('Invalid argument in $routes: ' . $route);
             }
         }
     }
     $query .= ' AND Route.id IN (' . implode(',', $sql_route_param_placeholders) . ') ';
     foreach ($stops as $stop) {
         $sql_stop_param_placeholders[] = '?';
         if (is_int($stop) === true) {
             $sql_params[] = $stop;
         } else {
             if (get_clasS($stop) === "Stop") {
                 $sql_params[] = $stop->GetID();
             } else {
                 throw new InvalidArgumentException('Invalid argument in $stops: ' . $stop);
             }
         }
     }
     $query .= ' AND Stop.code IN (' . implode(',', $sql_stop_param_placeholders) . ') ';
     //		$servicePeriod = ServicePeriod::GetServicePeriod($startTime);
     //		if ($servicePeriod !== false)
     //		{
     $query .= ' AND Service.id = ? ';
     $sql_params[] = Page::GetRequestedServicePeriod()->GetID();
     //			if (empty($_GET['serviceperiod']) === false)
     //			{
     //				$sql_params[] = ((int) $_GET['serviceperiod']);
     //			}
     //			else
     //			{
     //				$sql_params[] = $servicePeriod->GetID();
     //			}
     //		}
     if ($startTime !== false) {
         $query .= ' AND StopTime.time > ? ';
         $sql_params[] = date('H:i:s', $startTime);
     }
     $query .= ' GROUP BY Trip.id ORDER BY StopTime.time ASC ';
     if ($numberOfTrips !== false) {
         $query .= ' LIMIT ?';
         $sql_params[] = $numberOfTrips;
     }
     $res = $Database->Select($query, $sql_params);
     // if we don't have enough trips, try to select the first few from next service period
     //if ($numberOfTrips !== false)
     if (false) {
         if (count($res) < $numberOfTrips) {
             $i = count($sql_params);
             $sql_params[$i - 1] = $numberOfTrips - count($res);
             if ($startTime !== false) {
                 $sql_params[$i - 2] = '00:00:00';
                 $spParamIndex = $i - 3;
             } else {
                 $spParamIndex = $i - 2;
             }
             $sp = Page::GetRequestedServicePeriod();
             if ($sp !== false) {
                 $sql_params[$spParamIndex] = $sp->NextID();
             }
             $extraRes = $Database->Select($query, $sql_params);
             if (count($extraRes) > 0) {
                 $res = array_merge($res, $extraRes);
             }
         }
     }
     if (count($res) > 0) {
         foreach ($res as $tripdata) {
             $trips[] = new Trip($tripdata);
         }
     } else {
         $trips = array();
     }
     return $trips;
 }
Пример #2
0
 public function testClassGet()
 {
     $container = new Container();
     $this->assertNull($container->class);
     $obj1 = new EBTC();
     $container->add($obj1);
     $this->assertSame(get_class($obj1), $container->class);
     $container->remove($obj1);
     $this->assertSame(get_clasS($obj1), $container->class);
 }
Пример #3
0
 public function archiveAll()
 {
     global $mtlda, $mbus;
     try {
         $queue = new \Mtlda\Models\QueueModel();
     } catch (\Exception $e) {
         static::raiseError("Failed to load QueueModel");
         return false;
     }
     $total = $queue->getItemsCount();
     $counter = 1;
     $start = 20;
     $steps = floor((100 - $start) / $total);
     foreach ($queue->getItemsKeys() as $key) {
         if (!$queue->hasItem($key)) {
             static::raiseError(get_class($queue) . '::hasItem() returned false!');
             return false;
         }
         if (($queueitem = $queue->getItem($key)) === false) {
             static::raiseError(get_clasS($queue) . '::getItem() returned false!');
             return false;
         }
         if (!is_a($queueitem, 'Mtlda\\Models\\QueueItemModel!')) {
             static::raiseError(get_class($queue) . '::getItem() has not returned a QueueItemModel!');
             return false;
         }
         if (($idx = $queueitem->getIdx()) === false) {
             static::raiseError(get_class($queueitem) . '::getIdx() returned false!');
             return false;
         }
         if (($guid = $queueitem->getGuid()) === false) {
             static::raiseError(get_class($queueitem) . '::getGuid() returned false!');
             return false;
         }
         if ($queueitem->isProcessing()) {
             continue;
         }
         if (empty($idx) || !$mtlda->isValidGuidSyntax($guid)) {
             continue;
         }
         if (!$mbus->sendMessageToClient('archive-reply', "Archiving item {$counter} of {$total}.", $start + $steps * $counter . '%')) {
             static::raiseError(get_class($mbus) . '::sendMessageToClient() returned false!');
             return false;
         }
         $state = $mbus->suppressOutboundMessaging(true);
         if (!$this->archive($idx, $guid)) {
             $mtlda->raiseArchive(__CLASS__ . "::archive() returned false for QueueItem {$idx}, {$guid}!");
             return false;
         }
         $mbus->suppressOutboundMessaging($state);
         $counter++;
     }
     return true;
 }