public function collectFromEntityProviders($filePath, $module = null) { $entities = []; // HACK Ugly workaround to avoid "Cannot redeclare class PHPUnit_Framework_TestResult" error // when running text collector with PHPUnit 3.4. There really shouldn't be any dependencies // here, but the class reflection enforces autloading of seemingly unrelated classes. // The main problem here is the CMSMenu class, which iterates through test classes, // which in turn trigger autoloading of PHPUnit. $phpunitwrapper = PhpUnitWrapper::inst(); $phpunitwrapper->init(); $classes = ClassInfo::classes_for_file($filePath); if ($classes) { foreach ($classes as $class) { // Not all classes can be instanciated without mandatory arguments, // so entity collection doesn't work for all SilverStripe classes currently // Requires PHP 5.1+ if (class_exists($class) && in_array('i18nEntityProvider', class_implements($class))) { $reflectionClass = new ReflectionClass($class); if ($reflectionClass->isAbstract()) { continue; } $obj = singleton($class); $entities = array_merge($entities, (array) $obj->provideI18nEntities()); if ($obj->is_a('DataObject')) { foreach (['db', 'has_one', 'has_many', 'many_many', 'belongs_many_many'] as $type) { foreach ((array) Config::inst()->get($obj->class, $type, Config::UNINHERITED) as $name => $spec) { $entities["{$obj->class}.{$type}_{$name}"] = [FormField::name_to_label($name)]; } } } } } } ksort($entities); return $entities; }
/** * @uses i18nEntityProvider */ function collectFromEntityProviders($filePath) { $entitiesArr = array(); $classes = ClassInfo::classes_for_file($filePath); if ($classes) { foreach ($classes as $class) { // Not all classes can be instanciated without mandatory arguments, // so entity collection doesn't work for all SilverStripe classes currently // Requires PHP 5.1+ if (class_exists($class) && in_array('i18nEntityProvider', class_implements($class))) { $reflectionClass = new ReflectionClass($class); if ($reflectionClass->isAbstract()) { continue; } $obj = singleton($class); $entitiesArr = array_merge($entitiesArr, (array) $obj->provideI18nEntities()); } } } ksort($entitiesArr); return $entitiesArr; }
/** * Find all test classes in a file and return an array of them. * @param string $file To search in * @param array $ignore Ignore these test classes if they are found. * @return array */ protected function getTestsInFile($file, $ignore = array()) { $classes = ClassInfo::classes_for_file($file); return $this->filterTestClasses($classes, $ignore); }
/** * Allows classes which implement i18nEntityProvider to provide * additional translation strings. * * Not all classes can be instanciated without mandatory arguments, * so entity collection doesn't work for all SilverStripe classes currently * * @uses i18nEntityProvider * @param string $filePath * @param string $module * @return array */ public function collectFromEntityProviders($filePath, $module = null) { $entities = array(); $classes = ClassInfo::classes_for_file($filePath); foreach ($classes as $class) { // Skip non-implementing classes if (!class_exists($class) || !in_array('i18nEntityProvider', class_implements($class))) { continue; } // Skip abstract classes $reflectionClass = new ReflectionClass($class); if ($reflectionClass->isAbstract()) { continue; } $obj = singleton($class); $entities = array_merge($entities, (array) $obj->provideI18nEntities()); } ksort($entities); return $entities; }
/** * @uses i18nEntityProvider */ function collectFromEntityProviders($filePath, $module = null) { $entities = array(); // HACK Ugly workaround to avoid "Cannot redeclare class PHPUnit_Framework_TestResult" error // when running text collector with PHPUnit 3.4. There really shouldn't be any dependencies // here, but the class reflection enforces autloading of seemingly unrelated classes. // The main problem here is the CMSMenu class, which iterates through test classes, // which in turn trigger autoloading of PHPUnit. $phpunitwrapper = PhpUnitWrapper::inst(); $phpunitwrapper->init(); $classes = ClassInfo::classes_for_file($filePath); if ($classes) { foreach ($classes as $class) { // Not all classes can be instanciated without mandatory arguments, // so entity collection doesn't work for all SilverStripe classes currently // Requires PHP 5.1+ if (class_exists($class) && in_array('i18nEntityProvider', class_implements($class))) { $reflectionClass = new ReflectionClass($class); if ($reflectionClass->isAbstract()) { continue; } $obj = singleton($class); $entities = array_merge($entities, (array) $obj->provideI18nEntities()); } } } ksort($entities); return $entities; }