public static function create(DocumentPropertyMeta $meta, DocumentTypeMeta $modelMeta, $transformatorClass) { $sanitizerClass = self::_resolve($meta, $modelMeta); // Remap sanitizer if needed $mapConfig = []; $map = Mangan::fly($modelMeta->connectionId)->sanitizersMap; if (isset($map[$transformatorClass]) && isset($map[$transformatorClass][$sanitizerClass])) { $mapConfig = $map[$transformatorClass][$sanitizerClass]; if (is_string($mapConfig)) { $mapClass = $mapConfig; $mapConfig = ['class' => $mapClass]; } } if (is_array($meta->sanitizer)) { $sanitizerConfig = $meta->sanitizer; $sanitizerConfig['class'] = $sanitizerClass; } else { $sanitizerConfig = []; $sanitizerConfig['class'] = $sanitizerClass; } if (!empty($mapConfig)) { $sanitizerConfig = array_merge($sanitizerConfig, $mapConfig); } // Sanitize as array if ($meta->sanitizeArray) { $sanitizerConfig = ['class' => ArraySanitizer::class, 'sanitizer' => $sanitizerConfig]; } $config = [$transformatorClass => [$sanitizerConfig]]; $sanitizer = PluginFactory::fly($modelMeta->connectionId)->instance($config, $transformatorClass)[0]; return $sanitizer; }
public function __construct(AnnotatedInterface $model = null) { $this->model = $model; if (!$model) { $this->mn = Mangan::fly(); return; } $this->mn = Mangan::fromModel($model); }
/** * Get filters for connection and transformator class * @param string $connectionId * @param string $transformatorClass * @return TransformatorFilterInterface[] */ private static function getManganFilters($connectionId, $transformatorClass) { if (!isset(self::$_configs[$connectionId])) { self::$_configs[$connectionId] = []; } if (!isset(self::$_configs[$connectionId][$transformatorClass])) { self::$_configs[$connectionId] = []; self::$_configs[$connectionId][$transformatorClass] = []; $mangan = Mangan::fly($connectionId); $tranformator = new $transformatorClass(); foreach ($mangan->filters as $implementer => $filterClasses) { foreach ($filterClasses as $filterClass) { if ($tranformator instanceof $implementer) { self::$_configs[$connectionId][$transformatorClass][] = new $filterClass(); } } } } return self::$_configs[$connectionId][$transformatorClass]; }
use Maslosoft\Mangan\Transformers\YamlArray; use Maslosoft\Manganel\Manganel; use Maslosoft\Manganel\SearchArray; use Maslosoft\Signals\Signal; date_default_timezone_set('Europe/Paris'); define('VENDOR_DIR', __DIR__ . '/../../..'); define('YII_DIR', VENDOR_DIR . '/yiisoft/yii/framework/'); require VENDOR_DIR . '/autoload.php'; // Invoker stub for windows if (defined('PHP_WINDOWS_VERSION_MAJOR')) { require __DIR__ . '/../misc/Invoker.php'; } //require $yii = YII_DIR . 'yii.php'; //require_once YII_DIR . 'base/CComponent.php'; //require_once YII_DIR . 'base/CModel.php'; $config = (require __DIR__ . '/../config.php'); $signals = new Signal(); $sMap = [JsonArray::class => [MongoObjectId::class => MongoWriteStringId::class, DateSanitizer::class => DateWriteUnixSanitizer::class], SearchArray::class => [MongoObjectId::class => MongoWriteStringId::class, DateSanitizer::class => DateWriteUnixSanitizer::class], YamlArray::class => [MongoObjectId::class => MongoWriteStringId::class, DateSanitizer::class => DateWriteUnixSanitizer::class]]; $mangan = Mangan::fly(); $mangan->connectionString = 'mongodb://localhost:27017'; $mangan->dbName = 'ManganTest'; $mangan->sanitizersMap = $sMap; $mangan->init(); $mangan2 = Mangan::fly('second'); $mangan2->connectionString = 'mongodb://localhost:27017'; $mangan2->dbName = 'ManganTestSecond'; $mangan2->sanitizersMap = $sMap; $mangan2->init(); $manganel = Manganel::fly(); $manganel->index = strtolower($mangan->dbName); $manganel->hosts = ['localhost:9200'];