Initial commit
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
namespace FluentCrm\App\Services\Funnel;
|
||||
|
||||
abstract class BaseBenchMark
|
||||
{
|
||||
protected $triggerName;
|
||||
|
||||
protected $actionArgNum = 1;
|
||||
|
||||
protected $priority = 10;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->register();
|
||||
}
|
||||
|
||||
public function register()
|
||||
{
|
||||
add_filter('fluentcrm_funnel_blocks', array($this, 'addBenchmark'), $this->priority, 1);
|
||||
|
||||
add_filter('fluentcrm_funnel_block_fields', array($this, 'pushBlockFields'), $this->priority, 2);
|
||||
|
||||
add_action('fluentcrm_funnel_benchmark_start_' . $this->triggerName, array($this, 'handle'), $this->priority, 2);
|
||||
|
||||
|
||||
add_filter('fluent_crm/benchmark_already_asserted_'.$this->triggerName, [$this, 'assertCurrentGoalState'], 10, 3);
|
||||
|
||||
add_filter('fluentcrm_funnel_arg_num_' . $this->triggerName, function ($num) {
|
||||
if ($num >= $this->actionArgNum) {
|
||||
return $num;
|
||||
}
|
||||
return $this->actionArgNum;
|
||||
});
|
||||
|
||||
/**
|
||||
* Filter the funnel sequence before saving.
|
||||
*
|
||||
* The dynamic portion of the hook name, `$this->triggerName`, refers to the name of the trigger.
|
||||
*
|
||||
* @since 2.6.0
|
||||
*
|
||||
* @param array $sequence The sequence data to be filtered.
|
||||
*
|
||||
* @return array The filtered sequence data.
|
||||
*/
|
||||
add_filter('fluentcrm_funnel_sequence_saving_' . $this->triggerName, function ($sequence) {
|
||||
$sequence['type'] = 'benchmark';
|
||||
return $sequence;
|
||||
});
|
||||
}
|
||||
|
||||
public function addBenchmark($benchMarks)
|
||||
{
|
||||
$benchMark = $this->getBlock();
|
||||
if ($benchMark) {
|
||||
$benchMark['type'] = 'benchmark';
|
||||
$benchMarks[$this->triggerName] = $benchMark;
|
||||
}
|
||||
|
||||
return $benchMarks;
|
||||
}
|
||||
|
||||
public function pushBlockFields($fields, $funnel)
|
||||
{
|
||||
$fields[$this->triggerName] = $this->getBlockFields($funnel);
|
||||
return $fields;
|
||||
}
|
||||
|
||||
public function getConditionDefaults($benchMark)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
public function getConditionFields($benchMark)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
public function benchmarkTypeField()
|
||||
{
|
||||
return [
|
||||
'label' => __('Benchmark type', 'fluent-crm'),
|
||||
'type' => 'radio',
|
||||
'options' => [
|
||||
[
|
||||
'id' => 'optional',
|
||||
'title' => __('[Optional Point] This is an optional trigger point', 'fluent-crm')
|
||||
],
|
||||
[
|
||||
'id' => 'required',
|
||||
'title' => __('[Essential Point] Select IF this step is required for processing further actions', 'fluent-crm')
|
||||
]
|
||||
],
|
||||
'inline_help' => __('If you select [Optional Point] it will work as an Optional Trigger otherwise, it will wait for full-fill this action', 'fluent-crm')
|
||||
];
|
||||
}
|
||||
|
||||
public function canEnterField()
|
||||
{
|
||||
return [
|
||||
'type' => 'yes_no_check',
|
||||
'check_label' => __('Contacts can enter directly to this sequence point. If you enable this then any contact meet with goal will enter in this goal point.', 'fluent-crm')
|
||||
];
|
||||
}
|
||||
|
||||
public function assertCurrentGoalState($asserted, $benchmark, $funnelSubscriber)
|
||||
{
|
||||
return $asserted;
|
||||
}
|
||||
|
||||
abstract public function getBlock();
|
||||
|
||||
abstract public function getBlockFields($funnel);
|
||||
|
||||
abstract public function handle($benchMark, $originalArgs);
|
||||
}
|
||||
Reference in New Issue
Block a user