/** * @param ObjectBuilder $builder * @param string $script * @param Column $column */ protected function appendAddVersionMethod(ObjectBuilder $builder, &$script, $column) { $columnPhpName = $column->getPhpName(); $methodName = "add{$columnPhpName}Version"; $logTable = $this->getLogTable($column); $logTableName = $logTable->getName(); $logARClassName = $builder->getClassNameFromBuilder($builder->getNewStubObjectBuilder($logTable)); $logARQueryName = $builder->getNewStubQueryBuilder($logTable)->getFullyQualifiedClassName(); $varName = lcfirst($column->getPhpName()); $script .= "\n/**\n * @return {$logARClassName}|false model instance of saved log ({$logTableName}) or false if nothing was changed.\n */\npublic function {$methodName}()\n{\n if (!isset(\$this->changeLoggerTracker['{$varName}'])) {\n return false;\n }\n\n \$log = new {$logARClassName}();"; foreach ($this->getTable()->getPrimaryKey() as $col) { $script .= "\n \$log->set" . $col->getPhpName() . "(\$this->get" . $col->getPhpName() . "());"; } $script .= "\n \$log->set" . $column->getPhpName() . "(\$this->changeLoggerTracker['{$varName}']);"; if ('true' === $this->getParameter('created_at')) { $createdAtColumn = $logTable->getColumn($this->getParameter('created_at_column')); $script .= "\n \$log->set{$createdAtColumn->getPhpName()}(time());\n"; } if ('true' === $this->getParameter('created_by')) { $createdByColumn = $logTable->getColumn($this->getParameter('created_by_column')); $methodGetName = 'get' . $column->getPhpName() . 'ChangeBy'; $script .= "\n \$log->set{$createdByColumn->getPhpName()}(\$this->{$methodGetName}());\n"; } if ('true' === $this->getParameter('comment')) { $commentColumn = $logTable->getColumn($this->getParameter('comment_column')); $methodGetName = 'get' . $column->getPhpName() . 'ChangeComment'; $script .= "\n \$log->set{$commentColumn->getPhpName()}(\$this->{$methodGetName}());\n"; } $script .= "\n \$lastVersion = {$logARQueryName}::create()\n ->filterByOrigin(\$this)\n ->orderByVersion('desc')\n ->findOne();\n\n \$log->setVersion(\$lastVersion ? \$lastVersion->getVersion() + 1 : 1);\n \$log->save();\n\n \$this->changeLoggerTracker['{$varName}'] = \$this->get{$column->getPhpName()}();\n return \$log;\n}\n"; }
/** * @param ObjectBuilder $builder * * @return string */ public function objectMethods(ObjectBuilder $builder) { if ($this->behavior->hasSnapshotClass()) { $snapshotClass = $this->behavior->getParameter(SnapshottableBehavior::PARAMETER_SNAPSHOT_CLASS); $builder->declareClass($snapshotClass); } else { $snapshotTable = $this->behavior->getSnapshotTable(); $stubObjectBuilder = $builder->getNewStubObjectBuilder($snapshotTable); $builder->declareClassFromBuilder($stubObjectBuilder); } $script = ''; $script .= $this->addSnapshot($builder); return $script; }
/** * @param ObjectBuilder $builder * * @return array */ public function getSnapshotTablePhpName(ObjectBuilder $builder) { if ($this->hasSnapshotClass()) { return $this->getParameter(self::PARAMETER_SNAPSHOT_CLASS); } return $builder->getNewStubObjectBuilder($this->snapshotTable)->getClassname(); }
protected function addNestedSetChildrenInit(&$script) { $script .= "\n/**\n * Initializes the \$collNestedSetChildren collection.\n *\n * @return void\n */\npublic function initNestedSetChildren()\n{\n \$this->collNestedSetChildren = new ObjectCollection();\n \$this->collNestedSetChildren->setModel('" . $this->builder->getNewStubObjectBuilder($this->table)->getFullyQualifiedClassName() . "');\n}\n"; }