app_id = $args['app_id'];
}
if (
isset( $args['builders'] ) &&
(
false === $args['builders'] ||
'false' === $args['builders']
)
) {
$this->builders = false;
}
$this->shortcode_args = $shortcode_args;
}
private function get_app_metadata( $app_id ) {
$app = new WPDA_Apps();
$response = $app->get_app_meta( $app_id );
if (
isset( $response->data['code'], $response->data['data'] ) &&
'ok' === $response->data['code']
) {
return $response->data['data'];
}
return null;
}
public function show() {
$app = WPDA_App_Model::get_by_id( $this->app_id );
if ( false === $app ) {
if ( ! $this->send_feedback() ) {
return;
}
$this->show_feedback( __( 'Not authorized', 'wp-data-access' ) );
return;
}
if ( ! $this->user_can_access( $app ) ) {
if ( $this->pwa ) {
esc_html_e( 'Not authorized', 'wp-data-access' );
return;
}
if ( ! $this->send_feedback() ) {
return;
}
$this->show_feedback( __( 'Not authorized', 'wp-data-access' ) );
return;
}
$metadata = array();
$metadata_master = $this->get_app_metadata( $this->app_id);
if ( null !== $metadata_master) {
$metadata[$this->app_id] = $metadata_master;
}
if ( isset( $app[0]['app_type'] ) && '5' == $app[0]['app_type'] ) {
// Add metadata children
$detail_apps = WPDA_App_Apps_Model::select_all( $this->app_id );
foreach ( $detail_apps as $detail_app ) {
if ( isset( $detail_app['app_id_detail'] ) ) {
$app_id_detail = $detail_app['app_id_detail'];
$metadata_detail = $this->get_app_metadata($app_id_detail);
if (null !== $metadata_detail) {
$metadata[$app_id_detail] = $metadata_detail;
}
}
}
}
$app_type_class = '';
switch ($app[0]['app_type']) {
case '2':
// Map
$app_type_class = 'pp-container-map';
break;
case '3':
// Registration form
$app_type_class = 'pp-container-registration';
break;
case '5':
// Data App
$app_type_class = 'pp-container-apps';
break;
case '6':
// Chart
$app_type_class = 'pp-container-chart';
break;
case '7':
// Chart
$app_type_class = 'pp-container-dashboard';
break;
}
?>
filter_field_name && null !== $this->filter_field_value ) {
?>
data-filter_field_name="filter_field_name ); ?>"
data-filter_field_value="filter_field_value ); ?>"
shortcode_args ) ) {
$field_names = array();
$field_values = array();
foreach ( $this->shortcode_args as $key => $value ) {
// Sanitize field name
$field_names[] = WPDA_API_Core::sanitize_db_identifier( $key );
// Sanitize field value
$sanitized_value = sanitize_text_field( $value );
$sanitized_value = wp_strip_all_tags( $sanitized_value );
$sanitized_value = str_replace( array( '"', "'", '`' ), '', $sanitized_value );
$sanitized_value = str_replace( array( '<', '>' ), '', $sanitized_value );
$sanitized_value = str_replace( '=', '', $sanitized_value );
$field_values[] = $sanitized_value;
}
?>
data-shortcode_field_name=""
data-shortcode_field_value=""
>
add_client('app', $this->app_id );
}
private function user_can_access( $app ) {
if ( ! isset ( $app[0]['app_settings'] ) ) {
return false;
}
// Check access
$app_settings_db = $app[0]['app_settings'];
$app_settings = json_decode( (string) $app_settings_db, true );
if (
! isset(
$app_settings['rest_api']['authorization'],
$app_settings['rest_api']['authorized_roles'],
$app_settings['rest_api']['authorized_users']
) ||
! is_array( $app_settings['rest_api']['authorized_roles'] ) ||
! is_array( $app_settings['rest_api']['authorized_users'] )
) {
// App contain no rest api settings
return false;
}
if (
! WPDA::current_user_is_admin() &&
'anonymous' !== $app_settings['rest_api']['authorization']
) {
// Check authorization
// Check user role
$user_roles = WPDA::get_current_user_roles();
if (
! is_array( $user_roles ) ||
empty(
array_intersect(
$app_settings['rest_api']['authorized_roles'],
$user_roles
)
)
) {
// Check user login
$user_login = WPDA::get_current_user_login();
if ( ! in_array( $user_login, $app_settings['rest_api']['authorized_users'] ) ) {
return false;
}
}
}
// Anonymous access
return true;
}
}
}