public function actionPublisherCreate() { if (isset($_POST['SelectedTab'], $_POST['Actions']) && (!Yii::app()->user->isGuest || Yii::app()->user->checkAccess($_POST['Actions']['associationType'] . 'View'))) { Yii::app()->clientScript->scriptMap['*.css'] = false; // if association name is sent without id, try to lookup the record by name and type if (isset($_POST['calendarEventTab']) && $_POST['calendarEventTab'] && isset($_POST['Actions']['associationName']) && empty($_POST['Actions']['associationId'])) { $associatedModel = X2Model::getModelOfTypeWithName($_POST['Actions']['associationType'], $_POST['Actions']['associationName']); if ($associatedModel) { $_POST['Actions']['associationId'] = $associatedModel->id; } else { echo CJSON::encode(array('error' => Yii::t('actions', 'Invalid association name'))); Yii::app()->end(); } } if (!Yii::app()->user->isGuest) { $model = new Actions(); } else { $model = new Actions('guestCreate'); $model->verifyCode = $_POST['Actions']['verifyCode']; } $model->setX2Fields($_POST['Actions']); // format dates, if (isset($_POST[get_class($model)]['dueDate'])) { $model->dueDate = Formatter::parseDateTime($_POST[get_class($model)]['dueDate']); } if ($_POST['SelectedTab'] == 'new-event' || $_POST['SelectedTab'] == 'new-small-calendar-event') { $model->disableBehavior('changelog'); $event = new Events(); $event->type = 'calendar_event'; $event->visibility = $model->visibility; $event->associationType = 'Actions'; $event->timestamp = $model->dueDate; $model->type = 'event'; if ($model->completeDate) { $model->completeDate = Formatter::parseDateTime($model->completeDate); } else { $model->completeDate = $model->dueDate; } } // format association if ($model->associationId == '') { $model->associationId = 0; } $association = $this->getAssociation($model->associationType, $model->associationId); if ($association) { $model->associationName = $association->name; if ($association->hasAttribute('lastActivity')) { $association->lastActivity = time(); $association->update(array('lastActivity')); X2Flow::trigger('RecordUpdateTrigger', array('model' => $association)); } } else { $model->associationName = 'none'; } if ($model->associationName == 'None' && $model->associationType != 'none') { $model->associationName = ucfirst($model->associationType); } if (in_array($_POST['SelectedTab'], array('log-a-call', 'new-comment', 'log-time-spent'))) { // Set the complete date accordingly: if (!empty($_POST[get_class($model)]['completeDate'])) { $model->completeDate = Formatter::parseDateTime($_POST[get_class($model)]['completeDate']); } foreach (array('dueDate', 'completeDate') as $attr) { if (empty($model->{$attr})) { $model->{$attr} = time(); } } if ($model->dueDate > $model->completeDate) { // User specified a negative time range! Let's say that the // starting time is equal to when it ended (which is earlier) $model->dueDate = $model->completeDate; } $model->complete = 'Yes'; $model->visibility = '1'; $model->assignedTo = Yii::app()->user->getName(); $model->completedBy = Yii::app()->user->getName(); if ($_POST['SelectedTab'] == 'log-a-call') { $model->type = 'call'; } elseif ($_POST['SelectedTab'] == 'log-time-spent') { $model->type = 'time'; } else { $model->type = 'note'; } } if (in_array($model->type, array('call', 'time', 'note'))) { $event = new Events(); $event->associationType = 'Actions'; $event->type = 'record_create'; $event->user = Yii::app()->user->getName(); $event->visibility = $model->visibility; $event->subtype = $model->type; } // save model $model->createDate = time(); if (!empty($model->type)) { $model->disableBehavior('changelog'); } if ($model->save()) { // action saved to database * if (isset($_POST['Actions']['reminder']) && $_POST['Actions']['reminder']) { $model->createNotifications($_POST['notificationUsers'], $model->dueDate - $_POST['notificationTime'] * 60, 'action_reminder'); } X2Model::updateTimerTotals($model->associationId, X2Model::getModelName($model->associationType)); if (isset($event)) { $event->associationId = $model->id; $event->save(); } $model->syncGoogleCalendar('create', true); } else { if ($model->hasErrors('verifyCode')) { echo CJSON::encode(array('error' => $model->getError('verifyCode'))); Yii::app()->end(); } } echo CJSON::encode(array('success')); Yii::app()->end(); } else { throw new CHttpException(400, Yii::t('app', 'Bad request')); } }