コード例 #1
0
 /**
  * @inheritdoc
  */
 public function httpAction($action)
 {
     $configuration = $this->getConfiguration();
     $request = json_decode($this->container->get('request')->getContent(), true);
     $schemas = $configuration["schemes"];
     $debugMode = $configuration['debug'] || $this->container->get('kernel')->getEnvironment() == "dev";
     if (!isset($request["schema"])) {
         throw new Exception('For initialization there is no name of the declared scheme');
     }
     $schema = $schemas[$request["schema"]];
     if (is_array($schema['featureType'])) {
         $featureType = new FeatureType($this->container, $schema['featureType']);
     } else {
         throw new Exception("FeatureType settings not correct");
     }
     $results = array();
     switch ($action) {
         case 'select':
             $defaultCriteria = array('returnType' => 'FeatureCollection', 'maxResults' => 2);
             $results = $featureType->search(array_merge($defaultCriteria, $request));
             break;
         case 'save':
             // save once
             if (isset($request['feature'])) {
                 $request['features'] = array($request['feature']);
             }
             try {
                 // save collection
                 if (isset($request['features']) && is_array($request['features'])) {
                     foreach ($request['features'] as $feature) {
                         $feature = $this->prepareQueredFeatureData($feature, $schema['formItems']);
                         $results[] = $featureType->save($feature);
                     }
                 }
                 $results = $featureType->toFeatureCollection($results);
             } catch (DBALException $e) {
                 $message = $debugMode ? $e->getMessage() : "Feature can't be saved. Maybe something is wrong configured or your database isn't available?\n" . "For more information have a look at the webserver log file. \n Error code: " . $e->getCode();
                 $results = array('errors' => array(array('message' => $message, 'code' => $e->getCode())));
             }
             break;
         case 'delete':
             // remove once
             $results = $featureType->remove($request['feature'])->getId();
             break;
     }
     return new JsonResponse($results);
 }
コード例 #2
0
 /**
  * @return Feature
  */
 private function getRandomFeature($maxResults = 10)
 {
     $features = self::$featureType->search(array('maxResults' => $maxResults));
     $originFeature = $features[rand(1, count($features)) - 1];
     return $originFeature;
 }