10 namespace Fossology\Reuser;
15 use Symfony\Component\HttpFoundation\JsonResponse;
16 use Symfony\Component\HttpFoundation\Request;
17 use Symfony\Component\HttpFoundation\Response;
20 include_once(__DIR__ .
"/../agent/version.php");
28 const NAME =
"plugin_reuser";
41 if (empty($filename)) {
45 $nameWithoutExt = preg_replace(
'/\.[^.]+$/',
'', $filename);
46 $parts = explode(
'-', $nameWithoutExt);
47 $packageName = strtolower($parts[0]);
61 public function __construct()
63 parent::__construct(self::NAME, array(
64 self::TITLE => _(
"Automatic Clearing Decision Reuser"),
68 $this->folderDao = $this->
getObject(
'dao.folder');
78 $folderUploads = $this->folderDao->getAllUploadsForGroup($trustGroupId);
79 $uploadsById = array();
80 foreach ($folderUploads as $uploadProgress) {
81 $key = $uploadProgress->getId();
82 $display = $uploadProgress->getFilename() . _(
" from ")
84 .
' (' . $uploadProgress->getStatusString() .
')';
85 $uploadsById[$key] = $display;
94 protected function handle(Request $request)
96 $this->folderDao->ensureTopLevelFolder();
97 $ajax = $request->get(
'do');
99 if ($ajax ===
'getUploads') {
101 $uploads = (empty($fid) || empty($tgid))
104 return new JsonResponse($uploads, JsonResponse::HTTP_OK);
107 if ($ajax ===
'getOsselotVersions') {
108 $pkg =
trim($request->get(
'pkg', $request->get(
'osselotPackage',
'')));
110 return new JsonResponse([], JsonResponse::HTTP_OK);
114 $versions = $helper->getVersions($pkg);
115 }
catch (\Exception $e) {
118 return new JsonResponse($versions, JsonResponse::HTTP_OK);
121 if ($ajax ===
'extractPackageName') {
122 $filename =
trim($request->get(
'filename',
''));
123 if ($filename ===
'') {
124 return new JsonResponse([
'packageName' =>
''], JsonResponse::HTTP_OK);
128 return new JsonResponse([
'packageName' => $packageName], JsonResponse::HTTP_OK);
131 return new Response(
'called without valid method', Response::HTTP_METHOD_NOT_ALLOWED);
141 $folderGroupPair = explode(
',', $folderGroup,2);
142 if (count($folderGroupPair) == 2) {
143 list($folder, $trustGroup) = $folderGroupPair;
144 $folderId = intval($folder);
145 $trustGroupId = intval($trustGroup);
150 return array($folderId, $trustGroupId);
161 $osselotAvailable = (array_key_exists(
'EnableOsselotReuse', $SysConf[
'SYSCONFIG']) && $SysConf[
'SYSCONFIG'][
"EnableOsselotReuse"] ===
'true');
162 if (!array_key_exists(
'folderStructure', $vars)) {
163 $rootFolderId = $this->folderDao->getRootFolder(
Auth::getUserId())->getId();
164 $vars[
'folderStructure'] = $this->folderDao->getFolderStructure($rootFolderId);
166 if ($this->folderDao->isWithoutReusableFolders($vars[
'folderStructure'])) {
172 if (empty($folderId) && !empty($vars[
'folderStructure'])) {
173 $folderId = $vars[
'folderStructure'][0][FolderDao::FOLDER_KEY]->getId();
180 $vars[
'osselotAvailable'] = $osselotAvailable;
181 $vars[
'defaultPkgName'] =
'';
184 $renderer = $this->
getObject(
'twig.environment');
185 return $renderer->load(
'agent_reuser.html.twig')->render($vars);
196 $osselotAvailable = (array_key_exists(
'EnableOsselotReuse', $SysConf[
'SYSCONFIG']) && $SysConf[
'SYSCONFIG'][
"EnableOsselotReuse"] ===
'true');
200 $vars[
'osselotAvailable'] = $osselotAvailable;
202 $renderer = $this->
getObject(
'twig.environment');
203 return $renderer->load(
'agent_reuser.js.twig')->render($vars);
213 return '<script src="scripts/tools.js" type="text/javascript"></script>';
227 if (empty($trustGroupId)) {
230 $folderUploads = $this->folderDao->getFolderUploads($folderId, $trustGroupId);
232 $uploadsById = array();
233 foreach ($folderUploads as $uploadProgress) {
234 $key = $uploadProgress->getId().
','.$uploadProgress->getGroupId();
235 $display = $uploadProgress->getFilename() . _(
" from ")
237 .
' ('. $uploadProgress->getStatusString() .
')';
238 $uploadsById[$key] = $display;
244 register_plugin(
new ReuserPlugin());
Contains the constants and helpers for authentication of user.
static getUserId()
Get the current user's id.
static getGroupId()
Get the current user's group id.
static isAdmin()
Check if user is admin.
getFolderIdAndTrustGroup($folderGroup)
For a given folder group, extract forder id and trust group id.
extractPackageNameFromFilename($filename)
renderFoot(&$vars)
Render footer template.
const REUSE_FOLDER_SELECTOR_NAME
Reuse upload folder element name.
renderContent(&$vars)
Load the data in array and render twig template.
const FOLDER_PARAMETER_NAME
Folder parameter HTML element name.
prepareFolderUploads($folderId, $trustGroupId=null)
For a given folder id, collect all uploads.
getScriptIncludes(&$vars)
Render JS inclues.
getAllUploads()
Get all uploads accessible to current user.
const UPLOAD_TO_REUSE_SELECTOR_NAME
Upload to reuse HTML element name.
Convert2BrowserTime($server_time)
Convert the server time to browser time.
char * trim(char *ptext)
Trimming whitespace.
list_t type structure used to keep various lists. (e.g. there are multiple lists).