HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/dinamo-shop/wp-content/plugins/dinamo-plugin/algolia/transfer_players.php
<?php
/*
 * File containing functions for transfering Players data to Algolia
 */


 function algolia_add_player( $term_id, $tt_id ) {

   $client = algolia_connect();

   $index = $client->initIndex( algolia_setup_index_name( "webshop_players" ) );

   $term = get_term( $term_id, 'dinamo_players' );

   $category = get_term( $term, 'dinamo_players' )->parent;
   $category = get_term_by( 'id', $category, 'dinamo_players' )->name;
   $name     = $term->name;
   $number   = get_field( 'player_number', 'dinamo_players_' . $term->term_id );
   $image    = wp_get_attachment_url( get_field( 'player_image', 'dinamo_players_' . $term->term_id ) );

   $result_item = [
     'objectID' => $term->term_id,
     'name'     => $term->name,
     'position' => $category,
     'number'   => $number,
     'image'    => $image,
   ];

   $results = array($result_item);

   $index->addObjects(
     (object)$results
   );

 }

// Add term to Algolia when created in WP
 add_action( 'created_dinamo_players', 'algolia_add_player', 10, 3 );

 // Update term in Algolia when edited in WP
 add_action( 'edited_dinamo_players', 'algolia_add_player', 10, 3 );


// Add all players to Algolia
 function algolia_add_players() {

   try {
     $client = algolia_connect();

     $index = $client->initIndex( algolia_setup_index_name( "webshop_players" ) );

     $terms = get_terms(array(
       'taxonomy'   => 'dinamo_players',
       'hide_empty' => false,
     ));

     $results = [];

     if( $terms ) :
       foreach( $terms as $term ) :

         $category = get_term( $term, 'dinamo_players' )->parent;
         $category = get_term_by( 'id', $category, 'dinamo_players' )->name;
         $name     = $term->name;
         $number   = get_field( 'player_number', 'dinamo_players_' . $term->term_id );
         $image    = wp_get_attachment_url( get_field( 'player_image', 'dinamo_players_' . $term->term_id ) );

         $result_item = array(
           'objectID' => $term->term_id,
           'name'     => $term->name,
           'position' => $category,
           'number'   => $number,
           'image'    => $image,
         );

         $results = array_merge( $results, [$result_item] );

       endforeach;
     endif;

     $index->addObjects(
       (object)$results
     );

     return true;

   } catch ( Exception $e ) {
     return false;
   }

 }


 add_filter('acf/prepare_field/name=algolia_transfer_players', function( $field ) {

   if( is_admin() ) :
     ?>

     <div class="acf-field">
       <button id="transfer_players">Transfer players</button>
     </div>

     <script>
      jQuery("#transfer_players").click(function(e){
        e.preventDefault();

        jQuery(e.currentTarget).html("Transfering.... please wait...");
        jQuery(e.currentTarget).attr('disabled', 'disabled');
        jQuery.ajax({

            url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
            type:"POST",
            data: {
                action: 'transfer_players_ajax'
            }
        }).done(function(data){
            jQuery(e.currentTarget).html("Transfer players");
            jQuery(e.currentTarget).removeAttr('disabled');
            if(data.success){
                alert("Transfer of players was successfull");
            }else{
                alert("An error happened during the transfer of players. Please try again.");
            }
        });
      });
     </script>

     <?php

   endif;

   return "";

 });


add_action( 'wp_ajax_transfer_players_ajax', 'transfer_players_ajax' );
function transfer_players_ajax() {
  header('Content-Type: application/json');

    if( ! is_admin() ) {

      json_encode(array(
        'success' => false
      ));

      wp_die();
    }

    $result = algolia_add_players();

    echo json_encode(array(
        'success' => $result
    ));

    wp_die();
}




// Delete Player from Algolia table when deleted in Wordpress
add_action( 'delete_dinamo_players', function( $term, $tt_id ) {

  $client = algolia_connect();

  $index = $client->initIndex( algolia_setup_index_name( "webshop_players" ) );

  $index->deleteObject( $term );
}, 10, 3 );