260 lines
6.2 KiB
PHP
260 lines
6.2 KiB
PHP
<?php
|
|
/**
|
|
* Global scoped functions for Header Footer Grid.
|
|
*
|
|
* Name: Header Footer Grid
|
|
* Author: Bogdan Preda <bogdan.preda@themeisle.com>
|
|
*
|
|
* @version 1.0.0
|
|
* @package HFG
|
|
*/
|
|
|
|
namespace HFG;
|
|
|
|
use HFG\Core\Builder\Abstract_Builder;
|
|
use HFG\Core\Settings\Manager;
|
|
use HFG\Core\Magic_Tags;
|
|
|
|
/**
|
|
* Return registered builders.
|
|
*
|
|
* @param string $builder_name The builder id. (header|footer|page_header etc.).
|
|
*
|
|
* @return Abstract_Builder[]|Abstract_Builder instance, such as HFG\Core\Builder\Header|Neve_Pro\Modules\Header_Footer_Grid\Builder\Page_Header|HFG\Core\Builder\Footer
|
|
*/
|
|
function get_builder( $builder_name = '' ) {
|
|
return Main::get_instance()->get_builder( $builder_name );
|
|
}
|
|
|
|
/**
|
|
* Render a specified builder.
|
|
*
|
|
* @param string $builder_name The builder id.
|
|
*/
|
|
function render_builder( $builder_name = '' ) {
|
|
get_builder( $builder_name )->render();
|
|
}
|
|
|
|
/**
|
|
* Render a specific component.
|
|
*
|
|
* @param string $builder_name The builder id.
|
|
* @param null $device The device.
|
|
*/
|
|
function render_components( $builder_name = '', $device = null ) {
|
|
get_builder( $builder_name )->render_components( $device );
|
|
}
|
|
|
|
/**
|
|
* Returns the current component.
|
|
*
|
|
* @param string $builder_name The builder id.
|
|
* @param null $component_id The component id.
|
|
*
|
|
* @return false|Core\Components\Abstract_Component
|
|
*/
|
|
function current_component( $builder_name = '', $component_id = null ) {
|
|
$builder = get_builder( $builder_name );
|
|
|
|
// if returns array of Abstract_Builder instances.
|
|
if ( ! ( $builder instanceof Abstract_Builder ) ) {
|
|
return false;
|
|
}
|
|
|
|
return $builder->get_component( $component_id );
|
|
}
|
|
|
|
/**
|
|
* Returns the current device.
|
|
*
|
|
* @param string $builder_name The builder id.
|
|
*
|
|
* @return string|null
|
|
*/
|
|
function current_device( $builder_name = '' ) {
|
|
return get_builder( $builder_name )->get_current_device();
|
|
}
|
|
|
|
/**
|
|
* Returns the current row.
|
|
*
|
|
* @param string $builder_name The builder id.
|
|
*
|
|
* @return string|null
|
|
*/
|
|
function current_row( $builder_name = '' ) {
|
|
return get_builder( $builder_name )->get_current_row_index();
|
|
}
|
|
|
|
/**
|
|
* Get setting value of a certain component.
|
|
*
|
|
* @param string $id Id of component setting.
|
|
* @param mixed $default Default value, otherwise use the one when the setting was defined.
|
|
* @param string|null $component_id Component id.
|
|
*
|
|
* @return mixed Component settings.
|
|
*/
|
|
function component_setting( $id, $default = null, $component_id = null ) {
|
|
if ( null === $component_id ) {
|
|
if ( empty( current_component() ) ) {
|
|
return false;
|
|
}
|
|
$component_id = current_component()->get_id();
|
|
}
|
|
|
|
return Manager::get_instance()->get( $component_id . '_' . $id, $default );
|
|
}
|
|
|
|
/**
|
|
* Get setting value of a certain component.
|
|
*
|
|
* @param string $id Id of component setting.
|
|
* @param null $default Default value, otherwise use the one when the setting was defined.
|
|
*
|
|
* @return mixed Setting value.
|
|
*/
|
|
function setting( $id, $default = null ) {
|
|
return Manager::get_instance()->get( $id, $default );
|
|
}
|
|
|
|
/**
|
|
* Get setting value of a certain row.
|
|
*
|
|
* @param string $id Row id.
|
|
* @param null $default Default value, otherwise use the one when the setting was defined.
|
|
*
|
|
* @return mixed Row settings.
|
|
*/
|
|
function row_setting( $id, $default = null ) {
|
|
|
|
$control_id = get_builder()->get_property( 'control_id' );
|
|
$row_index = current_row();
|
|
|
|
return Manager::get_instance()->get( $control_id . '_' . $row_index . '_' . $id, $default );
|
|
}
|
|
|
|
/**
|
|
* Utility method to return media url.
|
|
*
|
|
* @param mixed $value The media reference.
|
|
* @param mixed|null $size Optional. The size desired.
|
|
*
|
|
* @return string|false
|
|
*/
|
|
function get_media( $value, $size = 'full' ) {
|
|
|
|
if ( empty( $value ) ) {
|
|
return false;
|
|
}
|
|
|
|
$media = false;
|
|
if ( is_numeric( $value ) ) {
|
|
$media = media_from_id( $value, $size );
|
|
} elseif ( is_string( $value ) ) {
|
|
$media = media_from_url( $value, $size );
|
|
} elseif ( is_array( $value ) ) {
|
|
$media = media_from_array( $value, $size );
|
|
}
|
|
|
|
return $media;
|
|
}
|
|
|
|
/**
|
|
* Retrieve media URL from post id.
|
|
*
|
|
* @param int $id Post ID.
|
|
* @param string $size Media size.
|
|
*
|
|
* @return false|string
|
|
*/
|
|
function media_from_id( $id, $size = 'full' ) {
|
|
$image_attributes = wp_get_attachment_image_src( $id, $size );
|
|
if ( ! $image_attributes ) {
|
|
return false;
|
|
}
|
|
|
|
return $image_attributes[0];
|
|
}
|
|
|
|
/**
|
|
* Retrieve media from attachment url.
|
|
*
|
|
* @param string $url The attachment url.
|
|
* @param string $size The media size.
|
|
*
|
|
* @return string|false
|
|
*/
|
|
function media_from_url( $url, $size = 'full' ) {
|
|
$img_id = function_exists( 'wpcom_vip_attachment_url_to_postid' ) ? wpcom_vip_attachment_url_to_postid( $url ) : attachment_url_to_postid( $url ); //phpcs:ignore WordPressVIPMinimum.Functions.RestrictedFunctions.attachment_url_to_postid_attachment_url_to_postid
|
|
if ( $img_id ) {
|
|
$image_attributes = wp_get_attachment_image_src( $img_id, $size );
|
|
if ( ! $image_attributes ) {
|
|
return false;
|
|
}
|
|
|
|
return $image_attributes[0];
|
|
}
|
|
|
|
return $url;
|
|
}
|
|
|
|
/**
|
|
* Retrieve media from an array.
|
|
*
|
|
* @param array $array Array for media.
|
|
* @param string $size The media size.
|
|
*
|
|
* @return false|string
|
|
*/
|
|
function media_from_array( $array = array(), $size = 'full' ) {
|
|
$value = wp_parse_args(
|
|
$array,
|
|
array(
|
|
'id' => '',
|
|
'url' => '',
|
|
'mime' => '',
|
|
)
|
|
);
|
|
|
|
if ( empty( $array['id'] ) && empty( $array['url'] ) ) {
|
|
return false;
|
|
}
|
|
|
|
$media_url = '';
|
|
|
|
if ( strpos( $array['mime'], 'image/' ) !== false ) {
|
|
$image_attributes = wp_get_attachment_image_src( $array['id'], $size );
|
|
if ( $image_attributes ) {
|
|
$media_url = $image_attributes[0];
|
|
}
|
|
} else {
|
|
$media_url = wp_get_attachment_url( $array['id'] );
|
|
}
|
|
|
|
if ( ! $media_url ) {
|
|
$media_url = $value['url'];
|
|
if ( $media_url ) {
|
|
$img_id = function_exists( 'wpcom_vip_attachment_url_to_postid' ) ? wpcom_vip_attachment_url_to_postid( $media_url ) : attachment_url_to_postid( $media_url ); //phpcs:ignore WordPressVIPMinimum.Functions.RestrictedFunctions.attachment_url_to_postid_attachment_url_to_postid
|
|
if ( $img_id ) {
|
|
return wp_get_attachment_url( $img_id );
|
|
}
|
|
}
|
|
}
|
|
|
|
return $media_url;
|
|
}
|
|
|
|
/**
|
|
* Replace magic tags.
|
|
*
|
|
* @param string $string the string to parse for magic tags.
|
|
*
|
|
* @return string
|
|
*/
|
|
function parse_dynamic_tags( $string ) {
|
|
return Magic_Tags::get_instance()->do_magic_tags( $string );
|
|
}
|
|
|
|
|