Below is a differential between the unpatched vulnerable code and the patched update, for reference.
--- a/geodirectory/geodirectory.php
+++ b/geodirectory/geodirectory.php
@@ -11,7 +11,7 @@
* Plugin Name: GeoDirectory
* Plugin URI: https://wpgeodirectory.com/
* Description: GeoDirectory - Business Directory Plugin for WordPress.
- * Version: 2.8.152
+ * Version: 2.8.154
* Author: AyeCode - WP Business Directory Plugins
* Author URI: https://wpgeodirectory.com
* Text Domain: geodirectory
@@ -34,7 +34,7 @@
*
* @var string
*/
- public $version = '2.8.152';
+ public $version = '2.8.154';
/**
* GeoDirectory instance.
--- a/geodirectory/includes/admin/views/html-admin-settings-cpt-cf-setting-item.php
+++ b/geodirectory/includes/admin/views/html-admin-settings-cpt-cf-setting-item.php
@@ -45,7 +45,7 @@
<i class="fas fa-grip-vertical text-muted ml-2 ms-2" style="cursor: move" aria-hidden="true" ></i>
</div>
<?php // store the form as a template. This saves a load of memory on page load. ?>
- <script type="text/template" class="dd-setting <?php echo 'dd-type-'.esc_attr($field->field_type_name);?>">
+ <script type="text/template" class="dd-setting <?php echo 'dd-type-'.esc_attr($field->field_type_name);?>" data-htmlvar_name="<?php echo ( isset( $field->htmlvar_name ) ? esc_attr( $field->htmlvar_name ) : '' );?>">
<input type="hidden" name="security" value="<?php echo esc_attr( $nonce ); ?>"/>
<input type="hidden" name="post_type" id="post_type" value="<?php echo esc_attr( $field->post_type ); ?>"/>
<input type="hidden" name="field_type" id="field_type"
@@ -199,19 +199,21 @@
$extra_attributes['maxlength'] = 50;
$extra_attributes['pattern'] = "[a-zA-Z0-9]+";
- echo aui()->input(
- array(
- 'id' => 'htmlvar_name',
- 'name' => 'htmlvar_name',
- 'title' => __( 'Must not contain spaces or special characters', 'geodirectory' ),
- 'label_type' => 'top',
- 'label' => __('Key','geodirectory') . geodir_help_tip( __( 'This is a unique identifier used in the database and HTML, it MUST NOT contain spaces or special characters.', 'geodirectory' )),
- 'type' => 'text',
- 'wrap_class' => geodir_advanced_toggle_class(),
- 'value' => $value ? preg_replace( '/geodir_/', '', $value, 1 ) : '',
- 'extra_attributes' => $extra_attributes
- )
+ $input_args = array(
+ 'id' => 'htmlvar_name',
+ 'name' => 'htmlvar_name',
+ 'title' => __( 'Must not contain spaces or special characters', 'geodirectory' ),
+ 'label_type' => 'top',
+ 'label' => __('Key','geodirectory') . geodir_help_tip( __( 'This is a unique identifier used in the database and HTML, it MUST NOT contain spaces or special characters.', 'geodirectory' )),
+ 'type' => 'text',
+ 'wrap_class' => geodir_advanced_toggle_class(),
+ 'value' => $value ? preg_replace( '/geodir_/', '', $value, 1 ) : '',
+ 'extra_attributes' => $extra_attributes
);
+
+ $input_args = apply_filters( 'geodir_cfa_input_args_htmlvar_name', $input_args, $cf, $field );
+
+ aui()->input( $input_args, true );
}
@@ -238,22 +240,24 @@
$wrap_class = '';
}
- echo aui()->input(
- array(
- 'id' => 'is_active',
- 'name' => 'is_active',
- 'type' => 'checkbox',
- 'label_type' => 'horizontal',
- 'label_col' => '4',
- 'label' => __( 'Is active', 'geodirectory' ) ,
- 'checked' => $value,
- 'value' => '1',
- 'switch' => 'md',
- 'label_force_left' => true,
- 'help_text' => geodir_help_tip( __( 'If no is selected then the field will not be displayed anywhere.', 'geodirectory' ) ),
- 'wrap_class' => $wrap_class
- )
+ $input_args = array(
+ 'id' => 'is_active',
+ 'name' => 'is_active',
+ 'type' => 'checkbox',
+ 'label_type' => 'horizontal',
+ 'label_col' => '4',
+ 'label' => __( 'Is active', 'geodirectory' ) ,
+ 'checked' => $value,
+ 'value' => '1',
+ 'switch' => 'md',
+ 'label_force_left' => true,
+ 'help_text' => geodir_help_tip( __( 'If no is selected then the field will not be displayed anywhere.', 'geodirectory' ) ),
+ 'wrap_class' => $wrap_class
);
+
+ $input_args = apply_filters( 'geodir_cfa_input_args_is_active', $input_args, $cf, $field );
+
+ aui()->input( $input_args, true );
}
// for_admin_use only
@@ -277,22 +281,24 @@
$wrap_class = '';
}
- echo aui()->input(
- array(
- 'id' => 'for_admin_use',
- 'name' => 'for_admin_use',
- 'type' => 'checkbox',
- 'label_type' => 'horizontal',
- 'label_col' => '4',
- 'label' => __( 'Admin edit only','geodirectory' ) ,
- 'checked' => $value,
- 'value' => '1',
- 'switch' => 'md',
- 'label_force_left' => true,
- 'help_text' => geodir_help_tip( __( 'If yes is selected then only site admin can see and edit this field on the add listing page.', 'geodirectory' ) ),
- 'wrap_class' => $wrap_class
- )
+ $input_args = array(
+ 'id' => 'for_admin_use',
+ 'name' => 'for_admin_use',
+ 'type' => 'checkbox',
+ 'label_type' => 'horizontal',
+ 'label_col' => '4',
+ 'label' => __( 'Admin edit only','geodirectory' ) ,
+ 'checked' => $value,
+ 'value' => '1',
+ 'switch' => 'md',
+ 'label_force_left' => true,
+ 'help_text' => geodir_help_tip( __( 'If yes is selected then only site admin can see and edit this field on the add listing page.', 'geodirectory' ) ),
+ 'wrap_class' => $wrap_class
);
+
+ $input_args = apply_filters( 'geodir_cfa_input_args_for_admin_use', $input_args, $cf, $field );
+
+ aui()->input( $input_args, true );
}
// default_value
--- a/geodirectory/includes/class-geodir-fast-ajax.php
+++ b/geodirectory/includes/class-geodir-fast-ajax.php
@@ -165,7 +165,7 @@
}
// GD plugins
- if ( strpos( $plugin, 'geodir' ) === 0 || strpos( $plugin, 'blockstrap' ) === 0 || strpos( $plugin, 'geodirectory' ) !== false ) {
+ if ( strpos( $plugin, 'geodir' ) === 0 || strpos( $plugin, 'AyeCode-geodir-' ) === 0 || strpos( $plugin, 'blockstrap' ) === 0 || strpos( $plugin, 'geodirectory' ) !== false ) {
$allowed_plugins[] = $plugin;
continue;
}
--- a/geodirectory/includes/class-geodir-query.php
+++ b/geodirectory/includes/class-geodir-query.php
@@ -283,11 +283,14 @@
if ( $s !== '' && strstr( $s, ',' ) ) {
$s_AA = str_replace( " ", "", $s );
- $s_A = explode( ",", $s_AA );
- $s_A = implode( '","', $s_A );
- $s_A = '"' . $s_A . '"';
+ // Escape each item and wrap in DOUBLE quotes
+ $s_A = array_map( function( $qs ) {
+ // esc_sql() neutralizes the malicious quote and "or" logic
+ return esc_sql( wp_specialchars_decode( $qs, ENT_QUOTES ) );
+ }, explode( ",", $s_AA ) );
+ $s_A = '"' . implode( '","', $s_A ) . '"';
} else {
- $s_A = '"' . $s . '"';
+ $s_A = '"' . esc_sql( wp_specialchars_decode( $s, ENT_QUOTES ) ) . '"';
}
if ( $s !== '' && strstr( $s, ' ' ) ) {
@@ -419,7 +422,7 @@
$keyword = wp_specialchars_decode( $keyword, ENT_QUOTES );
$count ++;
- $gd_titlematch_part .= $wpdb->prepare( "( " . $wpdb->posts . ".post_title LIKE %s OR " . $wpdb->posts . ".post_title LIKE %s ) ", array( $keyword . '%', '% ' . $keyword . '%' ) );
+ $gd_titlematch_part .= $wpdb->prepare( "( " . $wpdb->posts . ".post_title LIKE %s OR " . $wpdb->posts . ".post_title LIKE %s ) ", array( $wpdb->esc_like( $keyword ) . '%', '% ' . $wpdb->esc_like( $keyword ) . '%' ) );
if ( $count < count( $keywords ) ) {
$gd_titlematch_part .= $key . " ";
@@ -437,16 +440,16 @@
$fields .= $wpdb->prepare( ", CASE WHEN " . $table . ".featured=%d THEN 1 ELSE 0 END AS gd_featured ", 1 );
}
$fields .= $wpdb->prepare( ", CASE WHEN " . $wpdb->posts . ".post_title LIKE %s THEN 1 ELSE 0 END AS gd_exacttitle, GD_TITLEMATCH_PART CASE WHEN ( " . $wpdb->posts . ".post_title LIKE %s OR " . $wpdb->posts . ".post_title LIKE %s OR " . $wpdb->posts . ".post_title LIKE %s ) THEN 1 ELSE 0 END AS gd_titlematch, CASE WHEN ( " . $wpdb->posts . ".post_content LIKE %s OR " . $wpdb->posts . ".post_content LIKE %s OR " . $wpdb->posts . ".post_content LIKE %s OR " . $wpdb->posts . ".post_content LIKE %s OR " . $wpdb->posts . ".post_content LIKE %s OR " . $wpdb->posts . ".post_content LIKE %s ) THEN 1 ELSE 0 END AS gd_content", array(
- $s,
- $s,
- $s . '%',
- '% ' . $s . '%',
- $s,
- $s . ' %',
- '% ' . $s . ' %',
- '%>' . $s . '%',
- '% ' . $s,
- '% ' . $s .','
+ $wpdb->esc_like( $s ),
+ $wpdb->esc_like( $s ),
+ $wpdb->esc_like( $s ) . '%',
+ '% ' . $wpdb->esc_like( $s ) . '%',
+ $wpdb->esc_like( $s ),
+ $wpdb->esc_like( $s ) . ' %',
+ '% ' . $wpdb->esc_like( $s ) . ' %',
+ '%>' . $wpdb->esc_like( $s ) . '%',
+ '% ' . $wpdb->esc_like( $s ),
+ '% ' . $wpdb->esc_like( $s ) .','
) );
$fields = str_replace( "gd_exacttitle, GD_TITLEMATCH_PART", "gd_exacttitle, {$gd_titlematch_part}", $fields );
}
@@ -560,7 +563,7 @@
$keyword = trim( $keyword );
$keyword = stripslashes( wp_specialchars_decode( $keyword, ENT_QUOTES ) );
if ( $keyword != '' ) {
- $better_search_term = $wpdb->prepare( " OR {$wpdb->posts}.post_title LIKE %s OR {$wpdb->posts}.post_title LIKE %s ", array( $keyword . '%', '% ' . $keyword . '%' ) );
+ $better_search_term = $wpdb->prepare( " OR {$wpdb->posts}.post_title LIKE %s OR {$wpdb->posts}.post_title LIKE %s ", array( $wpdb->esc_like( $keyword ) . '%', '% ' . $wpdb->esc_like( $keyword ) . '%' ) );
/**
* Filter the search query keywords SQL.
@@ -649,7 +652,7 @@
$content_where = $terms_where = '';
if ( $s != '' ) {
- $content_where = $wpdb->prepare( " OR ($wpdb->posts.post_content LIKE %s OR $wpdb->posts.post_content LIKE %s OR $wpdb->posts.post_content LIKE %s OR $wpdb->posts.post_content LIKE %s) ", array( $s . '%', '% ' . $s . '%', '%>' . $s . '%', '%n' . $s . '%' ) );
+ $content_where = $wpdb->prepare( " OR ($wpdb->posts.post_content LIKE %s OR $wpdb->posts.post_content LIKE %s OR $wpdb->posts.post_content LIKE %s OR $wpdb->posts.post_content LIKE %s) ", array( $wpdb->esc_like( $s ) . '%', '% ' . $wpdb->esc_like( $s ) . '%', '%>' . $wpdb->esc_like( $s ) . '%', '%n' . $wpdb->esc_like( $s ) . '%' ) );
$content_where = str_replace( "\n", "n", $content_where ); // $wpdb->prepare() adds slash that unable to match in search.
/**
@@ -663,9 +666,9 @@
$content_where = apply_filters( "geodir_search_content_where", $content_where );
if ( $gd_exact_search ) {
- $terms_where = $wpdb->prepare( " AND ($wpdb->terms.name LIKE %s ) ", array( $s ) );
+ $terms_where = $wpdb->prepare( " AND ($wpdb->terms.name LIKE %s ) ", array( $wpdb->esc_like( $s ) ) );
} else {
- $terms_where = $wpdb->prepare( " AND ($wpdb->terms.name LIKE %s OR $wpdb->terms.name LIKE %s OR $wpdb->terms.name IN ($s_A)) ", array( $s . '%', '% '. $s . '%' ) );
+ $terms_where = $wpdb->prepare( " AND ($wpdb->terms.name LIKE %s OR $wpdb->terms.name LIKE %s OR $wpdb->terms.name IN ($s_A)) ", array( $wpdb->esc_like( $s ) . '%', '% '. $wpdb->esc_like( $s ) . '%' ) );
}
/**
@@ -750,7 +753,7 @@
$lat = $latlon['lat'];
$lon = $latlon['lon'];
$between = geodir_get_between_latlon( $lat, $lon, $dist );
- $post_title_where = $s != "" ? $wpdb->prepare( "{$wpdb->posts}.post_title LIKE %s", array( $s ) ) : "1=1";
+ $post_title_where = $s != "" ? $wpdb->prepare( "{$wpdb->posts}.post_title LIKE %s", array( $wpdb->esc_like( $s ) ) ) : "1=1";
$where .= " AND ( ( $post_title_where $better_search_terms ) $content_where $terms_sql ) AND $wpdb->posts.post_type = '{$post_types}' {$status_where}";
if ( ! empty( $between ) && ! ( GeoDir_Post_types::supports( $post_types, 'service_distance' ) && $geodirectory->location->get_latlon() ) ) {
@@ -767,7 +770,7 @@
$where .= " AND ( `{$table}`.`private_address` IS NULL OR `{$table}`.`private_address` <> 1 ) ";
}
} else {
- $post_title_where = $s != "" ? $wpdb->prepare( "{$wpdb->posts}.post_title LIKE %s", array( $s ) ) : "1=1";
+ $post_title_where = $s != "" ? $wpdb->prepare( "{$wpdb->posts}.post_title LIKE %s", array( $wpdb->esc_like( $s ) ) ) : "1=1";
$where .= " AND ( ( $post_title_where $better_search_terms ) $content_where $terms_sql ) AND $wpdb->posts.post_type = '{$post_types}' {$status_where}";
}
--- a/geodirectory/includes/custom-fields/input-functions-aui.php
+++ b/geodirectory/includes/custom-fields/input-functions-aui.php
@@ -2507,7 +2507,8 @@
// admin only
$admin_only = geodir_cfi_admin_only($cf);
- $conditional_attrs = geodir_conditional_field_attrs( $cf, $cf['name'], 'hidden' );
+ $is_required = ! empty( $cf['is_required'] );
+ $conditional_attrs = geodir_conditional_field_attrs( $cf, $cf['name'], $is_required ? 'text' : 'hidden' );
?>
<div id="<?php echo $cf['name']; ?>_row" class="<?php if ( $cf['is_required'] ) {echo 'required_field';} ?> <?php echo ( $aui_bs5 ? 'mb-3' : 'form-group' ); ?> row"<?php echo $conditional_attrs; ?>>
<label for="<?php echo $id; ?>" class="<?php echo $horizontal ? ' col-sm-2 col-form-label' : '';?>">
@@ -2522,9 +2523,6 @@
echo class_exists("AUI_Component_Helper") ? AUI_Component_Helper::help_text(__( $cf['desc'], 'geodirectory' )) : '';
if($horizontal){echo "</div>";}
- // params for file upload
- $is_required = $cf['is_required'];
-
if($horizontal){echo $aui_bs5 ? "<div class='w-100'>" : "<div class='mx-3 w-100'>";}
// the file upload template
echo geodir_get_template_html( "bootstrap/file-upload.php", array(
--- a/geodirectory/includes/widgets/class-geodir-widget-simple-archive-item.php
+++ b/geodirectory/includes/widgets/class-geodir-widget-simple-archive-item.php
@@ -400,6 +400,37 @@
),
)
),
+ 'author_actions' => array(
+ 'type' => 'select',
+ 'title' => __( 'Show Author Actions', 'geodirectory' ),
+ 'desc' => __( 'Select how to show the author actions.', 'geodirectory' ),
+ 'options' => array(
+ '' => __( 'Show on author page only', 'geodirectory' ),
+ 'all' => __( 'Show on all pages', 'geodirectory' ),
+ 'hide' => __( 'Hide author actions', 'geodirectory' ),
+ ),
+ 'default' => '',
+ 'desc_tip' => true,
+ 'group' => __( 'Author Actions', 'geodirectory' )
+ ),
+ 'hide_edit' => array(
+ 'type' => 'checkbox',
+ 'title' => __( 'Hide edit', 'geodirectory' ),
+ 'desc' => __( 'Hide the edit action.', 'geodirectory' ),
+ 'value' => '1',
+ 'default' => '0',
+ 'desc_tip' => true,
+ 'group' => __( 'Author Actions', 'geodirectory' )
+ ),
+ 'hide_delete' => array(
+ 'type' => 'checkbox',
+ 'title' => __( 'Hide delete', 'geodirectory' ),
+ 'desc' => __( 'Hide the delete action.', 'geodirectory' ),
+ 'value' => '1',
+ 'default' => '0',
+ 'desc_tip' => true,
+ 'group' => __( 'Author Actions', 'geodirectory' )
+ ),
// Output location
'list_style' => array(
@@ -706,6 +737,9 @@
(array) $instance,
array(
'title' => '',
+ 'author_actions' => '',
+ 'hide_edit' => '',
+ 'hide_delete' => ''
)
);
@@ -774,16 +808,16 @@
$content .= $is_preview ? '<div class="card-img-top overflow-hidden position-relative " >' : "[gd_archive_item_section type='open' position='left']";
// top left badge
- $content .= $instance['top_left_badge_preset'] == 'custom' ? $this->get_custom_badge( 'top_left', $instance ) : self::get_badge_type( $instance['top_left_badge_preset'], array( 'position' => 'top-left' ) );
+ $content .= $instance['top_left_badge_preset'] == 'custom' ? $this->get_custom_badge( 'top_left', $instance ) : self::get_badge_type( $instance['top_left_badge_preset'], array( 'position' => 'top-left' ), array(), $instance );
// top right badge
- $content .= $instance['top_right_badge_preset'] == 'custom' ? $this->get_custom_badge( 'top_right', $instance ) : self::get_badge_type( $instance['top_right_badge_preset'], array( 'position' => 'top-right' ) );
+ $content .= $instance['top_right_badge_preset'] == 'custom' ? $this->get_custom_badge( 'top_right', $instance ) : self::get_badge_type( $instance['top_right_badge_preset'], array( 'position' => 'top-right' ), array(), $instance );
// bottom left badge
- $content .= $instance['bottom_left_badge_preset'] == 'custom' ? $this->get_custom_badge( 'bottom_left', $instance ) : self::get_badge_type( $instance['bottom_left_badge_preset'], array( 'position' => 'bottom-left' ) );
+ $content .= $instance['bottom_left_badge_preset'] == 'custom' ? $this->get_custom_badge( 'bottom_left', $instance ) : self::get_badge_type( $instance['bottom_left_badge_preset'], array( 'position' => 'bottom-left' ), array(), $instance );
// bottom right badge
- $content .= $instance['bottom_right_badge_preset'] == 'custom' ? $this->get_custom_badge( 'bottom_right', $instance ) : self::get_badge_type( $instance['bottom_right_badge_preset'], array( 'position' => 'bottom-right' ) );
+ $content .= $instance['bottom_right_badge_preset'] == 'custom' ? $this->get_custom_badge( 'bottom_right', $instance ) : self::get_badge_type( $instance['bottom_right_badge_preset'], array( 'position' => 'bottom-right' ), array(), $instance );
// image
@@ -911,7 +945,9 @@
$content .= "[gd_output_location location='listing' list_style='$list_style' item_py='$list_py' $args_out]";
// Author Actions
- $content .= "[gd_author_actions author_page_only='1']";
+ if ( $instance['author_actions'] != "hide" ) {
+ $content .= "[gd_author_actions author_page_only='" . ( $instance['author_actions'] == 'all' ? 0 : 1 ) . "'" . ( ! empty( $instance['hide_edit'] ) ? " hide_edit='1'" : '' ) . ( ! empty( $instance['hide_delete'] ) ? " hide_delete='1'" : '' ) . "]";
+ }
// Close Body
$content .= $is_preview ? '</div>' : "[gd_archive_item_section type='close' position='right']";
@@ -919,11 +955,11 @@
// Open Footer
$footer_items = absint( $instance['footer_items'] );
- $footer_item_1 = $footer_items > 0 ? self::get_badge_type( $instance['footer_item_1'], array( 'show' => $instance['footer_item_1_show'] ) ) : '';
- $footer_item_2 = $footer_items > 1 ? self::get_badge_type( $instance['footer_item_2'], array( 'show' => $instance['footer_item_2_show'] ) ) : '';
- $footer_item_3 = $footer_items > 2 ? self::get_badge_type( $instance['footer_item_3'], array( 'show' => $instance['footer_item_3_show'] ) ) : '';
- $footer_item_4 = $footer_items > 3 ? self::get_badge_type( $instance['footer_item_4'], array( 'show' => $instance['footer_item_4_show'] ) ) : '';
- $footer_item_5 = $footer_items > 4 ? self::get_badge_type( $instance['footer_item_5'], array( 'show' => $instance['footer_item_5_show'] ) ) : '';
+ $footer_item_1 = $footer_items > 0 ? self::get_badge_type( $instance['footer_item_1'], array( 'show' => $instance['footer_item_1_show'] ), array(), $instance ) : '';
+ $footer_item_2 = $footer_items > 1 ? self::get_badge_type( $instance['footer_item_2'], array( 'show' => $instance['footer_item_2_show'] ), array(), $instance ) : '';
+ $footer_item_3 = $footer_items > 2 ? self::get_badge_type( $instance['footer_item_3'], array( 'show' => $instance['footer_item_3_show'] ), array(), $instance ) : '';
+ $footer_item_4 = $footer_items > 3 ? self::get_badge_type( $instance['footer_item_4'], array( 'show' => $instance['footer_item_4_show'] ), array(), $instance ) : '';
+ $footer_item_5 = $footer_items > 4 ? self::get_badge_type( $instance['footer_item_5'], array( 'show' => $instance['footer_item_5_show'] ), array(), $instance ) : '';
if ( $footer_items ) {
@@ -1042,11 +1078,11 @@
$a = array( 'position' => str_replace( '_', '-', $position ) );
- return $this->get_badge_type( 'custom_badge', $a, $args );
+ return $this->get_badge_type( 'custom_badge', $a, $args, $instance );
}
- public function get_badge_type( $type, $args = array(), $badge_args = array() ) {
+ public function get_badge_type( $type, $args = array(), $badge_args = array(), $instance = array() ) {
global $aui_bs5;
$type = esc_attr( $type );
@@ -1095,9 +1131,9 @@
$lhs = $this->is_preview() ? '1' : '2';
$output = "[gd_post_meta title='' id='' key='business_hours' show='' no_wrap='false' $alignment text_alignment='' list_hide='' list_hide_secondary='$lhs' location='' css_class='' ]";
} else if ( $type == 'author_actions_dropdown' ) {
- $output = "[gd_author_actions hide_edit='false' hide_delete='false' author_page_only='true' display='dropdown' size='small' alignment='' color='primary' text_color='white' btn_mt='1' btn_mr='' btn_mb='1' btn_ml='' bg='' $position_args pt='' pr='' pb='' pl='' border='' rounded='' rounded_size='' shadow='' ]";
+ $output = "[gd_author_actions author_page_only='" . ( ! empty( $instance['author_actions'] ) && $instance['author_actions'] == 'all' ? 0 : 1 ) . "'" . ( ! empty( $instance['hide_edit'] ) ? " hide_edit='1'" : '' ) . ( ! empty( $instance['hide_delete'] ) ? " hide_delete='1'" : '' ) . " display='dropdown' size='small' alignment='' color='primary' text_color='white' btn_mt='1' btn_mr='' btn_mb='1' btn_ml='' bg='' $position_args pt='' pr='' pb='' pl='' border='' rounded='' rounded_size='' shadow='' ]";
} else if ( $type == 'author_actions_dropdown_dots' ) {
- $output = "[gd_author_actions hide_edit='false' hide_delete='false' author_page_only='true' display='dropdown-dots' size='medium' alignment='' color='dark' text_color='white' btn_mt='1' btn_mr='' btn_mb='1' btn_ml='' bg='' $position_args pt='' pr='' pb='' pl='' border='' rounded='' rounded_size='' shadow='' ]";
+ $output = "[gd_author_actions author_page_only='" . ( ! empty( $instance['author_actions'] ) && $instance['author_actions'] == 'all' ? 0 : 1 ) . "'" . ( ! empty( $instance['hide_edit'] ) ? " hide_edit='1'" : '' ) . ( ! empty( $instance['hide_delete'] ) ? " hide_delete='1'" : '' ) . " display='dropdown-dots' size='medium' alignment='' color='dark' text_color='white' btn_mt='1' btn_mr='' btn_mb='1' btn_ml='' bg='' $position_args pt='' pr='' pb='' pl='' border='' rounded='' rounded_size='' shadow='' ]";
} else if ( $type == 'distance_to_post' ) {
$output = "[gd_post_distance type='' shadow='' color='' bg_color='" . ( $position_class ? 'rgba(0,115,170,0.5)' : '#0073aa' ) . "' txt_color='#ffffff' size='' $alignment list_hide='' list_hide_secondary='' css_class='" . esc_attr( $position_class ) . "' ]";
} elseif ( $type == 'custom_badge' ) {
--- a/geodirectory/templates/bootstrap/file-upload.php
+++ b/geodirectory/templates/bootstrap/file-upload.php
@@ -12,7 +12,7 @@
*
* @see https://wpgeodirectory.com/documentation/article/how-tos/customizing-templates/
* @package GeoDirectory
- * @version 2.2.19
+ * @version 2.8.153
*
* @var string $id The input id string.
* @var bool $is_required If the item is required or not.
@@ -42,15 +42,15 @@
<div class="geodir-add-files w-100 m-0 mb-3 p-0 bg-light text-center container overflow-hidden" style="border:4px dashed #ccc">
<div class="geodir_form_row clearfix geodir-files-dropbox position-relative p-3" id="<?php echo esc_attr( $id ); ?>dropbox" >
<input type="<?php echo ( ! empty( $is_required ) ? 'text' : "hidden" ); ?>" name="<?php echo esc_attr( $id ); ?>" id="<?php echo esc_attr( $id ); ?>" value="<?php echo esc_attr( $files ); ?>" class="<?php if ( $is_required ) { echo 'gd_image_required_field'; } ?>" <?php echo ( ! empty( $extra_attributes ) ? $extra_attributes : "" ); ?>/>
- <input type="hidden" name="<?php echo esc_attr( $id ); ?>image_limit" id="<?php echo esc_attr( $id ); ?>image_limit" value="<?php echo esc_attr( $image_limit ); ?>"/>
- <input type="hidden" name="<?php echo esc_attr( $id ); ?>totImg" id="<?php echo esc_attr( $id ); ?>totImg" value="<?php echo esc_attr( $total_files ); ?>"/>
+ <input type="hidden" name="<?php echo esc_attr( $id ); ?>image_limit" id="<?php echo esc_attr( $id ); ?>image_limit" value="<?php echo esc_attr( $image_limit ); ?>" data-ignore-rule/>
+ <input type="hidden" name="<?php echo esc_attr( $id ); ?>totImg" id="<?php echo esc_attr( $id ); ?>totImg" value="<?php echo esc_attr( $total_files ); ?>" data-ignore-rule/>
<?php if ( $allowed_file_types != '' ) { ?>
- <input type="hidden" name="<?php echo esc_attr( $id ); ?>_allowed_types" id="<?php echo esc_attr( $id ); ?>_allowed_types" value="<?php echo esc_attr( $allowed_file_types ); ?>" data-exts="<?php echo esc_attr( $display_file_types ); ?>"/>
+ <input type="hidden" name="<?php echo esc_attr( $id ); ?>_allowed_types" id="<?php echo esc_attr( $id ); ?>_allowed_types" value="<?php echo esc_attr( $allowed_file_types ); ?>" data-exts="<?php echo esc_attr( $display_file_types ); ?>" data-ignore-rule/>
<?php } ?>
<div class="plupload-upload-uic hide-if-no-js <?php if ( $multiple ) { echo "plupload-upload-uic-multiple"; } ?>" id="<?php echo esc_attr( $id ); ?>plupload-upload-ui">
<div class="geodir-dropbox-title text-muted h3 m-0"><?php echo $drop_file_label; ?></div>
<p class="text-muted mb-2"><?php _e( 'OR', 'geodirectory' ); ?></p>
- <input id="<?php echo esc_attr( $id ); ?>plupload-browse-button" type="button" value="<?php echo esc_attr( $drop_file_button ); ?>" class="btn btn-primary mb-2 "/>
+ <input id="<?php echo esc_attr( $id ); ?>plupload-browse-button" type="button" value="<?php echo esc_attr( $drop_file_button ); ?>" class="btn btn-primary mb-2" data-ignore-rule/>
<div class="geodir-dropbox-file-types text-muted"><?php echo( $display_file_types != '' ? __( 'Allowed file types:', 'geodirectory' ) . ' ' . $display_file_types : '' ); ?></div>
<div class="geodir-dropbox-file-limit text-muted geodir-msg-file-limit-<?php echo esc_attr( $image_limit ); ?>"><?php echo $file_limit_message;?></div>
<span class="ajaxnonceplu" id="ajaxnonceplu<?php echo wp_create_nonce( $id . 'pluploadan' ); ?>"></span>
@@ -88,7 +88,4 @@
</div>
</div>
</div>
-<style>
- .geodir-add-files .geodir-files-dropbox.dragover .gd-drop-overlay{display: block !important;}
- .geodir-add-files .geodir-files-dropbox.dragover *{pointer-events:none !important}
-</style>
+<style>.geodir-add-files .geodir-files-dropbox.dragover .gd-drop-overlay{display:block!important}.geodir-add-files .geodir-files-dropbox.dragover *{pointer-events:none!important}</style>
--- a/geodirectory/vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php
+++ b/geodirectory/vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php
@@ -15,7 +15,7 @@
*/
add_action('after_setup_theme', function () {
global $ayecode_ui_version,$ayecode_ui_file_key;
- $this_version = "0.2.43";
+ $this_version = "0.2.44";
if(empty($ayecode_ui_version) || version_compare($this_version , $ayecode_ui_version, '>')){
$ayecode_ui_version = $this_version ;
$ayecode_ui_file_key = wp_hash( __FILE__ );
--- a/geodirectory/vendor/ayecode/wp-ayecode-ui/example-plugin.php
+++ b/geodirectory/vendor/ayecode/wp-ayecode-ui/example-plugin.php
@@ -3,7 +3,7 @@
Plugin Name: AyeCode UI
Plugin URI: https://ayecode.io/
Description: This is an example plugin to test AyeCode UI Quickly.
-Version: 0.2.43
+Version: 0.2.44
Author: AyeCode Ltd
Author URI: https://userswp.io
License: GPL-2.0+
--- a/geodirectory/vendor/ayecode/wp-ayecode-ui/includes/ayecode-ui-settings.php
+++ b/geodirectory/vendor/ayecode/wp-ayecode-ui/includes/ayecode-ui-settings.php
@@ -35,7 +35,7 @@
*
* @var string
*/
- public $version = '0.2.43';
+ public $version = '0.2.44';
/**
* Class textdomain.
@@ -2655,7 +2655,7 @@
if (!$('[data-has-rule]').length) {
return;
}
- $('input.select2-search__field').attr('data-ignore-rule','');
+ $('input.select2-search__field,.aui-cf-ignore-rule').attr('data-ignore-rule','');
$('[data-rule-key]').on('change keypress keyup gdclear', 'input, textarea', function() {
if (!$(this).hasClass('select2-search__field')) {
aui_cf_field_apply_rules($(this));
@@ -2884,7 +2884,7 @@
* Get the field element.
*/
function aui_cf_field_get_element($el) {
- var el = $el.find('input:not("[data-ignore-rule]"),textarea,select'), type = aui_cf_field_get_type($el);
+ var el = $el.find('input,textarea,select').not('[data-ignore-rule]'), type = aui_cf_field_get_type($el);
if (type && window._aui_cf_field_elements && typeof window._aui_cf_field_elements == 'object' && typeof window._aui_cf_field_elements[type] != 'undefined') {
el = window._aui_cf_field_elements[type];
}
@@ -2906,19 +2906,19 @@
if ($el.is(':checkbox')) {
current_value = '';
- if ($el.parents('[data-rule-key]').find('input:checked').length > 1) {
- $el.parents('[data-rule-key]').find('input:checked').each(function() {
+ if ($el.parents('[data-rule-key]').find('input:checked').not('[data-ignore-rule]').length > 1) {
+ $el.parents('[data-rule-key]').find('input:checked').not('[data-ignore-rule]').each(function() {
current_value = current_value + jQuery(this).val() + ' ';
});
} else {
- if ($el.parents('[data-rule-key]').find('input:checked').length >= 1) {
- current_value = $el.parents('[data-rule-key]').find('input:checked').val();
+ if ($el.parents('[data-rule-key]').find('input:checked').not('[data-ignore-rule]').length >= 1) {
+ current_value = $el.parents('[data-rule-key]').find('input:checked').not('[data-ignore-rule]').val();
}
}
}
if ($el.is(':radio')) {
- current_value = $el.parents('[data-rule-key]').find('input[type=radio]:checked').val();
+ current_value = $el.parents('[data-rule-key]').find('input[type=radio]:checked').not('[data-ignore-rule]').val();
}
return current_value;
@@ -2936,7 +2936,7 @@
case 'date':
case 'textarea':
case 'select':
- value = $el.find('input:text,input[type="number"],textarea,select').val();
+ value = $el.find('input:text,input[type="number"],textarea,select').not('[data-ignore-rule]').val();
break;
case 'phone':
case 'email':
@@ -2945,27 +2945,27 @@
case 'hidden':
case 'password':
case 'file':
- value = $el.find('input[type="' + type + '"]').val();
+ value = $el.find('input[type="' + type + '"]').not('[data-ignore-rule]').val();
break;
case 'multiselect':
- value = $el.find('select').val();
+ value = $el.find('select').not('[data-ignore-rule]').val();
break;
case 'radio':
- if ($el.find('input[type="radio"]:checked').length >= 1) {
- value = $el.find('input[type="radio"]:checked').val();
+ if ($el.find('input[type="radio"]:checked').not('[data-ignore-rule]').length >= 1) {
+ value = $el.find('input[type="radio"]:checked').not('[data-ignore-rule]').val();
}
break;
case 'checkbox':
- if ($el.find('input[type="checkbox"]:checked').length >= 1) {
- if ($el.find('input[type="checkbox"]:checked').length > 1) {
+ if ($el.find('input[type="checkbox"]:checked').not('[data-ignore-rule]').length >= 1) {
+ if ($el.find('input[type="checkbox"]:checked').not('[data-ignore-rule]').length > 1) {
var values = [];
values.push(value);
- $el.find('input[type="checkbox"]:checked').each(function() {
+ $el.find('input[type="checkbox"]:checked').not('[data-ignore-rule]').each(function() {
values.push(jQuery(this).val());
});
value = values;
} else {
- value = $el.find('input[type="checkbox"]:checked').val();
+ value = $el.find('input[type="checkbox"]:checked').not('[data-ignore-rule]').val();
}
}
break;
@@ -2998,7 +2998,7 @@
case 'number':
case 'date':
case 'textarea':
- $el.find('input:text,input[type="number"],textarea').val(setVal);
+ $el.find('input:text,input[type="number"],textarea').not('[data-ignore-rule]').val(setVal);
break;
case 'phone':
case 'email':
@@ -3007,45 +3007,47 @@
case 'hidden':
case 'password':
case 'file':
- $el.find('input[type="' + type + '"]').val(setVal);
+ $el.find('input[type="' + type + '"]:not("[data-ignore-rule]")').val(setVal);
break;
case 'select':
- $el.find('select').find('option').prop('selected', false);
- $el.find('select').val(setVal);
- $el.find('select').trigger('change');
+ var $elSelect = $el.find('select').not('[data-ignore-rule]');
+ $elSelect.find('option').prop('selected', false);
+ $elSelect.val(setVal);
+ $elSelect.trigger('change');
break;
case 'multiselect':
- $el.find('select').find('option').prop('selected', false);
- if ((typeof setVal === 'object' || typeof setVal === 'array') && !setVal.length && $el.find('select option:first').text() == '') {
- $el.find('select option:first').remove(); // Clear first option to show placeholder.
+ var $elSelect = $el.find('select').not('[data-ignore-rule]');
+ $elSelect.find('option').prop('selected', false);
+ if ((typeof setVal === 'object' || typeof setVal === 'array') && !setVal.length && $elSelect.find('option:first').text() == '') {
+ $elSelect.find('option:first').remove(); // Clear first option to show placeholder.
}
if (typeof setVal === 'string') {
- $el.find('select').val(setVal);
+ $elSelect.val(setVal);
} else {
jQuery.each(setVal, function(i, v) {
- $el.find('select').find('option[value="' + v + '"]').prop('selected', true);
+ $elSelect.find('option[value="' + v + '"]').prop('selected', true);
});
}
- $el.find('select').trigger('change');
+ $elSelect.trigger('change');
break;
case 'checkbox':
- if ($el.find('input[type="checkbox"]:checked').length >= 1) {
- $el.find('input[type="checkbox"]:checked').prop('checked', false).removeAttr('checked');
+ if ($el.find('input[type="checkbox"]:checked').not('[data-ignore-rule]').length >= 1) {
+ $el.find('input[type="checkbox"]:checked').not('[data-ignore-rule]').prop('checked', false).removeAttr('checked');
}
if (Array.isArray(setVal)) {
jQuery.each(setVal, function(i, v) {
- $el.find('input[type="checkbox"][value="' + v + '"]').prop('checked', true);
+ $el.find('input[type="checkbox"][value="' + v + '"]').not('[data-ignore-rule]').prop('checked', true);
});
} else {
- $el.find('input[type="checkbox"][value="' + setVal + '"]').prop('checked', true);
+ $el.find('input[type="checkbox"][value="' + setVal + '"]').not('[data-ignore-rule]').prop('checked', true);
}
break;
case 'radio':
setTimeout(function() {
- if ($el.find('input[type="radio"]:checked').length >= 1) {
- $el.find('input[type="radio"]:checked').prop('checked', false).removeAttr('checked');
+ if ($el.find('input[type="radio"]:checked').not('[data-ignore-rule]').length >= 1) {
+ $el.find('input[type="radio"]:checked').not('[data-ignore-rule]').prop('checked', false).removeAttr('checked');
}
- $el.find('input[type="radio"][value="' + setVal + '"]').prop('checked', true);
+ $el.find('input[type="radio"][value="' + setVal + '"]').not('[data-ignore-rule]').prop('checked', true);
}, 100);
break;
default:
--- a/geodirectory/vendor/ayecode/wp-ayecode-ui/includes/inc/bs-conversion.php
+++ b/geodirectory/vendor/ayecode/wp-ayecode-ui/includes/inc/bs-conversion.php
@@ -34,66 +34,83 @@
'.mr-' => '.me-',
'.pl-' => '.ps-',
'.pr-' => '.pe-',
- ' form-row' => ' row',
+ ' form-row' => ' row',
' embed-responsive-item' => '',
- ' embed-responsive' => ' ratio',
- '-1by1' => '-1x1',
- '-4by3' => '-4x3',
- '-16by9' => '-16x9',
- '-21by9' => '-21x9',
- 'geodir-lightbox-image' => 'aui-lightbox-image',
+ ' embed-responsive' => ' ratio',
+ '-1by1' => '-1x1',
+ '-4by3' => '-4x3',
+ '-16by9' => '-16x9',
+ '-21by9' => '-21x9',
+ 'geodir-lightbox-image' => 'aui-lightbox-image',
'geodir-lightbox-iframe' => 'aui-lightbox-iframe',
- ' badge-' => ' text-bg-',
- 'form-group' => 'mb-3',
- 'custom-select' => 'form-select',
- 'float-left' => 'float-start',
+ ' badge-' => ' text-bg-',
+ 'form-group' => 'mb-3',
+ 'custom-select' => 'form-select',
+ 'float-left' => 'float-start',
'float-right' => 'float-end',
- 'text-left' => 'text-start',
- 'text-sm-left' => 'text-sm-start',
- 'text-md-left' => 'text-md-start',
- 'text-lg-left' => 'text-lg-start',
+ 'text-left' => 'text-start',
+ 'text-sm-left' => 'text-sm-start',
+ 'text-md-left' => 'text-md-start',
+ 'text-lg-left' => 'text-lg-start',
'text-right' => 'text-end',
- 'text-sm-right' => 'text-sm-end',
- 'text-md-right' => 'text-md-end',
- 'text-lg-right' => 'text-lg-end',
- 'border-right' => 'border-end',
- 'border-left' => 'border-start',
+ 'text-sm-right' => 'text-sm-end',
+ 'text-md-right' => 'text-md-end',
+ 'text-lg-right' => 'text-lg-end',
+ 'border-right' => 'border-end',
+ 'border-left' => 'border-start',
'font-weight-' => 'fw-',
'btn-block' => 'w-100',
'rounded-left' => 'rounded-start',
- 'rounded-right' => 'rounded-end',
- 'font-italic' => 'fst-italic',
+ 'rounded-right' => 'rounded-end',
+ 'font-italic' => 'fst-italic',
'"sr-only visually-hidden' => '"visually-hidden',
"'sr-only visually-hidden" => "'visually-hidden",
' sr-only visually-hidden' => ' visually-hidden',
'"sr-only' => '"visually-hidden',
"'sr-only" => "'visually-hidden",
' sr-only' => ' visually-hidden',
- '"fa-fw' => '"fa-fw fa-width-fixed', // FA7 compatibility
- "'fa-fw" => "'fa-fw fa-width-fixed",
- ' fa-fw' => ' fa-fw fa-width-fixed',
+ '"fa-fw' => '"fa-fw fa-width-fixed', // FA7 compatibility
+ "'fa-fw" => "'fa-fw fa-width-fixed",
+ ' fa-fw' => ' fa-fw fa-width-fixed',
'fa-width-fixed fa-width-fixed' => 'fa-width-fixed',
-// 'custom-control custom-checkbox' => 'form-check',
// data
- ' data-toggle=' => ' data-bs-toggle=',
- 'data-ride=' => 'data-bs-ride=',
+ ' data-toggle=' => ' data-bs-toggle=',
+ 'data-ride=' => 'data-bs-ride=',
'data-controlnav=' => 'data-bs-controlnav=',
- 'data-slide=' => 'data-bs-slide=',
- 'data-slide-to=' => 'data-bs-slide-to=',
- 'data-target=' => 'data-bs-target=',
+ 'data-slide=' => 'data-bs-slide=',
+ 'data-slide-to=' => 'data-bs-slide-to=',
+ 'data-target=' => 'data-bs-target=',
'data-dismiss="modal"' => 'data-bs-dismiss="modal"',
- 'class="close"' => 'class="btn-close"',
+ 'class="close"' => 'class="btn-close"',
'<span aria-hidden="true">×</span>' => '',
);
+
$output = str_replace(
array_keys( $convert ),
array_values( $convert ),
$output
);
+
+ $revert = array(
+ 'margin-start' => 'margin-left',
+ 'margin-end' => 'margin-right',
+ 'padding-start' => 'padding-left',
+ 'padding-end' => 'padding-right',
+ 'border-start' => 'border-left',
+ 'border-end' => 'border-right',
+ 'float-start' => 'float-left',
+ 'float-end' => 'float-right',
+ 'text-start' => 'text-left',
+ 'text-end' => 'text-right'
+ );
+
+ // Revert the inline style attributes.
+ $output = preg_replace_callback( '/(<style.*?>.*?</style>|style=["'].*?["'])/is', function ( $matches ) use ( $revert ) {
+ return str_replace( array_keys( $revert ), array_values( $revert ), $matches[0] );
+ }, $output );
}
return $output;
}
-
-add_filter( 'wp_super_duper_widget_output', 'aui_bs_convert_sd_output', 10, 4 ); //$output, $instance, $args, $this
+add_filter( 'wp_super_duper_widget_output', 'aui_bs_convert_sd_output', 10, 4 );
--- a/geodirectory/vendor/ayecode/wp-ayecode-ui/includes/inc/bs4-js.php
+++ b/geodirectory/vendor/ayecode/wp-ayecode-ui/includes/inc/bs4-js.php
@@ -223,14 +223,23 @@
* Initiate tooltips on the page.
*/
function aui_init_tooltips(){
- jQuery('[data-toggle="tooltip"]').tooltip();
- jQuery('[data-toggle="popover"]').popover();
- jQuery('[data-toggle="popover-html"]').popover({
- html: true
- });
+ if (typeof jQuery.fn.tooltip === 'function') {
+ jQuery('[data-toggle="tooltip"]').tooltip();
+ } else {
+ console.log('jQuery.fn.tooltip not found');
+ }
+
+ if (typeof jQuery.fn.popover === 'function') {
+ jQuery('[data-toggle="popover"]').popover();
+ jQuery('[data-toggle="popover-html"]').popover({
+ html: true
+ });
+ } else {
+ console.log('jQuery.fn.popover not found');
+ }
- // fix popover container compatibility
- jQuery('[data-toggle="popover"],[data-toggle="popover-html"]').on('inserted.bs.popover', function () {
+ // Fix popover container compatibility.
+ jQuery('[data-toggle="popover"],[data-toggle="popover-html"]').on('inserted.bs.popover', function() {
jQuery('body > .popover').wrapAll("<div class='bsui' />");
});
}
--- a/geodirectory/vendor/ayecode/wp-ayecode-ui/includes/inc/bs5-js.php
+++ b/geodirectory/vendor/ayecode/wp-ayecode-ui/includes/inc/bs5-js.php
@@ -240,15 +240,24 @@
* Initiate tooltips on the page.
*/
function aui_init_tooltips(){
- jQuery('[data-bs-toggle="tooltip"]').tooltip();
- jQuery('[data-bs-toggle="popover"]').popover();
- jQuery('[data-bs-toggle="popover-html"]').popover({
- html: true,
- sanitize: false
- });
+ if (typeof jQuery.fn.tooltip === 'function') {
+ jQuery('[data-bs-toggle="tooltip"]').tooltip();
+ } else {
+ console.log('jQuery.fn.tooltip not found');
+ }
+
+ if (typeof jQuery.fn.popover === 'function') {
+ jQuery('[data-bs-toggle="popover"]').popover();
+ jQuery('[data-bs-toggle="popover-html"]').popover({
+ html: true,
+ sanitize: false
+ });
+ } else {
+ console.log('jQuery.fn.popover not found');
+ }
// fix popover container compatibility
- jQuery('[data-bs-toggle="popover"],[data-bs-toggle="popover-html"]').on('inserted.bs.popover', function () {
+ jQuery('[data-bs-toggle="popover"],[data-bs-toggle="popover-html"]').on('inserted.bs.popover', function() {
jQuery('body > .popover').wrapAll("<div class='bsui' />");
});
}
--- a/geodirectory/vendor/composer/installed.php
+++ b/geodirectory/vendor/composer/installed.php
@@ -3,7 +3,7 @@
'name' => 'ayecode/geodirectory',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => '009e2f7bddd59c9b87095276c0da10e656844bb8',
+ 'reference' => '77b45017c9d32b08990203fc3c6cc7b4408d0a38',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -22,16 +22,16 @@
'ayecode/geodirectory' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => '009e2f7bddd59c9b87095276c0da10e656844bb8',
+ 'reference' => '77b45017c9d32b08990203fc3c6cc7b4408d0a38',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
'dev_requirement' => false,
),
'ayecode/wp-ayecode-ui' => array(
- 'pretty_version' => '0.2.43',
- 'version' => '0.2.43.0',
- 'reference' => '75232df33684c7e28b58569431ffd6463a02759a',
+ 'pretty_version' => '0.2.44',
+ 'version' => '0.2.44.0',
+ 'reference' => '8a2cb97147c889473e611e8bb240c8b658b87237',
'type' => 'library',
'install_path' => __DIR__ . '/../ayecode/wp-ayecode-ui',
'aliases' => array(),