Skip to content

Commit

Permalink
Merge pull request #79 from pods-framework/feature/64-add-author-field
Browse files Browse the repository at this point in the history
Feature/64 add author field fixes #64
  • Loading branch information
quasel committed Jul 16, 2018
2 parents 2509e33 + 2f1cea3 commit 3d9cf0e
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 60 deletions.
117 changes: 74 additions & 43 deletions classes/class-pods-beaver-page-data.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ final class PodsBeaverPageData {
public static function init() {

FLPageData::add_group( 'pods', array(
'label' => __( 'Pods', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'Pods Field from:', 'pods-beaver-builder-themer-add-on' ),
) );

}
Expand Down Expand Up @@ -103,44 +103,66 @@ public static function get_pod( $settings = array() ) {

$settings = null;
} elseif ( is_object( $settings ) ) {
$location = array();

if ( ! empty( $settings->data_source ) && 'pods_relationship' === $settings->data_source
&& ! empty( $settings->pods_source_type ) && 'pods_settings_relation' === $settings->pods_source_type ) {
if ( ! empty( $settings->item_id ) && ! empty( $settings->pod_name ) ) {
$item_id = $settings->item_id;
$pod_name = $settings->pod_name;
} else {
$location = array();

if ( ! empty( $settings->data_source ) && 'pods_relationship' === $settings->data_source
&& ! empty( $settings->pods_source_type ) && 'pods_settings_relation' === $settings->pods_source_type ) {

if ( ! empty( $settings->pods_source_settings_relation ) ) {
$location = explode( ':', $settings->pods_source_settings_relation );
if ( ! empty( $settings->pods_source_settings_relation ) ) {
$location = explode( ':', $settings->pods_source_settings_relation );
}
} elseif ( ! empty( $settings->settings_field ) ) {
$location = explode( ':', $settings->settings_field );
}
} elseif ( ! empty( $settings->settings_field ) ) {
$location = explode( ':', $settings->settings_field );
}

if ( 2 <= count( $location ) ) {
$settings->name = $location[0];
$settings->field = $location[1];
}
if ( 2 <= count( $location ) ) {
$settings->pod_name = $location[0];
$settings->field = $location[1];
}

if ( ! empty( $settings->name ) ) {
$pod_name = $settings->name;
if ( ! empty( $settings->pod_name ) ) {
$pod_name = $settings->pod_name;

if ( 'user' === $settings->name ) {
if ( is_user_logged_in() ) {
$item_id = get_current_user_id();
} else {
// User is not logged in, cannot return data
return false;
// Backwards compatibility ( user moved to separate property )
if ( 'user' === $pod_name && isset( $settings->type )) {
switch ( $settings->type ) {
case 'author':
if ( ! is_archive() && post_type_supports( get_post_type(), 'author' ) ) {
$item_id = get_the_author_meta( 'ID' );
}
break;
case 'modified':
if ( ! is_archive() && post_type_supports( get_post_type(), 'author' ) ) {
$item_id = get_post_meta( get_post()->ID, '_edit_last', true );
}
break;
case 'logged_in':
case '': // For backwards compatibility
if ( is_user_logged_in() ) {
$item_id = get_current_user_id();
} else {
// User is not logged in, cannot return data
return false;
};
break;
}
}
}
} elseif ( 'fl_builder_node_settings' !== current_filter() && in_the_loop() ) {
// We are in a loop not caused by FLThemeBuilderFieldConnections::connect_all_layout_settings to trigger connect_settings()
$pod_name = get_post_type();
$item_id = get_the_ID();
} else {
$info = self::get_current_pod_info();
} elseif ( 'fl_builder_node_settings' !== current_filter() && in_the_loop() ) {
// We are in a loop not caused by FLThemeBuilderFieldConnections::connect_all_layout_settings to trigger connect_settings()
$pod_name = get_post_type();
$item_id = get_the_ID();
} else {
$info = self::get_current_pod_info();

if ( ! empty( $info['pod'] ) ) {
$pod_name = $info['pod'];
$item_id = $info['id'];
if ( ! empty( $info['pod'] ) ) {
$pod_name = $info['pod'];
$item_id = $info['id'];
}
}
}
}
Expand Down Expand Up @@ -515,18 +537,28 @@ public static function pods_get_templates() {
*/
public static function pods_get_settings_fields( $field_options = array() ) {

$pod_names = (array) pods_api()->load_pods( array( 'type' => array( 'settings', 'user' ), 'names' => true ) );
$pod_names = (array) pods_api()->load_pods( array( 'type' => array( 'user', 'settings' ), 'names' => true ) );

$field_options['add_pod_name'] = 'true';

$fields = array(
'settings_field' => array(
'type' => 'select',
'label' => __( 'Settings or User Field', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'Settings, Author, User...', 'pods-beaver-builder-themer-add-on' ),
'options' => array(
'' => __( 'No fields found', 'pods-beaver-builder-themer-add-on' ),
)
),
'type' => array(
'type' => 'select',
'label' => __( 'User "type"', 'pods-beaver-builder-themer-add-on' ),
'options' => array(
'author' => __( 'Author (post_author)', 'pods-beaver-builder-themer-add-on' ),
'modified' => __( 'Author (last modified) ', 'pods-beaver-builder-themer-add-on' ),
'logged_in' => __( 'Logged in User', 'pods-beaver-builder-themer-add-on' ),
),
'description' => __( 'Only affects user fields', 'pods-beaver-builder-themer-add-on' ),
),
);

if ( $pod_names ) {
Expand Down Expand Up @@ -563,6 +595,9 @@ public static function pods_get_settings_fields( $field_options = array() ) {
private static function recurse_pod_fields( $pod_name, $field_options = array(), $prefix = '', $pods_fields_visited = array() ) {

$fields = array();
if ( ! isset( $field_options['base_pod_name'] ) ) {
$field_options['base_pod_name'] = $pod_name;
}

if ( empty( $pod_name ) ) {
return $fields;
Expand All @@ -574,6 +609,7 @@ private static function recurse_pod_fields( $pod_name, $field_options = array(),

$pod = self::get_pod( $args );


if ( $pod ) {

$all_pod_fields = $pod->fields();
Expand Down Expand Up @@ -633,20 +669,15 @@ private static function recurse_pod_fields( $pod_name, $field_options = array(),
}
}

$base_pod_name = $field_options['base_pod_name'];
$option_name = $prefix . $field_name;

if ( isset( $field_options['add_pod_name'] ) && isset( $field_options['base_pod_name'] ) ) {
$base_pod_name = $field_options['base_pod_name'];
$option_name = $base_pod_name . ':' . $option_name;

$option_value = sprintf( '%s: %s%s (%s)', $base_pod_name, $prefix, $field_name, $field['type'] );
} else {
$option_value = sprintf( '%s%s (%s)', $prefix, $field_name, $field['type'] );
if ( isset( $field_options['add_pod_name'] ) ) {
$option_name = $base_pod_name . ':' . $option_name;
}

$fields[ $prefix . $pod_name ]['label'] = sprintf( '%s (%s)', $pod_name, $pod->pod_data['type'] );

$fields[ $prefix . $pod_name ]['options'][ $option_name ] = $option_value;
$fields[ $prefix . $pod_name ]['label'] = sprintf( '%s -> %s', $base_pod_name, $pod_name );
$fields[ $prefix . $pod_name ]['options'][ $option_name ] = sprintf( '%s%s (%s)', $prefix, $field_name, $field['type'] );
}


Expand Down
42 changes: 25 additions & 17 deletions includes/pods-page-data.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
<?php
// @todo Revisit label and description text

/**
* ***************************Documentation****************************
* string, html, Properties
Expand All @@ -14,15 +12,14 @@
* Pods CPT / TAX / ...
*/
$data = array(
'label' => __( 'Field or Related Field', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'Post, Page, Term...', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'string',
'html',
'custom_field',
),
'getter' => 'PodsBeaverPageData::get_field_display',
'js' => '',
);

$form = array(
Expand All @@ -42,7 +39,7 @@
* Pods Templates / Magic Tag
*/
$data = array(
'label' => __( 'Template or Magic Tag', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'Template, Magic Tag', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'string',
Expand Down Expand Up @@ -89,7 +86,7 @@
* Pods Settings
*/
$data = array(
'label' => __( 'User or Settings Fields', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'Settings, Author, User...', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'string',
Expand Down Expand Up @@ -119,7 +116,7 @@
* Pods Photo (Image)
*/
$data = array(
'label' => __( 'Image: Field', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'Image: Post, Page, Term...', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'photo',
Expand Down Expand Up @@ -153,7 +150,7 @@
* Manual Photo Field
*/
$data = array(
'label' => __( 'Image: Advanced (manual)', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'Image: Magic Tag', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'photo'
Expand Down Expand Up @@ -187,7 +184,7 @@
* Pods Multiple Photos (Images)
*/
$data = array(
'label' => __( 'Multiple Photos (Images)', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'Images: Post, Page, Term...', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'multiple-photos',
Expand All @@ -213,7 +210,7 @@
* Manual Multiple Photo Field
*/
$data = array(
'label' => __( 'Images: Advanced (manual)', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'Images: Magic Tag', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'multiple-photos'
Expand Down Expand Up @@ -242,7 +239,7 @@
* Pods Settings Photo (Image)
*/
$data = array(
'label' => __( 'User or Settings Fields', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'Image: Settings, Author, User...', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'photo',
Expand All @@ -261,14 +258,25 @@
'fields' => PodsBeaverPageData::pods_get_settings_fields( $setting_field_args ),
);

$form['fields']['image_size'] = array(
'type' => 'photo-sizes',
'label' => __( 'Image Size', 'pods-beaver-builder-themer-add-on' ),
'default' => 'full-size',
);

$form['fields']['default_img'] = array(
'type' => 'photo',
'label' => __( 'Default Image', 'pods-beaver-builder-themer-add-on' ),
);

FLPageData::add_site_property( 'pods_settings_photo', $data );
FLPageData::add_site_property_settings_fields( 'pods_settings_photo', $form );

/**
* Pods Settings Multiple Photos (Images)
*/
$data = array(
'label' => __( 'User or Settings Fields', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'Images: Settings, Author, User...', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'multiple-photos',
Expand Down Expand Up @@ -303,7 +311,7 @@
* Pods CPT
*/
$data = array(
'label' => __( 'URL Field', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'URL: Post, Page, Term...', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'url',
Expand Down Expand Up @@ -333,10 +341,11 @@
* Pods Settings / User
*/
$data = array(
'label' => __( 'User or Settings URL Field ', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'URL: Settings, Author, User...', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'url',
'custom_field',
),
'getter' => 'PodsBeaverPageData::get_field_display_url',
);
Expand Down Expand Up @@ -365,8 +374,7 @@
* Pods CPT / TAX / ...
*/
$data = array(
'label' => __( 'Field or Related Field', 'pods-beaver-builder-themer-add-on' ),
'preview_text' => 'label',
'label' => __( 'Color: Post, Page, Term...', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'color',
Expand Down Expand Up @@ -395,7 +403,7 @@
* Pods Settings
*/
$data = array(
'label' => __( 'User or Settings Fields', 'pods-beaver-builder-themer-add-on' ),
'label' => __( 'Color: Settings, Author, User...', 'pods-beaver-builder-themer-add-on' ),
'group' => 'pods',
'type' => array(
'color',
Expand Down

0 comments on commit 3d9cf0e

Please sign in to comment.