/** * 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); }
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)); }