Example #1
0
 /**
  * Converts SQL value to the PHP representation.
  *
  * @param string           $value    value in DB format
  * @param AbstractPlatform $platform DB platform
  *
  * @return Point
  */
 public function convertToPHPValue($value, AbstractPlatform $platform)
 {
     if (!$value) {
         return;
     }
     return LocPoint::fromString($value);
 }
Example #2
0
 public function viewp2Action(Request $request)
 {
     $messages = array();
     if ($request->getMethod() == 'GET') {
         if (isset($_GET['del'])) {
             $id = intval($_GET['del']);
             $em = $this->getDoctrine()->getEntityManager();
             $product = $em->getRepository('GeoDataBundle:APoints')->find($id);
             if (!$product) {
                 $message = array('status' => 1, 'text' => 'Нет такой точки');
                 $messages[] = $message;
             } else {
                 $em->remove($product);
                 $em->flush();
                 $message = array('status' => 0, 'text' => 'Удаление успешно выполнено');
                 $messages[] = $message;
             }
         }
         if (isset($_GET['update'])) {
             $message = array('status' => 0, 'text' => 'Изменение успешно выполнено');
             $messages[] = $message;
         }
     }
     $errorAdd = false;
     // all right
     if ($request->getMethod() == 'POST') {
         if ($this->emptyString($_POST['latitude']) || $this->emptyString($_POST['longitude']) || $this->emptyString($_POST['height']) || $this->emptyString($_POST['title']) || $this->emptyString($_POST['azimuth']) || $this->emptyString($_POST['distance'])) {
             $errorAdd = true;
             $message = array('status' => 1, 'text' => 'Заполнены не все поля');
             $messages[] = $message;
         } else {
             $newp = new APoints();
             $newp->setTitle($_POST['title']);
             $pp = new LocPoint();
             $result = $pp->setFromLLHAD($_POST['latitude'], $_POST['longitude'], $_POST['height'], $_POST['azimuth'], $_POST['distance']);
             if ($result == 0) {
                 // проверка наличия такой точки
                 $repository = $this->getDoctrine()->getRepository('GeoDataBundle:APoints');
                 $point = $repository->findOneBy(array('point' => $pp));
                 if ($point) {
                     $message = array('status' => 1, 'text' => 'Географический объект с такими координатами уже есть в базе данных');
                     $messages[] = $message;
                     $errorAdd = true;
                 } else {
                     $newp->setPoint($pp);
                     $em = $this->getDoctrine()->getEntityManager();
                     $em->persist($newp);
                     $em->flush();
                     $message = array('status' => 0, 'text' => 'Добавление успешно выполнено');
                     $messages[] = $message;
                 }
             } else {
                 $errorAdd = true;
                 // собираем все полученные ошибки
                 if ($result & 1) {
                     $message = array('status' => 1, 'text' => 'Неправильный формат высоты: должно быть число');
                     $messages[] = $message;
                 }
                 if ($result & 1 << 1) {
                     $message = array('status' => 1, 'text' => 'Неправильный формат долготы: должно быть число');
                     $messages[] = $message;
                 }
                 if ($result & 1 << 2) {
                     $message = array('status' => 1, 'text' => 'Неправильный формат широты: должно быть число');
                     $messages[] = $message;
                 }
                 if ($result & 1 << 3) {
                     $message = array('status' => 1, 'text' => 'Неправильный формат долготы: число должно быть географической координатой');
                     $messages[] = $message;
                 }
                 if ($result & 1 << 4) {
                     $message = array('status' => 1, 'text' => 'Неправильный формат широты: число должно быть географической координатой');
                     $messages[] = $message;
                 }
                 if ($result & 1 << 5) {
                     $message = array('status' => 1, 'text' => 'Неправильный формат расстояния: должно быть число');
                     $messages[] = $message;
                 }
                 if ($result & 1 << 6) {
                     $message = array('status' => 1, 'text' => 'Неправильный формат азимута: должно быть число');
                     $messages[] = $message;
                 }
                 if ($result & 1 << 7) {
                     $message = array('status' => 1, 'text' => 'Неправильный формат азимута: должен быть угол в градусах от 0 до 360');
                     $messages[] = $message;
                 }
             }
         }
     }
     $pts = $this->getDoctrine()->getRepository('GeoDataBundle:APoints')->findAll();
     // добавляем названия
     $formArray = array('label_longitude' => 'Долгота', 'label_latitude' => 'Широта', 'label_height' => 'Высота', 'label_title' => 'Название', 'label_azimuth' => 'Азимут', 'label_distance' => 'Расстояние');
     if ($errorAdd) {
         // подготавливаем массив в форму
         foreach (array('longitude', 'latitude', 'height', 'title', 'distance', 'azimuth') as $v) {
             if (isset($_POST[$v])) {
                 $formArray[$v] = $_POST[$v];
             }
         }
     }
     $form = $this->CreateForm(new FormLocType(), $formArray);
     return $this->render('GeoDataBundle:Default:viewp2.html.twig', array('form' => $form->createView(), 'points' => $pts, 'messages' => $messages));
 }