Initial commit
This commit is contained in:
253
includes/fields/class-fields.php
Normal file
253
includes/fields/class-fields.php
Normal file
@@ -0,0 +1,253 @@
|
||||
<?php
|
||||
/**
|
||||
* Gravity Flow Fields Functions
|
||||
*
|
||||
* @package GravityFlow
|
||||
* @copyright Copyright (c) 2015-2018, Steven Henty S.L.
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
||||
* @since 1.4.2-dev
|
||||
*/
|
||||
|
||||
if ( ! class_exists( 'GFForms' ) ) {
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Class Gravity_Flow_Fields
|
||||
*/
|
||||
class Gravity_Flow_Fields {
|
||||
|
||||
/**
|
||||
* Class constructor; if the installed Gravity Forms version is supported initialize the hooks.
|
||||
*/
|
||||
function __construct() {
|
||||
if ( ! gravity_flow()->is_gravityforms_supported() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
add_action( 'init', array( $this, 'init_hooks' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the hooks via the WordPress init action.
|
||||
*/
|
||||
public function init_hooks() {
|
||||
add_filter( 'gform_tooltips', array( $this, 'add_tooltips' ) );
|
||||
|
||||
add_action( 'gform_field_standard_settings', array( $this, 'field_settings' ) );
|
||||
add_action( 'gform_field_appearance_settings', array( $this, 'field_appearance_settings' ) );
|
||||
add_action( 'gform_entry_detail', array( 'Gravity_Flow_Field_Discussion', 'delete_discussion_item_script' ) );
|
||||
|
||||
add_action( 'wp_ajax_rg_delete_file', array( 'RGForms', 'delete_file' ) );
|
||||
add_action( 'wp_ajax_nopriv_rg_delete_file', array( 'RGForms', 'delete_file' ) );
|
||||
add_action( 'wp_ajax_gravityflow_delete_discussion_item', array( 'Gravity_Flow_Field_Discussion', 'ajax_delete_discussion_item' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the Workflow Fields group to the form editor.
|
||||
*
|
||||
* @param array $field_groups The properties for the field groups.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function maybe_add_workflow_field_group( $field_groups ) {
|
||||
foreach ( $field_groups as $field_group ) {
|
||||
if ( $field_group['name'] == 'workflow_fields' ) {
|
||||
return $field_groups;
|
||||
}
|
||||
}
|
||||
|
||||
$field_groups[] = array(
|
||||
'name' => 'workflow_fields',
|
||||
'label' => __( 'Workflow Fields', 'gravityflow' ),
|
||||
'fields' => array()
|
||||
);
|
||||
|
||||
return $field_groups;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the tooltips for the workflow fields group and any custom field settings.
|
||||
*
|
||||
* @param array $tooltips An associative array where the key is the tooltip name and the value is the tooltip.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function add_tooltips( $tooltips ) {
|
||||
$tooltips['form_workflow_fields'] = '<h6>' . __( 'Workflow Fields', 'gravityflow' ) . '</h6>' . __( 'Workflow Fields add advanced workflow functionality to your forms.', 'gravityflow' );
|
||||
$tooltips['gravityflow_discussion_timestamp_format'] = '<h6>' . __( 'Custom Timestamp Format', 'gravityflow' ) . '</h6>' . sprintf( __( 'If you would like to override the default format used when displaying the comment timestamps, enter your %scustom format%s here.', 'gravityflow' ), '<a href="https://codex.wordpress.org/Formatting_Date_and_Time" target="_blank">', '</a>' );
|
||||
|
||||
return $tooltips;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the assignees and role settings to the general tab.
|
||||
*
|
||||
* @param int $position The setting position.
|
||||
*/
|
||||
public function field_settings( $position ) {
|
||||
if ( $position == 20 ) {
|
||||
// After Description setting.
|
||||
$this->setting_assignees();
|
||||
$this->setting_role();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the markup for the gravityflow_setting_assignees setting to the field general tab in the form editor.
|
||||
*/
|
||||
public function setting_assignees() {
|
||||
?>
|
||||
|
||||
<li class="gravityflow_setting_assignees field_setting">
|
||||
<span class="section_label"><?php esc_html_e( 'Assignees', 'gravityflow' ); ?></span>
|
||||
<div>
|
||||
<input type="checkbox" id="gravityflow-assignee-field-show-users" onclick="SetAssigneeFieldShowUsers();"/>
|
||||
<label for="gravityflow-assignee-field-show-users" class="inline">
|
||||
<?php esc_html_e( 'Show Users', 'gravityflow' ); ?>
|
||||
<?php gform_tooltip( 'gravityflow_assignee_field_show_users' ) ?>
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<input type="checkbox" id="gravityflow-assignee-field-show-roles"
|
||||
onclick="var value = jQuery(this).is(':checked'); SetFieldProperty('gravityflowAssigneeFieldShowRoles', value);"/>
|
||||
<label for="gravityflow-assignee-field-show-roles" class="inline">
|
||||
<?php esc_html_e( 'Show Roles', 'gravityflow' ); ?>
|
||||
<?php gform_tooltip( 'gravityflow_assignee_field_show_roles' ) ?>
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<input type="checkbox" id="gravityflow-assignee-field-show-fields"
|
||||
onclick="var value = jQuery(this).is(':checked'); SetFieldProperty('gravityflowAssigneeFieldShowFields', value);"/>
|
||||
<label for="gravityflow-assignee-field-show-fields" class="inline">
|
||||
<?php esc_html_e( 'Show Fields', 'gravityflow' ); ?>
|
||||
<?php gform_tooltip( 'gravityflow_assignee_field_show_fields' ) ?>
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the markup for the gravityflow_setting_users_role_filter setting to the field general tab in the form editor.
|
||||
*/
|
||||
public function setting_role() {
|
||||
?>
|
||||
|
||||
<li class="gravityflow_setting_users_role_filter field_setting">
|
||||
<label for="gravityflow_users_role_filter" class="section_label">
|
||||
<?php esc_html_e( 'Users Role Filter', 'gravityflow' ); ?>
|
||||
</label>
|
||||
<?php $this->setting_role_select(); ?>
|
||||
</li>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the markup for the role select element.
|
||||
*/
|
||||
public function setting_role_select() {
|
||||
$choices = array(
|
||||
array(
|
||||
'value' => '',
|
||||
'label' => esc_html__( 'Include users from all roles', 'gravityflow' )
|
||||
)
|
||||
);
|
||||
|
||||
$role_field = array(
|
||||
'name' => 'gravityflow_users_role_filter',
|
||||
'choices' => array_merge( $choices, Gravity_Flow_Common::get_roles_as_choices( false ) ),
|
||||
'onchange' => "SetFieldProperty('gravityflowUsersRoleFilter',this.value);",
|
||||
);
|
||||
|
||||
$html = gravity_flow()->settings_select( $role_field, false );
|
||||
|
||||
echo str_replace( sprintf( 'name="_gaddon_setting_%s"', esc_attr( $role_field['name'] ) ), '', $html );
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the discussion fields custom timestamp format to the appearance tab.
|
||||
*
|
||||
* @param int $position The setting position.
|
||||
*/
|
||||
public function field_appearance_settings( $position ) {
|
||||
if ( $position == 0 ) {
|
||||
?>
|
||||
<li class="gravityflow_setting_discussion_timestamp_format field_setting">
|
||||
<label for="gravityflow_discussion_timestamp_format" class="section_label">
|
||||
<?php esc_html_e( 'Custom Timestamp Format', 'gravityflow' ); ?>
|
||||
<?php gform_tooltip( 'gravityflow_discussion_timestamp_format' ) ?>
|
||||
</label>
|
||||
<input id="gravityflow_discussion_timestamp_format" type="text" class="fieldwidth-4"
|
||||
placeholder="d M Y g:i a" onkeyup="SetDiscussionTimestampFormat(jQuery(this).val());"
|
||||
onchange="SetDiscussionTimestampFormat(jQuery(this).val());"/>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the value of the specified user property/meta key for the specified user ID.
|
||||
*
|
||||
* @since 1.5.1-dev
|
||||
*
|
||||
* @param string|int $user_id The user ID.
|
||||
* @param string $property The user property to return.
|
||||
* @param bool $url_encode Indicates if the urlencode function should be applied.
|
||||
* @param bool $esc_html Indicates if the esc_html function should be applied.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_user_variable( $user_id, $property, $url_encode = false, $esc_html = true ) {
|
||||
$value = $user_id;
|
||||
|
||||
if ( $property != 'id' ) {
|
||||
$user = get_user_by( 'id', $user_id );
|
||||
|
||||
if ( is_object( $user ) ) {
|
||||
switch ( $property ) {
|
||||
case 'email' :
|
||||
$property = 'user_email';
|
||||
break;
|
||||
case '' :
|
||||
$property = 'display_name';
|
||||
}
|
||||
|
||||
if ( $property == 'roles' ) {
|
||||
$value = implode( ', ', $user->roles );
|
||||
} else {
|
||||
$value = $user->get( $property );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return self::maybe_format_user_variable( $value, $url_encode, $esc_html );
|
||||
}
|
||||
|
||||
/**
|
||||
* Filters the value of invalid or special characters before output.
|
||||
*
|
||||
* @since 1.5.1-dev
|
||||
*
|
||||
* @param string|int $value The user ID or property to be filtered.
|
||||
* @param bool $url_encode Indicates if the urlencode function should be applied.
|
||||
* @param bool $esc_html Indicates if the esc_html function should be applied.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function maybe_format_user_variable( $value, $url_encode, $esc_html ) {
|
||||
if ( $url_encode ) {
|
||||
$value = urlencode( $value );
|
||||
}
|
||||
|
||||
if ( $esc_html ) {
|
||||
$value = esc_html( $value );
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
||||
new Gravity_Flow_Fields();
|
||||
Reference in New Issue
Block a user