Source for file admin.php

Documentation is available at admin.php

  1. <?php
  2.  
  3. /* Admin interface, called by the "contentadmin" interface class */
  4.  
  5. class net_nemein_downloads_admin {
  6.  
  7. var $_debug_prefix;
  8.  
  9. var $_config;
  10. var $_topic;
  11. var $_release;
  12. var $_view;
  13. var $_layout;
  14. var $_current_release;
  15. var $_l10n;
  16. var $errcode;
  17. var $errstr;
  18. var $form_prefix;
  19. var $_l10n_midcom;
  20. var $_local_toolbar;
  21. var $_topic_toolbar;
  22.  
  23.  
  24. function net_nemein_downloads_admin($topic, $config) {
  25.  
  26. $this->_debug_prefix = "net.nemein.downloads admin::";
  27.  
  28. $this->_config = $config;
  29. $this->_topic = $topic;
  30. $this->_release = false;
  31. $this->_view = "";
  32. $this->_layout = false;
  33. $this->_current_release = $this->_config->get("current_release");
  34. $this->errcode = MIDCOM_ERROK;
  35. $this->errstr = "";
  36. $this->form_prefix = "net_nemein_downloads_";
  37.  
  38. // get l10n libraries
  39. $i18n =& $GLOBALS["midcom"]->get_service("i18n");
  40. $this->_l10n = $i18n->get_l10n("net.nemein.downloads");
  41. $this->_l10n_midcom = $i18n->get_l10n("midcom");
  42. $GLOBALS["view_l10n_midcom"] = $i18n->get_l10n("midcom");
  43. $this->_local_toolbar =& $GLOBALS['midcom_admin_content_toolbar_component'];
  44. $this->_topic_toolbar =& $GLOBALS['midcom_admin_content_toolbar_main'];
  45. }
  46.  
  47.  
  48. function can_handle($argc, $argv) {
  49.  
  50. debug_push($this->_debug_prefix . "can_handle");
  51.  
  52. // see if we can handle this request
  53. if ($argc == 0) {
  54. return true;
  55. }
  56. if ($argc == 1 && $argv[0] == "create") {
  57. return true;
  58. }
  59. switch ($argv[0]) {
  60. case "view":
  61. case "edit":
  62. case "delete":
  63. case "create":
  64. return true;
  65. default:
  66. return false;
  67. }
  68. debug_pop();
  69. return true;
  70. }
  71.  
  72.  
  73. function handle($argc, $argv) {
  74. global $_REQUEST;
  75.  
  76. debug_push($this->_debug_prefix . "handle");
  77.  
  78. // handle args, parse the url, save data from forms, prepare output
  79. $this->_topic_toolbar->add_item(Array(
  80. MIDCOM_TOOLBAR_URL => '',
  81. MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('set current release'),
  82. MIDCOM_TOOLBAR_HELPTEXT => null,
  83. MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_folder-properties.png',
  84. MIDCOM_TOOLBAR_ENABLED => true
  85. ));
  86. /* Add the new article link at the beginning*/
  87. $this->_topic_toolbar->add_item(Array(
  88. MIDCOM_TOOLBAR_URL => '',
  89. MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('create new release'),
  90. MIDCOM_TOOLBAR_HELPTEXT => null,
  91. MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_new.png',
  92. MIDCOM_TOOLBAR_ENABLED => true
  93. ), 0);
  94.  
  95. if ($argc == 0) {
  96. $this->_view = "welcome";
  97. debug_add ("viewport = welcome");
  98. if (isset($_REQUEST["net_nemein_downloads_setcurrentrelease"])) {
  99. $this->_topic->parameter("net.nemein.downloads","current_release",$_REQUEST["net_nemein_downloads_setcurrentrelease"]);
  100. debug_add ("Set current release");
  101. $this->_current_release = $_REQUEST["net_nemein_downloads_setcurrentrelease"];
  102. }
  103. debug_pop ();
  104. return true;
  105. }
  106.  
  107. switch ($argv[0]) {
  108.  
  109. case "view":
  110. $result = $this->_init_view($argv[1]);
  111. break;
  112.  
  113. case "edit":
  114. $result = $this->_init_edit($argv[1]);
  115. break;
  116.  
  117. case "delete":
  118. $result = $this->_init_delete($argv[1]);
  119. break;
  120.  
  121. case "create":
  122. $result = $this->_init_create(($argc==2) ? $argv[1] : null);
  123. break;
  124.  
  125. default:
  126. $result = false;
  127. break;
  128. }
  129. debug_pop();
  130. return $result;
  131.  
  132. }
  133.  
  134. function _init_create($id = null) {
  135. if (is_null($id)) {
  136. global $midgard;
  137. $release = mgd_get_article();
  138. $release->topic = $this->_topic->id;
  139. $release->up = 0;
  140. $release->author = $midgard->user;
  141. $stat = $release->create();
  142. if (!$stat) {
  143. $this->errstr = "Could not create Article: " . mgd_errstr();
  144. $this->errcode = MIDCOM_ERRFORBIDDEN;
  145. return false;
  146. } else {
  147. debug_add("Event $stat created");
  148. // Invalidate the cache
  149. $GLOBALS['midcom']->cache->invalidate($this->_topic->guid());
  150. $this->_init_view($stat);
  151. return true;
  152. }
  153. }
  154. }
  155.  
  156. function _init_edit($id) {
  157. if (!$this->_init_view($id)) {
  158. return false;
  159. }
  160. $this->_view = "edit";
  161. $GLOBALS["net_nemein_downloads_nap_activeid"] = $id;
  162. return true;
  163. }
  164. function _init_delete($id) {
  165. debug_add("Delete release $id called");
  166. if (!$this->_init_view($id)) {
  167. return false;
  168. }
  169. $guid = $this->_release->guid();
  170. $stat = midcom_helper_purge_object($guid);
  171. if ($stat) {
  172. // Update the index
  173. $indexer =& $GLOBALS['midcom']->get_service('indexer');
  174. $indexer->delete($guid);
  175. // Invalidate the cache modules
  176. $GLOBALS['midcom']->cache->invalidate($guid);
  177. $this->_view = "welcome";
  178. } else {
  179. debug_add ("Failed to delete release, reason ".mgd_errstr());
  180. }
  181. return $stat;
  182. }
  183. function _init_view($id) {
  184. global $net_nemein_downloads_layouts;
  185. /* Add the toolbar items */
  186. $this->_local_toolbar->add_item(Array(
  187. MIDCOM_TOOLBAR_URL => "view/{$id}.html",
  188. MIDCOM_TOOLBAR_LABEL => $this->_l10n_midcom->get('view'),
  189. MIDCOM_TOOLBAR_HELPTEXT => null,
  190. MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/view.png',
  191. MIDCOM_TOOLBAR_ENABLED => true
  192. ));
  193. $this->_local_toolbar->add_item(Array(
  194. MIDCOM_TOOLBAR_URL => "edit/{$id}.html",
  195. MIDCOM_TOOLBAR_LABEL => $this->_l10n_midcom->get('edit'),
  196. MIDCOM_TOOLBAR_HELPTEXT => null,
  197. MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/edit.png',
  198. MIDCOM_TOOLBAR_ENABLED => true
  199. ));
  200. $this->_local_toolbar->add_item(Array(
  201. MIDCOM_TOOLBAR_URL => "delete/{$id}.html",
  202. MIDCOM_TOOLBAR_LABEL => $this->_l10n_midcom->get('delete'),
  203. MIDCOM_TOOLBAR_HELPTEXT => null,
  204. MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/trash.png',
  205. MIDCOM_TOOLBAR_ENABLED => true
  206. ));
  207.  
  208. $release = mgd_get_article($id);
  209. if (!$release) {
  210. debug_add("release $id could not be loaded: " . mgd_errstr(), MIDCOM_LOG_INFO);
  211. $this->errstr = "release $id could not be loaded: " . mgd_errstr();
  212. $this->errcode = MIDCOM_ERRNOTFOUND;
  213. return false;
  214. }
  215. $this->_release = $release;
  216. $GLOBALS["net_nemein_downloads_nap_activeid"] = $id;
  217.  
  218. $this->_layout = new midcom_helper_datamanager($net_nemein_downloads_layouts);
  219. if (! $this->_layout) {
  220. $this->errstr = "Could not create layout, see Debug Log";
  221. $this->errcode = MIDCOM_ERRCRIT;
  222. debug_add($this->errstr, MIDCOM_LOG_CRIT);
  223. return false;
  224. }
  225.  
  226. if (! $this->_layout->init($this->_release)) {
  227. $this->errstr = "Could not initialize layout, see Debug Log";
  228. $this->errcode = MIDCOM_ERRCRIT;
  229. debug_add($this->errstr, MIDCOM_LOG_CRIT);
  230. return false;
  231. }
  232.  
  233. switch ($this->_layout->process_form()) {
  234.  
  235. case MIDCOM_DATAMGR_EDITING:
  236. case MIDCOM_DATAMGR_SAVED:
  237. case MIDCOM_DATAMGR_CANCELLED:
  238. $this->_view = "view";
  239. return true;
  240. case MIDCOM_DATAMGR_FAILED:
  241. $this->errstr = "Datamanager: " . $GLOBALS["midcom_errstr"];
  242. $this->errcode = MIDCOM_ERRCRIT;
  243. return false;
  244. }
  245. return true;
  246. }
  247. function show() {
  248.  
  249. global $net_nemein_downloads_layouts;
  250. global $midcom;
  251. global $view_topic;
  252. $view_topic = $this->_topic;
  253. $GLOBALS["view_l10n"] = $this->_l10n;
  254. debug_push($this->_debug_prefix . "show");
  255.  
  256. if ($this->_view == "welcome") {
  257. global $title;
  258. global $view_layouts;
  259. global $view_releases;
  260. global $view_current_release;
  261.  
  262. $view_layouts = array();
  263. if (is_array($net_nemein_downloads_layouts)) {
  264. foreach ($net_nemein_downloads_layouts as $layout) {
  265. $view_layouts[$layout["name"]] = $layout["description"];
  266. }
  267. }
  268. $view_releases = array();
  269. $releases = mgd_list_topic_articles($this->_topic->id,"reverse created");
  270. if ($releases) {
  271. while ($releases->fetch()) {
  272. $view_releases[$releases->guid()] = $releases->title;
  273. }
  274. }
  275. $view_current_release = $this->_current_release;
  276. midcom_show_style("admin-welcome");
  277. } elseif ($this->_view == "view") {
  278.  
  279. global $view;
  280. global $view_id;
  281. global $view_title;
  282. global $view_descriptions;
  283.  
  284. $view_descriptions = $this->_layout->get_fieldnames();
  285. $view_title = $GLOBALS["view_l10n"]->get("view release");
  286. $view = $this->_layout;
  287. $view_id = $this->_release->id;
  288.  
  289. midcom_show_style("admin-view");
  290. } elseif ($this->_view == "edit") {
  291. global $view;
  292. global $view_id;
  293. global $view_title;
  294. global $view_descriptions;
  295.  
  296. $view_descriptions = $this->_layout->get_fieldnames();
  297. $view_title = $GLOBALS["view_l10n"]->get("edit release");
  298. $view = $this->_layout;
  299. $view_id = $this->_release->id;
  300.  
  301. midcom_show_style("admin-edit");
  302. }
  303. debug_pop();
  304. return true;
  305. }
  306.  
  307.  
  308. function get_metadata() {
  309.  
  310. if ($this->_release) {
  311. return array (
  312. MIDCOM_META_CREATOR => $this->_release->creator,
  313. MIDCOM_META_EDITOR => $this->_release->revisor,
  314. MIDCOM_META_CREATED => $this->_release->created,
  315. MIDCOM_META_EDITED => $this->_release->revised
  316. );
  317. } else {
  318. return false;
  319. }
  320. }
  321.  
  322. } // admin
  323.  
  324. ?>

Documentation generated on Mon, 21 Nov 2005 18:11:17 +0100 by phpDocumentor 1.3.0RC3