FOSSology  4.4.0
Open Source License Compliance by Open Source Software
AdminContentMove.php
1 <?php
2 /*
3  SPDX-FileCopyrightText: © 2015 Siemens AG
4 
5  SPDX-License-Identifier: GPL-2.0-only
6 */
7 
11 use Symfony\Component\HttpFoundation\Request;
12 use Symfony\Component\HttpFoundation\Response;
13 
15 {
16  const NAME = 'content_move';
17 
19  private $folderDao;
20 
21  function __construct()
22  {
23  parent::__construct(self::NAME, array(
24  self::TITLE => _("Move upload or folder"),
25  self::MENU_LIST => "Organize::Folders::Move or Copy",
26  self::PERMISSION => Auth::PERM_WRITE,
27  self::REQUIRES_LOGIN => TRUE
28  ));
29  $this->folderDao = $this->getObject('dao.folder');
30  }
31 
32  protected function RegisterMenus()
33  {
34  parent::RegisterMenus();
35  if (!$this->isRequiresLogin() || $this->isLoggedIn()) {
36  menu_insert("Main::Organize::Uploads::Move or Copy", 0, $this->name, $this->name);
37  }
38  }
39 
44  protected function handle(Request $request)
45  {
46  $userId = Auth::getUserId();
47  $vars = array();
48 
49  $folderContentIds = $request->get('foldercontent', array());
50  $parentFolderId = intval($request->get('toFolder'));
51  $isCopyRequest = $request->get('copy');
52 
53  $vars['message'] = $this->performAction($folderContentIds, $parentFolderId, $isCopyRequest);
54 
55  $rootFolderId = $this->folderDao->getRootFolder($userId)->getId();
56  /* @var $uiFolderNav FolderNav */
57  $uiFolderNav = $this->getObject('ui.folder.nav');
58  $vars['folderTree'] = $uiFolderNav->showFolderTree($rootFolderId);
59  $vars['folderStructure'] = $this->folderDao->getFolderStructure($rootFolderId);
60  return $this->render('admin_content_move.html.twig', $this->mergeWithDefault($vars));
61  }
62 
70  private function performAction($folderContentIds, $parentFolderId, $isCopyRequest)
71  {
72  $message = "";
73  for ($i = 0; $i < sizeof($folderContentIds); $i++) {
74  $folderContentId = intval($folderContentIds[$i]);
75  if ($folderContentId && $parentFolderId && $isCopyRequest) {
76  try {
77  $this->folderDao->copyContent($folderContentId, $parentFolderId);
78  } catch (Exception $ex) {
79  $message .= $ex->getMessage();
80  }
81  } elseif ($folderContentId && $parentFolderId) {
82  try {
83  $this->folderDao->moveContent($folderContentId, $parentFolderId);
84  } catch (Exception $ex) {
85  $message .= $ex->getMessage();
86  }
87  }
88  }
89  return $message;
90  }
91 
100  public function copyContent($uploadIds, $parentFolderId, $isCopyRequest)
101  {
102  return $this->performAction($uploadIds, $parentFolderId, $isCopyRequest);
103  }
104 }
105 
106 register_plugin(new AdminContentMove());
RegisterMenus()
Customize submenus.
copyContent($uploadIds, $parentFolderId, $isCopyRequest)
performAction($folderContentIds, $parentFolderId, $isCopyRequest)
handle(Request $request)
Contains the constants and helpers for authentication of user.
Definition: Auth.php:24
render($templateName, $vars=null, $headers=null)
menu_insert($Path, $LastOrder=0, $URI=NULL, $Title=NULL, $Target=NULL, $HTML=NULL)
Given a Path, order level for the last item, and optional plugin name, insert the menu item.
#define PERM_WRITE
Read-Write permission.
Definition: libfossology.h:33