예제 #1
0
 public function test_get_component_classes_int_namespace()
 {
     // Unexisting.
     $this->assertCount(0, core_component::get_component_classes_in_namespace('core_unexistingcomponent', 'something'));
     $this->assertCount(0, core_component::get_component_classes_in_namespace('auth_cas', 'something'));
     // Prefix with backslash if it doesn\'t come prefixed.
     $this->assertCount(1, core_component::get_component_classes_in_namespace('auth_cas', 'task'));
     $this->assertCount(1, core_component::get_component_classes_in_namespace('auth_cas', '\\task'));
     // Core as a component works.
     $this->assertCount(7, core_component::get_component_classes_in_namespace('core', 'update'));
     // Multiple levels.
     $this->assertCount(5, core_component::get_component_classes_in_namespace('core_user', '\\output\\myprofile\\'));
     $this->assertCount(5, core_component::get_component_classes_in_namespace('core_user', '\\output\\myprofile'));
 }
예제 #2
0
파일: helper.php 프로젝트: dg711/moodle
 /**
  * Get a list of all possible filters.
  *
  * @return  array
  */
 public static function get_all_filters()
 {
     $filters = \core_component::get_component_classes_in_namespace('tool_usertours', 'local\\filter');
     $filters = array_keys($filters);
     $filters = array_filter($filters, function ($filterclass) {
         $rc = new \ReflectionClass($filterclass);
         return $rc->isInstantiable();
     });
     return $filters;
 }
예제 #3
0
 /**
  * Return the list of available search areas.
  *
  * @param bool $enabled Return only the enabled ones.
  * @return \core_search\area\base[]
  */
 public static function get_search_areas_list($enabled = false)
 {
     // Two different arrays, we don't expect these arrays to be big.
     if (!$enabled && static::$allsearchareas !== null) {
         return static::$allsearchareas;
     } else {
         if ($enabled && static::$enabledsearchareas !== null) {
             return static::$enabledsearchareas;
         }
     }
     $searchareas = array();
     $plugintypes = \core_component::get_plugin_types();
     foreach ($plugintypes as $plugintype => $unused) {
         $plugins = \core_component::get_plugin_list($plugintype);
         foreach ($plugins as $pluginname => $pluginfullpath) {
             $componentname = $plugintype . '_' . $pluginname;
             $searchclasses = \core_component::get_component_classes_in_namespace($componentname, 'search');
             foreach ($searchclasses as $classname => $classpath) {
                 $areaname = substr(strrchr($classname, '\\'), 1);
                 $areaid = static::generate_areaid($componentname, $areaname);
                 $searchclass = new $classname();
                 if (!$enabled || $enabled && $searchclass->is_enabled()) {
                     $searchareas[$areaid] = $searchclass;
                 }
             }
         }
     }
     $subsystems = \core_component::get_core_subsystems();
     foreach ($subsystems as $subsystemname => $subsystempath) {
         $componentname = 'core_' . $subsystemname;
         $searchclasses = \core_component::get_component_classes_in_namespace($componentname, 'search');
         foreach ($searchclasses as $classname => $classpath) {
             $areaname = substr(strrchr($classname, '\\'), 1);
             $areaid = static::generate_areaid($componentname, $areaname);
             $searchclass = new $classname();
             if (!$enabled || $enabled && $searchclass->is_enabled()) {
                 $searchareas[$areaid] = $searchclass;
             }
         }
     }
     // Cache results.
     if ($enabled) {
         static::$enabledsearchareas = $searchareas;
     } else {
         static::$allsearchareas = $searchareas;
     }
     return $searchareas;
 }
예제 #4
0
 public function test_get_component_classes_int_namespace()
 {
     // Unexisting.
     $this->assertCount(0, core_component::get_component_classes_in_namespace('core_unexistingcomponent', 'something'));
     $this->assertCount(0, core_component::get_component_classes_in_namespace('auth_cas', 'something'));
     // Matches the last namespace level name not partials.
     $this->assertCount(0, core_component::get_component_classes_in_namespace('auth_cas', 'tas'));
     $this->assertCount(0, core_component::get_component_classes_in_namespace('core_user', 'course'));
     $this->assertCount(0, core_component::get_component_classes_in_namespace('mod_forum', 'output\\emaildigest'));
     $this->assertCount(0, core_component::get_component_classes_in_namespace('mod_forum', '\\output\\emaildigest'));
     $this->assertCount(2, core_component::get_component_classes_in_namespace('mod_forum', 'output\\email'));
     $this->assertCount(2, core_component::get_component_classes_in_namespace('mod_forum', '\\output\\email'));
     $this->assertCount(2, core_component::get_component_classes_in_namespace('mod_forum', 'output\\email\\'));
     $this->assertCount(2, core_component::get_component_classes_in_namespace('mod_forum', '\\output\\email\\'));
     // Prefix with backslash if it doesn\'t come prefixed.
     $this->assertCount(1, core_component::get_component_classes_in_namespace('auth_cas', 'task'));
     $this->assertCount(1, core_component::get_component_classes_in_namespace('auth_cas', '\\task'));
     // Core as a component works, the funcion can normalise the component name.
     $this->assertCount(7, core_component::get_component_classes_in_namespace('core', 'update'));
     $this->assertCount(7, core_component::get_component_classes_in_namespace('', 'update'));
     $this->assertCount(7, core_component::get_component_classes_in_namespace('moodle', 'update'));
     // Multiple levels.
     $this->assertCount(5, core_component::get_component_classes_in_namespace('core_user', '\\output\\myprofile\\'));
     $this->assertCount(5, core_component::get_component_classes_in_namespace('core_user', 'output\\myprofile\\'));
     $this->assertCount(5, core_component::get_component_classes_in_namespace('core_user', '\\output\\myprofile'));
     $this->assertCount(5, core_component::get_component_classes_in_namespace('core_user', 'output\\myprofile'));
     // Without namespace it returns classes/ classes.
     $this->assertCount(2, core_component::get_component_classes_in_namespace('tool_mobile', ''));
     $this->assertCount(1, core_component::get_component_classes_in_namespace('tool_filetypes'));
 }