/** * @Route("/edit") * @Route("/edit/") * @Template() */ public function indexAction(Request $request) { $action = ''; $secret = $request->get('identifier'); $em = $this->getDoctrine()->getManager(); $doc = $em->getRepository('AppShedExtensionsSpreadsheetBundle:Doc')->findOneBy(['itemsecret' => $secret]); $errors = ''; if (is_null($doc)) { $doc = new Doc(); $doc->setKey(''); $doc->setUrl(''); $doc->setTitles([]); $doc->setFilters([]); $doc->setItemsecret($secret); $doc->setDate(new \DateTime()); } if ($request->isMethod('post')) { $url = $request->get('url', false); $address = $request->get('address'); $action = $request->get('action', false); $key = $this->getKey($url); if ($url && $key) { $filters = $request->get('filters', []); $doc->setAddress($address); $doc->setUrl($url); $doc->setKey($key); $doc->setTitles($this->getRowTitles($key)); $doc->setFilters(array_values($filters)); $em->persist($doc); $em->flush(); } else { if (!$url) { $errors = 'Spreadsheet url is empty'; } else { $errors = 'Spreadsheet url is not supported or broken'; } } } return ['doc' => $doc, 'action' => $action, 'error' => $errors]; }
/** * @Route("/edit") * @Route("/edit/") * @Template() */ public function indexAction(Request $request) { $action = ''; $secret = $request->get('identifier'); $em = $this->getDoctrine()->getManager(); $doc = $em->getRepository('AppShedExtensionsSpreadsheetBundle:Doc')->findOneBy(['itemsecret' => $secret]); if (is_null($doc)) { $doc = new Doc(); $doc->setKey(''); $doc->setUrl(''); $doc->setTitles([]); $doc->setFilters([]); $doc->setItemsecret($secret); $doc->setDate(new \DateTime()); } if ($request->isMethod('post')) { $url = $request->get('url'); $key = $this->getKey($url); $action = $request->get('action', false); try { $worksheet = $this->getDocument($key); $lines = $worksheet->getContentsAsRows(); if (is_array($lines) && isset($lines['0']) && is_array($lines['0'])) { $titles = array_keys($lines['0']); } if (!is_array($titles)) { $titles = []; } $doc->setUrl($url); $doc->setKey($key); $doc->setTitles(array_unique($titles)); $em->persist($doc); $em->flush(); } catch (SpreadsheetNotFoundException $e) { $this->logger->error('Spreadsheet not found', ['exception' => $e]); return ['doc' => $doc, 'action' => $action, 'error' => 'Could not access the document']; } } return ['doc' => $doc, 'action' => $action]; }