예제 #1
0
 /**
  * Update group and membership info in underlying 'course-' group (group type 4)
  *
  * Method is called anytime after a course is saved
  *
  * @param $course - course object
  */
 public function onAfterStoreCourse($course)
 {
     // Get a new group object
     $group = new \Hubzero\User\Group();
     // If the course doesn't have a group id set, then we need to create a new group
     if (!$course->get('group_id')) {
         // Set some group info
         $group->set('cn', 'course-' . $course->cn);
         $group->create();
         $group->set('type', 4);
         // group type 4 = course
         // Set the new group gidNumber as the group_id in the course and update
         $course->set('group_id', $group->get('gidNumber'));
         $course->update();
     } else {
         $group->read($course->get('group_id'));
     }
     // Set the group description (in case it's been changed)
     $group->set('description', $course->get('description'));
     // Get all of the course members that are not yet group members (i.e. they need to be added to the group)
     $add = array_diff($course->get('members'), $group->get('members'));
     foreach ($add as $a) {
         $group->add('members', $a);
     }
     // Get all of the group members that are not members of the course (i.e. they need to be removed from the group)
     $remove = array_diff($group->get('members'), $course->get('members'));
     foreach ($remove as $r) {
         $group->remove('members', $r);
     }
     // Finally, update the group
     $group->update();
 }
예제 #2
0
 /**
  * Erases all project information (to be used for test projects only)
  *
  * @return  void
  */
 public function eraseTask()
 {
     $id = Request::getVar('id', 0);
     $permanent = 1;
     // Initiate extended database class
     $obj = new Tables\Project($this->database);
     if (!$id or !$obj->loadProject($id)) {
         App::redirect(Route::url('index.php?option=' . $this->_option, false), Lang::txt('COM_PROJECTS_NOTICE_ID_NOT_FOUND'), 'error');
         return;
     }
     // Get project group
     $group_prefix = $this->config->get('group_prefix', 'pr-');
     $prGroup = $group_prefix . $obj->alias;
     // Store project info
     $alias = $obj->alias;
     $identifier = $alias;
     // Delete project
     $obj->delete();
     // Erase all owners
     $objO = new Tables\Owner($this->database);
     $objO->removeOwners($id, '', 0, $permanent, '', $all = 1);
     // Erase owner group
     $group = new \Hubzero\User\Group();
     $group->read($prGroup);
     if ($group) {
         $group->delete();
     }
     // Erase all comments
     $objC = new Tables\Comment($this->database);
     $objC->deleteProjectComments($id, $permanent);
     // Erase all activities
     $objA = new Tables\Activity($this->database);
     $objA->deleteActivities($id, $permanent);
     // Erase all todos
     $objTD = new Tables\Todo($this->database);
     $objTD->deleteTodos($id, '', $permanent);
     // Erase all blog entries
     $objB = new Tables\Blog($this->database);
     $objB->deletePosts($id, $permanent);
     // Erase all notes
     if (file_exists(PATH_CORE . DS . 'components' . DS . 'com_wiki' . DS . 'models' . DS . 'page.php')) {
         include_once PATH_CORE . DS . 'components' . DS . 'com_wiki' . DS . 'models' . DS . 'page.php';
         // Get all notes
         $this->database->setQuery("SELECT DISTINCT p.id FROM `#__wiki_pages` AS p\n\t\t\t\tWHERE p.scope_id=" . $this->database->quote($id) . " AND p.scope=" . $this->database->quote('project'));
         $notes = $this->database->loadObjectList();
         if ($notes) {
             foreach ($notes as $note) {
                 $page = \Components\Wiki\Models\Page::oneOrFail($note->id);
                 // Finally, delete the page itself
                 $page->destroy();
             }
         }
     }
     // Erase all files, remove files repository
     if ($alias) {
         // Delete base dir for .git repos
         $dir = $alias;
         $prefix = $this->config->get('offroot', 0) ? '' : PATH_CORE;
         $repodir = DS . trim($this->config->get('webpath'), DS);
         $path = $prefix . $repodir . DS . $dir;
         if (is_dir($path)) {
             Filesystem::deleteDirectory($path);
         }
         // Delete images/preview directories
         $webdir = DS . trim($this->config->get('imagepath', '/site/projects'), DS);
         $webpath = PATH_APP . $webdir . DS . $dir;
         if (is_dir($webpath)) {
             Filesystem::deleteDirectory($webpath);
         }
     }
     // Redirect
     App::redirect(Route::url('index.php?option=' . $this->_option, false), Lang::txt('COM_PROJECTS_PROJECT') . ' #' . $id . ' (' . $alias . ') ' . Lang::txt('COM_PROJECTS_PROJECT_ERASED'));
 }
예제 #3
0
			<tr>
				<td colspan="9"><?php 
// Initiate paging
echo $this->pagination($this->total, $this->filters['start'], $this->filters['limit']);
?>
</td>
			</tr>
		</tfoot>
		<tbody>
		<?php 
$database = App::get('db');
$k = 0;
for ($i = 0, $n = count($this->rows); $i < $n; $i++) {
    $row =& $this->rows[$i];
    $group = new \Hubzero\User\Group();
    $group->read($row->gidNumber);
    switch ($row->type) {
        case '0':
            $type = Lang::txt('COM_GROUPS_TYPE_SYSTEM');
            break;
        case '1':
            $type = Lang::txt('COM_GROUPS_TYPE_HUB');
            break;
        case '2':
            $type = Lang::txt('COM_GROUPS_TYPE_PROJECT');
            break;
        case '3':
            $type = Lang::txt('COM_GROUPS_TYPE_SUPER');
            break;
        case '4':
            $type = Lang::txt('COM_GROUPS_TYPE_COURSE');
예제 #4
0
 /**
  * Save a group
  *
  * @param      string  $toolid   Tool ID
  * @param      string  $devgroup Group name
  * @param      array   $members  List of members
  * @param      boolean $exist    Group exists?
  * @return     boolean True if no errors
  */
 public function saveGroup($toolid = NULL, $devgroup, $members, $exist)
 {
     if (!$toolid or !$devgroup) {
         return false;
     }
     $members = \Components\Tools\Helpers\Utils::transform($members, 'uidNumber');
     $group = new \Hubzero\User\Group();
     if (\Hubzero\User\Group::exists($devgroup)) {
         $group->read($devgroup);
         $existing_members = \Components\Tools\Helpers\Utils::transform(Tool::getToolDevelopers($toolid), 'uidNumber');
         $group->set('members', $existing_members);
         $group->set('managers', $existing_managers);
     } else {
         $group->create();
         $group->set('type', 2);
         $group->set('published', 1);
         $group->set('discoverability', 0);
         $group->set('description', 'Dev group for tool ' . $toolid);
         $group->set('cn', $devgroup);
         $group->set('members', $existing_members);
         $group->set('managers', $existing_managers);
     }
     $group->update();
     if (!$exist) {
         $this->save($devgroup, $toolid, '1');
     }
     return true;
 }