/** * Display a list of versions for a tool * * @return void */ public function versionsTask() { $this->view->setLayout('versions'); if (!$this->_toolid) { $this->_toolid = Request::getInt('toolid', 0); } // Create a Tool object $obj = new \Components\Tools\Tables\Tool($this->database); // do we have an alias? if ($this->_toolid == 0) { if ($alias = Request::getVar('app', '')) { $this->_toolid = $obj->getToolId($alias); } } // Couldn't get ID, exit if (!$this->_toolid) { App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller)); return; } // get vars if (!$this->_action) { $this->_action = Request::getVar('action', 'dev'); } if (!$this->_error) { $this->_error = Request::getVar('error', ''); } // check access rights if (!$this->_checkAccess($this->_toolid)) { App::abort(403, Lang::txt('COM_TOOLS_ALERTNOTAUTH')); return; } // Create a Tool Version object $objV = new \Components\Tools\Tables\Version($this->database); $objV->getToolVersions($this->_toolid, $versions, ''); // Set the page title $this->view->title = Lang::txt(strtoupper($this->_option)) . ': '; $this->view->title .= $this->_action == 'confirm' ? Lang::txt('COM_TOOLS_CONTRIBTOOL_APPROVE_TOOL') : Lang::txt('COM_TOOLS_TASK_VERSIONS'); Document::setTitle($this->view->title); $hzt = \Components\Tools\Models\Tool::getInstance($this->_toolid); $hztv_dev = $hzt->getRevision('development'); $hztv_current = $hzt->getRevision('current'); $this->view->status = array('toolid' => $hzt->id, 'published' => $hzt->published, 'version' => $hztv_dev->version, 'state' => $hzt->state, 'toolname' => $hzt->toolname, 'membergroups' => \Components\Tools\Models\Tool::getToolGroups($this->_toolid), 'resourceid' => \Components\Tools\Models\Tool::getResourceId($this->_toolid), 'currentrevision' => is_object($hztv_current) ? $hztv_current->revision : '', 'currentversion' => is_object($hztv_current) ? $hztv_current->version : ''); if (Pathway::count() <= 0) { Pathway::append(Lang::txt(strtoupper($this->_option)), 'index.php?option=' . $this->_option); } Pathway::append(Lang::txt('COM_TOOLS_STATUS') . ' ' . Lang::txt('COM_TOOLS_FOR') . ' ' . $this->view->status['toolname'], 'index.php?option=' . $this->_option . '&controller=' . $this->_controller . 'task=status&app=' . $this->view->status['toolname']); if ($this->_action != 'confirm') { Pathway::append(Lang::txt('COM_TOOLS_TASK_VERSIONS'), 'index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&task=versions&app=' . $this->view->status['toolname']); } $this->view->admin = $this->config->get('access-admin-component'); $this->view->error = $this->_error; $this->view->action = $this->_action; $this->view->versions = $versions; foreach ($this->getErrors() as $error) { $this->view->setError($error); } $this->view->display(); }
/** * Short description for 'saveMemberGroups' * * Long description (if any) ... * * @param string $toolid Parameter description (if any) ... * @param array $newgroups Parameter description (if any) ... * @param string $editversion Parameter description (if any) ... * @param array $membergroups Parameter description (if any) ... * @return boolean Return description (if any) ... */ public function saveMemberGroups($toolid = NULL, $newgroups, $editversion = 'dev', $membergroups = array()) { if (!$toolid) { return false; } require_once PATH_CORE . DS . 'components' . DS . 'com_tools' . DS . 'models' . DS . 'tool.php'; $membergroups = \Components\Tools\Models\Tool::getToolGroups($toolid); $membergroups = \Components\Tools\Helpers\Utils::transform($membergroups, 'cn'); $newgroups = \Components\Tools\Helpers\Utils::transform($newgroups, 'cn'); $to_delete = array_diff($membergroups, $newgroups); if (count($to_delete) > 0 && $editversion != 'current') { foreach ($to_delete as $del) { $query = "DELETE FROM {$this->_tbl} WHERE cn=" . $this->_db->quote($del) . " AND toolid=" . $this->_db->quote($toolid) . " AND role=0"; $this->_db->setQuery($query); $this->_db->query(); } } if (count($newgroups) > 0) { foreach ($newgroups as $newgroup) { if (\Hubzero\User\Group::exists($newgroup) && !in_array($newgroup, $membergroups)) { // create an entry in tool_groups table $this->save($newgroup, $toolid, '0'); } } } return true; }