MotionBased Filter

Anyone who's using MotionBased to track activities might find this filter useful. We have a mountain bike community site (NoBMoB) where users often post links to their adventures recorded at MotionBased.

This mini module is a filter which automatically replaces links to these activities with a Viewport. Installation is simple:

1. Create a directory under modules named motionbased_viewport.

2. Put the following in motionbased_viewport.module:

<?php

function motionbased_viewport_filter_tips($delta, $format, $long = false) {
  return
t('Motionbased links are automatically converted into embedded viewports.');
}

function
motionbased_viewport_filter($op, $delta = 0, $format = -1, $text = '') {
  switch (
$op) {
    case
'list':
      return array(
0 => t('MotionBased Viewport filter'));

    case
'description':
      return
t('Motionbased links are automatically converted into embedded viewports.');

    case
'process':
     
//'Short' regex
     
$text = preg_replace_callback('!(http://)?trail\.motionbased\.com/trail/activity/(\d+)!i', '_motionbased_viewport', $text);
     
$text = preg_replace_callback('!(http://)?trail\.motionbased\.com/trail/episode/(\d+)!i', '_motionbased_viewport', $text);
     
$text = preg_replace_callback('!(http://)?trail\.motionbased\.com/trail/episode/view\.mb\?episodePk\.pkValue=(\d+)!i', '_motionbased_viewport', $text);
     
$text = preg_replace_callback('!(http://)?trail\.motionbased\.com/trail/episode/view\.do\?episodePk\.pkValue=(\d+)!i', '_motionbased_viewport', $text);
     
$text = preg_replace_callback('!(http://)?trail\.motionbased\.com/trail/invitation/dashboard\.mb\?episodePk\.pkValue=(\d+)!i', '_motionbased_viewport', $text);

      return
$text;

    default:
      return
$text;
  }
}

function
_motionbased_viewport($match) {
 
$episode = $match[2];

  return
'<iframe src="http://trail.motionbased.com/trail/invitation/accept.mb?senderPk.pkValue=-3&unitSystemPkValue=1&episodePk.pkValue=' .
        
$episode .
        
'&backgroundDatasourcePk.pkValue=30&view=portlet"' .
        
'width="530px" height="300px" title="MotionBased Activity Viewport" scrolling="no" frameborder="0"></iframe>';
}

?>

3. Put the following in motionbased_viewport.info:

name = MotionBased Viewport
description = "Motionbased links are automatically converted into embedded viewports."
version = VERSION
version = "5.x-0.1-dev"

4. Visit modules admin page and enable the new module.

5. Update your input format configuration as appropriate. Be sure to have this filter above URL.module if you have that installed.

 
 

Drupal is a registered trademark of Dries Buytaert.