in the person registration form, we now filter out sites that either
[plewww.git] / planetlab / persons / register.php
index 6232f77..2350d7b 100644 (file)
@@ -133,7 +133,14 @@ function register_person ($person) {
 
   $errors = errors_init ();
 
-  // N.B.: site_ids and roles are ignored by AddPerson()
+  // jan-2013 with improvements in plcapi-5.1-6 about managing persons and tags,
+  // AddPerson has gone more picky and we need to remove some fields
+  // that no longer are silently ignored by AddPerson
+  $site_ids=$person['site_ids'];
+  unset ($person['site_ids']);
+  $roles=$person['roles'];
+  unset ($person['roles']);
+  
   $person_id = $adm->AddPerson($person);
   $errors = errors_record ($adm,$errors);
 
@@ -141,15 +148,15 @@ function register_person ($person) {
     $adm->begin();
 
     // Add person to requested sites
-    foreach ($person['site_ids'] as $site_id) {
+    foreach ($site_ids as $site_id) {
       $adm->AddPersonToSite($person_id, intval($site_id));
       $adm->SetPersonPrimarySite($person_id, intval($site_id));
     }
 
     // Add requested roles. Always add the user role. 
     $adm->AddRoleToPerson('user', $person_id);
-    if (!empty($person['roles'])) {
-      foreach ($person['roles'] as $role) {
+    if (!empty($roles)) {
+      foreach ($roles as $role) {
        $adm->AddRoleToPerson($role, $person_id);
       }
     }
@@ -217,8 +224,14 @@ $adm->begin();
 
 // All defined sites
 // cannot register with foreign site
-$adm->GetSites(array('is_public' => TRUE, 'peer_id' => NULL,'-SORT'=>'name'), 
-              array('site_id', 'name','enabled','peer_id'));
+// we also hide sites that are created by sfa
+// as well as the ones that have a disabled_registration tag set
+$adm->GetSites(array('is_public' => TRUE, 'peer_id' => NULL,
+                     'sfa_created' => NULL,
+                     'disabled_registration' => NULL,
+                     '-SORT'=>'name'),
+                  array('site_id', 'name', 'enabled', 'peer_id',
+                     'sfa_created', 'disabled_registration'));
 // All defined roles
 $adm->GetRoles();
 
@@ -246,7 +259,7 @@ function site_option($site) {
   $option .= htmlspecialchars($site['name']);
   # Safari/IE do not implement disabled correctly
   if ( ! $site['enabled'] )
-    $option .= " (pending registration)";
+    $option .= " (disabled, or pending registration)";
   $option .= "</option>";
   return $option;
 }