/**
  * Bootstrap function to load the required file/class and setup the initial variables
  *
  * @param	string		$app		Application key
  * @param	string		$area		Area
  * @return	@e object	Like object for the loaded key (app.area)
  */
 public static function bootstrap($app = null, $area = null)
 {
     if ($app === null or $area === null) {
         trigger_error("App or area missing from classes_like", E_USER_WARNING);
     }
     /* Pointless comment! */
     if ($area != 'default') {
         $_file = IPSLib::getAppDir($app) . '/extensions/like/' . $area . '.php';
         $_class = 'like_' . $app . '_' . $area . '_composite';
     }
     $_key = md5($app . $area);
     /* Get from cache if already cached */
     if (isset(self::$apps[$_key])) {
         return self::$apps[$_key];
     }
     /* Otherwise create object and cache */
     if (!is_file($_file)) {
         $_file = IPSLib::getAppDir($app) . '/extensions/like/default.php';
         $_class = 'like_' . $app . '_composite';
         if (!is_file($_file)) {
             throw new Exception("No like class available for {$app} - {$area}");
         }
     }
     $classToLoad = IPSLib::loadLibrary($_file, $_class, $app);
     if (class_exists($classToLoad)) {
         classes_like_registry::setApp($app);
         classes_like_registry::setArea($area);
         self::$apps[$_key] = new $classToLoad();
         self::$apps[$_key]->init();
     } else {
         throw new Exception("No like class available for {$app} - {$area}");
     }
     return self::$apps[$_key];
 }