public function save(Workflow_SubmissionModel $model)
{
$settings = craft()->workflow->getSettings();
$isNewSubmission = !$model->id;
if ($model->id) {
$record = Workflow_SubmissionRecord::model()->findById($model->id);
} else {
$record = new Workflow_SubmissionRecord();
}
$record->setAttributes($model->getAttributes(), false);
$record->validate();
$model->addErrors($record->getErrors());
if ($model->hasErrors()) {
WorkflowPlugin::log(print_r($model->getAllErrors(), true), LogLevel::Error, true);
return false;
}
// Fire an 'onBeforeSaveSubmission' event
$event = new Event($this, array('submission' => $model));
$this->onBeforeSaveSubmission($event);
// Allow event to cancel submission saving
if (!$event->performAction) {
return false;
}
if (!craft()->elements->saveElement($model)) {
return false;
}
if ($isNewSubmission) {
$record->id = $model->id;
}
$record->save(false);
if ($isNewSubmission) {
$model->id = $record->id;
}
// Fire an 'onSaveSubmission' event
$this->onSaveSubmission(new Event($this, array('submission' => $model)));
if ($isNewSubmission) {
// Trigger notification to publisher
if ($settings->publisherNotifications) {
$this->_sendPublisherNotificationEmail($model);
}
}
return true;
}