Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

All other Modules

Discuss all other Modules here.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

User Defined Form


Reply

2 Posts   498 Views

Avatar
swaiba

27 July 2011 at 9:25pm Forum Moderator, 1796 Posts

Hi,

I am adding the Highrise API to submit information from a user defined for to highrise (with name / email to create the person and everything else into a note). I'd like to create validation for the User defined from that if my new check box...

   /**
    * @var Array Fields on the user defined form page.
    */
   static $db = array(
      "SubmitButtonText" => "Varchar",
      "OnCompleteMessage" => "HTMLText",
      "ShowClearButton" => "Boolean",
      'DisableSaveSubmissions' => 'Boolean',
      'SendResultsToHighrise' => 'Boolean' //<---- new check box, also added on the submission page
   );

when this is checked the form is required to have three fields firstname, lastname and email - how would I add this in a validator?

Avatar
swaiba

31 July 2011 at 9:07pm Forum Moderator, 1796 Posts

To anwser this myself...

class UserDefinedForm extends Page {
...
   function getCMSValidator() {
      return new UserDefinedForm_Validator();
   }
}

class UserDefinedForm_Validator extends RequiredFields {

   function ExistsAndRequired($f,$strTitle,$strType) {
      return (
         isset($f['Title']) && isset($f['Type']) && isset($f['Required']) &&
         $f['Title'] == $strTitle && $f['Type'] == $strType && $f['Required'] == 1
      );
   }

   function php($data) {
      $bRet = parent::php($data);

      $bFirstname = false;
      $bLastname = false;
      $bEmail = false;

      if (count($data['Fields'])) foreach ($data['Fields'] as $field) {
         if ($this->ExistsAndRequired($field,'Firstname','EditableTextField')) $bFirstname =true;
         if ($this->ExistsAndRequired($field,'Surname','EditableTextField')) $bLastname =true;
         if ($this->ExistsAndRequired($field,'Email','EditableEmailField')) $bEmail =true;
      }

      if ($data['SendResultsToHighrise']==1) {
         if (!($bFirstname && $bLastname && $bEmail)) {
            $this->validationError('Fields','Firstname, Lastname & Email fields are required to send details to Highrise',"required");$bRet = false;
         }
      }

      return $bRet;
   }
}