Plugin Directory

Changeset 3236757


Ignore:
Timestamp:
02/07/2025 06:20:32 PM (13 months ago)
Author:
Beherit
Message:

Improvements in routing WordPress API

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ejabberd-account-tools/trunk/includes/webpresence.php

    r3234189 r3236757  
    4040        'methods' => 'POST',
    4141        'callback' => 'ejabat_webpresence_form',
    42         'args' => ejabat_webpresence_form_arguments(),
    43         'permission_callback' => '__return_true'
     42        'permission_callback' => '__return_true',
     43        'args' => array(
     44            'session' => array(
     45                'type' => 'string',
     46                'required' => true,
     47                'default' => 'undefined',
     48                'sanitize_callback' => function($param, $request, $key) {
     49                    return stripslashes_deep(sanitize_text_field($param));
     50                }
     51            )
     52        )
    4453    ));
    4554}
    4655add_action('rest_api_init', 'ejabat_route_webpresence_form');
    47 
    48 // Web Presence login and configuration form arguments
    49 function ejabat_webpresence_form_arguments() {
    50     $args = array();
    51     $args['session'] = array(
    52         'type' => 'string',
    53         'required' => true,
    54         'default' => 'undefined',
    55         'sanitize_callback' => function($param, $request, $key) {
    56             return stripslashes_deep(sanitize_text_field($param));
    57         },
    58     );
    59     return $args;
    60 }
    6156
    6257// Web Presence login and configuration form callback
     
    7772                $xml_css = @simplexml_load_string(json_decode($response['body']))->webpresence;
    7873                $css = $xml_css->enabled ?: 'false';
    79                 $css_available = $xml_css->available ?: '#4caf50';
    80                 $css_chate = $xml_css->chate ?: '#8bc34a';
     74                $css_available = $xml_css->available ?: '#4CAF50';
     75                $css_chate = $xml_css->chate ?: '#8BC34A';
    8176                $css_away = $xml_css->away ?: '#795548';
    82                 $css_xa = $xml_css->xa ?: '#607d8b';
    83                 $css_dnd = $xml_css->dnd ?: '#f44336';
    84                 $css_unavailable = $xml_css->unavailable ?: '#9e9e9e';
     77                $css_xa = $xml_css->xa ?: '#607D8B';
     78                $css_dnd = $xml_css->dnd ?: '#F44336';
     79                $css_unavailable = $xml_css->unavailable ?: '#9E9E9E';
    8580                $response = ejabat_get_xmpp_data('private_get', array('user' => $transient['user'], 'host' => $transient['host'], 'element' => 'webpresence', 'ns' => 'json'));
    8681                $json = @simplexml_load_string(json_decode($response['body']))->webpresence->enabled ?: 'false';
     
    163158        'methods' => 'POST',
    164159        'callback' => 'ejabat_configure_webpresence',
    165         'args' => ejabat_configure_webpresence_arguments(),
    166         'permission_callback' => '__return_true'
     160        'permission_callback' => '__return_true',
     161        'args' => array(
     162            'session' => array(
     163                'type' => 'string',
     164                'required' => true,
     165                'sanitize_callback' => function($param, $request, $key) {
     166                    return stripslashes_deep(sanitize_text_field($param));
     167                }
     168            ),
     169            'css' => array(
     170                'type' => 'boolean',
     171                'required' => true,
     172                'default' => 'false'
     173            ),
     174            'css_available' => array(
     175                'type' => 'string',
     176                'required' => true,
     177                'default' => '#4CAF50',
     178                'sanitize_callback' => function($param, $request, $key) {
     179                    return strtoupper(sanitize_text_field($param));
     180                },
     181                'validate_callback' => function($param, $request, $key) {
     182                    return ctype_xdigit(ltrim($param, '#'));
     183                }
     184            ),
     185            'css_chate' => array(
     186                'type' => 'string',
     187                'required' => true,
     188                'default' => '#8BC34A',
     189                'sanitize_callback' => function($param, $request, $key) {
     190                    return strtoupper(sanitize_text_field($param));
     191                },
     192                'validate_callback' => function($param, $request, $key) {
     193                    return ctype_xdigit(ltrim($param, '#'));
     194                }
     195            ),
     196            'css_away' => array(
     197                'type' => 'string',
     198                'required' => true,
     199                'default' => '#795548',
     200                'sanitize_callback' => function($param, $request, $key) {
     201                    return strtoupper(sanitize_text_field($param));
     202                },
     203                'validate_callback' => function($param, $request, $key) {
     204                    return ctype_xdigit(ltrim($param, '#'));
     205                }
     206            ),
     207            'css_xa' => array(
     208                'type' => 'string',
     209                'required' => true,
     210                'default' => '#607D8B',
     211                'sanitize_callback' => function($param, $request, $key) {
     212                    return strtoupper(sanitize_text_field($param));
     213                },
     214                'validate_callback' => function($param, $request, $key) {
     215                    return ctype_xdigit(ltrim($param, '#'));
     216                }
     217            ),
     218            'css_dnd' => array(
     219                'type' => 'string',
     220                'required' => true,
     221                'default' => '#F44336',
     222                'sanitize_callback' => function($param, $request, $key) {
     223                    return strtoupper(sanitize_text_field($param));
     224                },
     225                'validate_callback' => function($param, $request, $key) {
     226                    return ctype_xdigit(ltrim($param, '#'));
     227                }
     228            ),
     229            'css_unavailable' => array(
     230                'type' => 'string',
     231                'required' => true,
     232                'default' => '#9E9E9E',
     233                'sanitize_callback' => function($param, $request, $key) {
     234                    return strtoupper(sanitize_text_field($param));
     235                },
     236                'validate_callback' => function($param, $request, $key) {
     237                    return ctype_xdigit(ltrim($param, '#'));
     238                }
     239            ),
     240            'json' => array(
     241                'type' => 'boolean',
     242                'required' => true,
     243                'default' => 'false'
     244            ),
     245            'image' => array(
     246                'type' => 'boolean',
     247                'required' => true,
     248                'default' => 'false'
     249            )
     250        )
    167251    ));
    168252}
    169253add_action('rest_api_init', 'ejabat_route_configure_webpresence');
    170 
    171 // Configure Web Presence arguments
    172 function ejabat_configure_webpresence_arguments() {
    173     $args = array();
    174     $args['session'] = array(
    175         'type' => 'string',
    176         'required' => true,
    177         'sanitize_callback' => function($param, $request, $key) {
    178             return sanitize_text_field($param);
    179         },
    180     );
    181     $args['css'] = array(
    182         'type' => 'boolean',
    183         'required' => true,
    184         'default' => 'false'
    185     );
    186     $args['css_available'] = array(
    187         'type' => 'string',
    188         'required' => true,
    189         'default' => 'false'
    190     );
    191     $args['css_chate'] = array(
    192         'type' => 'string',
    193         'required' => true,
    194         'default' => 'false'
    195     );
    196     $args['css_away'] = array(
    197         'type' => 'string',
    198         'required' => true,
    199         'default' => 'false'
    200     );
    201     $args['css_xa'] = array(
    202         'type' => 'string',
    203         'required' => true,
    204         'default' => 'false'
    205     );
    206     $args['css_dnd'] = array(
    207         'type' => 'string',
    208         'required' => true,
    209         'default' => 'false'
    210     );
    211     $args['css_unavailable'] = array(
    212         'type' => 'string',
    213         'required' => true,
    214         'default' => 'false'
    215     );
    216     $args['json'] = array(
    217         'type' => 'boolean',
    218         'required' => true,
    219         'default' => 'false'
    220     );
    221     $args['image'] = array(
    222         'type' => 'boolean',
    223         'required' => true,
    224         'default' => 'false'
    225     );
    226     return $args;
    227 }
    228254
    229255// Configure Web Presence callback
     
    301327        'methods' => 'GET',
    302328        'callback' => 'ejabat_webpresence_css',
     329        'permission_callback' => '__return_true',
    303330        'args' => array(
    304331            'jid' => array(
    305                 'validate_callback' => function($param, $request, $key) {
    306                     return is_email($param);
    307                 }
     332                'validate_callback' => 'is_email'
    308333            )
    309         ),
    310         'permission_callback' => '__return_true'
     334        )
    311335    ));
    312336}
     
    325349        $transient = array(
    326350            'enabled' => $xml['enabled'] ?: 'false',
    327             'available' => $xml['available'] ?: '#4caf50',
    328             'chate' => $xml['chate'] ?: '#8bc34a',
     351            'available' => $xml['available'] ?: '#4CAF50',
     352            'chate' => $xml['chate'] ?: '#8BC34A',
    329353            'away' => $xml['away'] ?: '#795548',
    330             'xa' => $xml['xa'] ?: '#607d8b',
    331             'dnd' => $xml['dnd'] ?: '#f44336',
    332             'unavailable' => $xml['unavailable'] ?: '#9e9e9e'
     354            'xa' => $xml['xa'] ?: '#607D8B',
     355            'dnd' => $xml['dnd'] ?: '#F44336',
     356            'unavailable' => $xml['unavailable'] ?: '#9E9E9E'
    333357        );
    334358        set_transient('ejabat_webpresence_css_'.$user.'@'.$host, $transient);
     
    383407        'methods' => 'GET',
    384408        'callback' => 'ejabat_webpresence_json',
     409        'permission_callback' => '__return_true',
    385410        'args' => array(
    386411            'jid' => array(
    387                 'validate_callback' => function($param, $request, $key) {
    388                     return is_email($param);
    389                 }
     412                'validate_callback' => 'is_email'
    390413            )
    391         ),
    392         'permission_callback' => '__return_true'
     414        )
    393415    ));
    394416}
     
    448470        'methods' => 'GET',
    449471        'callback' => 'ejabat_webpresence_image',
     472        'permission_callback' => '__return_true',
    450473        'args' => array(
    451474            'jid' => array(
    452                 'validate_callback' => function($param, $request, $key) {
    453                     return is_email($param);
    454                 }
     475                'validate_callback' => 'is_email'
    455476            )
    456         ),
    457         'permission_callback' => '__return_true'
     477        )
    458478    ));
    459479}
Note: See TracChangeset for help on using the changeset viewer.