|
|
- <?php
- if(!defined('QUINTACMS') ) die("No quinta.");
-
- if (!defined("CREATEACCOUNTMODULE.CLASS.PHP")){
- define("CREATEACCOUNTMODULE.CLASS.PHP",1);
-
- /**
- * Class CreateAccountModule - a registration page module
- *@author Erik Winn <sidewalksoftware@gmail.com>
- *
- * This module provides a center page block with a registration page.
- * On success the user is redirected to his/her UserPage.
- * On failure, the entry fields are redrawn and an error message
- * is displayed next to any fields that are incorrect or required.
- *
- * The module stores the Account, Person, Address in the respective tables
- * - all of which are associated with the Person. An Account can have _one_
- * and only one Person, a Person may have many Persons and Addresses
- * which will be associated with the original Person for the Account.
- *
- *@version 0.3
- *
- *@package Quinta
- * @subpackage Modules
- */
- class CreateAccountModule extends QPanel{
- protected $objParentObject;
-
- /** ******************************
- * Section: Local object instances
- ******************************** */
- protected $objAccount;
- protected $objPerson;
- protected $objAddress;
-
- /** ******************************
- * Section: Object MetaControls
- ******************************** */
- protected $mctAccount;
- protected $mctPerson;
- protected $mctAddress;
-
- /** ******************************
- * Section: Control fields
- ******************************** */
- // Controls for Account's Data Fields
- public $txtUsername;
- public $txtPassword;
- public $txtPassword2;
-
- // Controls for Person's Data Fields
- public $txtFirstName;
- public $txtMiddleName;
- public $txtLastName;
- public $txtNamePrefix;
- public $txtNameSuffix;
- public $txtCompanyName;
-
- // Controls for Address's Data Fields
- public $txtTitle;
- public $txtStreet1;
- public $txtStreet2;
- public $txtSuburb;
- public $txtCity;
- public $txtCounty;
- public $lstZone;
- public $lstCountry;
- public $txtPostalCode;
- public $lstAddressType;
- // public $txtEmailAddress;
- // public $txtPhoneNumber;
-
- // Action Button Controls
- public $btnSave;
- public $btnReset;
- public $btnCancel;
-
- /**
- * Module constructor
- * NOTE: This module ignores the required extra parameters ..
- *@param ContentBlockController - parent controller object.
- *@param mixed - extra parameters, ignored
- */
- public function __construct( ContentBlockController $objParentObject, $mixParameters=null){
- //Parent should always be a ContentBlockController
- $this->objParentObject =& $objParentObject;
- try {
- parent::__construct($this->objParentObject/*, $this->strCssId*/);
- } catch (QCallerException $objExc) {
- $objExc->IncrementOffset();
- throw $objExc;
- }
- // We'll let the MetaControls create the new objects - this gives us a nice connection
- // to relevant fields and saving methods immediately.
- $this->mctAccount = AccountMetaControl::Create($this);
- $this->mctPerson = PersonMetaControl::Create($this);
- $this->mctAddress = AddressMetaControl::Create($this);
-
- // Use Account MetaControl's methods to create qcontrols based on Account's data fields
- $this->txtUsername = $this->mctAccount->txtUsername_Create('username', true);
- $this->txtUsername->Required = true;
- $this->txtUsername->Name = Quinta::Translate('Login Name');
- $this->txtPassword = $this->mctAccount->txtPassword_Create('password');
- $this->txtPassword->TextMode = QTextMode::Password;
- $this->txtPassword->Required = true;
- $this->txtPassword2 = new QTextBox($this, 'password2');
- $this->txtPassword2->TextMode = QTextMode::Password;
- $this->txtPassword2->Name = Quinta::Translate('Confirm Password');
- $this->txtPassword2->Required = true;
- //Person MetaControl methods
- $this->txtNamePrefix = $this->mctPerson->txtNamePrefix_Create();
- $this->txtNamePrefix->Name = Quinta::Translate('Mr., Ms., Dr., etc. ');
- $this->txtFirstName = $this->mctPerson->txtFirstName_Create();
- $this->txtFirstName->Required = true;
- $this->txtMiddleName = $this->mctPerson->txtMiddleName_Create();
- $this->txtLastName = $this->mctPerson->txtLastName_Create();
- $this->txtLastName->Required = true;
- $this->txtNameSuffix = $this->mctPerson->txtNameSuffix_Create();
- $this->txtNameSuffix->Name = Quinta::Translate('Jr., Sr., PhD, etc. ');
- $this->txtCompanyName = $this->mctPerson->txtCompanyName_Create();
- // $this->txtEmailAddress = $this->mctPerson->txtEmailAddress_Create();
- // $this->txtEmailAddress->Required = true;
- // $this->txtEmailAddress->Name =Quinta::Translate('Email Address');
- // $this->txtPhoneNumber = $this->mctPerson->txtPhoneNumber_Create();
- // $this->txtPhoneNumber->Name =Quinta::Translate('Phone Number');
- // Address MetaControl methods
- $this->txtTitle = $this->mctAddress->txtTitle_Create();
- $this->txtTitle->Name = 'Address Title: ';
- $this->txtStreet1 = $this->mctAddress->txtStreet1_Create();
- $this->txtStreet1->Name = 'Street :';
- $this->txtStreet1->Required = true;
-
- $this->txtStreet2 = $this->mctAddress->txtStreet2_Create();
- $this->txtStreet2->Name = 'Street 2 or Apt.#:';
-
- $this->txtSuburb = $this->mctAddress->txtSuburb_Create();
- $this->txtSuburb->Name = 'Suburb :';
-
- $this->txtCity = $this->mctAddress->txtCity_Create();
- $this->txtCity->Name = 'City :';
- $this->txtCity->Required = true;
-
- $this->txtCounty = $this->mctAddress->txtCounty_Create();
- $this->txtCounty->Name = 'County/District :';
-
- $this->lstZone = $this->mctAddress->lstZone_Create();
- $this->lstZone->Name = 'State/Province :';
-
- $this->lstCountry = $this->mctAddress->lstCountry_Create();
- $this->lstCountry->Name = 'Country :';
- $this->lstCountry->Required = true;
-
- $this->txtPostalCode = $this->mctAddress->txtPostalCode_Create();
- $this->txtPostalCode->Name = 'Zip/Postal Code :';
-
- $this->strTemplate = __QUINTA_CORE_VIEWS__ . '/CreateAccountModule.tpl.php';
- // Create Buttons and Actions on this Form
- $this->btnSave = new QButton($this,'createAccountSaveButton');
- $this->btnSave->Text = Quinta::Translate('Register');
- if(IndexPage::$blnAjaxOk)
- $this->btnSave->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'btnSave_Click'));
- else
- $this->btnSave->AddAction(new QClickEvent(), new QServerControlAction($this, 'btnSave_Click'));
- $this->btnSave->CausesValidation = true;
-
- $this->btnCancel = new QButton($this,'createAccountCancelButton');
- $this->btnCancel->Text = Quinta::Translate('Cancel');
- if(IndexPage::$blnAjaxOk)
- $this->btnCancel->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'btnCancel_Click'));
- else
- $this->btnCancel->AddAction(new QClickEvent(), new QServerControlAction($this, 'btnCancel_Click'));
-
- $this->btnReset = new QButton($this,'createAccountResetButton');
- $this->btnReset->Text = Quinta::Translate('Reset');
- if(IndexPage::$blnAjaxOk)
- $this->btnReset->AddAction(new QClickEvent(), new QAjaxControlAction($this, 'btnReset_Click'));
- else
- $this->btnReset->AddAction(new QClickEvent(), new QServerControlAction($this, 'btnReset_Click'));
-
- }
-
- public function Validate(){
- $blnToReturn = true;
- if($this->txtPassword->Text !== $this->txtPassword2->Text ){
- $this->txtPassword->Warning = 'Passwords do not match!';
- $blnToReturn = false;
- }
- return $blnToReturn;
- }
-
- public function btnSave_Click($strFormId, $strControlId, $strParameter){
- $this->objAccount = $this->mctAccount->Account;
- $this->objPerson = $this->mctPerson->Person;
- $this->objAddress = $this->mctAddress->Address;
-
- //Account Metacontrol will encrypt password ..
- $this->objAccount->Password = $this->txtPassword->Text;
-
- //This will give us an Id number for the person, which the Account needs for creation.
- $this->mctPerson->SavePerson();
-
- //Make the appropriate types and foriegn keys ..
- $this->objAccount->PersonId = $this->objPerson->Id;
- $this->objAddress->PersonId = $this->objPerson->Id;
-
- $this->objAddress->TypeId = AddressType::Primary;
- // go ..
- $this->mctAccount->SaveAccount();
- $this->mctAddress->SaveAddress();
- $this->mctPerson->SavePerson();
-
- $this->objAccount->Online = true;
- $this->objAccount->LastLogin = date("Y-m-d H:i:s");
- $this->objAccount->UpdateLoginState();
- $_SESSION["AccountLogin"] = serialize($this->objAccount);
-
- Quinta::Redirect(__QUINTA_SUBDIRECTORY__ . LOGIN_REDIRECT );
- }
-
- public function btnReset_Click($strFormId, $strControlId, $strParameter){
- $this->mctAccount->Refresh();
- $this->mctPerson->Refresh();
- $this->mctAddress->Refresh();
- }
-
- public function btnCancel_Click($strFormId, $strControlId, $strParameter){
- Quinta::Redirect( __QUINTA_SUBDIRECTORY__ . '/index.php/Home' );
- }
- }//end class
- }//end define
- ?>
|