Overview

Packages

  • application
    • commands
    • components
      • actions
      • filters
      • leftWidget
      • permissions
      • sortableWidget
      • util
      • webupdater
      • x2flow
        • actions
        • triggers
      • X2GridView
      • X2Settings
    • controllers
    • models
      • embedded
    • modules
      • accounts
        • controllers
        • models
      • actions
        • controllers
        • models
      • calendar
        • controllers
        • models
      • charts
        • models
      • contacts
        • controllers
        • models
      • docs
        • components
        • controllers
        • models
      • groups
        • controllers
        • models
      • marketing
        • components
        • controllers
        • models
      • media
        • controllers
        • models
      • mobile
        • components
      • opportunities
        • controllers
        • models
      • products
        • controllers
        • models
      • quotes
        • controllers
        • models
      • services
        • controllers
        • models
      • template
        • models
      • users
        • controllers
        • models
      • workflow
        • controllers
        • models
      • x2Leads
        • controllers
        • models
  • None
  • system
    • base
    • caching
    • console
    • db
      • ar
      • schema
    • validators
    • web
      • actions
      • auth
      • helpers
      • widgets
        • captcha
        • pagers
  • zii
    • widgets
      • grid

Classes

  • ActionCompleteTrigger
  • ActionOverdueTrigger
  • ActionUncompleteTrigger
  • BaseUserTrigger
  • BaseWorkflowStageTrigger
  • BaseWorkflowTrigger
  • BaseX2FlowEmail
  • BaseX2FlowWorkflowStageAction
  • CampaignEmailClickTrigger
  • CampaignEmailOpenTrigger
  • CampaignUnsubscribeTrigger
  • EmailOpenTrigger
  • InboundEmailTrigger
  • MacroTrigger
  • OutboundEmailTrigger
  • RecordCreateTrigger
  • RecordDeleteTrigger
  • RecordUpdateTrigger
  • RecordViewTrigger
  • UserLoginTrigger
  • UserLogoutTrigger
  • WorkflowCompleteStageTrigger
  • WorkflowCompleteTrigger
  • WorkflowRevertStageTrigger
  • WorkflowStartStageTrigger
  • WorkflowStartTrigger
  • X2FlowApiCall
  • X2FlowCreateAction
  • X2FlowCreateEvent
  • X2FlowCreateNotif
  • X2FlowEmail
  • X2FlowRecordComment
  • X2FlowRecordCreate
  • X2FlowRecordCreateAction
  • X2FlowRecordDelete
  • X2FlowRecordListAdd
  • X2FlowRecordListRemove
  • X2FlowRecordReassign
  • X2FlowRecordTag
  • X2FlowRecordUpdate
  • X2FlowSplitter
  • X2FlowSwitch
  • X2FlowWorkflowCompleteStage
  • X2FlowWorkflowRevertStage
  • X2FlowWorkflowStartStage
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /*****************************************************************************************
  3:  * X2Engine Open Source Edition is a customer relationship management program developed by
  4:  * X2Engine, Inc. Copyright (C) 2011-2016 X2Engine Inc.
  5:  * 
  6:  * This program is free software; you can redistribute it and/or modify it under
  7:  * the terms of the GNU Affero General Public License version 3 as published by the
  8:  * Free Software Foundation with the addition of the following permission added
  9:  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
 10:  * IN WHICH THE COPYRIGHT IS OWNED BY X2ENGINE, X2ENGINE DISCLAIMS THE WARRANTY
 11:  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
 12:  * 
 13:  * This program is distributed in the hope that it will be useful, but WITHOUT
 14:  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 15:  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
 16:  * details.
 17:  * 
 18:  * You should have received a copy of the GNU Affero General Public License along with
 19:  * this program; if not, see http://www.gnu.org/licenses or write to the Free
 20:  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 21:  * 02110-1301 USA.
 22:  * 
 23:  * You can contact X2Engine, Inc. P.O. Box 66752, Scotts Valley,
 24:  * California 95067, USA. or at email address contact@x2engine.com.
 25:  * 
 26:  * The interactive user interfaces in modified source and object code versions
 27:  * of this program must display Appropriate Legal Notices, as required under
 28:  * Section 5 of the GNU Affero General Public License version 3.
 29:  * 
 30:  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
 31:  * these Appropriate Legal Notices must retain the display of the "Powered by
 32:  * X2Engine" logo. If the display of the logo is not reasonably feasible for
 33:  * technical reasons, the Appropriate Legal Notices must display the words
 34:  * "Powered by X2Engine".
 35:  *****************************************************************************************/
 36: 
 37: /**
 38:  * X2FlowAction that creates an event
 39:  *
 40:  * @package application.components.x2flow.actions
 41:  */
 42: class X2FlowCreateEvent extends X2FlowAction {
 43: 
 44:     public $title = 'Post to Activity Feed';
 45:     public $info = 'Creates an activity feed event.'; // You can write your own message, or X2Engine will automatically choose one based on what triggered this flow.';
 46: 
 47:     public function paramRules(){
 48:         // $eventTypes = array('auto'=>Yii::t('app','Auto')) + Dropdowns::getItems(113,'app');
 49:         $eventTypes = Dropdowns::getItems(113, 'studio');
 50: 
 51:         return array_merge (parent::paramRules (), array (
 52:             'title' => Yii::t('studio', $this->title),
 53:             'info' => Yii::t('studio', $this->info),
 54:             'options' => array(
 55:                 array(
 56:                     'name' => 'type', 
 57:                     'label' => Yii::t('studio', 'Post Type'), 
 58:                     'type' => 'dropdown', 
 59:                     'options' => $eventTypes
 60:                 ),
 61:                 array(
 62:                     'name' => 'text',
 63:                     'label' => Yii::t('studio', 'Text'),
 64:                     'type' => 'text'
 65:                 ),
 66:                 array(
 67:                     'name' => 'visibility',
 68:                     'label' => Yii::t('studio', 'Visibility'),
 69:                     'type' => 'dropdown',
 70:                     'options' => array (
 71:                         1 => Yii::t('admin','Public'),
 72:                         0 => Yii::t('admin','Private'),
 73:                     ),
 74:                     'defaultVal' => 1
 75:                 ),
 76:                 array(
 77:                     'name' => 'feed',
 78:                     'optional' => 1,
 79:                     'label' => 'User (optional)',
 80:                     'type' => 'dropdown', 
 81:                     'options' => array(
 82:                         '' => '----------',
 83:                         'auto' => 'Auto'
 84:                         ) + X2Model::getAssignmentOptions(false, false)),
 85:                 array(
 86:                     'name' => 'user',
 87:                     'optional' => 1,
 88:                     'label' => 'Author',
 89:                     'type' => 'dropdown', 
 90:                     'options' => array(
 91:                         'admin' => 'admin',
 92:                         'auto' => Yii::t('studio', 'Auto'),
 93:                         ) + array_diff_key (
 94:                             X2Model::getAssignmentOptions(false, false),
 95:                             array ('admin' => '')
 96:                         ),
 97:                     'defaultVal' => 'admin',
 98:                 ),
 99:                 array(
100:                     'name' => 'createNotif', 
101:                     'label' => Yii::t('studio', 'Create Notification?'),
102:                     'type' => 'boolean',
103:                     'defaultVal' => true
104:                 ),
105:             )
106:         ));
107:     }
108: 
109:     public function execute(&$params){
110:         $options = &$this->config['options'];
111: 
112:         $event = new Events;
113:         $notif = new Notification;
114: 
115:         $user = $this->parseOption('feed', $params);
116:         $author = $this->parseOption('user', $params);
117: 
118:         $type = $this->parseOption('type', $params);
119:         $visibility = $this->parseOption('visibility', $params);
120: 
121: // Unfinsihed automatic event type detection feature
122: //        if($type === 'auto'){
123: //            if(!isset($params['model']))
124: //                return array (false, '');
125: //            $notif->modelType = get_class($params['model']);
126: //            $notif->modelId = $params['model']->id;
127: //            $notif->type = $this->getNotifType();
128: //
129: //            $event->associationType = get_class($params['model']);
130: //            $event->associationId = $params['model']->id;
131: //            $event->type = $this->getEventType();
132: //            if($params['model']->hasAttribute('visibility'))
133: //                $event->visibility = $params['model']->visibility;
134: //            // $event->user = $this->parseOption('user',$params);
135: //        } else{
136:         $text = $this->parseOption('text', $params);
137: 
138:         $notif->type = 'custom';
139:         $notif->text = $text;
140: 
141:         $event->type = 'feed';
142:         $event->subtype = $type;
143:         $event->text = $text;
144:         $event->visibility = $visibility;
145: 
146:         if ($author == 'auto' && isset($params['model']) && 
147:             $params['model']->hasAttribute('assignedTo') && 
148:             !empty($params['model']->assignedTo)) {
149: 
150:             $event->user = $params['model']->assignedTo;
151:         } else {
152:             $event->user = $author;
153:         }
154: 
155:         if (!empty ($user)) {
156:             if ($user == 'auto' && isset($params['model']) && 
157:                 $params['model']->hasAttribute('assignedTo') && 
158:                 !empty($params['model']->assignedTo)) {
159: 
160:                 $associatedUser = $params['model']->assignedTo;
161:             } else {
162:                 $associatedUser = $user;
163:             }
164:             $associatedUser = User::model ()->findByAttributes (array (
165:                 'username' => $associatedUser
166:             ));
167:             if ($associatedUser) {
168:                 $event->associationType = 'User';
169:                 $event->associationId = $associatedUser->id;
170:                 $notif->modelType = 'Profile';
171:                 $notif->modelId = $event->associationId;
172:                 $notif->type = 'social_post';
173:                 $notif->createdBy = $event->user;
174:                 $notif->user = $associatedUser->username;
175:             }
176:         }
177: 
178:         if(!$this->parseOption('createNotif', $params)) {
179:             if (!$notif->save()) {
180:                 $errors = $notif->getErrors ();
181:                 return array(false, array_shift($errors));
182:             }
183:         }
184: 
185:         if ($event->save()) {
186:             return array (true, "");
187:         } else {
188:             $errors = $event->getErrors ();
189:             return array(false, array_shift($errors));
190:         }
191: 
192:     }
193: 
194: }
195: 
X2CRM Documentation API documentation generated by ApiGen 2.8.0