findDataboxById((int) $sbas_id); return $this->render('admin/subdefs.html.twig', [ 'databox' => $databox, 'subdefs' => $databox->get_subdef_structure() ]); } /** * @param Request $request * @param int $sbas_id * @return Response * @throws \Exception */ function changeSubdefsAction(Request $request, $sbas_id) { $delete_subdef = $request->request->get('delete_subdef'); $toadd_subdef = $request->request->get('add_subdef'); $Parmsubdefs = $request->request->get('subdefs', []); $databox = $this->findDataboxById((int) $sbas_id); $add_subdef = ['class' => null, 'name' => null, 'group' => null]; foreach ($add_subdef as $k => $v) { if (!isset($toadd_subdef[$k]) || trim($toadd_subdef[$k]) === '') { unset($add_subdef[$k]); } else { $add_subdef[$k] = $toadd_subdef[$k]; } } if ($delete_subdef) { $delete_subef = explode('_', $delete_subdef, 2); $group = $delete_subef[0]; $name = $delete_subef[1]; $subdefs = $databox->get_subdef_structure(); $subdefs->delete_subdef($group, $name); } elseif (count($add_subdef) === 3) { $subdefs = $databox->get_subdef_structure(); $group = $add_subdef['group']; /** @var \unicode $unicode */ $unicode = $this->app['unicode']; $name = $unicode->remove_nonazAZ09($add_subdef['name'], false); $class = $add_subdef['class']; $subdefs->add_subdef($group, $name, $class); } else { $subdefs = $databox->get_subdef_structure(); foreach ($Parmsubdefs as $post_sub) { $options = []; $post_sub_ex = explode('_', $post_sub, 2); $group = $post_sub_ex[0]; $name = $post_sub_ex[1]; $class = $request->request->get($post_sub . '_class'); $downloadable = $request->request->get($post_sub . '_downloadable'); $defaults = ['path', 'meta', 'mediatype']; foreach ($defaults as $def) { $parm_loc = $request->request->get($post_sub . '_' . $def); if ($def == 'meta' && !$parm_loc) { $parm_loc = "no"; } $options[$def] = $parm_loc; } $mediatype = $request->request->get($post_sub . '_mediatype'); $media = $request->request->get($post_sub . '_' . $mediatype, []); foreach ($media as $option => $value) { if ($option == 'resolution' && $mediatype == 'image') { $option = 'dpi'; } $options[$option] = $value; } $labels = $request->request->get($post_sub . '_label', []); $subdefs->set_subdef($group, $name, $class, $downloadable, $options, $labels); } } return $this->app->redirectPath('admin_subdefs_subdef', [ 'sbas_id' => $databox->get_sbas_id(), ]); } }