Skip to content

Commit 25322f9

Browse files
committed
11.2: * [Bots/Behaviors/Deprecations] Moved legacy bot behavior functionality into an optional cerb.behaviors.legacy plugin. This will be retired in 12.0.
1 parent 3ed5642 commit 25322f9

390 files changed

Lines changed: 6966 additions & 6758 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

api/Application.class.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,7 +1171,7 @@ public static function getContext($context, $context_object, &$labels, &$values,
11711171
// Push the stack
11721172
self::$_stack[] = $context;
11731173

1174-
if(false != ($ctx = Extension_DevblocksContext::getByAlias($context, true))) {
1174+
if(($ctx = Extension_DevblocksContext::getByAlias($context, true))) {
11751175
// If blank, check the cache for a prebuilt context object
11761176
if(is_null($context_object)) {
11771177
$stack_max_empty_depth = CerberusContexts::getStackMaxEmptyDepth();
@@ -2174,10 +2174,11 @@ static public function getCurrentActor($actor_context=null, $actor_context_id=nu
21742174
$actor_url = null;
21752175

21762176
// See if we're running inside a bot decision tree
2177-
2178-
$stack = EventListener_Triggers::getTriggerStack();
2179-
2180-
if(EventListener_Triggers::getDepth() > 0
2177+
if(
2178+
DevblocksPlatform::isPluginEnabled('cerb.behaviors.legacy')
2179+
&& class_exists('EventListener_Triggers')
2180+
&& ($stack = EventListener_Triggers::getTriggerStack())
2181+
&& EventListener_Triggers::getDepth() > 0
21812182
&& null != ($trigger_id = end($stack))
21822183
&& !empty($trigger_id)
21832184
&& null != ($trigger = DAO_TriggerEvent::get($trigger_id))
@@ -2359,7 +2360,10 @@ static public function logActivity($activity_point, $target_context, $target_con
23592360
continue;
23602361

23612362
// If not inside a VA
2362-
if(0 == EventListener_Triggers::getDepth()) {
2363+
if(
2364+
!class_exists('EventListener_Triggers')
2365+
|| 0 == EventListener_Triggers::getDepth()
2366+
) {
23632367
// Skip a watcher if they are the actor
23642368
if($actor['context'] == CerberusContexts::CONTEXT_WORKER
23652369
&& $actor['context_id'] == $watcher_id) {

api/app/Mail.php

Lines changed: 47 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -500,17 +500,19 @@ static private function _composeTriggerEvents($message_id, $group_id) {
500500
// Changing the outgoing message through an automation (before behaviors)
501501
AutomationTrigger_MailSent::trigger($message_id, priority_range:[0, 127]);
502502

503-
// After message sent (global)
504-
Event_MailAfterSent::trigger($message_id);
505-
506-
// After message sent in group
507-
Event_MailAfterSentByGroup::trigger($message_id, $group_id);
508-
509-
// Mail received
510-
Event_MailReceived::trigger($message_id);
511-
512-
// Mail received by group
513-
Event_MailReceivedByGroup::trigger($message_id, $group_id);
503+
if(DevblocksPlatform::isPluginEnabled('cerb.behaviors.legacy')) {
504+
// After message sent (global)
505+
Event_MailAfterSent::trigger($message_id);
506+
507+
// After message sent in group
508+
Event_MailAfterSentByGroup::trigger($message_id, $group_id);
509+
510+
// Mail received
511+
Event_MailReceived::trigger($message_id);
512+
513+
// Mail received by group
514+
Event_MailReceivedByGroup::trigger($message_id, $group_id);
515+
}
514516

515517
// Changing the outgoing message through an automation (after behaviors)
516518
AutomationTrigger_MailSent::trigger($message_id, priority_range:[128, 255]);
@@ -545,12 +547,16 @@ static function sendTicketReply(array $properties, ?string &$error=null) : array
545547

546548
$ticket = $email_model->getTicket();
547549

548-
// Modify with behaviors
549-
$runners = $email_model->triggerReplyBehaviors(
550-
$email_model->getProperty('message_id'),
551-
$ticket->id,
552-
$email_model->getProperty('group_id') ?? $ticket->group_id
553-
);
550+
$runners = [];
551+
552+
if(DevblocksPlatform::isPluginEnabled('cerb.behaviors.legacy')) {
553+
// Modify with behaviors
554+
$runners = $email_model->triggerReplyBehaviors(
555+
$email_model->getProperty('message_id'),
556+
$ticket->id,
557+
$email_model->getProperty('group_id') ?? $ticket->group_id
558+
);
559+
}
554560

555561
$hash_commands = [];
556562

@@ -769,28 +775,30 @@ static function sendTicketReply(array $properties, ?string &$error=null) : array
769775
// Changing the outgoing message through an automation (before behaviors)
770776
AutomationTrigger_MailSent::trigger($new_message_id, priority_range:[0, 127]);
771777

772-
// After message sent (global)
773-
Event_MailAfterSent::trigger($new_message_id);
774-
775-
// After message sent in group
776-
Event_MailAfterSentByGroup::trigger($new_message_id, $ticket->group_id);
777-
778-
// Mail received
779-
Event_MailReceived::trigger($new_message_id);
780-
781-
// New message for group
782-
Event_MailReceivedByGroup::trigger($new_message_id, $ticket->group_id);
783-
784-
// Watchers
785-
$context_watchers = CerberusContexts::getWatchers(CerberusContexts::CONTEXT_TICKET, $ticket->id);
786-
787-
// Include the owner
788-
if(!empty($ticket->owner_id) && !isset($context_watchers[$ticket->owner_id]))
789-
$context_watchers[$ticket->owner_id] = true;
790-
791-
if(is_array($context_watchers)) {
792-
foreach (array_unique(array_keys($context_watchers)) as $watcher_id) {
793-
Event_MailReceivedByWatcher::trigger($new_message_id, $watcher_id);
778+
if(DevblocksPlatform::isPluginEnabled('cerb.behaviors.legacy')) {
779+
// After message sent (global)
780+
Event_MailAfterSent::trigger($new_message_id);
781+
782+
// After message sent in group
783+
Event_MailAfterSentByGroup::trigger($new_message_id, $ticket->group_id);
784+
785+
// Mail received
786+
Event_MailReceived::trigger($new_message_id);
787+
788+
// New message for group
789+
Event_MailReceivedByGroup::trigger($new_message_id, $ticket->group_id);
790+
791+
// Watchers
792+
$context_watchers = CerberusContexts::getWatchers(CerberusContexts::CONTEXT_TICKET, $ticket->id);
793+
794+
// Include the owner
795+
if (!empty($ticket->owner_id) && !isset($context_watchers[$ticket->owner_id]))
796+
$context_watchers[$ticket->owner_id] = true;
797+
798+
if (is_array($context_watchers)) {
799+
foreach (array_unique(array_keys($context_watchers)) as $watcher_id) {
800+
Event_MailReceivedByWatcher::trigger($new_message_id, $watcher_id);
801+
}
794802
}
795803
}
796804

api/app/Parser.php

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1880,25 +1880,27 @@ static private function _parseMessage(CerberusParserModel $model, array $options
18801880
// Trigger priorities 0-127 before legacy behaviors
18811881
AutomationTrigger_MailReceived::trigger($model->getMessageId(), $model->getIsNew(), priority_range:[0, 127]);
18821882

1883-
// Trigger Mail Received
1884-
Event_MailReceived::trigger($model->getMessageId());
1885-
1886-
// Trigger Group Mail Received
1887-
Event_MailReceivedByGroup::trigger($model->getMessageId(), $model->getRouteGroup()->id);
1888-
1889-
// Trigger Watcher Mail Received
1890-
$context_watchers = CerberusContexts::getWatchers(CerberusContexts::CONTEXT_TICKET, $model->getTicketId());
1891-
1892-
// Include the owner
1893-
1894-
@$ticket_owner_id = $model->getTicketModel()->owner_id;
1895-
1896-
if(!empty($ticket_owner_id) && !isset($context_watchers[$ticket_owner_id]))
1897-
$context_watchers[$ticket_owner_id] = true;
1898-
1899-
if(is_array($context_watchers) && !empty($context_watchers))
1900-
foreach(array_unique(array_keys($context_watchers)) as $watcher_id) {
1901-
Event_MailReceivedByWatcher::trigger($model->getMessageId(), $watcher_id);
1883+
if(DevblocksPlatform::isPluginEnabled('cerb.behaviors.legacy')) {
1884+
// Trigger Mail Received
1885+
Event_MailReceived::trigger($model->getMessageId());
1886+
1887+
// Trigger Group Mail Received
1888+
Event_MailReceivedByGroup::trigger($model->getMessageId(), $model->getRouteGroup()->id);
1889+
1890+
// Trigger Watcher Mail Received
1891+
$context_watchers = CerberusContexts::getWatchers(CerberusContexts::CONTEXT_TICKET, $model->getTicketId());
1892+
1893+
// Include the owner
1894+
1895+
@$ticket_owner_id = $model->getTicketModel()->owner_id;
1896+
1897+
if (!empty($ticket_owner_id) && !isset($context_watchers[$ticket_owner_id]))
1898+
$context_watchers[$ticket_owner_id] = true;
1899+
1900+
if (is_array($context_watchers) && !empty($context_watchers))
1901+
foreach (array_unique(array_keys($context_watchers)) as $watcher_id) {
1902+
Event_MailReceivedByWatcher::trigger($model->getMessageId(), $watcher_id);
1903+
}
19021904
}
19031905

19041906
// Trigger priorities 128-255 before legacy behaviors

features/cerb.bots.portal.widget/api/events/new_interaction_chat_portal.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ function runActionExtension($token, $trigger, $params, DevblocksDictionaryDelega
258258
@$behavior_id = intval($params['behavior_id']);
259259
$var_key = ($params['var'] ?? null) ?: '_behavior';
260260

261-
if(false == ($behavior = DAO_TriggerEvent::get($behavior_id)))
261+
if(!($behavior = DAO_TriggerEvent::get($behavior_id)))
262262
break;
263263

264264
// Variables as parameters

features/cerb.bots.portal.widget/api/events/new_message_chat_portal.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class Event_NewMessageChatPortal extends Extension_DevblocksEvent {
2121
function renderEventParams(Model_TriggerEvent $trigger=null) {
2222
$tpl = DevblocksPlatform::services()->template();
2323
$tpl->assign('trigger', $trigger);
24-
$tpl->display('devblocks:cerberusweb.core::events/record/params_macro_default.tpl');
24+
$tpl->display('devblocks:cerb.behaviors.legacy::events/record/params_macro_default.tpl');
2525
}
2626

2727
/**
@@ -500,31 +500,31 @@ function renderActionExtension($token, $trigger, $params=[], $seq=null) {
500500

501501
switch($token) {
502502
case 'prompt_buttons':
503-
$tpl->display('devblocks:cerberusweb.core::events/pm/action_prompt_buttons.tpl');
503+
$tpl->display('devblocks:cerb.behaviors.legacy::events/pm/action_prompt_buttons.tpl');
504504
break;
505505

506506
case 'prompt_images':
507-
$tpl->display('devblocks:cerberusweb.core::events/pm/action_prompt_images.tpl');
507+
$tpl->display('devblocks:cerb.behaviors.legacy::events/pm/action_prompt_images.tpl');
508508
break;
509509

510510
case 'prompt_rating_number':
511-
$tpl->display('devblocks:cerberusweb.core::events/pm/action_prompt_rating_number.tpl');
511+
$tpl->display('devblocks:cerb.behaviors.legacy::events/pm/action_prompt_rating_number.tpl');
512512
break;
513513

514514
case 'prompt_text':
515-
$tpl->display('devblocks:cerberusweb.core::events/pm/action_prompt_text.tpl');
515+
$tpl->display('devblocks:cerb.behaviors.legacy::events/pm/action_prompt_text.tpl');
516516
break;
517517

518518
case 'prompt_wait':
519-
$tpl->display('devblocks:cerberusweb.core::events/pm/action_prompt_wait.tpl');
519+
$tpl->display('devblocks:cerb.behaviors.legacy::events/pm/action_prompt_wait.tpl');
520520
break;
521521

522522
case 'send_message':
523-
$tpl->display('devblocks:cerberusweb.core::events/pm/action_send_response.tpl');
523+
$tpl->display('devblocks:cerb.behaviors.legacy::events/pm/action_send_response.tpl');
524524
break;
525525

526526
case 'send_script':
527-
$tpl->display('devblocks:cerberusweb.core::events/pm/action_send_script.tpl');
527+
$tpl->display('devblocks:cerb.behaviors.legacy::events/pm/action_send_script.tpl');
528528
break;
529529

530530
case 'switch_behavior':

features/cerb.bots.portal.widget/plugin.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
<dependencies>
2020
<require plugin_id="cerberusweb.core" />
21+
<require plugin_id="cerb.behaviors.legacy" />
2122
</dependencies>
2223

2324
<!-- Exported Classes -->

features/cerb.bots.portal.widget/templates/widget/convo/event/action_switch_behavior.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
<div class="parameters">
1515
{if $behavior}
16-
{include file="devblocks:cerberusweb.core::events/_action_behavior_params.tpl" params=$params macro_params=$behavior->variables}
16+
{include file="devblocks:cerb.behaviors.legacy::events/_action_behavior_params.tpl" params=$params macro_params=$behavior->variables}
1717
{/if}
1818
</div>
1919

features/cerb.webhooks/api/App.php

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,17 @@ public function respond(string $automations_kata, DevblocksDictionaryDelegate $d
3838

3939
$handlers = $event_handler->parse($automations_kata, $dict, $error);
4040

41-
$automation_results = $event_handler->handleOnce(
42-
AutomationTrigger_WebhookRespond::ID,
43-
$handlers,
44-
$dict->getDictionary(),
45-
$error,
46-
function(Model_TriggerEvent $behavior, array $handler) use ($dict) {
47-
if($behavior->event_point != Event_WebhookReceived::ID)
41+
$behaviors_callback = null;
42+
43+
if(DevblocksPlatform::isPluginEnabled('cerb.behaviors.legacy')) {
44+
$behaviors_callback = function (Model_TriggerEvent $behavior, array $handler) use ($dict) {
45+
if ($behavior->event_point != Event_WebhookReceived::ID)
4846
return false;
4947

50-
if(!($bot = $behavior->getBot()))
48+
if (!($bot = $behavior->getBot()))
5149
return false;
5250

53-
if($behavior->is_disabled || $bot->is_disabled) {
51+
if ($behavior->is_disabled || $bot->is_disabled) {
5452
DevblocksPlatform::dieWithHttpError('503: Temporarily unavailable', 503);
5553
return false;
5654
}
@@ -69,11 +67,19 @@ function(Model_TriggerEvent $behavior, array $handler) use ($dict) {
6967
$dicts = Event_WebhookReceived::trigger($behavior->id, $http_request, $variables);
7068
$dict = $dicts[$behavior->id];
7169

72-
if(!($dict instanceof DevblocksDictionaryDelegate))
70+
if (!($dict instanceof DevblocksDictionaryDelegate))
7371
return false;
7472

7573
return $dict;
76-
}
74+
};
75+
}
76+
77+
$automation_results = $event_handler->handleOnce(
78+
AutomationTrigger_WebhookRespond::ID,
79+
$handlers,
80+
$dict->getDictionary(),
81+
$error,
82+
$behaviors_callback
7783
);
7884

7985
if($automation_results instanceof DevblocksDictionaryDelegate && $automation_results->exists('__state')) {

features/cerb.webhooks/api/events/abstract_event_webhook.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,11 +212,11 @@ function renderConditionExtension($token, $as_token, $trigger, $params=array(),
212212
case 'va_link':
213213
$contexts = Extension_DevblocksContext::getAll(false);
214214
$tpl->assign('contexts', $contexts);
215-
$tpl->display('devblocks:cerberusweb.core::events/condition_link.tpl');
215+
$tpl->display('devblocks:cerb.behaviors.legacy::events/condition_link.tpl');
216216
break;
217217

218218
case 'va_watcher_count':
219-
$tpl->display('devblocks:cerberusweb.core::internal/decisions/conditions/_number.tpl');
219+
$tpl->display('devblocks:cerb.behaviors.legacy::internal/decisions/conditions/_number.tpl');
220220
break;
221221

222222
default:

features/cerberusweb.core/api/Automation/Builder/Trigger/InteractionWorker/Awaits/SayAwait.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,6 @@ function render(Model_AutomationContinuation $continuation) {
4141
$tpl->assign('message', $msg);
4242
$tpl->assign('format', $format);
4343
$tpl->assign('style', $this->_data['style'] ?? null);
44-
$tpl->display('devblocks:cerberusweb.core::events/form_interaction/worker/responses/respond_text.tpl');
44+
$tpl->display('devblocks:cerberusweb.core::automations/interactions/worker/responses/respond_text.tpl');
4545
}
4646
}

0 commit comments

Comments
 (0)