Astra_Ext_Advanced_Hooks_Loader::get_layout_details( int $layout_id )
Get Custom Layout details to send to the AJAX endpoint for quick-preview.
Description
Parameters
- $layout_id
-
(int) (Required) Custom Layout ID.
Return
(array)
Source
File: addons/advanced-hooks/classes/class-astra-ext-advanced-hooks-loader.php
public function get_layout_details( $layout_id ) {
if ( ! $layout_id ) {
return array();
}
$display_rules = __( 'No Conditions', 'astra-addon' );
$locations = get_post_meta( $layout_id, 'ast-advanced-hook-location', true );
if ( ! empty( $locations ) ) {
if ( ! ( empty( $locations['rule'] ) || ( ! empty( $locations['rule'] ) && ( 1 === count( $locations['rule'] ) && isset( $locations['rule'][0] ) && 'clflag' === $locations['rule'][0] ) ) ) ) {
$display_rules = $this->column_display_location_rules( $locations );
}
}
$exclusion_rules = __( 'No Conditions', 'astra-addon' );
$locations = get_post_meta( $layout_id, 'ast-advanced-hook-exclusion', true );
if ( ! empty( $locations ) ) {
if ( ! ( empty( $locations['rule'] ) || ( ! empty( $locations['rule'] ) && ( 1 === count( $locations['rule'] ) && isset( $locations['rule'][0] ) && 'clflag' === $locations['rule'][0] ) ) ) ) {
$exclusion_rules = $this->column_display_location_rules( $locations );
}
}
$user_rules = __( 'No Conditions', 'astra-addon' );
$users = get_post_meta( $layout_id, 'ast-advanced-hook-users', true );
if ( is_array( $users ) && ! empty( $users ) ) {
$user_rules = '<ul class="ast-layout-user-list">';
foreach ( $users as $user ) {
if ( 'Clflag' !== ucfirst( $user ) ) {
$user_rules .= '<li class="layout-list-item">' . Astra_Target_Rules_Fields::get_user_by_key( $user ) . '</li>';
}
}
$user_rules .= '</ul>';
}
$display_devices_rules = __( 'No Conditions', 'astra-addon' );
$icon_style = 'font-size:17px;line-height:21px;';
$display_devices = get_post_meta( $layout_id, 'ast-advanced-display-device', true );
if ( is_array( $display_devices ) && ! empty( $display_devices ) ) {
$display_devices_rules = '<div class="ast-advanced-hook-display-devices-wrap ast-advanced-hook-wrap">';
$display_devices_rules .= '<ul>';
foreach ( $display_devices as $display_device ) {
switch ( $display_device ) {
case 'desktop':
$display_devices_rules .= '<li class="ast-desktop">' . esc_attr( __( 'Desktop', 'astra-addon' ) ) . '</li>';
break;
case 'tablet':
$display_devices_rules .= '<li class="ast-tablet">' . esc_attr( __( 'Tablet', 'astra-addon' ) ) . '</li>';
break;
case 'mobile':
$display_devices_rules .= '<li class="ast-mobile">' . esc_attr( __( 'Mobile', 'astra-addon' ) ) . '</li>';
break;
}
}
$display_devices_rules .= '</ul>';
$display_devices_rules .= '</div>';
}
$time_duration_rule = __( 'No Conditions', 'astra-addon' );
$time_duration = get_post_meta( $layout_id, 'ast-advanced-time-duration', true );
if ( isset( $time_duration ) && is_array( $time_duration ) && isset( $time_duration['enabled'] ) ) {
$time_duration_rule = '<div class="ast-advanced-hook-time-duration-wrap ast-advanced-hook-wrap">';
$time_duration_rule .= '<strong>' . esc_attr( __( 'Visibility', 'astra-addon' ) ) . ': </strong>';
if ( ! Astra_Ext_Advanced_Hooks_Markup::get_time_duration_eligibility( $layout_id ) ) {
$time_duration_rule .= '<p class="ast-advance-hook-visibility-icon">' . esc_attr( __( 'Not visible', 'astra-addon' ) ) . '<span style=' . esc_attr( $icon_style ) . ' class="dashicons dashicons-no"></span></p>';
} else {
$start_dt = isset( $time_duration['start-dt'] ) ? gmdate( 'F j, Y, g:i a', strtotime( $time_duration['start-dt'] ) ) : '—';
$end_dt = isset( $time_duration['end-dt'] ) ? gmdate( 'F j, Y, g:i a', strtotime( $time_duration['end-dt'] ) ) : '—';
$time_duration_rule .= '<p class="ast-advance-hook-visibility-icon">' . esc_attr( __( 'Visible', 'astra-addon' ) ) . '<span style=' . esc_attr( $icon_style ) . ' class="dashicons dashicons-yes-alt"></span></p>';
$time_duration_rule .= '<p class="layout-time-field start"><strong>' . __( 'Start Date: ', 'astra-addon' ) . '</strong>' . $start_dt . '</p>';
$time_duration_rule .= '<p class="layout-time-field end"><strong>' . __( 'End Date: ', 'astra-addon' ) . '</strong>' . $end_dt . '</p>';
}
$time_duration_rule .= '</div>';
}
$post_title = get_the_title( $layout_id ) ? get_the_title( $layout_id ) : esc_attr( __( '(no title)', 'astra-addon' ) );
return apply_filters(
'astra_addon_custom_layout_preview_details',
array(
'layout_id' => $layout_id,
'layout_type' => ucfirst( get_post_meta( $layout_id, 'ast-advanced-hook-layout', true ) ),
'status' => ucfirst( get_post_status( $layout_id ) ),
'title' => $post_title,
'edit_link' => admin_url( '/post.php?post=' . $layout_id . '&action=edit' ),
'display_rules' => $display_rules,
'exclusion_rules' => $exclusion_rules,
'display_devices_rules' => $display_devices_rules,
'time_duration_rule' => $time_duration_rule,
'user_rules' => $user_rules,
'post_date' => get_the_date( '', $layout_id ),
),
$layout_id
);
}
Expand full source code Collapse full source code View on Trac