/** * Constructor * * @param integer $scope_id Scope ID (group, course, etc.) * @return void */ public function __construct($scope_id) { $group = \Hubzero\User\Group::getInstance($scope_id); if (!$group) { $group = new \Hubzero\User\Group(); $group->set('cn', '_unknown_'); } $this->_segments['cn'] = $group->get('cn'); $this->_segments['active'] = 'forum'; $this->_segments['scope'] = ''; $this->_name = $group->get('cn'); }
/** * Constructor * * @param integer $scope_id Scope ID (group, course, etc.) * @return void */ public function __construct($scope_id = 0) { $this->set('scope_id', $scope_id); $group = \Hubzero\User\Group::getInstance($scope_id); if (!$group || !$group->get('cn')) { $group = new \Hubzero\User\Group(); $group->set('gidNumber', $scope_id); $group->set('cn', $scope_id); $group->set('description', Lang::txt('(unknown)')); } $this->_group = $group; $this->_segments['cn'] = $group->get('cn'); $this->_segments['active'] = 'collections'; $this->set('option', $this->_segments['option']); }
/** * 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')); }
<tfoot> <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':
/** * Create a group * * @apiMethod POST * @apiUri /groups * @apiParameter { * "name": "cn", * "description": "Group alias that appears in the url for group. Only lowercase alphanumeric chars allowed.", * "type": "string", * "required": true, * "default": null * } * @apiParameter { * "name": "title", * "description": "Group title", * "type": "string", * "required": true, * "default": null * } * @apiParameter { * "name": "tags", * "description": "Group tags", * "type": "string (comma separated)", * "required": false, * "default": null * } * @apiParameter { * "name": "public_description", * "description": "Group public description", * "type": "string", * "required": false, * "default": null * } * @apiParameter { * "name": "private_description", * "description": "Group private description", * "type": "string", * "required": false, * "default": null * } * @apiParameter { * "name": "join_policy", * "description": "Membership join policy", * "type": "string", * "required": true, * "default": "open", * "allowedValues": "open, restricted, invite_only, closed" * } * @apiParameter { * "name": "discoverability", * "description": "Is the group shown in hub searches/listings.", * "type": "string", * "required": true, * "default": "visible", * "allowedValues": "visible, hidden" * } * @return void */ public function createTask() { $this->requiresAuthentication(); $cn = Request::getWord('cn', ''); $title = Request::getVar('title', ''); $tags = Request::getVar('tags', ''); $publicDesc = Request::getVar('public_description', ''); $privateDesc = Request::getVar('private_description', ''); $joinPolicy = strtolower(Request::getWord('join_policy', 'open')); $discoverability = Request::getWord('discoverability', 'visible'); // var to hold errors $errors = array(); // check for required fields (cn & title) if ($cn == '') { $errors[] = array('field' => 'cn', 'message' => Lang::txt('Group cn cannot be empty.')); } if ($title == '') { $errors[] = array('field' => 'title', 'message' => Lang::txt('Group title cannot be empty.')); } // check to make sure cn is valid & isnt taken if (!\Hubzero\Utility\Validate::group($cn, false)) { $errors[] = array('field' => 'cn', 'message' => Lang::txt('COM_GROUPS_SAVE_ERROR_INVALID_ID')); } if (\Hubzero\User\Group::exists($cn, false)) { $errors[] = array('field' => 'cn', 'message' => Lang::txt('COM_GROUPS_SAVE_ERROR_ID_TAKEN')); } // valid join policy $policies = array(0 => 'open', 1 => 'restricted', 2 => 'invite_only', 3 => 'closed'); // make sure we have a valid policy if (!in_array($joinPolicy, $policies)) { $errors[] = array('field' => 'join_policy', 'message' => Lang::txt('Group "join_policy" value must be one of the following: %s', implode(', ', $policies))); } // valid discoverabilities $discoverabilities = array(0 => 'visible', 1 => 'hidden'); // make sure we have a valid discoverability if (!in_array($discoverability, $discoverabilities)) { $errors[] = array('field' => 'discoverability', 'message' => Lang::txt('Group "discoverability" value must be one of the following: %s', implode(', ', $discoverabilities))); } // check for errors at this point if (!empty($errors)) { throw new Exception(Lang::txt('Validation Failed') . ': ' . implode("\n", $errors), 422); } // make sure we have a public desc of none was entered if ($publicDesc == '') { $publicDesc = $title; } // map the join policy & discoverability values to their int value $joinPolicy = array_search($joinPolicy, $policies); $discoverability = array_search($discoverability, $discoverabilities); // bind all our fields to the group object $group = new \Hubzero\User\Group(); $group->set('cn', $cn); $group->set('type', 1); $group->set('published', 1); $group->set('approved', \App::get('component')->params('com_groups')->get('auto_approve', 1)); $group->set('description', $title); $group->set('public_desc', $publicDesc); $group->set('private_desc', $privateDesc); $group->set('join_policy', $joinPolicy); $group->set('discoverability', $discoverability); $group->set('created', with(new Date('now'))->toSql()); $group->set('created_by', User::get('id')); $group->add('managers', array(User::get('id'))); $group->add('members', array(User::get('id'))); if (!$group->create() || !$group->update()) { throw new Exception(Lang::txt('Failed to create group.'), 500); } $this->send($group); }
/** * Save an entry * * @return void */ public function saveTask() { $exportmap = array('@OPEN' => null, '@GROUP' => null, '@US' => 'us', '@us' => 'us', '@PU' => 'pu', '@pu' => 'pu', '@D1' => 'd1', '@d1' => 'd1'); // set vars $tool = Request::getVar('tool', array(), 'post'); $tool = array_map('trim', $tool); // Sanitize the input a bit $noHtmlFilter = \JFilterInput::getInstance(); foreach ($tool as $i => $var) { $tool[$i] = $noHtmlFilter->clean($var); } $today = Date::toSql(); $group_prefix = $this->config->get('group_prefix', 'app-'); $dev_suffix = $this->config->get('dev_suffix', '_dev'); // pass data from forms $id = Request::getInt('toolid', 0); $this->_action = Request::getVar('action', ''); $comment = Request::getVar('comment', ''); $editversion = Request::getVar('editversion', 'dev', 'post'); //$toolname = strtolower($tool['toolname']); $oldstatus = array(); // Create a Tool Version object $objV = new \Components\Tools\Tables\Version($this->database); // Create a Tool object $obj = new \Components\Tools\Tables\Tool($this->database); if ($id) { // make sure user is authorized to go further if (!$this->_checkAccess($id)) { App::abort(403, Lang::txt('COM_TOOLS_ALERTNOTAUTH')); return; } } if (!\Components\Tools\Models\Tool::validate($tool, $err, $id)) { // display form with errors //$title = Lang::txt(strtoupper($this->_option)).': '.Lang::txt('COM_TOOLS_EDIT_TOOL'); //Document::setTitle($title); if (is_array($err)) { foreach ($err as $error) { $this->setError($error); } } else { $this->setError($err); } if ($id) { // get tool status $obj->getToolStatus($id, $this->_option, $fstatus, $editversion); $tool['developers'] = $fstatus['developers']; $tool['membergroups'] = $fstatus['membergroups']; $tool['published'] = $fstatus['published']; } $this->editTask($tool); return; } $tool['vncGeometry'] = $tool['vncGeometryX'] . 'x' . $tool['vncGeometryY']; $tool['toolname'] = strtolower($tool['toolname']); $tool['developers'] = array_map('trim', explode(',', $tool['developers'])); $tool['membergroups'] = array_map('trim', explode(',', $tool['membergroups'])); $tool['hostreq'] = array_map('trim', explode(',', $tool['hostreq'])); // save tool info if (!$id) { $hzt = \Components\Tools\Models\Tool::createInstance($tool['toolname']); $hzt->toolname = $tool['toolname']; $hzt->title = $tool['title']; $hzt->published = 0; $hzt->state = 1; $hzt->priority = 3; $hzt->registered = $today; $hzt->state_changed = $today; $hzt->registered_by = User::get('username'); } else { $hzt = \Components\Tools\Models\Tool::getInstance($id); } // get tool id for newly registered tool $this->_toolid = $hzt->id; // save version info $hztv = $hzt->getRevision($editversion); if ($hztv) { $oldstatus = $hztv->toArray(); $oldstatus['toolstate'] = $hzt->state; $oldstatus['membergroups'] = $tool['membergroups']; if ($id) { $oldstatus['developers'] = $obj->getToolDevelopers($id); } } // NEW: save github repo as param $params = ''; $version = $objV->getVersionInfo($this->_toolid, 'dev'); if ($version && !empty($version[0])) { $txt = new \Hubzero\Config\Registry($version[0]->params); } else { $txt = new \Hubzero\Config\Registry(''); } $txt->set('github', $tool['github']); $ptype = empty($tool['publishType']) || $tool['publishType'] == 'standard' ? 'standard' : 'weber='; $txt->set('publishType', $ptype); $params = $txt->toString(); if ($editversion == 'dev') { if ($hztv === false) { Log::debug(__FUNCTION__ . "() HZTV createInstance dev_suffix={$dev_suffix}"); $hztv = \Components\Tools\Models\Version::createInstance($tool['toolname'], $tool['toolname'] . $dev_suffix); $oldstatus = $hztv->toArray(); $oldstatus['toolstate'] = $hzt->state; $oldstatus['membergroups'] = $tool['membergroups']; } if ($id) { $oldstatus['developers'] = $obj->getToolDevelopers($id); } $invokedir = $this->config->get('invokescript_dir', DS . 'apps'); $invokedir = rtrim($invokedir, DS); $hztv->toolid = $this->_toolid; $hztv->toolname = $tool['toolname']; $hztv->title = $tool['title']; $hztv->version = $tool['version']; $hztv->description = $tool['description']; $hztv->toolaccess = $tool['exec']; $hztv->codeaccess = $tool['code']; $hztv->wikiaccess = $tool['wiki']; $hztv->vnc_command = $invokedir . DS . $tool['toolname'] . DS . 'dev' . DS . 'middleware' . DS . 'invoke -T dev'; $hztv->vnc_geometry = $tool['vncGeometry']; $hztv->exportControl = $exportmap[$tool['exec']]; $hztv->state = 3; $hztv->instance = $tool['toolname'] . $dev_suffix; $hztv->mw = $this->config->get('default_mw', 'narwhal'); $hztv->hostreq = $tool['hostreq']; $hztv->params = $params; $hzt->add('version', $hztv->instance); } else { if ($hztv) { $hztv->toolid = $this->_toolid; $hztv->toolname = $tool['toolname']; $hztv->title = $tool['title']; $hztv->version = $tool['version']; $hztv->description = $tool['description']; $hztv->toolaccess = $tool['exec']; $hztv->codeaccess = $tool['code']; $hztv->wikiaccess = $tool['wiki']; $hztv->vnc_geometry = $tool['vncGeometry']; $hztv->exportControl = $exportmap[$tool['exec']]; $hztv->hostreq = $tool['hostreq']; $hzt->add('version', $hztv->instance); } } $this->_setTracAccess($tool['toolname'], $hztv->codeaccess, $hztv->wikiaccess); if ($this->_error) { App::abort(500, $this->_error); return; } // create/update developers group $gid = $hztv->getDevelopmentGroup(); if (empty($gid)) { $hzg = new \Hubzero\User\Group(); $hzg->cn = $group_prefix . strtolower($tool['toolname']); $hzg->create(); $hzg->set('type', 2); $hzg->set('description', Lang::txt('COM_TOOLS_DELEVOPMENT_GROUP', $tool['title'])); $hzg->set('created', Date::toSql()); $hzg->set('created_by', User::get('id')); } else { $hzg = \Hubzero\User\Group::getInstance($gid); } $hzg->set('members', $tool['developers']); $hztrac = \Hubzero\Trac\Project::find_or_create('app:' . $tool['toolname']); $hztrac->add_group_permission('apps', array('WIKI_ADMIN', 'MILESTONE_ADMIN', 'BROWSER_VIEW', 'LOG_VIEW', 'FILE_VIEW', 'CHANGESET_VIEW', 'ROADMAP_VIEW', 'TIMELINE_VIEW', 'SEARCH_VIEW')); $hztrac->add_group_permission($hzg->cn, array('WIKI_ADMIN', 'MILESTONE_ADMIN', 'BROWSER_VIEW', 'LOG_VIEW', 'FILE_VIEW', 'CHANGESET_VIEW', 'ROADMAP_VIEW', 'TIMELINE_VIEW', 'SEARCH_VIEW')); $hztv->set('owner', $hzg->cn); $hztv->add('owner', 'apps'); $hztv->set('member', $tool['membergroups']); // Add repo for new tools $auto_addrepo = $this->config->get('auto_addrepo', 1); if (!$id && $auto_addrepo) { $hzt->update(); // Make sure tool exists in database or gensvn won't configure apachce access to it $hztv->update(); // Make sure tool exists in database or gensvn won't configure apachce access to it // Run add repo $this->_addRepo($output, array('toolname' => $tool['toolname'], 'title' => $tool['title'], 'description' => $tool['description'])); if ($output['class'] != 'error') { $hzt->state = 2; $hzt->update(); } } // get ticket information if (empty($hzt->ticketid)) { $hzt->ticketid = $this->_createTicket($this->_toolid, $tool); } // create resource page $rid = \Components\Tools\Models\Tool::getResourceId($hzt->toolname, $hzt->id); if (empty($rid)) { include_once __DIR__ . DS . 'resource.php'; $resource = new Resource(); $rid = $resource->createPage($this->_toolid, $tool); // save authors by default //$objA = new \Components\Tools\Tables\Author($this->database); //if (!$id) { $objA->saveAuthors($tool['developers'], 'dev', $rid, '', $tool['toolname']); } if (!$id) { require_once __DIR__ . DS . 'authors.php'; $controller = new Authors(); $controller->saveTask(0, $rid, $tool['developers']); //$this->author_save(0, $rid, $tool['developers']); } } // display status page //$this->_task = 'status'; //$this->_msg = $id ? Lang::txt('COM_TOOLS_NOTICE_TOOL_INFO_CHANGED'): Lang::txt('COM_TOOLS_NOTICE_TOOL_INFO_REGISTERED'); $hzg->update(); $hzt->update(); $hztv->update(); // @FIXME: look $status = $hztv->toArray(); $status['toolstate'] = $hzt->state; $status['membergroups'] = $tool['membergroups']; $status['toolname'] = $tool['toolname']; if ($id) { $status['developers'] = $obj->getToolDevelopers($id); } // update history ticket if ($id && $oldstatus != $status && $editversion != 'current') { $this->_newUpdateTicket($hzt->id, $hzt->ticketid, $oldstatus, $status, $comment, 0, 1); } App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&task=status&app=' . $hzt->toolname), $id ? Lang::txt('COM_TOOLS_NOTICE_TOOL_INFO_CHANGED') : Lang::txt('COM_TOOLS_NOTICE_TOOL_INFO_REGISTERED')); }
/** * Get permissions for a user * * @param object $page * @return boolean */ public function authorise($page) { if ($page->config('access-check-done', false)) { return true; } $group = \Hubzero\User\Group::getInstance($this->_scope_id); if (!$group) { $group = new \Hubzero\User\Group(); $group->set('gidNumber', $this->_scope_id); } // Is this a group manager? if ($group) { // Is this a group manager? if ($group->is_member_of('managers', User::get('id'))) { // Allow access to all options $page->config()->set('access-page-manage', true); $page->config()->set('access-page-create', true); $page->config()->set('access-page-delete', true); $page->config()->set('access-page-edit', true); $page->config()->set('access-page-modify', true); $page->config()->set('access-comment-view', true); $page->config()->set('access-comment-create', true); $page->config()->set('access-comment-delete', true); $page->config()->set('access-comment-edit', true); } else { // Check permissions based on the page mode (knol/wiki) switch ($page->param('mode')) { // Knowledge article // This means there's a defined set of authors case 'knol': if ($page->get('created_by') == User::get('id') || $page->isAuthor(User::get('id'))) { $page->config()->set('access-page-create', true); $page->config()->set('access-page-delete', true); $page->config()->set('access-page-edit', true); $page->config()->set('access-page-modify', true); } else { if ($page->param('allow_changes')) { $page->config()->set('access-page-modify', true); // This allows users to suggest changes } } if ($page->param('allow_comments')) { $page->config()->set('access-comment-view', true); $page->config()->set('access-comment-create', true); } break; // Standard wiki // Standard wiki default: if ($group->is_member_of('members', User::get('id'))) { $page->config()->set('access-page-create', true); if (!$page->isLocked()) { $page->config()->set('access-page-delete', true); $page->config()->set('access-page-edit', true); $page->config()->set('access-page-modify', true); } $page->config()->set('access-comment-view', true); $page->config()->set('access-comment-create', true); } break; } } } return true; }
echo $posts; ?> new post<?php if ($posts > 1) { echo 's'; } ?> across <?php echo $groups; ?> of your groups ======================= <?php foreach ($this->posts as $group => $posts) { $group = Hubzero\User\Group::getInstance($group); echo $group->description; foreach ($posts as $post) { $inst = $post; ?> <?php echo User::getInstance($post->created_by)->get('name'); ?> | <?php echo Date::of($post->created)->toLocal('M j, Y g:i:s a'); ?> <?php echo Hubzero\Utility\Sanitize::stripAll($inst->get('comment'));
/** * 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; }
/** * Send a message * * @param object $database Database * @param string $option Name of the component * @param object $member Current member * @return mixed */ public function send($database, $option, $member) { // Ensure the user is logged in if (User::isGuest()) { return false; } // Check for request forgeries Request::checkToken(); // Incoming array of users to message $mbrs = array_map("trim", explode(',', Request::getVar('mbrs', array(), 'post'))); //array to hold members $email_users = array(); // foreach ($mbrs as $mbr) { // User ID if (is_numeric($mbr)) { $email_users[] = $mbr; } else { if (preg_match("/\\((\\d+)\\)/", $mbr, $matches)) { preg_match("/\\((\\d+)\\)/", $mbr, $matches); $email_users[] = $matches[1]; } else { // Username? $usr = User::getInstance($mbr); if ($id = $usr->get('id')) { $email_users[] = $id; } else { // User not found // Maybe it was a group? $grp = Hubzero\User\Group::getInstance($mbr); if ($grp && $grp->get('gidNumber')) { $email_users = array_merge($email_users, $grp->get('members')); } } } } } // Incoming message and subject $subject = Request::getVar('subject', Lang::txt('PLG_MEMBERS_MESSAGES_SUBJECT_MESSAGE')); $message = Request::getVar('message', ''); $no_html = Request::getInt('no_html', 0); if (!$subject || !$message) { if (!$no_html) { $this->addPluginMessage(Lang::txt('You must select a message recipient and enter a message.'), 'error'); return $this->redirect(Route::url($member->link() . '&active=messages&action=new')); } return App::abort(500, Lang::txt('You must select a message recipient and enter a message.')); } // Build the "from" data for the e-mail $from = array(); $from['name'] = $member->get('name'); $from['email'] = $member->get('email'); // Send the message if (!Event::trigger('xmessage.onSendMessage', array('member_message', $subject, $message, $from, $email_users, $option))) { $this->setError(Lang::txt('PLG_MEMBERS_MESSAGES_ERROR_MSG_USER_FAILED')); } // Determine if we're returning HTML or not // (if no - this is an AJAX call) if (!$no_html) { $this->addPluginMessage(Lang::txt('You have successfully sent a message.'), 'passed'); return App::redirect(Route::url($member->link() . '&active=messages&task=inbox')); } }
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * * HUBzero is a registered trademark of Purdue University. * * @package hubzero-cms * @copyright Copyright 2005-2015 HUBzero Foundation, LLC. * @license http://opensource.org/licenses/MIT MIT */ // No direct access defined('_HZEXEC_') or die; $group = Hubzero\User\Group::getInstance($this->group->gidNumber); //get status $status = ''; $options = ''; //determine group status if ($group->get('published') && !User::isGuest()) { $members = $group->get('members'); if (in_array(User::get('id'), $members)) { $status = 'member'; $options = '<a class="cancel tooltips" href="' . Route::url('index.php?option=' . $this->option . '&cn=' . $group->get('cn') . '&task=cancel') . '" title="' . Lang::txt('COM_GROUPS_TOOLBAR_CANCEL') . '">' . Lang::txt('COM_GROUPS_TOOLBAR_CANCEL') . '</a>'; $managers = $group->get('managers'); if (in_array(User::get('id'), $managers)) { $status = 'manager'; $options = ' <a class="customize tooltips" href="' . Route::url('index.php?option=' . $this->option . '&cn=' . $group->get('cn') . '&task=edit') . '" title="' . Lang::txt('COM_GROUPS_TOOLBAR_EDIT') . '">' . Lang::txt('COM_GROUPS_TOOLBAR_EDIT') . '</a>'; } } else {
<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'); $p = new \Components\Groups\Tables\Page($database); $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':
/** * 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(); }