예제 #1
0
 public static function destroy($id)
 {
     self::check_logged_in();
     $group = new Group(array('id' => $id));
     $group->destroy();
     Redirect::to('/group', array('message' => 'Ryhmä poistettu'));
 }
 /**
  * Remove the specified group from storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($id)
 {
     if (!Sentry::getUser()) {
         return Redirect::route('sessions.create');
     }
     Group::destroy($id);
     return Redirect::route('groups.index');
 }
 public function run($request)
 {
     // get all groups from LDAP, but only get the attributes we need.
     // this is useful to avoid holding onto too much data in memory
     // especially in the case where getGroups() would return a lot of groups
     $ldapGroups = $this->ldapService->getGroups(false, array('objectguid', 'samaccountname', 'dn', 'name', 'description'), 'objectguid');
     $start = time();
     $count = 0;
     foreach ($ldapGroups as $data) {
         $group = Group::get()->filter('GUID', $data['objectguid'])->limit(1)->first();
         if (!($group && $group->exists())) {
             // create the initial Group with some internal fields
             $group = new Group();
             $group->GUID = $data['objectguid'];
             $this->log(sprintf('Creating new Group (ID: %s, GUID: %s, sAMAccountName: %s)', $group->ID, $data['objectguid'], $data['samaccountname']));
         } else {
             $this->log(sprintf('Updating existing Group "%s" (ID: %s, GUID: %s, sAMAccountName: %s)', $group->getTitle(), $group->ID, $data['objectguid'], $data['samaccountname']));
         }
         // Synchronise specific guaranteed fields.
         $group->Code = $data['samaccountname'];
         if (!empty($data['name'])) {
             $group->Title = $data['name'];
         } else {
             $group->Title = $data['samaccountname'];
         }
         if (!empty($data['description'])) {
             $group->Description = $data['description'];
         }
         $group->DN = $data['dn'];
         $group->LastSynced = (string) SS_Datetime::now();
         $group->IsImportedFromLDAP = true;
         $group->write();
         // Mappings on this group are automatically maintained to contain just the group's DN.
         // First, scan through existing mappings and remove ones that are not matching (in case the group moved).
         $hasCorrectMapping = false;
         foreach ($group->LDAPGroupMappings() as $mapping) {
             if ($mapping->DN === $data['dn']) {
                 // This is the correct mapping we want to retain.
                 $hasCorrectMapping = true;
             } else {
                 $this->log(sprintf('Deleting invalid mapping %s on %s.', $mapping->DN, $group->getTitle()));
                 $mapping->delete();
             }
         }
         // Second, if the main mapping was not found, add it in.
         if (!$hasCorrectMapping) {
             $this->log(sprintf('Setting up missing group mapping from %s to %s', $group->getTitle(), $data['dn']));
             $mapping = new LDAPGroupMapping();
             $mapping->DN = $data['dn'];
             $mapping->write();
             $group->LDAPGroupMappings()->add($mapping);
         }
         // cleanup object from memory
         $group->destroy();
         $count++;
     }
     // remove Group records that were previously imported, but no longer exist in the directory
     // NOTE: DB::query() here is used for performance and so we don't run out of memory
     if ($this->config()->destructive) {
         foreach (DB::query('SELECT "ID", "GUID" FROM "Group" WHERE "IsImportedFromLDAP" = 1') as $record) {
             if (!isset($ldapGroups[$record['GUID']])) {
                 $group = Group::get()->byId($record['ID']);
                 // Cascade into mappings, just to clean up behind ourselves.
                 foreach ($group->LDAPGroupMappings() as $mapping) {
                     $mapping->delete();
                 }
                 $group->delete();
                 $this->log(sprintf('Removing Group "%s" (GUID: %s) that no longer exists in LDAP.', $group->Title, $group->GUID));
                 // cleanup object from memory
                 $group->destroy();
             }
         }
     }
     $end = time() - $start;
     $this->log(sprintf('Done. Processed %s records. Duration: %s seconds', $count, round($end, 0)));
 }
예제 #4
0
 /**
  * Remove the specified group from storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($id)
 {
     Group::destroy($id);
     return Redirect::route('groups.index');
 }
<?php

include_once "chain_record_define.php";
/* $obj has same named properties with group table columns. */
$obj = new Group();
$obj->destroy(array("dbs" => array("testdb1", "testdb2")));
/* Create model object with hash array. */
$m = $obj->create(array("title" => "ChainRecord Introduction.", "memo" => "This is sample code."));
/* save model object (insert) */
/*
try{
   $m->save(array(
           "dbs" => array("testdb1","testdb2")
       )
   );
}catch(Exception $e){
 echo "save failed.\n";
}
*/
예제 #6
0
     } catch (Exception $e) {
         // Do nothing
     }
     try {
         $group->remove_reader($user);
     } catch (Exception $e) {
         // Do nothing
     }
     // If user was removed, then say so and quit.
     if (!$group->is_admin($user) && !$group->is_reader($user)) {
         Helpers::respond_json(new Attempt('success', "{$user->get_name()} removed from {$group->get_name()}."));
         die;
     }
     try {
         // If user is still admin, destroy group
         $group->destroy($user);
         $attempt = new Attempt('success', 'Group ' . $group->get_name() . ' removed permanently by ' . $user->get_name() . ".");
     } catch (Exception $e) {
         Helpers::respond_json(new Attempt('error', $e->getMessage()));
         die;
     }
     // END of remove_group
 } else {
     if ($action == "am_admin") {
         try {
             $group_name = Helpers::require_variable('group', 'a group name');
             $user_name = Helpers::require_variable('user', 'a user to validate');
             $group = new Group(array("name" => $group_name));
             $user = new User(array("name" => $user_name, "admin" => true));
             $group->read();
             $user->read();
 function destroyAction()
 {
     $group = new Group($this->args[1]);
     if ($group->destroy()) {
         $this->flash('Group removed successfully.');
         redirect_to(ADMIN_URL . '/groups');
     } else {
         $this->flash('There was an error deleting the group.');
         redirect_to(ADMIN_URL . '/groups/show/' . $group->id);
     }
 }
 protected function tearDown()
 {
     $grp = new Group();
     $grp->destroy(array("dbs" => array("testdb1", "testdb2")));
 }
 protected function tearDown()
 {
     $grp = new Group();
     $grp->destroy();
 }
예제 #10
0
<?php

include_once "chain_record_define.php";
/* $obj has same named properties with group table columns. */
$obj = new Group();
$t1 = "destroy target record title";
/* delete groups table records */
$obj->destroy(array("cond" => array("title = ?", $t1)));
/* SQL: DELETE FROM groups WHERE title = ?   */
/* parameter $t1 bind to '?' by database api */
예제 #11
0
 public static function destroy($id)
 {
     parent::check_logged_in();
     Group::destroy($id);
     Redirect::to('/group', array('message' => 'Group has been removed.'));
 }