/**
  * Added for bug #40941
  * Deletes the field from DetailView and editView of the appropriate module
  * after the relatioship is deleted in delete() function above.
  * @param $relationship    The relationship that is getting deleted
  * return null
  */
 private function removeFieldsFromDeployedLayout($relationship)
 {
     // many-to-many relationships don't have fields so if we have a many-to-many we can just skip this...
     if ($relationship->getType() == MB_MANYTOMANY) {
         return false;
     }
     $successful = true;
     $layoutAdditions = $relationship->buildFieldsToLayouts();
     require_once 'modules/ModuleBuilder/parsers/views/GridLayoutMetaDataParser.php';
     foreach ($layoutAdditions as $deployedModuleName => $fieldName) {
         foreach (array(MB_EDITVIEW, MB_DETAILVIEW) as $view) {
             $parser = new GridLayoutMetaDataParser($view, $deployedModuleName);
             $parser->removeField($fieldName);
             $parser->handleSave(false);
         }
     }
     return $successful;
 }
예제 #2
0
 protected function saveFieldsToLayouts($basepath, $dummy, $relationshipName, $layoutAdditions)
 {
     require_once 'modules/ModuleBuilder/parsers/views/GridLayoutMetaDataParser.php';
     // these modules either lack editviews/detailviews or use custom mechanisms for the editview/detailview. In either case, we don't want to attempt to add a relate field to them
     // would be better if GridLayoutMetaDataParser could handle this gracefully, so we don't have to maintain this list here
     $invalidModules = array('emails', 'kbdocuments');
     foreach ($layoutAdditions as $deployedModuleName => $fieldName) {
         if (!in_array(strtolower($deployedModuleName), $invalidModules)) {
             foreach (array(MB_EDITVIEW, MB_DETAILVIEW) as $view) {
                 $GLOBALS['log']->info(get_class($this) . ": adding {$fieldName} to {$view} layout for module {$deployedModuleName}");
                 $parser = new GridLayoutMetaDataParser($view, $deployedModuleName);
                 $parser->addField(array('name' => $fieldName));
                 $parser->handleSave(false);
             }
         }
     }
 }
 private function updateUndeployedLayout($relationship, $actionAdd = true)
 {
     // many-to-many relationships don't have fields so if we have a many-to-many we can just skip this...
     if ($relationship->getType() == MB_MANYTOMANY) {
         return false;
     }
     $successful = true;
     $layoutAdditions = $relationship->buildFieldsToLayouts();
     require_once 'modules/ModuleBuilder/parsers/views/GridLayoutMetaDataParser.php';
     foreach ($layoutAdditions as $deployedModuleName => $fieldName) {
         foreach (array(MB_EDITVIEW, MB_DETAILVIEW) as $view) {
             $parsedName = AbstractRelationships::parseDeployedModuleName($deployedModuleName);
             if (isset($parsedName['packageName'])) {
                 $GLOBALS['log']->debug(get_class($this) . ": " . ($actionAdd ? "adding" : "removing") . " {$fieldName} on {$view} layout for undeployed module {$parsedName['moduleName']} in package {$parsedName['packageName']}");
                 $parser = new GridLayoutMetaDataParser($view, $parsedName['moduleName'], $parsedName['packageName']);
                 if ($actionAdd ? $parser->addField(array('name' => $fieldName)) : $parser->removeField($fieldName)) {
                     $parser->handleSave(false);
                 } else {
                     $GLOBALS['log']->debug(get_class($this) . ": couldn't " . ($actionAdd ? "add" : "remove") . " {$fieldName} on {$view} layout for undeployed module {$deployedModuleName}");
                     $successful = false;
                 }
             }
         }
     }
     return $successful;
 }