Skip to content

Commit

Permalink
Merge pull request #2861 from CalderaWP/feature/2830
Browse files Browse the repository at this point in the history
 Make init functions for CF2 to PHP 5.2 safe
  • Loading branch information
New0 authored Dec 17, 2018
2 parents d719a24 + 082dd51 commit 86153a1
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 45 deletions.
50 changes: 7 additions & 43 deletions caldera-core.php
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,13 @@ function caldera_forms_load()
*/
do_action('caldera_forms_includes_complete');

/**
* Start cf2 system
*
* @since 1.8.0
*/
add_filter('caldera_forms_render_get_field', 'caldera_forms_v2_field_upgrades', 1, 2);
add_action('caldera_forms_v2_init', 'caldera_forms_v2_container_setup' );
caldera_forms_get_v2_container();
}

Expand Down Expand Up @@ -155,50 +162,7 @@ function caldera_forms_fallback_shortcode()

}

/**
* Switch advanced file fields to new type
*
* @since 1.8.0
*
*/
add_filter('caldera_forms_render_get_field', function ($field, $form) {
if ( 'advanced_file' === Caldera_Forms_Field_Util::get_type($field, $form) ) {
$field[ 'type' ] = \calderawp\calderaforms\cf2\Fields\FieldTypes\FileFieldType::getCf1Identifier();
}
return $field;
}, 1, 2);


/**
* Setup Cf2 con
*
* @since 1.8.0
*
*/
add_action('caldera_forms_v2_init', function (\calderawp\calderaforms\cf2\CalderaFormsV2Contract $container) {

$container
//Set paths
->setCoreDir(CFCORE_PATH)
->setCoreUrl(CFCORE_URL)
//Setup field types
->getFieldTypeFactory()
->add(new \calderawp\calderaforms\cf2\Fields\FieldTypes\FileFieldType());

//Add hooks
$container->getHooks()->subscribe();

//Register other services
$container
->registerService(new \calderawp\calderaforms\cf2\Services\QueueService(), true)
->registerService(new \calderawp\calderaforms\cf2\Services\QueueSchedulerService(), true);

//Run the scheduler with CRON
/** @var \calderawp\calderaforms\cf2\Jobs\Scheduler $scheduler */
$scheduler = $container->getService(\calderawp\calderaforms\cf2\Services\QueueSchedulerService::class);
$running = $scheduler->runWithCron();

});



Expand Down
60 changes: 59 additions & 1 deletion cf2/functions.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
<?php

/**
* Get the cf2 container
*
* @since 1.8.0
*
* @return \calderawp\calderaforms\cf2\CalderaFormsV2Contract
*/
function caldera_forms_get_v2_container()
Expand All @@ -15,6 +19,59 @@ function caldera_forms_get_v2_container()
return $container;
}

/**
<<<<<<< HEAD
* Setup Cf2 container
*
* @since 1.8.0
*
* @uses "caldera_forms_v2_init" action
*
* @param \calderawp\calderaforms\cf2\CalderaFormsV2Contract $container
*/
function caldera_forms_v2_container_setup(\calderawp\calderaforms\cf2\CalderaFormsV2Contract $container)
{
$container
//Set paths
->setCoreDir(CFCORE_PATH)
->setCoreUrl(CFCORE_URL)
//Setup field types
->getFieldTypeFactory()
->add(new \calderawp\calderaforms\cf2\Fields\FieldTypes\FileFieldType());

//Add hooks
$container->getHooks()->subscribe();

//Register other services
$container
->registerService(new \calderawp\calderaforms\cf2\Services\QueueService(), true)
->registerService(new \calderawp\calderaforms\cf2\Services\QueueSchedulerService(), true);

//Run the scheduler with CRON
/** @var \calderawp\calderaforms\cf2\Jobs\Scheduler $scheduler */
$scheduler = $container->getService(\calderawp\calderaforms\cf2\Services\QueueSchedulerService::class);
$running = $scheduler->runWithCron();
}

/**
* Convert Advanced File v1 fields to v2
*
* @since 1.8.0
*
* @uses "caldera_forms_render_get_field" filter
*
* @param array $field
* @param array $form
*
* @return array
*/
function caldera_forms_v2_field_upgrades($field, $form){
if ( 'advanced_file' === Caldera_Forms_Field_Util::get_type($field, $form) ) {
$field[ 'type' ] = \calderawp\calderaforms\cf2\Fields\FieldTypes\FileFieldType::getCf1Identifier();
}
return $field;
}

/**
* Schedule delete with job manager
*
Expand All @@ -29,4 +86,5 @@ function caldera_forms_schedule_job(\calderawp\calderaforms\cf2\Jobs\Job $job, $
caldera_forms_get_v2_container()
->getService(\calderawp\calderaforms\cf2\Services\QueueSchedulerService::class)
->schedule($job, $delay);
}
}

36 changes: 35 additions & 1 deletion tests/Integration/FunctionsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,38 @@ public function testContainerFunctionReturnsInstance(){

$this->assertInstanceOf(CalderaFormsV2::class,caldera_forms_get_v2_container() );
}
}

/**
* @since 1.8.0
*
* @covers \caldera_forms_get_v2_container()
*/
public function testContainerGetsSetupOnFirstCall(){
$container = caldera_forms_get_v2_container();
$this->assertTrue( is_object( $container->getService( \calderawp\calderaforms\cf2\Services\QueueService::class)));
}

/**
* @since 1.8.0
*
* @covers \caldera_forms_get_v2_container()
*/
public function testUpgradesAdvancedFileFields(){
$id = 'fld1';
$fieldConfig = [
'id' => $id,
'slug' => 'roy',
'type' => 'advanced_file',
'conditions' => [
'type' => 'IS'
]
];
$field = \Caldera_Forms_Field_Util::get_field($id,[
'fields' => [
$id => $fieldConfig
],
'conditional_groups' => []
], true);
$this->assertSame(\calderawp\calderaforms\cf2\Fields\FieldTypes\FileFieldType::getCf1Identifier(), $field['type'] );
}
}

0 comments on commit 86153a1

Please # to comment.