<?php
/** @var ecQuotes $ecquotes */
$ecq = $modx->getService('ecquotes', 'ecQuotes', $modx->getOption('ecquotes.core_path', null, $modx->getOption('core_path') . 'components/ecquotes/') . 'model/ecquotes/', $scriptProperties);
if (!($ecq instanceof ecQuotes)) {
$ecq->logError($snippet, 'Failed to load class: ecQuotes.');
return '';
}
$formFields = array();
$formFields = $hook->getValues();
$custFields = $ecq->getCustomerFields($formFields);
$reqFields = $ecq->getRequestFields($formFields);
$custObj = $modx->newObject('QuoteCustomer', $custFields);
$reqObj = $modx->newObject('QuoteRequest', $reqFields);
$reqObj->addOne($custObj);
if (!is_object($reqObj) || !($reqObj instanceof xPDOObject)) {
$ecq->logError($snippet, 'Failed to create object.');
return false;
}
if (!$reqObj->save()) {
$ecq->logError($snippet, 'An error occured while saving object: QuoteRequest.');
return false;
}
return true;
/**
* Get customer form field values
*
* @param array $fields a collection of the Formit fields
*/
public function getCustomerFields(array $fields)
{
$this->custFields = array(
'firstname' => $fields['firstname'],
'lastname' => $fields['lastname'],
'email' => $fields['email'],
'phone' => $fields['phone'],
'company' => $fields['company'],
'website' => $fields['website']
);
return $this->custFields;
}This question has been answered by BobRay. See the first response.
$custObj = $modx->newObject('QuoteCustomer');
$custObj->fromArray($custFields);
$custObj = $modx->newObject('QuoteCustomer');
$custObj->set('firstname', $fields['firstname']);
$custObj->set('lastname', $fields['lastname']);
// etc.
$reqObj = $modx->newObject('QuoteRequest');
$reqObj->set('servicedate', 1482813786);
$reqObj->set('city_pickup', 'Townsville');
$custObj = $modx->newObject('QuoteCustomer');
$custObj->set('firstname', 'John');
$custObj->set('lastname', 'Doe');$custObj->save();
[2016-12-27 00:31:04] (ERROR @ /Users/path/core/xpdo/xpdo.class.php : 643) Could not load class: QuoteCustomer from mysql.quotecustomer. [2016-12-27 00:31:04] (ERROR @ /Users/path/core/xpdo/xpdo.class.php : 643) Could not load class: QuoteRequest from mysql.quoterequest.
$custObj = $modx->newObject('QuoteCustomer', array(
'firstname' => 'John',
'lastname' => 'Doe',
'email' => '[email protected]',
'phone' => '212-555-5555'
));
$reqObj = $modx->newObject('QuoteRequest', array(
'servicedate' => strtotime('2016-12-29'),
'streetnumber_pickup' => 6,
'streetname_pickup' => 'Avenue Road'
));
$reqObj->addOne($custObj);
if (!is_object($reqObj) || !($reqObj instanceof xPDOObject)) {
$ecq->logError($snippet, 'Failed to create object.');
return false;
}
if (!$reqObj->save()) {
$ecq->logError($snippet, 'An error occured while saving object: QuoteRequest.');
return false;
}
return true;
<?xml version="1.0" encoding="UTF-8"?>
<model package="ecquotes" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" version="1.1">
<object class="QuoteCustomer" table="ecquotes_customers" extends="xPDOSimpleObject">
<field key="firstname" dbtype="varchar" precision="100" phptype="string" null="false" default=""/>
<field key="lastname" dbtype="varchar" precision="100" phptype="string" null="false" default=""/>
...
<composite alias="Request" class="QuoteRequest" local="id" foreign="customer" cardinality="many" owner="local"/>
<composite alias="Process" class="QuoteProcess" local="id" foreign="customer" cardinality="many" owner="local"/>
<composite alias="Booking" class="QuoteBooking" local="id" foreign="customer" cardinality="many" owner="local"/>
</object>
<object class="QuoteRequest" table="ecquotes_requests" extends="xPDOSimpleObject">
<field key="customer" dbtype="int" precision="10" phptype="integer" null="false" default=""/>
...
<aggregate alias="Customer" class="QuoteCustomer" local="customer" foreign="id" cardinality="one" owner="foreign"/>
<composite alias="Process" class="QuoteProcess" local="id" foreign="request" cardinality="many" owner="local"/>
<composite alias="Booking" class="QuoteBooking" local="id" foreign="request" cardinality="many" owner="local"/>
</object>
...
</model>