--- /dev/null
+<?php
+/**
+ * ¥Õ¥©¥ë¥À ºï½ü
+ *
+ * @author kuwayama
+ * @version $Revision: 1.6 $ $Date: 2007/03/27 02:12:36 $
+ */
+//require_once(ACS_CLASS_DIR . 'ACSCommunityFolder.class.php');
+class DeleteFolderAction extends BaseAction
+{
+ // ³Îǧ²èÌÌɽ¼¨
+ function getDefaultView () {
+ $context = $this->getContext();
+ $controller = $context->getController();
+ $request = $context->getRequest();
+ $user = $context->getUser();
+
+ if (!$this->get_execute_privilege()) {
+ $controller->forward(SECURE_MODULE, SECURE_ACTION);
+ return;
+ }
+
+ // ÂоݤȤʤë¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID¤ò¼èÆÀ
+ $target_community_id = $request->getParameter('community_id');
+
+ $community_folder_obj = $request->getAttribute('community_folder_obj');
+
+ // ºï½üÂоݤò¼èÆÀ
+ // ¥Õ¥©¥ë¥À
+ $selected_folder_obj_array = array(); // View ¤Ë¤ï¤¿¤¹ºï½üÂоݤΥե©¥ë¥À
+ $selected_folder_row_array = array();
+ $selected_folder_array = $request->getParameter('selected_folder');
+ if ($selected_folder_array) {
+ foreach ($selected_folder_array as $selected_folder_id) {
+ $_selected_folder_obj = $community_folder_obj->folder_obj->get_folder_obj($selected_folder_id);
+ array_push($selected_folder_obj_array, $_selected_folder_obj);
+ }
+ }
+
+ // ¥Õ¥¡¥¤¥ë
+ $selected_file_obj_array = array(); // View ¤Ë¤ï¤¿¤¹ºï½üÂоݤΥե¡¥¤¥ë
+ $selected_file_row_array = array();
+ $selected_file_array = $request->getParameter('selected_file');
+ if ($selected_file_array) {
+ foreach ($selected_file_array as $selected_file_id) {
+ $_selected_file_obj = $community_folder_obj->folder_obj->get_file_obj($selected_file_id);
+ array_push($selected_file_obj_array, $_selected_file_obj);
+ }
+ }
+
+ // ¥¢¥¯¥»¥¹À©¸æ: ¥×¥Ã¥È¥Õ¥©¥ë¥À¤Þ¤¿¤Ï¥Õ¥¡¥¤¥ë¤ÏNG //
+ foreach ($selected_folder_obj_array as $selected_folder_obj) {
+ if ($selected_folder_obj->get_community_id() != $target_community_id) {
+ $controller->forward(SECURE_MODULE, SECURE_ACTION);
+ }
+ }
+ foreach ($selected_file_obj_array as $selected_file_obj) {
+ if ($selected_file_obj->get_owner_community_id() != $target_community_id) {
+ $controller->forward(SECURE_MODULE, SECURE_ACTION);
+ }
+ }
+
+
+ // set
+ $request->setAttribute('selected_folder_obj_array', $selected_folder_obj_array);
+ $request->setAttribute('selected_file_obj_array', $selected_file_obj_array);
+
+ return View::SUCCESS;
+ }
+
+ function execute () {
+ $context = $this->getContext();
+ $controller = $context->getController();
+ $request = $context->getRequest();
+ $user = $context->getUser();
+
+ if (!$this->get_execute_privilege()) {
+ $controller->forward(SECURE_MODULE, SECURE_ACTION);
+ return;
+ }
+
+ // ɬ¿Ü¥Á¥§¥Ã¥¯
+ // Validator ¤Ç¤Ç¤¤Ê¤¤¥Á¥§¥Ã¥¯¤Ï¤³¤³¤Ç¹Ô¤¦
+ if (!$request->getParameter('selected_folder') && !$request->getParameter('selected_file')) {
+ // ¥¨¥é¡¼¤Î¾ì¹ç¡¢½èÍý½ªÎ»
+ return $this->setError($controller, $request, $user, 'selected_folder',
+ ACSMsg::get_msg('Community', 'DeleteFolderAction.class.php', 'M001'));
+ }
+
+ $acs_user_info_row = $user->getAttribute('acs_user_info_row');
+
+ // ÂоݤȤʤë¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID¤ò¼èÆÀ
+ $target_community_id = $request->getParameter('community_id');
+ // ÂоݤȤʤë¥Õ¥©¥ë¥ÀID¤ò¼èÆÀ
+ $target_community_folder_id = $request->getParameter('folder_id');
+
+ // ɽ¼¨¤¹¤ë¥Ú¡¼¥¸¤Î½êͼԾðÊó¼èÆÀ
+ $target_community_info_row = ACSCommunity::get_community_row($target_community_id);
+ // ¥Õ¥©¥ë¥À¾ðÊó¼èÆÀ
+ $community_folder_obj = new ACSCommunityFolder($target_community_id,
+ $acs_user_info_row,
+ $target_community_folder_id);
+
+ // set
+ $request->setAttribute('target_community_info_row', $target_community_info_row);
+ $request->setAttribute('community_folder_obj', $community_folder_obj);
+
+ /* ------------ */
+ /* ³Îǧ²èÌÌɽ¼¨ */
+ /* ------------ */
+ if ($request->getParameter('action_type') == 'confirm') {
+ return $this->getDefaultView();
+ }
+
+ /* -------- */
+ /* ºï½ü½èÍý */
+ /* -------- */
+ elseif ($request->getParameter('action_type') == 'delete') {
+ ACSDB::_do_query("BEGIN");
+ // ¥Õ¥©¥ë¥À
+ $folder_row_array = array();
+ $delete_folder_id_array = $request->getParameter('selected_folder');
+ if ($delete_folder_id_array) {
+ foreach ($delete_folder_id_array as $folder_id) {
+ // ºï½ü½èÍý
+ $_folder_obj = $community_folder_obj->folder_obj->get_folder_obj($folder_id);
+ $ret = $community_folder_obj->delete_folder($_folder_obj);
+ if (!$ret) {
+ ACSDB::_do_query("ROLLBACK;");
+ print "ERROR: Remove folder failed.";
+ exit;
+ }
+ }
+ }
+
+ // ¥Õ¥¡¥¤¥ë
+ $file_row_array = array();
+ $delete_file_id_array = $request->getParameter('selected_file');
+ if ($delete_file_id_array) {
+ foreach ($delete_file_id_array as $file_id) {
+ // ¸ø³«ÍÑ¥Õ¥¡¥¤¥ë¾ðÊó
+ ACSFileDetailInfo::delete_file_public_access($file_id);
+
+ // ºï½ü½èÍý
+ $_file_obj = $community_folder_obj->folder_obj->get_file_obj($file_id);
+ $ret = $_file_obj->delete_file();
+ if (!$ret) {
+ ACSDB::_do_query("ROLLBACK;");
+ print "ERROR: Remove file failed.";
+ exit;
+ }
+ }
+ }
+
+ ACSDB::_do_query("COMMIT;");
+
+ // ¥Õ¥©¥ë¥Àɽ¼¨¥¢¥¯¥·¥ç¥ó¸Æ¤Ó½Ð¤·
+ $folder_action = $this->getControllerPath('Community', 'Folder');
+ $folder_action .= '&community_id=' . $target_community_id;
+ $folder_action .= '&folder_id=' . $target_community_folder_id;
+
+ header("Location: $folder_action");
+ }
+ }
+
+ function handleError () {
+ $context = $this->getContext();
+ $controller = $context->getController();
+ $request = $context->getRequest();
+ $user = $context->getUser();
+
+ /* ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò¥»¥Ã¥·¥ç¥ó¤Ë¥»¥Ã¥È */
+ $this->sendError($controller, $request, $user);
+
+ // ¥Õ¥©¥ë¥Àɽ¼¨¥¢¥¯¥·¥ç¥ó¸Æ¤Ó½Ð¤·
+ $acs_user_info_row = $user->getAttribute('acs_user_info_row');
+ $target_community_id = $request->getParameter('community_id');
+ $target_community_folder_id = $request->getParameter('folder_id');
+
+ $folder_action = $this->getControllerPath('Community', 'Folder');
+ $folder_action .= '&community_id=' . $target_community_id;
+ $folder_action .= '&folder_id=' . $target_community_folder_id;
+ header("Location: $folder_action");
+ }
+
+ function isSecure () {
+ return false;
+ }
+
+ function getCredential () {
+ return array('COMMUNITY_MEMBER');
+ }
+
+ function get_execute_privilege () {
+ $context = $this->getContext();
+ $user = $context->getUser();
+
+ // ¥³¥ß¥å¥Ë¥Æ¥£¥á¥ó¥Ð¤ÏOK
+ if ($user->hasCredential('COMMUNITY_MEMBER')) {
+ return true;
+ }
+ return false;
+ }
+
+}
+?>