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');
80 $allFolder = $this->folderDao->getAllFolderIds();
82 for ($i=0; $i <
sizeof($allFolder); $i++) {
84 foreach ($listObject as $key => $value) {
85 $result[explode(
",",$key)[0]] = $value;
95 protected function handle(Request $request)
97 $this->folderDao->ensureTopLevelFolder();
98 $ajax = $request->get(
'do');
100 if ($ajax ===
'getUploads') {
102 $uploads = (empty($fid) || empty($tgid))
105 return new JsonResponse($uploads, JsonResponse::HTTP_OK);
108 if ($ajax ===
'getOsselotVersions') {
109 $pkg =
trim($request->get(
'pkg', $request->get(
'osselotPackage',
'')));
111 return new JsonResponse([], JsonResponse::HTTP_OK);
115 $versions = $helper->getVersions($pkg);
116 }
catch (\Exception $e) {
119 return new JsonResponse($versions, JsonResponse::HTTP_OK);
122 if ($ajax ===
'extractPackageName') {
123 $filename =
trim($request->get(
'filename',
''));
124 if ($filename ===
'') {
125 return new JsonResponse([
'packageName' =>
''], JsonResponse::HTTP_OK);
129 return new JsonResponse([
'packageName' => $packageName], JsonResponse::HTTP_OK);
132 return new Response(
'called without valid method', Response::HTTP_METHOD_NOT_ALLOWED);
142 $folderGroupPair = explode(
',', $folderGroup,2);
143 if (count($folderGroupPair) == 2) {
144 list($folder, $trustGroup) = $folderGroupPair;
145 $folderId = intval($folder);
146 $trustGroupId = intval($trustGroup);
151 return array($folderId, $trustGroupId);
162 $osselotAvailable = (array_key_exists(
'EnableOsselotReuse', $SysConf[
'SYSCONFIG']) && $SysConf[
'SYSCONFIG'][
"EnableOsselotReuse"] ===
'true');
163 if (!array_key_exists(
'folderStructure', $vars)) {
164 $rootFolderId = $this->folderDao->getRootFolder(
Auth::getUserId())->getId();
165 $vars[
'folderStructure'] = $this->folderDao->getFolderStructure($rootFolderId);
167 if ($this->folderDao->isWithoutReusableFolders($vars[
'folderStructure'])) {
173 if (empty($folderId) && !empty($vars[
'folderStructure'])) {
174 $folderId = $vars[
'folderStructure'][0][FolderDao::FOLDER_KEY]->getId();
181 $vars[
'osselotAvailable'] = $osselotAvailable;
182 $vars[
'defaultPkgName'] =
'';
185 $renderer = $this->
getObject(
'twig.environment');
186 return $renderer->load(
'agent_reuser.html.twig')->render($vars);
197 $osselotAvailable = (array_key_exists(
'EnableOsselotReuse', $SysConf[
'SYSCONFIG']) && $SysConf[
'SYSCONFIG'][
"EnableOsselotReuse"] ===
'true');
201 $vars[
'osselotAvailable'] = $osselotAvailable;
203 $renderer = $this->
getObject(
'twig.environment');
204 return $renderer->load(
'agent_reuser.js.twig')->render($vars);
214 return '<script src="scripts/tools.js" type="text/javascript"></script>';
228 if (empty($trustGroupId)) {
231 $folderUploads = $this->folderDao->getFolderUploads($folderId, $trustGroupId);
233 $uploadsById = array();
234 foreach ($folderUploads as $uploadProgress) {
235 $key = $uploadProgress->getId().
','.$uploadProgress->getGroupId();
236 $display = $uploadProgress->getFilename() . _(
" from ")
238 .
' ('. $uploadProgress->getStatusString() .
')';
239 $uploadsById[$key] = $display;
245 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 curent 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).