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.

Customising the CMS

Copying Data from DataObject to Member


Reply

2 Posts   1040 Views

Avatar
zenmonkey

28 August 2009 at 10:21am Community Member, 528 Posts

I have UserApplication for that I want to move the Data to a Member Group once the User is approved, however I'm having trouble writing to the Member Class, I think its because I have Extra KEys and I need to match them up

Here is the DataObject Containing the Unapproved Member

class UserApplication extends DataObject {
   static $db = array(
         'FirstName' => 'Text',
         'Surname' => 'Text',
         'Email' => 'Text',
         'CompanyName' => 'Text',
         'CompanyType' => "Text",
         'CompanyURL' => 'Text',
         'HomePhone' => 'Text',
         'Address' => 'Text',
         'AddressLine2' => 'Text',
         'City' => 'Text',
         'Country' => 'Text',
         'TaxIDNumber' => 'Text',
         'Distributor' => 'Text',
         'SalesRep' => 'Text',
         'Notes' => 'Text',
         'ApprovedMember' => 'Boolean',
         'Password' => 'Text'
   );
   
   static $has_one = array(
      'RegistrationPage' => 'RegistrationPage',      
   );
   
   public function getCMSFields_forPopup()
   {
      $companyTypeList = array(
         'Retail' => 'Retail',
         'Online' => 'Online',
         'Distributor' => 'Distributor',
         'Press' => 'Press'
      );
      
      return new FieldSet (
         new CheckBoxField('ApprovedMember', 'Approved Member'),
         new TextField('FirstName', 'First Name'),
         new TextField('Surname','Last Name'),
         new EmailField('Email'),
         new TextField('CompanyName','Company Name'),
         new DropdownField('CompanyType','Company Type',$companyTypeList),
         new TextField('CompanyURL','Company Website'),
         new TextField('HomePhone','Company Phone'),
         new TextField('Address','Address'),
         new TextField('AddressLine2','Address Line 2'),
         new TextField('City','City'),
         new TextField('Country','Country'),
         new TextField('TaxIDNumber','TaxIDNumber'),
         new TextField('Distributor','Distributor'),
         new TextField('SalesRep','Sales Rep'),
         new TextareaField('Notes','Description'),
         new ConfirmedPasswordField('Password')
      );
      
   }

And here is the CMS function writing to the Member Class

class ApplicationDataObjectManager extends DataObjectManager
{
public $popupClass = "ApplicationDataObjectManager_Popup";
public $itemClass = "ApplicationDataObjectManager_Item";

}

class ApplicationDataObjectManager_Popup extends DataObjectManager_Popup
{
function __construct($controller, $name, $fields, $validator, $readonly, $dataObject) {
parent::__construct($controller, $name, $fields, $validator, $readonly, $dataObject);
$this->Actions()->push(
new FormAction('ApproveUser','Approve User')
);
}

function ApproveUser($data, $form, $request) {
// do stuff
       $member = new Member();
      $form->saveInto($member);
      
      $groupID = 2;
      
      switch ($member->CompanyType) {
         case ("Retail"): $groupID = 3;
            break;
         case ("Distributor"): $groupID = 4;
            break;
         case ("Press"): $groupID = 5;
            break;
         case ("Online"): $groupID = 6;
            break;
      }
      
      /*$member->write();*/
   
      if($group = DataObject::get_one('Group', "ID = 2")) {
         $member->Groups()->add($group);
         return print_r($member);   
         //Director::redirectBack();
      }
      else{
         return print_r($member->ID);   
      }

}

}

class ApplicationDataObjectManager_Item extends DataObjectManager_Item
{

}

Avatar
MarcusDalgren

29 August 2009 at 2:16am Community Member, 288 Posts

I see that you're extending the DataObjectManager module by Uncle Cheese. If you haven't done so already then you should ask your question inte DataObjectManager forum. Uncle Cheese is quick on the replies so I bet you'll get help there.

Also it would be really good to know what actually happens when you try to write to the member class.