/** * Adding a new property * @param Tx_ExtensionBuilder_Domain_Model_DomainObject_AbstractProperty $property The new property to add * * @return void */ public function addProperty(Tx_ExtensionBuilder_Domain_Model_DomainObject_AbstractProperty $property) { $property->setDomainObject($this); if ($property->getNeedsUploadFolder()) { $this->needsUploadFolder = TRUE; } $this->properties[] = $property; }
/** * Removes all related methods, if a property was removed * @param Tx_ExtensionBuilder_Domain_Model_DomainObject_AbstractProperty $propertyToRemove * * @return void */ protected function removePropertyAndRelatedMethods($propertyToRemove) { $propertyName = $propertyToRemove->getName(); $this->classObject->removeProperty($propertyName); if ($propertyToRemove->isAnyToManyRelation()) { $this->classObject->removeMethod('add' . ucfirst(Tx_ExtensionBuilder_Utility_Inflector::singularize($propertyName))); $this->classObject->removeMethod('remove' . ucfirst(Tx_ExtensionBuilder_Utility_Inflector::singularize($propertyName))); t3lib_div::devLog('Methods removed: ' . 'add' . ucfirst(Tx_ExtensionBuilder_Utility_Inflector::singularize($propertyName)), 'extension_builder'); } $this->classObject->removeMethod('get' . ucfirst($propertyName)); $this->classObject->removeMethod('set' . ucfirst($propertyName)); if ($propertyToRemove->isBoolean()) { $this->classObject->removeMethod('is' . ucfirst($propertyName)); } t3lib_div::devLog('Methods removed: ' . 'get' . ucfirst($propertyName), 'extension_builder'); }
/** * * @param Tx_ExtensionBuilder_Domain_Model_DomainObject_AbstractProperty $domainProperty * * @return Tx_ExtensionBuilder_Domain_Model_Class_Method */ protected function buildRemoveMethod($domainProperty) { $propertyName = $domainProperty->getName(); $removeMethodName = $this->getMethodName($domainProperty, 'remove'); if ($this->classObject->methodExists($removeMethodName)) { $removeMethod = $this->classObject->getMethod($removeMethodName); //t3lib_div::devlog('Existing removeMethod imported:' . $removeMethodName, 'extension_builder', 0, array('methodBody' => $removeMethod->getBody())); } else { //t3lib_div::devlog('new removeMethod:' . $removeMethodName, 'extension_builder', 0); $removeMethod = new Tx_ExtensionBuilder_Domain_Model_Class_Method($removeMethodName); // default method body $removeMethod->setBody($this->codeGenerator->getDefaultMethodBody(NULL, $domainProperty, 'Model', 'remove', '')); $removeMethod->setTag('param', $this->getParamTag($domainProperty, 'remove')); $removeMethod->setTag('return', 'void'); $removeMethod->addModifier('public'); } $removeParameters = $removeMethod->getParameterNames(); if (!in_array($this->getParameterName($domainProperty, 'remove'), $removeParameters)) { $removeParameter = new Tx_ExtensionBuilder_Domain_Model_Class_MethodParameter($this->getParameterName($domainProperty, 'remove')); $removeParameter->setVarType($domainProperty->getForeignClassName()); $removeParameter->setTypeHint($domainProperty->getForeignClassName()); $removeMethod->setParameter($removeParameter); } if (!$removeMethod->hasDescription()) { $removeMethod->setDescription('Removes a ' . $domainProperty->getForeignModelName()); } return $removeMethod; }