You are here

function wordpress_migrate_update_7005 in WordPress Migrate 7.2

Fix any malformed YouTube embeds.

File

./wordpress_migrate.install, line 231
WordPress migration module installation

Code

function wordpress_migrate_update_7005() {
  $results = db_select('file_managed', 'f')
    ->fields('f', array(
    'fid',
    'uri',
  ))
    ->condition(db_or()
    ->condition('f.uri', 'youtube://%?%', 'LIKE')
    ->condition('f.uri', 'youtube://%&%', 'LIKE'))
    ->execute();
  foreach ($results as $result) {
    $original = $result->uri;
    preg_match('@(youtube://[^\\?\\&]+)@i', $result->uri, $matches);
    $result->uri = $matches[1];
    list(, , , $result->filename) = explode('/', $result->uri);
    $check_for_duplicates = db_select('file_managed', 'f')
      ->fields('f', array(
      'fid',
      'uri',
    ))
      ->condition('f.uri', $result->uri)
      ->execute()
      ->fetchObject();
    if (!$check_for_duplicates) {
      drupal_write_record('file_managed', $result, 'fid');
    }
    else {

      // The uri column is unique. Throw an error, but run through the rest first.
      if (!isset($errors)) {
        $errors = array(
          $original,
          $result,
          $check_for_duplicates,
        );
      }
    }
  }
  if (isset($errors)) {
    throw new DrupalUpdateException(t('Unable to fix uri: @media_1 (fid: @fid_1), as it conflicts with uri: @media_2 (fid: @fid_2).', array(
      '@media_1' => $errors[0],
      '@media_2' => $errors[2]->uri,
      '@fid_1' => $errors[1]->fid,
      '@fid_2' => $errors[2]->fid,
    )));
  }
  return t('Fixed all malformed YouTube embeds.');
}