public static function factory($settings, $owner)
{
$settings = array_merge(self::$defaultSettings, $settings);
$className = 'TitanFrameworkOption' . str_replace(' ', '', ucwords(str_replace('-', ' ', $settings['type'])));
// assume all the classes are already required
if (!class_exists($className) && !class_exists($settings['type'])) {
TitanFramework::displayFrameworkError(sprintf(__('Option type or extended class %s does not exist.', TF_I18NDOMAIN), '<code>' . $settings['type'] . '</code>', $settings), $settings);
return null;
}
if (class_exists($className)) {
$obj = new $className($settings, $owner);
return $obj;
}
$className = $settings['type'];
$obj = new $className($settings, $owner);
return $obj;
}