/** * Update a cluster (user set) * @todo: consider factoring this some more once other actions exist * * @param object $record One record of import data * @param string $filename The import file name, used for logging * @return boolean true on success, otherwise false */ function cluster_delete($record, $filename) { global $CFG, $DB; require_once $CFG->dirroot . '/local/elisprogram/lib/data/userset.class.php'; if (isset($record->name)) { $id = $DB->get_field(userset::TABLE, 'id', array('name' => $record->name)); if (!$id) { $identifier = $this->get_field_mapping('name'); $this->fslogger->log_failure("{$identifier} value of \"{$record->name}\" does not refer to a valid user set.", 0, $filename, $this->linenumber, $record, "cluster"); return false; } } if (isset($record->recursive)) { if (!$this->validate_fixed_list($record, 'recursive', static::$yes_no_field_options)) { $identifier = $this->get_field_mapping('recursive'); $this->fslogger->log_failure("{$identifier} value of \"{$record->recursive}\" is not one of the available options (0, 1).", 0, $filename, $this->linenumber, $record, "cluster"); return false; } else { $record->recursive = (string) $record->recursive == 'yes' || (string) $record->recursive == '1' ? '1' : '0'; } } $data = new userset($id); //handle recursive delete, if necessary if (!empty($record->recursive)) { $data->deletesubs = true; } $data->delete(); //log success $success_message = "User set with name \"{$record->name}\" successfully deleted."; $this->fslogger->log_success($success_message, 0, $filename, $this->linenumber); return true; }
/** * Performs userset delete * @throws moodle_exception If there was an error in passed parameters. * @throws data_object_exception If there was an error creating the entity. * @param array $data The incoming data parameter. * @return array An array of parameters, if successful. */ public static function userset_delete(array $data) { global $USER, $DB; if (static::require_elis_dependencies() !== true) { throw new moodle_exception('ws_function_requires_elis', 'local_datahub'); } // Parameter validation. $params = self::validate_parameters(self::userset_delete_parameters(), array('data' => $data)); // Context validation. $context = context_user::instance($USER->id); self::validate_context($context); $data = (object) $data; // Validate if (empty($data->name) || !($usid = $DB->get_field(userset::TABLE, 'id', array('name' => $data->name)))) { throw new data_object_exception('ws_userset_delete_fail_invalid_name', 'local_datahub', '', $data); } // Capability checking. require_capability('local/elisprogram:userset_delete', \local_elisprogram\context\userset::instance($usid)); $userset = new userset($usid); if (!empty($data->recursive)) { $userset->deletesubs = true; } $userset->delete(); // Verify deletion & respond. if (!$DB->record_exists(userset::TABLE, array('name' => $data->name))) { return array('messagecode' => get_string('ws_userset_delete_success_code', 'local_datahub', empty($data->recursive) ? '' : get_string('ws_userset_delete_recursive', 'local_datahub')), 'message' => get_string('ws_userset_delete_success_msg', 'local_datahub', empty($data->recursive) ? '' : get_string('ws_userset_delete_subsets', 'local_datahub'))); } else { throw new data_object_exception('ws_userset_delete_fail', 'local_datahub'); } }
public function test_deleteparentpromotechildren() { // Load great-grandfather, grandfather, parent, child usersets. ids 5,6,7,8, respectively. $dataset = $this->createCsvDataSet(array(userset::TABLE => elispm::file('tests/fixtures/userset_grandfathers.csv'), 'context' => elispm::file('tests/fixtures/userset_context.csv'))); $this->loadDataSet($dataset); // Delete grandfather userset. $grandfather = new userset(6); $grandfather->load(); $grandfather->deletesubs = 0; $grandfather->delete(); $parent = new userset(7); $parent->load(); $child = new userset(8); $child->load(); $this->assertEquals('0', $parent->parent); $this->assertEquals('1', $parent->depth); $this->assertEquals('7', $child->parent); $this->assertEquals('2', $child->depth); }