public function editAction() { $this->authorize('admin.config'); $serviceManager = $this->getServiceLocator(); $squareManager = $serviceManager->get('Square\\Manager\\SquareManager'); $formElementManager = $serviceManager->get('FormElementManager'); $locale = $this->config('i18n.locale'); $sid = $this->params()->fromRoute('sid'); if ($sid) { $square = $squareManager->get($sid); } else { $square = null; } $editForm = $formElementManager->get('Backend\\Form\\ConfigSquare\\EditForm'); if ($this->getRequest()->isPost()) { $editForm->setData($this->params()->fromPost()); if ($editForm->isValid()) { $editData = $editForm->getData(); if (!$square) { $square = new Square(); } $square->set('name', $editData['cf-name']); $square->set('status', $editData['cf-status']); $square->setMeta('readonly.message', $editData['cf-readonly-message']); $square->set('priority', $editData['cf-priority']); $square->set('capacity', $editData['cf-capacity']); $square->set('capacity_heterogenic', $editData['cf-capacity-heterogenic']); $square->setMeta('public_names', $editData['cf-public-names'] ? 'true' : 'false'); $square->set('time_start', $editData['cf-time-start']); $square->set('time_end', $editData['cf-time-end']); $square->set('time_block', max($editData['cf-time-block'], 10) * 60); $square->set('time_block_bookable', max($editData['cf-time-block-bookable'], 10) * 60); $square->set('time_block_bookable_max', max($editData['cf-time-block-bookable-max'], 10) * 60); $square->set('range_book', $editData['cf-range-book'] * 60 * 60 * 24); $square->set('range_cancel', $editData['cf-range-cancel'] * 60 * 60); $square->setMeta('label.free', $editData['cf-label-free'], $locale); $squareManager->save($square); $this->flashMessenger()->addSuccessMessage('Square has been saved'); return $this->redirect()->toRoute('backend/config/square'); } } else { if ($square) { $editForm->setData(array('cf-name' => $square->get('name'), 'cf-status' => $square->get('status'), 'cf-readonly-message' => $square->getMeta('readonly.message'), 'cf-priority' => $square->get('priority'), 'cf-capacity' => $square->get('capacity'), 'cf-capacity-heterogenic' => $square->get('capacity_heterogenic'), 'cf-public-names' => $square->getMeta('public_names', 'false') == 'false' ? false : true, 'cf-time-start' => substr($square->get('time_start'), 0, 5), 'cf-time-end' => substr($square->get('time_end'), 0, 5), 'cf-time-block' => round($square->get('time_block') / 60), 'cf-time-block-bookable' => round($square->get('time_block_bookable') / 60), 'cf-time-block-bookable-max' => round($square->get('time_block_bookable_max') / 60), 'cf-range-book' => round($square->get('range_book') / 60 / 60 / 24), 'cf-range-cancel' => round($square->get('range_cancel') / 60 / 60), 'cf-label-free' => $square->getMeta('label.free'))); } else { $editForm->setData(array('cf-status' => 'enabled', 'cf-priority' => 1, 'cf-capacity' => 1, 'cf-capacity-heterogenic' => false, 'cf-public-names' => false, 'cf-time-start' => '08:00', 'cf-time-end' => '23:00', 'cf-time-block' => 60, 'cf-time-block-bookable' => 30, 'cf-time-block-bookable-max' => 180, 'cf-range-book' => 56, 'cf-range-cancel' => 24)); } } return array('square' => $square, 'editForm' => $editForm); }