| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 | 
							- <?php
 
- /**
 
-  * Destination class implementing migration into media entities.
 
-  */
 
- class MigrateDestinationMedia extends MigrateDestinationFile {
 
-   /**
 
-    * Call this from the prepare() method of a migration that contains media
 
-    * image files, if you want to rewrite the IMG tags into media references.
 
-    *
 
-    * @param $entity
 
-    *  Entity object being built.
 
-    * @param $field
 
-    *  Name of the text field within the entity to be modified. Defaults to 'body'.
 
-    */
 
-   static public function rewriteImgTags($entity, $field = 'body') {
 
-     if (is_array($entity->$field)) {
 
-       migrate_instrument_start('MigrateDestinationMedia rewriteImgTags');
 
-       foreach ($entity->$field as $language => $values) {
 
-         $body = $values[0]['value'];
 
-         break;
 
-       }
 
-       // Quickly skip any non-candidates
 
-       if (!stristr($body, '<img')) {
 
-         migrate_instrument_stop('MigrateDestinationMedia rewriteImgTags');
 
-         return;
 
-       }
 
-       // Pass full img tags into the callback
 
-       $new_body = preg_replace_callback('|<img [^>]*>|i', array(self, 'replaceCallback'),
 
-         $body);
 
-       $entity->{$field}[$language][0]['value'] = $new_body;
 
-       migrate_instrument_stop('MigrateDestinationMedia rewriteImgTags');
 
-     }
 
-   }
 
-   /**
 
-    * If a referenced image can be found in the files table, replace the <img> tag
 
-    * with a media JSON reference.
 
-    *
 
-    * @param array $matches
 
-    */
 
-   static protected function replaceCallback(array $matches) {
 
-     $src_matches = array();
 
-     // Default to the original <img> tag
 
-     $result = $matches[0];
 
-     // Extract the src parameter
 
-     if (preg_match('|src=[\'"]([^\'"]+)[\'"]|i', $matches[0], $src_matches)) {
 
-       // Replace the scheme and host portions of the referenced URI with the
 
-       // Drupal scheme as it's saved in the file_unmanaged table
 
-       $src = $src_matches[1];
 
-       $fid = db_select('file_managed', 'f')
 
-              ->fields('f', array('fid'))
 
-              ->condition('filename', basename($src))
 
-              ->execute()
 
-              ->fetchField();
 
-       if ($fid) {
 
-         $image_info = array(
 
-           'type' => 'media',
 
-           'view_mode' => 'media_large',
 
-           'fid' => $fid,
 
-           'attributes' => array(
 
-             'alt' => '',
 
-             'title' => '',
 
-             'class' => 'media-image',
 
-             'typeof' => 'foaf:Image',
 
-             'wysiwyg' => 1,
 
-           ),
 
-         );
 
-         // Get the height and width parameters if present
 
-         preg_match('|width=[\'"]([^\'"]+)[\'"]|i', $matches[0], $width);
 
-         preg_match('|height=[\'"]([^\'"]+)[\'"]|i', $matches[0], $height);
 
-         // image width
 
-         if ($width) {
 
-           $image_info['attributes']['width'] = $width[1];
 
-         }
 
-         // image height
 
-         if ($height) {
 
-           $image_info['attributes']['height'] = $height[1];
 
-         }
 
-         $result = '[[' . drupal_json_encode($image_info) . ']]';
 
-       }
 
-     }
 
-     return $result;
 
-   }
 
- }
 
- /**
 
-  * Class for creating Youtube file entities.
 
-  */
 
- class MigrateExtrasFileYoutube implements MigrateFileInterface {
 
-   /**
 
-    * Implementation of MigrateFileInterface::fields().
 
-    *
 
-    * @return array
 
-    */
 
-   static public function fields() {
 
-     return array();
 
-   }
 
-   /**
 
-    * Implementation of MigrateFileInterface::processFiles().
 
-    *
 
-    * @param $value
 
-    *  The URI or local filespec of a file to be imported.
 
-    * @param $owner
 
-    *  User ID (uid) to be the owner of the file.
 
-    * @return object
 
-    *  The file entity being created or referenced.
 
-    */
 
-   public function processFile($value, $owner) {
 
-     // Convert the Youtube URI into a local stream wrapper.
 
-     if (class_exists('MediaInternetYouTubeHandler')) {
 
-       $handler = new MediaInternetYouTubeHandler($value);
 
-       $destination = $handler->parse($value);
 
-       $file = file_uri_to_object($destination, TRUE);
 
-     }
 
-     elseif (class_exists('MediaInternetOEmbedHandler')) {
 
-       $handler = new MediaInternetOEmbedHandler($value);
 
-       $file = $handler->getFileObject();
 
-     }
 
-     else {
 
-       MigrationBase::displayMessage(t('Could not find a handler for YouTube videos'));
 
-       return FALSE;
 
-     }
 
-     // Create a file entity object for this Youtube reference, and see if we
 
-     // can get the video title.
 
-     if (empty($file->fid) && $info = $handler->getOEmbed()) {
 
-       $file->filename = truncate_utf8($info['title'], 255);
 
-     }
 
-     $file = file_save($file);
 
-     if (is_object($file)) {
 
-       return $file;
 
-     }
 
-     else {
 
-       return FALSE;
 
-     }
 
-   }
 
- }
 
- // Basic support for the deprecated media field type.
 
- class MigrateMediaFieldHandler extends MigrateFileFieldHandler {
 
-   public function __construct() {
 
-     $this->registerTypes(array('media'));
 
-   }
 
-   /**
 
-    * Implementation of MigrateFieldHandler::fields().
 
-    *
 
-    * @param $type
 
-    *  The field type.
 
-    * @param $instance
 
-    *  Instance info for the field.
 
-    * @param Migration $migration
 
-    *  The migration context for the parent field. We can look at the mappings
 
-    *  and determine which subfields are relevant.
 
-    * @return array
 
-    */
 
-   public function fields($type, $instance, $migration = NULL) {
 
-     $fields = parent::fields($type, $instance, $migration);
 
-     unset($fields['description']);
 
-     unset($fields['display']);
 
-     $fields += array(
 
-       'title' => t('Subfield: String to be used as the title value'),
 
-       'data' => t('Subfield: Additional data about the field'),
 
-     );
 
-     return $fields;
 
-   }
 
- }
 
 
  |