Open Monograph Press  1.1
 All Classes Namespaces Functions Variables Groups Pages
UserGroupNativeXmlFilter.inc.php
1 <?php
2 
16 import('lib.pkp.plugins.importexport.native.filter.NativeExportFilter');
17 
23  function UserGroupNativeXmlFilter($filterGroup) {
24  $this->setDisplayName('Native XML User Group export');
25  parent::NativeExportFilter($filterGroup);
26  }
27 
28 
29  //
30  // Implement template methods from PersistableFilter
31  //
35  function getClassName() {
36  return 'lib.pkp.plugins.importexport.users.filter.UserGroupNativeXmlFilter';
37  }
38 
39 
40  //
41  // Implement template methods from Filter
42  //
48  function &process(&$userGroups) {
49  // Create the XML document
50  $doc = new DOMDocument('1.0');
51  $deployment = $this->getDeployment();
52 
53  // Multiple authors; wrap in a <authors> element
54  $rootNode = $doc->createElementNS($deployment->getNamespace(), 'user_groups');
55  foreach ($userGroups as $userGroup) {
56  $rootNode->appendChild($this->createUserGroupNode($doc, $userGroup));
57  }
58  $doc->appendChild($rootNode);
59  $rootNode->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
60  $rootNode->setAttribute('xsi:schemaLocation', $deployment->getNamespace() . ' ' . $deployment->getSchemaFilename());
61 
62  return $doc;
63  }
64 
65  //
66  // UserGroup conversion functions
67  //
74  function createUserGroupNode($doc, $userGroup) {
75  $deployment = $this->getDeployment();
76  $context = $deployment->getContext();
77 
78  // Create the user_group node
79  $userGroupNode = $doc->createElementNS($deployment->getNamespace(), 'user_group');
80 
81  // Add metadata
82  $userGroupNode->appendChild($doc->createElementNS($deployment->getNamespace(), 'role_id', $userGroup->getRoleId()));
83  $userGroupNode->appendChild($doc->createElementNS($deployment->getNamespace(), 'path', $userGroup->getPath()));
84  $userGroupNode->appendChild($doc->createElementNS($deployment->getNamespace(), 'context_id', $userGroup->getContextId()));
85  $userGroupNode->appendChild($doc->createElementNS($deployment->getNamespace(), 'is_default', $userGroup->getDefault() ? 'true' : 'false'));
86  $userGroupNode->appendChild($doc->createElementNS($deployment->getNamespace(), 'show_title', $userGroup->getShowTitle() ? 'true' : 'false'));
87  $userGroupNode->appendChild($doc->createElementNS($deployment->getNamespace(), 'permit_self_registration', $userGroup->getPermitSelfRegistration() ? 'true' : 'false'));
88 
89  $this->createLocalizedNodes($doc, $userGroupNode, 'name', $userGroup->getName(null));
90  $this->createLocalizedNodes($doc, $userGroupNode, 'abbrev', $userGroup->getAbbrev(null));
91 
92  $userGroupDao = DAORegistry::getDAO('UserGroupDAO');
93  $assignedStages = $userGroupDao->getAssignedStagesByUserGroupId($context->getId(), $userGroup->getId());
94  $userGroupNode->appendChild($doc->createElementNS($deployment->getNamespace(), 'stage_assignments', join(':', array_keys($assignedStages))));
95  return $userGroupNode;
96  }
97 }
98 
99 ?>
static & getDAO($name, $dbconn=null)
setDisplayName($displayName)
Definition: Filter.inc.php:140
Base class that converts a set of user groups to a Native XML document.
Base class that converts a DataObject to a Native XML document.
createLocalizedNodes($doc, $parentNode, $name, $values)