Making WordPress.org


Ignore:
Timestamp:
07/05/2023 05:04:40 AM (17 months ago)
Author:
dd32
Message:

Trac: Add a custom API to fetch/set user preferences. Take Two.

See [12711].
See #5055.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/trac-notifications/trac-notifications-db.php

    r12711 r12712  
    214214     * @param string $username   The username.
    215215     * @param string $name       The preference.
    216      * @param string|null $value The value to set. If null, the preference will be deleted.
     216     * @param string|null $value The value to set.
    217217     */
    218     function set_user_pref( $username, $name, $value = null ) {
     218    function set_user_pref( $username, $name, $value = '' ) {
    219219        // The trac column for username is `sid`. All our users are authenticated.
    220220        // The session_attribute table has an index: UNIQUE (sid,authenticated,name)
    221221
    222         if ( ! is_null( $value ) ) {
     222        $result = $this->db->insert( 'session_attribute', array(
     223            'sid'           => $username,
     224            'authenticated' => 1,
     225            'name'          => $name,
     226            'value'         => $value
     227        ) );
     228
     229        if ( ! $result ) {
    223230            $result = $this->db->update(
    224231                'session_attribute',
    225                 [ 'value' => $value ],
    226                 [
    227                     'sid'           => $username,
    228                     'authenticated' => 1,
    229                     'name'          => $name
    230                 ]
    231             );
    232 
    233             if ( ! $result ) {
    234                 // Insert the session if it doesn't exist.
    235                 $user_has_visited_trac = $this->db->get_var( $this->db->prepare(
    236                     'SELECT sid FROM session WHERE sid = %s',
    237                     $username
    238                 ) );
    239                 if ( ! $user_has_visited_trac ) {
    240                     $this->db->insert( 'session', [
    241                         'sid'           => $username,
    242                         'authenticated' => 1,
    243                         'last_visit'    => time(),
    244                     ] );
    245                 }
    246 
    247                 // Set the pref.
    248                 $result = $this->db->insert( 'session_attribute', [
     232                array(
     233                    'value'         => $value
     234                ), array(
    249235                    'sid'           => $username,
    250236                    'authenticated' => 1,
    251237                    'name'          => $name,
    252                     'value'         => $value,
    253                 ] );
    254             }
    255 
    256             return $result;
    257         } else {
    258             return $this->db->delete( 'session_attribute', [
    259                 'sid'           => $username,
    260                 'authenticated' => 1,
    261                 'name'          => $name
    262             ] );
    263         }
     238                )
     239            );
     240        }
     241
     242        return $result;
     243    }
     244   
     245    /**
     246     * Delete a user preference.
     247     *
     248     * @param string $username The username.
     249     * @param string $name     The preference.
     250     * @return bool
     251     */
     252    function delete_user_pref( $username, $name ) {
     253        return $this->db->delete( 'session_attribute', array(
     254            'sid'           => $username,
     255            'authenticated' => 1,
     256            'name'          => $name
     257        ) );
    264258    }
    265259
     
    303297            'attachments',
    304298            'comments',
    305             'profile_data',
     299            'profile_data'
    306300        );
    307301    }
Note: See TracChangeset for help on using the changeset viewer.