コード例 #1
0
 /**
  * Gets the list of prioritised extractor classes
  *
  * @return array
  */
 protected static function get_extractor_classes()
 {
     // Check cache
     if (self::$sorted_extractor_classes) {
         return self::$sorted_extractor_classes;
     }
     // Generate the sorted list of extractors on demand.
     $classes = ClassInfo::subclassesFor("FileTextExtractor");
     array_shift($classes);
     $classPriorities = array();
     foreach ($classes as $class) {
         $classPriorities[$class] = Config::inst()->get($class, 'priority');
     }
     arsort($classPriorities);
     // Save classes
     $sortedClasses = array_keys($classPriorities);
     return self::$sorted_extractor_classes = $sortedClasses;
 }
コード例 #2
0
 /**
  * @param  String $path
  * @return FileTextExtractor
  */
 static function for_file($path)
 {
     $extension = pathinfo($path, PATHINFO_EXTENSION);
     if (!self::$sorted_extractor_classes) {
         // Generate the sorted list of extractors on demand.
         $classes = ClassInfo::subclassesFor("FileTextExtractor");
         array_shift($classes);
         $sortedClasses = array();
         foreach ($classes as $class) {
             $sortedClasses[$class] = Config::inst()->get($class, 'priority');
         }
         arsort($sortedClasses);
         self::$sorted_extractor_classes = $sortedClasses;
     }
     foreach (self::$sorted_extractor_classes as $className => $priority) {
         $formatter = new $className();
         $matched = array_filter($formatter->supportedExtensions(), function ($compare) use($extension) {
             return strtolower($compare) == strtolower($extension);
         });
         if ($matched) {
             return $formatter;
         }
     }
 }