示例#1
0
 /**
  * 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();
 }
示例#2
0
 /**
  * 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;
 }