src/AddToCampaignHandler.php
protected function getOrCreateCampaign($data)
    {
        // Create new campaign if selected
        if (is_array($data) && !empty($data['AddNewSelect']) // Explicitly click "Add to a new campaign"
            || (is_array($data) && !isset($data['Campaign']) && isset($data['NewTitle'])) // This is the only option
        ) {
            // Permission
            if (!ChangeSet::singleton()->canCreate()) {
                throw $this->validationResult(
                    _t(__CLASS__ . '.CREATE_DENIED', 'You do not have permission to create campaigns')
                );
            }

            // Check title is valid
            $title = $data['NewTitle'];
            if (empty($title)) {
                throw $this->validationResult(
                    _t(__CLASS__ . '.MISSING_TITLE', 'Campaign name is required'),
                    'NewTitle'
                );
            }

            // Prevent duplicates
            $hasExistingName = Changeset::get()
                    ->filter('Name:nocase', $title)
                    ->count() > 0;

            if ($hasExistingName) {
                throw $this->validationResult(
                    _t(
                        'SilverStripe\\CampaignAdmin\\CampaignAdmin.ERROR_DUPLICATE_NAME',
                        'Name "{Name}" already exists',
                        ['Name' => $title]
                    ),
                    'NewTitle'
                );
            }

            // Create and return
            $campaign = ChangeSet::create();
            $campaign->Name = $title;
            $campaign->write();
            return $campaign->ID;
        }

        // Get selected campaign ID
        $campaignID = null;
        if (is_array($data) && !empty($data['Campaign'])) {
            $campaignID = $data['Campaign'];
        } elseif (is_numeric($data)) {
            $campaignID = (int)$data;
        }
        if (empty($campaignID)) {
            throw $this->validationResult(_t(__CLASS__ . '.NONE_SELECTED', 'No campaign selected'));
        }
        return $campaignID;
    }
protected function getOrCreateCampaign($data)
    {
        // Create new campaign if selected
        if (is_array($data) && !empty($data['AddNewSelect']) // Explicitly click "Add to a new campaign"
            || (is_array($data) && !isset($data['Campaign']) && isset($data['NewTitle'])) // This is the only option
        ) {
            // Permission
            if (!ChangeSet::singleton()->canCreate()) {
                throw $this->validationResult(
                    _t(__CLASS__ . '.CREATE_DENIED', 'You do not have permission to create campaigns')
                );
            }

            // Check title is valid
            $title = $data['NewTitle'];
            if (empty($title)) {
                throw $this->validationResult(
                    _t(__CLASS__ . '.MISSING_TITLE', 'Campaign name is required'),
                    'NewTitle'
                );
            }

            // Prevent duplicates
            $hasExistingName = Changeset::get()
                    ->filter('Name:nocase', $title)
                    ->count() > 0;

            if ($hasExistingName) {
                throw $this->validationResult(
                    _t(
                        'SilverStripe\\CampaignAdmin\\CampaignAdmin.ERROR_DUPLICATE_NAME',
                        'Name "{Name}" already exists',
                        ['Name' => $title]
                    ),
                    'NewTitle'
                );
            }

            // Create and return
            $campaign = ChangeSet::create();
            $campaign->Name = $title;
            $campaign->write();
            return $campaign->ID;
        }

        // Get selected campaign ID
        $campaignID = null;
        if (is_array($data) && !empty($data['Campaign'])) {
            $campaignID = $data['Campaign'];
        } elseif (is_numeric($data)) {
            $campaignID = (int)$data;
        }
        if (empty($campaignID)) {
            throw $this->validationResult(_t(__CLASS__ . '.NONE_SELECTED', 'No campaign selected'));
        }
        return $campaignID;
    }
protected function getOrCreateCampaign ( $ data ) { // Create new campaign if selected if ( is_array ( $ data ) && ! empty ( $ data [ 'AddNewSelect' ] ) // Explicitly click "Add to a new campaign" || ( is_array ( $ data ) && ! isset ( $ data [ 'Campaign' ] ) && isset ( $ data [ 'NewTitle' ] ) ) // This is the only option ) { // Permission if ( ! ChangeSet :: singleton ( ) -> canCreate ( ) ) { throw $ this -> validationResult ( _t ( __CLASS__ . '.CREATE_DENIED' , 'You do not have permission to create campaigns' ) ) ; } // Check title is valid $ title = $ data [ 'NewTitle' ] ; if ( empty ( $ title ) ) { throw $ this -> validationResult ( _t ( __CLASS__ . '.MISSING_TITLE' , 'Campaign name is required' ) , 'NewTitle' ) ; } // Prevent duplicates $ hasExistingName = Changeset :: get ( ) -> filter ( 'Name:nocase' , $ title ) -> count ( ) > 0 ; if ( $ hasExistingName ) { throw $ this -> validationResult ( _t ( 'SilverStripe\\CampaignAdmin\\CampaignAdmin.ERROR_DUPLICATE_NAME' , 'Name "{Name}" already exists' , [ 'Name' => $ title ] ) , 'NewTitle' ) ; } // Create and return $ campaign = ChangeSet :: create ( ) ; $ campaign -> Name = $ title ; $ campaign -> write ( ) ; return $ campaign -> ID ; } // Get selected campaign ID $ campaignID = null ; if ( is_array ( $ data ) && ! empty ( $ data [ 'Campaign' ] ) ) { $ campaignID = $ data [ 'Campaign' ] ; } elseif ( is_numeric ( $ data ) ) { $ campaignID = ( int ) $ data ; } if ( empty ( $ campaignID ) ) { throw $ this -> validationResult ( _t ( __CLASS__ . '.NONE_SELECTED' , 'No campaign selected' ) ) ; } return $ campaignID ; }
Find or build campaign from posted data

@param array|int $data
@return int
@throws ValidationException
Find or build campaign from posted data