public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $fields->removeByName('EmptyString');
     if ($this->ID > 0) {
         $fields->removeByName('DefaultValueID');
     }
     return $fields;
 }
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $fields->removeByName('EmptyString');
     $fields->removeByName('DefaultValueID');
     $fields->add(new NumericField('MaxItemsToRank', 'Max. Items To Rank'));
     $fields->add(new HtmlEditorField('Intro', 'Intro Text'));
     return $fields;
 }
 /**
  * @return IQuestionValueTemplate[]
  */
 public function getValues()
 {
     if (!$this->isCountrySelector()) {
         return parent::getValues();
     }
     $extra_options = array('Worldwide' => 'Worldwide', 'Prefer not to say' => 'Prefer not to say', 'Too many to list' => 'Too many to list');
     $options = array_merge($extra_options, CountryCodes::$iso_3166_countryCodes);
     $res = array();
     foreach ($options as $k => $v) {
         array_push($res, new ArrayData(array('ID' => $k, 'Label' => $v, 'Value' => $k)));
     }
     return $res;
 }
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $valid_steps = $this->Report()->Template()->Steps()->column();
     $entity_survey_temp = $this->Report()->Template()->EntitySurveys();
     foreach ($entity_survey_temp as $est) {
         $est_steps = $est->Steps()->column();
         $valid_steps = array_merge($valid_steps, $est_steps);
     }
     $questionList = SurveyMultiValueQuestionTemplate::get()->filter(array('StepID' => $valid_steps))->sort('Label')->map('ID', 'Label')->toArray();
     $questionSelect = DropdownField::create('QuestionID', 'Question')->setSource($questionList);
     $fields->replaceField('QuestionID', $questionSelect);
     return $fields;
 }
 /**
  * @param int $id
  * @return IQuestionValueTemplate
  */
 public function getValueById($id)
 {
     $res = parent::getValueById($id);
     if ($this->isCountrySelector()) {
         $extra_options = ['Worldwide' => 'Worldwide', 'Prefer not to say' => 'Prefer not to say', 'Too many to list' => 'Too many to list'];
         $options = array_merge($extra_options, CountryCodes::$iso_3166_countryCodes);
         if (isset($options[$id])) {
             $label = $options[$id];
             $res = new SurveyQuestionValueTemplate();
             $res->Value = $id;
             $res->Label = $label;
         }
     }
     return $res;
 }
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $fields->add(new TextField('RowsLabel', 'Rows Label', '', 255));
     $fields->add(new TextField('AdditionalRowsLabel', 'Additional Rows Label', '', 255));
     $fields->add(new HtmlEditorField('AdditionalRowsDescription', 'Additional Rows Description'));
     if ($this->ID > 0) {
         $fields->removeByName('DefaultValueID');
         $fields->removeByName('Values');
         $config = GridFieldConfig_RecordEditor::create();
         $config->addComponent(new GridFieldSortableRows('Order'));
         $add_button = $config->getComponentByType('GridFieldAddNewButton');
         $add_button->setButtonName('Add New Column Value');
         $gridField = new GridField('Columns', 'Columns', $this->Columns(), $config);
         $fields->add($gridField);
         $config = GridFieldConfig_RecordEditor::create();
         $config->addComponent(new GridFieldSortableRows('Order'));
         $add_button = $config->getComponentByType('GridFieldAddNewButton');
         $add_button->setButtonName('Add New Row Value');
         $gridField = new GridField('Rows', 'Rows', $this->Rows(), $config);
         $fields->add($gridField);
     }
     return $fields;
 }
    private function buildSurveyBuilderHeaders($flat_fields = array(), $flat_fields_entity = array())
    {
        $survey_header_query = <<<SQL
SELECT SS.Name, Q.ID AS QuestionID, Q.Name, Q.ClassName FROM SurveyTemplate S
INNER JOIN SurveyStepTemplate SS ON SS.SurveyTemplateID = S.ID
INNER JOIN SurveyQuestionTemplate Q ON Q.StepID = SS.ID
WHERE S.ClassName = 'SurveyTemplate' AND Q.ClassName <> 'SurveyLiteralContentQuestionTemplate'
ORDER BY SS.`Order`, Q.`Order`;
SQL;
        $res = DB::query($survey_header_query);
        $template_1 = array();
        $template_1['SurveyID'] = null;
        $template_1['CreatedByID'] = null;
        $template_1['Email'] = null;
        $template_1['Created'] = null;
        $template_1['LastEdited'] = null;
        foreach ($res as $row) {
            $name = $row['Name'];
            if (in_array($name, $flat_fields)) {
                $q = SurveyMultiValueQuestionTemplate::get()->byID(intval($row['QuestionID']));
                if (is_null($q)) {
                    continue;
                }
                foreach ($q->Values() as $v) {
                    $header = sprintf('%s - %s', $name, $v->Value);
                    $template_1[$header] = null;
                }
            } else {
                $template_1[$name] = null;
            }
        }
        $entity_survey_header_query = <<<SQL
SELECT SS.Name, Q.ID AS QuestionID, Q.Name, Q.ClassName FROM SurveyTemplate S
INNER JOIN EntitySurveyTemplate ES ON ES.ID = S.ID
INNER JOIN SurveyStepTemplate SS ON SS.SurveyTemplateID = S.ID
INNER JOIN SurveyQuestionTemplate Q ON Q.StepID = SS.ID
WHERE
S.ClassName = 'EntitySurveyTemplate'
AND Q.ClassName <> 'SurveyLiteralContentQuestionTemplate'
AND ES.EntityName = 'Deployment'
ORDER BY SS.`Order`, Q.`Order`;
SQL;
        $res = DB::query($entity_survey_header_query);
        $template_2 = array('DeploymentID' => null);
        foreach ($res as $row) {
            $name = $row['Name'];
            if (in_array($name, $flat_fields_entity)) {
                $q = SurveyMultiValueQuestionTemplate::get()->byID(intval($row['QuestionID']));
                if (is_null($q)) {
                    continue;
                }
                foreach ($q->Values() as $v) {
                    $header = sprintf('%s - %s', $name, $v->Value);
                    $template_2[$header] = null;
                }
            } else {
                if ($row['ClassName'] === 'SurveyRadioButtonMatrixTemplateQuestion') {
                    $q = SurveyRadioButtonMatrixTemplateQuestion::get()->byID(intval($row['QuestionID']));
                    if (is_null($q)) {
                        continue;
                    }
                    foreach ($q->Rows() as $r) {
                        $header = sprintf('%s - %s', $name, $r->Value);
                        $template_2[$header] = null;
                    }
                } else {
                    $template_2[$name] = null;
                }
            }
        }
        return array($template_1, $template_2);
    }