/**
  * Convert a single URL, assumes $url has been verified to be 
  * a real URL
  * 
  * @param string $url 
  */
 public function convertUrl($url)
 {
     $oembed = Oembed::get_oembed_from_url($url, false, $this->oembedOptions);
     if ($oembed) {
         return array('Title' => '', 'Content' => $oembed->forTemplate());
     }
     $graph = OpenGraph::fetch($url);
     if ($graph) {
         foreach ($graph as $key => $value) {
             $data[$key] = Varchar::create_field('Varchar', $value);
         }
         if (isset($data['url'])) {
             return array('Title' => $graph->Title, 'Content' => MicroPost::create()->customise($data)->renderWith('OpenGraphPost'));
         }
     }
     // get the post and take its <title> tag at the very least
     $service = new RestfulService($url);
     $response = $service->request();
     if ($response && $response->getStatusCode() == 200) {
         if (preg_match('/<title>(.*?)<\\/title>/is', $response->getBody(), $matches)) {
             $title = Convert::raw2xml(trim($matches[1]));
             return array('Title' => $title, 'Content' => "<a href='{$url}'>{$title}</a>");
         }
     }
 }
 public function MemberDetails()
 {
     $m = $this->securityContext->getMember();
     if ($m) {
         return Varchar::create_field('Varchar', Convert::raw2json(array('Title' => $m->getTitle(), 'FirstName' => $m->FirstName, 'Surname' => $m->Surname, 'MemberID' => $m->ID)));
     }
 }
 /**
  * Process and render search results
  */
 function getSearchResults($data = null, $form = null)
 {
     $query = $this->owner->data()->getQuery();
     $term = isset($_GET['Search']) ? Convert::raw2xml($_GET['Search']) : '';
     $results = $query ? $query->getDataObjects(true) : ArrayList::create();
     $elapsed = '< 0.001';
     if ($query) {
         $resultData = array('TotalResults' => ($total = $query->getTotalResults()) ? $total : 0);
         $time = $query->getTimeTaken();
         if ($time) {
             $elapsed = $time / 1000;
         }
     } else {
         $resultData = array();
     }
     $data = array('Results' => $results, 'Query' => Varchar::create_field('Varchar', $term), 'Title' => $this->owner->data()->Title, 'ResultData' => ArrayData::create($resultData), 'TimeTaken' => $elapsed);
     return $data;
 }