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

Extend Userforms


Reply

2 Posts   215 Views

Avatar
merrick_sd

17 June 2014 at 9:04pm Community Member, 95 Posts

I'm after a tutorial / advice on how to extend userforms and use updateEmailData rather than edit line 985/990 of UserDefinedForm.php
UserDefinedForm.php

$emailData = array(
      //'RegisteredOffice' => Page_Controller::RegisteredOffice(), adding this here would be easy
      "Sender" => Member::currentUser(),
      "Fields" => $submittedFields
      );

$this->extend('updateEmailData', $emailData, $attachments);

   

   
      

mysite -> _config.php

Object::add_extension('UserDefinedForm_Controller', 'MyUserDefinedFormExtension');

mysite -> code -> MyUserDefinedFormExtension.php

class MyUserDefinedFormExtension extends Extension {
   
   
   static $allowed_actions = array(
      'updateEmailData',
      'index',
       'ping',
       'Form',
      'finished'
   );
   
   
   
function updateEmailData($emailData, $attachments){
      
      $attachments = null;
      $testp = "i am testing";
   
      //UserDefinedForm_Controller::$emailData = array("TestPass" => $testp);
      $emailData = array("TestPass" => $testp);
      
      //echo "update called".$emailData['TestPass']."";
      //print_r($emailData);
   
      return $emailData;
      
   }
}

SubmittedFormEmail.ss (email template)

TestPass: $TestPass

If I move TestPass into the emailData array in UserDefinedForm.php it works.
updateEmailData is being called though on MyUserDefinedFormExtension.php as if I print it shows the TestPass variable

Avatar
merrick_sd

24 June 2014 at 2:13am Community Member, 95 Posts

In case it helps anyone else

mysite >_config.php

Object::add_extension('UserDefinedForm_Controller', 'MyUserDefinedFormExtension');

mysite > code > MysUserDefinedFormExtension.php

<?php
/**
* An Extension to the UserDefinedForm submission process
*
* @package userforms
* Reasoning:
* 1. do not touch source code of userforms module.
* 2. I want to pass data which is captured via the functions in my Page_Controller into the SubmittedFormEmail.ss template
      eg <% loop RegisteredOffice %> $Adddress1 <% end_loop %>
*/

/*
Mysite > _config.php contains the following to register this Extended Class
Object::add_extension('UserDefinedForm_Controller', 'MyUserDefinedFormExtension');

*/
class MyUserDefinedFormExtension extends Extension {
   
   
   private static $allowed_actions = array(
      'updateEmailData'
   );

   public function updateEmailData($emailData, $attachments){
      
      $attachments = null;
      $registeredoffices = Controller::curr()->RegisteredOffice();
      $footericons = Controller::curr()->getAllFooterIcons();
      $NewData = $emailData;
      $NewData["RegisteredOffice"] = $registeredoffices;
      $NewData["AllFooterIcons"] = $footericons;
      $emailData = $NewData;
      $this->emailData = $NewData;

   return $this->emailData; //return emailData
      
   }
   
   public function updateEmail($email, $recipient, $emailData){
   
      $emailData = $this->emailData;
      $email->populateTemplate($emailData);
      
   return;
      
   }
   
}

also at http://www.sspaste.com/paste/show/53a82f953bf20