protected function edit(array $values)
    {
        $values =
            $this->dispatchBeforeOperationEvent(
                    '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\BeforeLanguageEditingEvent',
                    LanguageEvents::BEFORE_EDIT_LANGUAGE,
                    $values,
                    array(
                        'message' => 'exception_language_editing_aborted',
                        'domain' => 'exceptions',
                    )
            );

        try {
            $this->validator->checkEmptyParams($values);
            $this->validator->checkOnceValidParamExists(array('LanguageName' => '', 'MainLanguage' => ''), $values);

            $result = true;
            $this->languageRepository->startTransaction();

            $requireToChangeName = array_key_exists('LanguageName', $values);

            if (isset($values["MainLanguage"]) && $values["MainLanguage"] == 1) {
                $result = $this->resetMain();
            } else {
                unset($values["MainLanguage"]);
                if (! $requireToChangeName) {
                    throw new LanguageException\MainLanguageCannotBeDegradedException('exception_main_language_cannot_be_degraded');
                }
            }

            if (false !== $result) {
                if ($requireToChangeName && ! empty($values['LanguageName']) && $this->alLanguage->getLanguageName() == $values['LanguageName']) {
                    unset($values['LanguageName']);
                }

                if (empty($values)) {
                    $this->languageRepository->rollBack();

                    return false;
                }

                $result = $this->languageRepository
                    ->setRepositoryObject($this->alLanguage)
                    ->save($values)
                ;

                if (false != $result) {
                    $eventName = LanguageEvents::BEFORE_EDIT_LANGUAGE_COMMIT;
                    $result = !$this->eventsHandler
                        ->createEvent($eventName, '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\BeforeEditLanguageCommitEvent', array($this, $values))
                        ->dispatch()
                        ->getEvent($eventName)
                        ->isAborted()
                    ;
                }
            }

            if (false !== $result) {
                $this->languageRepository->commit();

                $this->eventsHandler
                     ->createEvent(LanguageEvents::AFTER_EDIT_LANGUAGE, '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\AfterLanguageEditedEvent', array($this))
                     ->dispatch();

                return $result;
            }

            $this->languageRepository->rollBack();

            return $result;
        } catch (\Exception $e) {
            if (isset($this->languageRepository) && $this->languageRepository !== null) {
                $this->languageRepository->rollBack();
            }

            throw $e;
        }
    }
protected function edit(array $values)
    {
        $values =
            $this->dispatchBeforeOperationEvent(
                    '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\BeforeLanguageEditingEvent',
                    LanguageEvents::BEFORE_EDIT_LANGUAGE,
                    $values,
                    array(
                        'message' => 'exception_language_editing_aborted',
                        'domain' => 'exceptions',
                    )
            );

        try {
            $this->validator->checkEmptyParams($values);
            $this->validator->checkOnceValidParamExists(array('LanguageName' => '', 'MainLanguage' => ''), $values);

            $result = true;
            $this->languageRepository->startTransaction();

            $requireToChangeName = array_key_exists('LanguageName', $values);

            if (isset($values["MainLanguage"]) && $values["MainLanguage"] == 1) {
                $result = $this->resetMain();
            } else {
                unset($values["MainLanguage"]);
                if (! $requireToChangeName) {
                    throw new LanguageException\MainLanguageCannotBeDegradedException('exception_main_language_cannot_be_degraded');
                }
            }

            if (false !== $result) {
                if ($requireToChangeName && ! empty($values['LanguageName']) && $this->alLanguage->getLanguageName() == $values['LanguageName']) {
                    unset($values['LanguageName']);
                }

                if (empty($values)) {
                    $this->languageRepository->rollBack();

                    return false;
                }

                $result = $this->languageRepository
                    ->setRepositoryObject($this->alLanguage)
                    ->save($values)
                ;

                if (false != $result) {
                    $eventName = LanguageEvents::BEFORE_EDIT_LANGUAGE_COMMIT;
                    $result = !$this->eventsHandler
                        ->createEvent($eventName, '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\BeforeEditLanguageCommitEvent', array($this, $values))
                        ->dispatch()
                        ->getEvent($eventName)
                        ->isAborted()
                    ;
                }
            }

            if (false !== $result) {
                $this->languageRepository->commit();

                $this->eventsHandler
                     ->createEvent(LanguageEvents::AFTER_EDIT_LANGUAGE, '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\AfterLanguageEditedEvent', array($this))
                     ->dispatch();

                return $result;
            }

            $this->languageRepository->rollBack();

            return $result;
        } catch (\Exception $e) {
            if (isset($this->languageRepository) && $this->languageRepository !== null) {
                $this->languageRepository->rollBack();
            }

            throw $e;
        }
    }
protected function edit ( array $ values ) { $ values = $ this -> dispatchBeforeOperationEvent ( '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\BeforeLanguageEditingEvent' , LanguageEvents :: BEFORE_EDIT_LANGUAGE , $ values , array ( 'message' => 'exception_language_editing_aborted' , 'domain' => 'exceptions' , ) ) ; try { $ this -> validator -> checkEmptyParams ( $ values ) ; $ this -> validator -> checkOnceValidParamExists ( array ( 'LanguageName' => '' , 'MainLanguage' => '' ) , $ values ) ; $ result = true ; $ this -> languageRepository -> startTransaction ( ) ; $ requireToChangeName = array_key_exists ( 'LanguageName' , $ values ) ; if ( isset ( $ values [ "MainLanguage" ] ) && $ values [ "MainLanguage" ] == 1 ) { $ result = $ this -> resetMain ( ) ; } else { unset ( $ values [ "MainLanguage" ] ) ; if ( ! $ requireToChangeName ) { throw new LanguageException \ MainLanguageCannotBeDegradedException ( 'exception_main_language_cannot_be_degraded' ) ; } } if ( false !== $ result ) { if ( $ requireToChangeName && ! empty ( $ values [ 'LanguageName' ] ) && $ this -> alLanguage -> getLanguageName ( ) == $ values [ 'LanguageName' ] ) { unset ( $ values [ 'LanguageName' ] ) ; } if ( empty ( $ values ) ) { $ this -> languageRepository -> rollBack ( ) ; return false ; } $ result = $ this -> languageRepository -> setRepositoryObject ( $ this -> alLanguage ) -> save ( $ values ) ; if ( false != $ result ) { $ eventName = LanguageEvents :: BEFORE_EDIT_LANGUAGE_COMMIT ; $ result = ! $ this -> eventsHandler -> createEvent ( $ eventName , '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\BeforeEditLanguageCommitEvent' , array ( $ this , $ values ) ) -> dispatch ( ) -> getEvent ( $ eventName ) -> isAborted ( ) ; } } if ( false !== $ result ) { $ this -> languageRepository -> commit ( ) ; $ this -> eventsHandler -> createEvent ( LanguageEvents :: AFTER_EDIT_LANGUAGE , '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\AfterLanguageEditedEvent' , array ( $ this ) ) -> dispatch ( ) ; return $ result ; } $ this -> languageRepository -> rollBack ( ) ; return $ result ; } catch ( \ Exception $ e ) { if ( isset ( $ this -> languageRepository ) && $ this -> languageRepository !== null ) { $ this -> languageRepository -> rollBack ( ) ; } throw $ e ; } }
Edits the managed language object

@param  array      $values
@throws \Exception
@return boolean

@api
Edits the managed language object