private function handleWebleadFormSubmission(X2Model $model, $extractedParams) { $newRecord = $model->isNewRecord; if (isset($_POST['Contacts'])) { $model->createEvent = false; $model->setX2Fields($_POST['Contacts'], true); // Extra sanitizing $p = Fields::getPurifier(); foreach ($model->attributes as $name => $value) { if ($name != $model->primaryKey() && !empty($value)) { $model->{$name} = $p->purify($value); } } $now = time(); $model->visibility = 1; $model->validate(null, false); if (!$model->hasErrors()) { $model->lastUpdated = $now; $model->updatedBy = 'admin'; if ($model->asa('X2DuplicateBehavior') && $model->checkForDuplicates()) { $duplicates = $model->getDuplicates(); $oldest = $duplicates[0]; $fields = $model->getFields(true); foreach ($fields as $field) { if (!in_array($field->fieldName, $model->X2MergeableBehavior->restrictedFields) && !is_null($model->{$field->fieldName})) { if ($field->type === 'text' && !empty($oldest->{$field->fieldName})) { $oldest->{$field->fieldName} .= "\n--\n" . $model->{$field->fieldName}; } else { $oldest->{$field->fieldName} = $model->{$field->fieldName}; } } } $model = $oldest; $newRecord = $model->isNewRecord; } if ($newRecord) { $model->createDate = $now; $model->assignedTo = $this->controller->getNextAssignee(); } $success = $model->save(); //TODO: upload profile picture url from webleadfb if ($success) { if ($extractedParams['generateLead']) { self::generateLead($model, $extractedParams['leadSource']); } if ($extractedParams['generateAccount']) { self::generateAccount($model); } self::addTags($model); $tags = !isset($_POST['tags']) || empty($_POST['tags']) ? array() : explode(',', $_POST['tags']); if ($newRecord) { X2Flow::trigger('WebleadTrigger', array('model' => $model, 'tags' => $tags)); } //use the submitted info to create an action Actions::associateAction($model, array('actionDescription' => Yii::t('contacts', 'Web Lead') . "\n\n" . Yii::t('contacts', 'Name') . ': ' . CHtml::decode($model->firstName) . " " . CHtml::decode($model->lastName) . "\n" . Yii::t('contacts', 'Email') . ": " . CHtml::decode($model->email) . "\n" . Yii::t('contacts', 'Phone') . ": " . CHtml::decode($model->phone) . "\n" . Yii::t('contacts', 'Background Info') . ": " . CHtml::decode($model->backgroundInfo), 'type' => 'note')); // create a notification if the record is assigned to someone $event = new Events(); $event->associationType = 'Contacts'; $event->associationId = $model->id; $event->user = $model->assignedTo; $event->type = 'weblead_create'; $event->save(); if ($model->assignedTo != 'Anyone' && $model->assignedTo != '') { $notif = new Notification(); $notif->user = $model->assignedTo; $notif->createdBy = 'API'; $notif->createDate = time(); $notif->type = 'weblead'; $notif->modelType = 'Contacts'; $notif->modelId = $model->id; $notif->save(); $profile = Profile::model()->findByAttributes(array('username' => $model->assignedTo)); /* send user that's assigned to this weblead an email if the user's email address is set and this weblead has a user email template */ if ($profile !== null && !empty($profile->emailAddress)) { $subject = Yii::t('marketing', 'New Web Lead'); $message = Yii::t('marketing', 'A new web lead has been assigned to you: ') . CHtml::link($model->firstName . ' ' . $model->lastName, array('/contacts/contacts/view', 'id' => $model->id)) . '.'; $address = array('to' => array(array('', $profile->emailAddress))); $emailFrom = Credentials::model()->getDefaultUserAccount(Credentials::$sysUseId['systemNotificationEmail'], 'email'); if ($emailFrom == Credentials::LEGACY_ID) { $emailFrom = array('name' => $profile->fullName, 'address' => $profile->emailAddress); } $status = $this->controller->sendUserEmail($address, $subject, $message, null, $emailFrom); } } } else { $errMsg = 'Error: WebListenerAction.php: model failed to save'; /**/ AuxLib::debugLog($errMsg); Yii::log($errMsg, '', 'application.debug'); } $this->controller->renderPartial('application.components.views.webFormSubmit', array('type' => 'weblead', 'redirectUrl' => $extractedParams['redirectUrl'])); Yii::app()->end(); // success! } } $sanitizedGetParams = self::sanitizeGetParams(); $this->controller->renderPartial('application.components.views.webForm', array_merge(array('type' => 'weblead'), $sanitizedGetParams)); }