RmCommandExecutor.java

package cn.bluejoe.elfinder.controller.executors;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.json.JSONObject;

import cn.bluejoe.elfinder.controller.executor.AbstractJsonCommandExecutor;
import cn.bluejoe.elfinder.controller.executor.FsItemEx;
import cn.bluejoe.elfinder.service.FsService;
import sk.iway.iwcm.Identity;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.i18n.Prop;
import sk.iway.iwcm.system.elfinder.FolderPropertiesService;
import sk.iway.iwcm.users.UsersDB;

public class RmCommandExecutor extends AbstractJsonCommandExecutor
{
	@Override
	public void execute(FsService fsService, HttpServletRequest request, ServletContext servletContext, JSONObject json)
			throws Exception
	{
		String[] targets = request.getParameterValues("targets[]");
		Prop prop = Prop.getInstance(request);
		//String current = request.getParameter("current");
		List<String> removed = new ArrayList<String>();
		Identity user = sk.iway.iwcm.system.elfinder.FsService.getCurrentUser();

		StringBuilder deniedFilenames = new StringBuilder();
		for (String target : targets)
		{

			FsItemEx ftgt = super.findItem(fsService, target);
			boolean deleted = false;
			boolean isFolder = ftgt.isFolder();
			if (user!=null && UsersDB.isFolderWritable(user.getWritableFolders(), ftgt.getParent().getPath()))
			{
				deleted = ftgt.delete();
				if (deleted)
				{
					removed.add(ftgt.getHash());

					if(isFolder == true) {
						FolderPropertiesService.deleteFolderProperties(ftgt.getPath(), request);
					}
				}
			}

			if (deleted == false)
			{
				if (!Tools.isEmpty(deniedFilenames)) deniedFilenames.append(", ");
				deniedFilenames.append(ftgt.getName());
			}
		}

		if (!Tools.isEmpty(deniedFilenames))
			json.put("error", prop.getText("components.elfinder.commands.rm.error", deniedFilenames.toString()));

		json.put("removed", removed.toArray());
	}
}