protected function add(array $values)
    {
        $values =
                $this->dispatchBeforeOperationEvent(
                        '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\BeforeLanguageAddingEvent',
                        LanguageEvents::BEFORE_ADD_LANGUAGE,
                        $values,
                        array(
                            'message' => 'exception_language_adding_aborted',
                            'domain' => 'exceptions',
                        )
                );

        try {
            $this->validator->checkEmptyParams($values);
            $this->validator->checkRequiredParamsExists(array('LanguageName' => ''), $values);
            if ($this->validator->languageExists($values['LanguageName'])) {
                throw new LanguageException\LanguageExistsException('exception_language_already_exists');
            }

            if (empty($values['LanguageName'])) {
                throw new General\ArgumentIsEmptyException('exception_null_language_name');
            }

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

            $hasLanguages = $this->validator->hasLanguages();
            $values['MainLanguage'] = ($hasLanguages) ? (isset($values['MainLanguage'])) ? $values['MainLanguage'] : 0 : 1;
            if ($values['MainLanguage'] == 1 && $hasLanguages) {
                $result = $this->resetMain();
            }

            if ($result) {
                // Saves the language
                if (null === $this->alLanguage) {
                    $className = $this->languageRepository->getRepositoryObjectClassName();
                    $this->alLanguage = new $className();
                }

                $values = $this->checkCreatedAt($values);
                $result = $this->languageRepository
                            ->setRepositoryObject($this->alLanguage)
                            ->save($values);
                if (false !== $result) {
                    $eventName = LanguageEvents::BEFORE_ADD_LANGUAGE_COMMIT;
                    $result = !$this->eventsHandler
                                    ->createEvent($eventName, '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\BeforeAddLanguageCommitEvent', array($this, $values))
                                    ->dispatch()
                                    ->getEvent($eventName)
                                    ->isAborted();
                }
            }

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

                $this->eventsHandler
                     ->createEvent(LanguageEvents::AFTER_ADD_LANGUAGE, '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\AfterLanguageAddedEvent', 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 add(array $values)
    {
        $values =
                $this->dispatchBeforeOperationEvent(
                        '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\BeforeLanguageAddingEvent',
                        LanguageEvents::BEFORE_ADD_LANGUAGE,
                        $values,
                        array(
                            'message' => 'exception_language_adding_aborted',
                            'domain' => 'exceptions',
                        )
                );

        try {
            $this->validator->checkEmptyParams($values);
            $this->validator->checkRequiredParamsExists(array('LanguageName' => ''), $values);
            if ($this->validator->languageExists($values['LanguageName'])) {
                throw new LanguageException\LanguageExistsException('exception_language_already_exists');
            }

            if (empty($values['LanguageName'])) {
                throw new General\ArgumentIsEmptyException('exception_null_language_name');
            }

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

            $hasLanguages = $this->validator->hasLanguages();
            $values['MainLanguage'] = ($hasLanguages) ? (isset($values['MainLanguage'])) ? $values['MainLanguage'] : 0 : 1;
            if ($values['MainLanguage'] == 1 && $hasLanguages) {
                $result = $this->resetMain();
            }

            if ($result) {
                // Saves the language
                if (null === $this->alLanguage) {
                    $className = $this->languageRepository->getRepositoryObjectClassName();
                    $this->alLanguage = new $className();
                }

                $values = $this->checkCreatedAt($values);
                $result = $this->languageRepository
                            ->setRepositoryObject($this->alLanguage)
                            ->save($values);
                if (false !== $result) {
                    $eventName = LanguageEvents::BEFORE_ADD_LANGUAGE_COMMIT;
                    $result = !$this->eventsHandler
                                    ->createEvent($eventName, '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\BeforeAddLanguageCommitEvent', array($this, $values))
                                    ->dispatch()
                                    ->getEvent($eventName)
                                    ->isAborted();
                }
            }

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

                $this->eventsHandler
                     ->createEvent(LanguageEvents::AFTER_ADD_LANGUAGE, '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\AfterLanguageAddedEvent', 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 add ( array $ values ) { $ values = $ this -> dispatchBeforeOperationEvent ( '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\BeforeLanguageAddingEvent' , LanguageEvents :: BEFORE_ADD_LANGUAGE , $ values , array ( 'message' => 'exception_language_adding_aborted' , 'domain' => 'exceptions' , ) ) ; try { $ this -> validator -> checkEmptyParams ( $ values ) ; $ this -> validator -> checkRequiredParamsExists ( array ( 'LanguageName' => '' ) , $ values ) ; if ( $ this -> validator -> languageExists ( $ values [ 'LanguageName' ] ) ) { throw new LanguageException \ LanguageExistsException ( 'exception_language_already_exists' ) ; } if ( empty ( $ values [ 'LanguageName' ] ) ) { throw new General \ ArgumentIsEmptyException ( 'exception_null_language_name' ) ; } $ result = true ; $ this -> languageRepository -> startTransaction ( ) ; $ hasLanguages = $ this -> validator -> hasLanguages ( ) ; $ values [ 'MainLanguage' ] = ( $ hasLanguages ) ? ( isset ( $ values [ 'MainLanguage' ] ) ) ? $ values [ 'MainLanguage' ] : 0 : 1 ; if ( $ values [ 'MainLanguage' ] == 1 && $ hasLanguages ) { $ result = $ this -> resetMain ( ) ; } if ( $ result ) { // Saves the language if ( null === $ this -> alLanguage ) { $ className = $ this -> languageRepository -> getRepositoryObjectClassName ( ) ; $ this -> alLanguage = new $ className ( ) ; } $ values = $ this -> checkCreatedAt ( $ values ) ; $ result = $ this -> languageRepository -> setRepositoryObject ( $ this -> alLanguage ) -> save ( $ values ) ; if ( false !== $ result ) { $ eventName = LanguageEvents :: BEFORE_ADD_LANGUAGE_COMMIT ; $ result = ! $ this -> eventsHandler -> createEvent ( $ eventName , '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\BeforeAddLanguageCommitEvent' , array ( $ this , $ values ) ) -> dispatch ( ) -> getEvent ( $ eventName ) -> isAborted ( ) ; } } if ( false !== $ result ) { $ this -> languageRepository -> commit ( ) ; $ this -> eventsHandler -> createEvent ( LanguageEvents :: AFTER_ADD_LANGUAGE , '\RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Event\Content\Language\AfterLanguageAddedEvent' , 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 ; } }
Adds a new Language object from the given params

@param  array      $values
@throws \Exception
@return boolean
@api
Adds a new Language object from the given params