예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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');
 }
예제 #3
0
 /**
  *
  * @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;
 }