Exemplo n.º 1
0
 /**
  * Optimize git repo
  *
  * @return  void
  */
 public function gitgcTask()
 {
     $id = Request::getVar('id', 0);
     // Get repo model
     require_once PATH_CORE . DS . 'components' . DS . 'com_projects' . DS . 'models' . DS . 'repo.php';
     $project = new Models\Project($id);
     if (!$project->exists()) {
         App::redirect(Route::url('index.php?option=' . $this->_option, false), Lang::txt('COM_PROJECTS_NOTICE_ID_NOT_FOUND'), 'error');
         return;
     }
     $repo = new \Components\Projects\Models\Repo($project, 'local');
     $params = array('path' => $repo->get('path'), 'adv' => true);
     $repo->call('optimize', $params);
     // Redirect
     App::redirect(Route::url('index.php?option=' . $this->_option . '&task=edit&id=' . $id, false), Lang::txt('Git repo optimized'));
 }
Exemplo n.º 2
0
 /**
  * Serve file (usually via public link)
  *
  * @param   string   $type
  * @param   integer  $projectid
  * @param   string   $query
  * @return  void
  */
 public function serve($type = '', $projectid = 0, $query = '')
 {
     $this->_area = $this->onProjectAreas();
     if ($type != $this->_area['name']) {
         return false;
     }
     $data = json_decode($query);
     if (!isset($data->file) || !$projectid) {
         return false;
     }
     $file = $data->file;
     $disp = isset($data->disp) ? $data->disp : 'inline';
     $limited = isset($data->limited) ? $data->limited : 0;
     $hash = isset($data->hash) ? $data->hash : 0;
     $repoName = isset($data->repo) ? $data->repo : 'local';
     // Instantiate a project
     $model = new \Components\Projects\Models\Project($projectid);
     if (!$model->exists() || $limited == 1 && !$model->access('member')) {
         // Throw error
         App::abort(403, Lang::txt('COM_PROJECTS_ERROR_ACTION_NOT_AUTHORIZED'));
     }
     // Load repo
     $repo = new \Components\Projects\Models\Repo($model, $repoName);
     $deleteTemp = false;
     if ($hash) {
         $tempPath = sys_get_temp_dir();
         $tempName = 'temp-' . \Components\Projects\Helpers\Html::generateCode(4, 4, 0, 1, 0) . basename($file);
         $serve = $tempPath . DS . $tempName;
         // Get file content
         $repo->call('content', $params = array('fileName' => $file, 'hash' => $hash, 'target' => $serve));
         $deleteTemp = true;
     } else {
         $serve = $repo->get('path') . DS . $file;
     }
     // Ensure the file exist
     if (!file_exists($serve)) {
         // Throw error
         App::abort(404, Lang::txt('COM_PROJECTS_FILE_NOT_FOUND'));
     }
     // Initiate a new content server and serve up the file
     $server = new \Hubzero\Content\Server();
     $server->filename($serve);
     $server->disposition($disp);
     $server->acceptranges(false);
     // @TODO fix byte range support
     $server->saveas(basename($file));
     $result = $server->serve();
     if ($deleteTemp) {
         // Delete downloaded temp file
         Filesystem::delete($serve);
     }
     if (!$result) {
         // Should only get here on error
         App::abort(404, Lang::txt('PLG_PROJECTS_FILES_SERVER_ERROR'));
     } else {
         exit;
     }
     return;
 }