Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 public function __construct(AnnotatedInterface $model = null)
 {
     $this->model = $model;
     if (!$model) {
         $this->mn = Mangan::fly();
         return;
     }
     $this->mn = Mangan::fromModel($model);
 }
Ejemplo n.º 3
0
 /**
  * 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];
 }
Ejemplo n.º 4
0
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'];