1 package net.sourceforge.blogentis.modules.actions;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import java.util.Iterator;
26 import java.util.List;
27
28 import net.sourceforge.blogentis.om.Blog;
29 import net.sourceforge.blogentis.plugins.BlogPluginService;
30 import net.sourceforge.blogentis.plugins.IPlugin;
31 import net.sourceforge.blogentis.plugins.base.BaseBlogPlugin;
32 import net.sourceforge.blogentis.turbine.BlogRunData;
33 import net.sourceforge.blogentis.turbine.SecureBlogAction;
34 import net.sourceforge.blogentis.utils.BlogConstants;
35 import net.sourceforge.blogentis.utils.MappedConfiguration;
36
37 import org.apache.turbine.util.RunData;
38 import org.apache.velocity.context.Context;
39
40 /***
41 * @author abas
42 */
43 public class BlogPluginMod
44 extends SecureBlogAction {
45
46 protected String[] getPermissions() {
47 return new String[] {BlogConstants.PERM_ADMIN_BLOG};
48 }
49
50 protected IPlugin getPlugin(RunData data) {
51 int p = data.getParameters().getInt("p", -1);
52 if (p == -1)
53 return null;
54 Iterator plugins = BlogPluginService.getPlugins();
55 for(; p > 0 && plugins.hasNext(); p--)
56 plugins.next();
57 if (!plugins.hasNext())
58 return null;
59 return (IPlugin)plugins.next();
60 }
61
62 public void doPerform(RunData data, Context context)
63 throws Exception {
64 data.setMessage("Unknown plugin action specified in the request.");
65 }
66
67 public void doEnable(RunData data, Context context)
68 throws Exception {
69 IPlugin plugin = getPlugin(data);
70 if (plugin == null)
71 return;
72 String name = plugin.getClass().getName();
73 Blog blog = ((BlogRunData)data).getBlog();
74 MappedConfiguration conf = blog.getConfiguration();
75 List list = conf.getList(BlogPluginService.PLUGIN_LIST, null);
76 if (list != null && list.contains(name))
77 return;
78 conf.addProperty(BlogPluginService.PLUGIN_LIST, name);
79 conf.save();
80 BlogPluginService.getInstance().reloadExtensionPointsForBlog(blog);
81 }
82
83 public void doDisable(RunData data, Context context)
84 throws Exception {
85 IPlugin plugin = getPlugin(data);
86 if (plugin == null || plugin instanceof BaseBlogPlugin)
87 return;
88 String name = plugin.getClass().getName();
89 Blog blog = ((BlogRunData)data).getBlog();
90 MappedConfiguration conf = blog.getConfiguration();
91 List list = conf.getList(BlogPluginService.PLUGIN_LIST, null);
92 if (list != null && !list.contains(name))
93 return;
94 list.remove(name);
95 conf.setProperty(BlogPluginService.PLUGIN_LIST, list);
96 conf.save();
97 BlogPluginService.getInstance().reloadExtensionPointsForBlog(blog);
98 }
99 }