예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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');
     }
 }
예제 #3
0
 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);
 }