Using h5p_alter_filtered_parameters to modify a Text value on the Interactive Video

Forums: 

Hello, I am hoping someone can help me find a shorter/quicker way to achieve the following;

I have an interactive video and in it I have a Text element, which says "Hello {name}". I will be passing the {name} parameter via an encrypted Query Variable, I have tested that and it works fine using encode/decode within PHP. 

It took me a while, but I finally found the right number of internal loops to go through the h5p_alter_filtered_parameters hook and replace it - I have hard-coded it just for testing purposes. I also added the counters for my own benefit, so when testing I can see the structure being shown as the code loops through, which was very helpful but will not be used in the final code, and I have removed all the "echo" statements for ease of reading..

Rather than loop through each item in the Semantic format, is there a way to call exactly the array value I need to update, so if effect search for the phrase "{name}" and replace it, without all the loops below?

The loops below work, they are just not efficient. 

The code I have used is as follows;

function h5pmods_alter_parameters($semantics, $name, $majorVersion, $minorVersion) 
{
  // Ok, here we go
  if ($name === 'H5P.InteractiveVideo') 
  {
    $group_count = 0;
    $field_count = 0;
    $item_count = 0;
    $value_count = 0;
    $nano_count = 0;
    foreach($semantics as $semantic_field) 
    {
        $group_count++;
        $field_count = 0;
        foreach($semantic_field as $group_items) 
        {
          $field_count++;
          $item_count = 0;
          foreach($group_items as $individual_items) 
            {
              $item_count++;
              $value_count = 0;
              foreach($individual_items as $value_items) 
              {
                $value_count++;
                $nano_count = 0;
                foreach($value_items as $nano_items) 
                {
                   $nano_count++;
                   $micro_count = 0;
                   foreach($nano_items as $micro_items) 
                  {
                    $micro_count++;
                    $mini_count = 0;
                    foreach($micro_items as $mini_items) 
                    {
                      $mini_count++;
                      $mini_items = str_replace("{name}", "Simon", $mini_items);
                      $micro_items->text = $mini_items;
                    }
                  }
                }
              }
            }
        }
    }
  }
}
add_action('h5p_alter_filtered_parameters', 'h5pmods_alter_parameters', 10, 4);
otacke's picture

You might want to try one of the utility functions outlined at https://github.com/h5p/h5pmods-wordpress-plugin/blob/master/h5pmods.php#...