OSDN Git Service

add ACS webapp, sql, htdocs
[acs/acs.git] / webapp / modules / User / actions / MoveFolderAction.class.php
diff --git a/webapp/modules/User/actions/MoveFolderAction.class.php b/webapp/modules/User/actions/MoveFolderAction.class.php
new file mode 100644 (file)
index 0000000..360d887
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+/**
+ * ¥Õ¥©¥ë¥À °ÜÆ°½èÍý
+ *
+ * @author  kuwayama
+ * @version $Revision: 1.6 $ $Date: 2006/11/20 08:44:25 $
+ */
+//require_once(ACS_CLASS_DIR . 'ACSUserFolder.class.php');
+class MoveFolderAction extends BaseAction
+{
+       function execute() {
+               $context = $this->getContext();
+               $controller = $context->getController();
+               $request =  $context->getRequest();
+               $user = $context->getUser();
+               $acs_user_info_row = $user->getAttribute('acs_user_info_row');
+
+               // ÂоݤȤʤë¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID¤ò¼èÆÀ
+               $target_user_community_id = $request->getParameter('id');
+               // ÂоݤȤʤë¥Õ¥©¥ë¥ÀID¤ò¼èÆÀ
+               $target_user_community_folder_id = $request->getParameter('folder_id');
+
+               // É½¼¨¤¹¤ë¥Ú¡¼¥¸¤Î½êÍ­¼Ô¾ðÊó¼èÆÀ
+               $target_user_info_row = ACSUser::get_user_info_row_by_user_community_id($target_user_community_id);
+               // ¥Õ¥©¥ë¥À¾ðÊó¼èÆÀ
+               $user_folder_obj = new ACSUserFolder(
+                               $target_user_community_id,
+                               $acs_user_info_row,
+                               $target_user_community_folder_id);
+
+               // set
+               $request->setAttribute('target_user_info_row', $target_user_info_row);
+               $request->setAttribute('user_folder_obj', $user_folder_obj);
+
+               // °ÜÆ°Àè¥Õ¥©¥ë¥ÀID
+               $move_target_folder_id = $request->getParameter('selected_move_folder_id');
+
+               /* -------- */
+               /* °ÜÆ°½èÍý */
+               /* -------- */
+               ACSDB::_do_query("BEGIN");
+
+               // °ÜÆ°À褬¥ë¡¼¥È¥Õ¥©¥ë¥À¤Î¾ì¹ç¤Ï¡¢¸ø³«ÈϰϤò¥»¥Ã¥È¤¹¤ëɬÍפ¬¤¢¤ë¤¿¤á¡¢
+               // ¥ë¡¼¥È¥Õ¥©¥ë¥À¤Î¾ðÊó¤ò¼èÆÀ¤·¤Æ¤ª¤¯
+               $root_folder_obj = ACSFolder::get_folder_instance(
+                               $user_folder_obj->get_root_folder_row($user_folder_obj->get_community_id()));
+
+               // ¥Õ¥©¥ë¥À
+               $folder_row_array = array();
+               $selected_folder_id_array = $request->getParameter('selected_folder');
+               if ($selected_folder_id_array) {
+                       foreach ($selected_folder_id_array as $folder_id) {
+                               // °ÜÆ°¤¹¤ë¥Õ¥©¥ë¥À¼èÆÀ
+                               $_folder_obj = $user_folder_obj->folder_obj->get_folder_obj($folder_id);
+
+                               // °ÜÆ°½èÍý
+                               $ret = $_folder_obj->move_folder($move_target_folder_id);
+                               if (!$ret) {
+                                       ACSDB::_do_query("ROLLBACK");
+                                       print "ERROR: Move folder failed.";
+                                       exit;
+                               }
+
+                               // ¸ø³«ÈϰϤò¹¹¿·
+                               if ($move_target_folder_id == $root_folder_obj->get_folder_id()) {
+                                       // ¥ë¡¼¥È¥Õ¥©¥ë¥À¤Ø°ÜÆ°¤Î¾ì¹ç¡¢¸ø³«ÈϰϤò¥»¥Ã¥È
+                                       $new_open_level_code = $user_folder_obj->folder_obj->get_open_level_code();
+                                       $new_trusted_community_row_array = $user_folder_obj->folder_obj->get_trusted_community_row_array();
+
+                               } else {
+                                       // ¥ë¡¼¥È¥Õ¥©¥ë¥À°Ê³°¤Ø°ÜÆ°¤Î¾ì¹ç¡¢¸ø³«ÈϰϤò¥ê¥»¥Ã¥È
+                                       $new_open_level_code = "";
+                                       $new_trusted_community_row_array = array();
+                               }
+                               $ret = $_folder_obj->update_open_level_code($new_open_level_code, $new_trusted_community_row_array);
+                               if (!$ret) {
+                                       ACSDB::_do_query("ROLLBACK");
+                                       print "ERROR: Move folder failed.";
+                                       exit;
+                               }
+
+                               // ¥ë¡¼¥È¥Õ¥©¥ë¥À°Ê³°¤Ø¤Ø°ÜÆ°¤Î¾ì¹ç¡¢¥×¥Ã¥È²ò½ü(=¥×¥Ã¥È¾ðÊó¤òÁ´¤Æºï½ü)
+                               if ($move_target_folder_id != $root_folder_obj->get_folder_id()) {
+                                       $ret = ACSFolderModel::delete_put_community_by_folder_id($_folder_obj->get_folder_id());
+                                       if (!$ret) {
+                                               ACSDB::_do_query("ROLLBACK");
+                                               print "ERROR: Move folder failed.";
+                                               exit;
+                                       }
+                               }
+                       }
+               }
+
+               // ¥Õ¥¡¥¤¥ë
+               $file_row_array = array();
+               $selected_file_id_array = $request->getParameter('selected_file');
+               if ($selected_file_id_array) {
+                       foreach ($selected_file_id_array as $file_id) {
+
+                               // °ÜÆ°½èÍý
+                               $file_obj = $user_folder_obj->folder_obj->get_file_obj($file_id);
+                               $ret = $user_folder_obj->folder_obj->move_file($file_obj, $move_target_folder_id);
+                               //$ret = $_file_obj->rename_display_file_name($new_file_name);
+                               if (!$ret) {
+                                       ACSDB::_do_query("ROLLBACK;");
+                                       print "ERROR: Move file failed.";
+                                       exit;
+                               }
+                       }
+               }
+
+               ACSDB::_do_query("COMMIT;");
+
+               // ¥Õ¥©¥ë¥Àɽ¼¨¥¢¥¯¥·¥ç¥ó¸Æ¤Ó½Ð¤·
+               $folder_action  = $this->getControllerPath('User', 'Folder');
+               $folder_action .= '&id=' . $target_user_community_id;
+               $folder_action .= '&folder_id=' . $target_user_community_folder_id;
+
+               header("Location: $folder_action");
+       }
+
+       function validate () {
+               return TRUE;
+       }
+
+       function registerValidators (&$validatorManager) {
+               /* É¬¿Ü¥Á¥§¥Ã¥¯ */
+               parent::regValidateName($validatorManager, 
+                               "selected_move_folder_id", 
+                               true, 
+                               ACSMsg::get_msg('User', 'MoveFolderAction.class.php', 'M001'));
+       }
+
+       function handleError () {
+               $context = $this->getContext();
+               $controller = $context->getController();
+               // °ÜÆ°°ìÍ÷¥¢¥¯¥·¥ç¥ó¸Æ¤Ó½Ð¤·
+               $controller->forward('User', 'MoveFolderList');
+       }
+
+       function isSecure () {
+               return false;
+       }
+
+       function getCredential() {              
+               return array('USER_PAGE_OWNER');
+       }
+}
+?>