Files
hub-insurance/wp-content/plugins/gravityforms/includes/template-library/templates/class-gf-template-library-file-store.php
T
2026-07-02 15:54:39 -06:00

124 lines
2.4 KiB
PHP

<?php
namespace Gravity_Forms\Gravity_Forms\Template_Library\Templates;
use Gravity_Forms\Gravity_Forms\Template_Library\Templates\GF_Templates_Store;
use Unirest\Exception;
/**
* Class GF_Template_Library_File_Store
*
* Loads the templates' library data from a JSON file.
*
* @package Gravity_Forms\Gravity_Forms\Template_Library;
*/
class GF_Template_Library_File_Store implements GF_Templates_Store {
/**
* The templates.
*
* @since 2.7
*
* @var mixed $data The templates.
*/
protected $templates;
/**
* The raw data returned from the source.
*
* @since 2.7
*
* @var array $raw_data The raw data returned from the data source.
*/
protected $raw_data;
/**
* The store configurations array.
*
* @since 2.7
*
* @var array $config The store configurations array.
*/
protected $config;
/**
* Store constructor.
*
* @param array $config The store configurations array.
*/
public function __construct( $config ) {
$this->config = $config;
}
/**
* Retrieves raw data and decodes it, returns an array of templates.
*
* @since 2.7
*
* @return array
*/
public function get_templates() {
if ( is_array( $this->templates ) ) {
return $this->templates;
}
$uri = rgar( $this->config, 'uri' );
try {
$this->raw_data = @file_get_contents( $uri );
} catch ( Exception $e ) {
return array();
}
$this->templates = json_decode( $this->raw_data, true );
if ( ! is_array( $this->templates ) ) {
return array();
}
return $this->templates;
}
/**
* Returns a template by its ID.
*
* @since 2.7
*
* @param string $id The id of the template.
*
* @return GF_Template_Library_Template|false
*/
public function get( $id ) {
$template_data = rgar( $this->get_templates(), $id );
if ( ! $template_data ) {
return false;
}
return new GF_Template_Library_Template( $template_data );
}
/**
* Returns the all the templates as an array.
*
* @since 2.7
*
* @param bool $include_meta whether to include the template form meta or not.
*
* @return array
*/
public function all( $include_meta = false ) {
if ( $include_meta ) {
return $this->get_templates();
}
$templates_data = array_map(
function( $template_data ) {
unset( $template_data['form_meta'] );
unset( $template_data['version'] );
return $template_data;
},
$this->get_templates()
);
return $templates_data;
}
}