/** * Update all of the elements on a page with an array of elements passed in * @param \Jazzee\Entity\Page $page * @param array $elements */ protected function savePageElements(\Jazzee\Entity\Page $page, array $elements) { $htmlPurifier = $this->getFilter(); foreach ($elements as $e) { switch ($e->status) { case 'delete': //don't try and delete temporary elements if ($element = $page->getElementByID($e->id)) { if ($this->_em->getRepository('\\Jazzee\\Entity\\Page')->hasAnswers($page)) { $this->setLayoutVar('status', 'error'); $this->addMessage('error', $element->getTitle() . ' could not be deleted becuase it has applicant information associated with it.'); } else { $this->_em->remove($element); $page->getElements()->remove($element->getId()); } } break; case 'new': $element = new \Jazzee\Entity\Element(); $page->addElement($element); $element->setType($this->_em->getRepository('\\Jazzee\\Entity\\ElementType')->find($e->typeId)); $element->setFixedId(empty($e->fixedId) ? null : $e->fixedId); default: if (!isset($element)) { $element = $page->getElementByID($e->id); } $element->setWeight($e->weight); $element->setTitle($htmlPurifier->purify($e->title)); $element->setName(empty($e->name) ? null : $htmlPurifier->purify($e->name)); $element->setFormat(empty($e->format) ? null : $htmlPurifier->purify($e->format)); $element->setInstructions(empty($e->instructions) ? null : $htmlPurifier->purify($e->instructions)); $element->setDefaultValue(empty($e->defaultValue) ? null : $htmlPurifier->purify($e->defaultValue)); if ($e->isRequired) { $element->required(); } else { $element->optional(); } $element->setMin(empty($e->min) ? null : $e->min); $element->setMax(empty($e->max) ? null : $e->max); $this->saveElementListItems($element, $e->list); $this->_em->persist($element); } unset($element); //this isn't for memory management if it stays set it gets re-used at the begning of the default switch } }