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');
     // 処理の種類
     $action_type = $request->getParameter('action_type');
     // get
     $form = $request->ACSGetParameters();
     // Validatorで出来ないエラーチェックを行う //
     if (mb_strlen($form['folder_name']) > 100) {
         $this->setError($controller, $request, $user, 'folder_name', ACSMsg::get_msg('User', 'EditFolderAction.class.php', 'M001'));
         return $this->handleError(&$controller, &$request, &$user);
     }
     // 表示するページの所有者情報取得
     $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);
     /* ----------------- */
     /* 入力画面表示処理 */
     /* ----------------- */
     // action_type (create or update) が存在し、エラーで遷移してきていない場合
     if (!$action_type || $this->hasErrors($controller, $request, $user)) {
         return $this->getDefaultView();
     }
     // 選択された公開範囲の判別のためのデータ取得
     $open_level_master_row_array = ACSAccessControl::get_all_open_level_master_row_array();
     /* ---------- */
     /* 入力値取得 */
     /* ---------- */
     $edit_folder_id = $request->getParameter('edit_folder_id');
     $input_folder_row = array();
     $input_folder_row['folder_name'] = $request->getParameter('folder_name');
     $input_folder_row['comment'] = $request->getParameter('comment');
     $input_folder_row['open_level_code'] = $request->getParameter('open_level_code');
     $open_level_row = $open_level_master_row_array[$input_folder_row['open_level_code']];
     $open_level_name = $open_level_row['open_level_name'];
     if ($open_level_name == ACSMsg::get_mst('open_level_master', 'D05')) {
         if ($request->getParameter('trusted_community_flag') == '0') {
             // 全ての友人をセット
             $friends_community_id = ACSUser::get_friends_community_id($target_user_community_id);
             $input_folder_row['trusted_community_id_array'] = array($friends_community_id);
         } else {
             // マイフレンズグループの場合は、指定されているマイフレンズグループIDをセット
             $input_folder_row['trusted_community_id_array'] = $request->getParameter('trusted_community');
         }
     }
     /* ---------------------- */
     /* フォルダ名重複チェック */
     /* ---------------------- */
     // 対象となるフォルダ配下のフォルダを取得
     $sub_folder_obj_array = $user_folder_obj->folder_obj->get_folder_obj_array();
     foreach ($sub_folder_obj_array as $sub_folder_obj) {
         if ($sub_folder_obj->get_folder_id() == $edit_folder_id) {
             // 更新対象のフォルダはチェック対象としない
             continue;
         }
         if ($sub_folder_obj->get_folder_name() == $input_folder_row['folder_name']) {
             // エラーメッセージをセットし、処理を中断する
             return $this->setError($controller, $request, $user, 'folder_name', ACSMsg::get_msg('User', 'EditFolderAction.class.php', 'M003') . '[' . $input_folder_row['folder_name'] . ']');
         }
     }
     ACSDB::_do_query("BEGIN");
     /* -------- */
     /* 登録処理 */
     /* -------- */
     if ($action_type == 'create') {
         $ret = $user_folder_obj->folder_obj->create_folder($input_folder_row);
         if (!$ret) {
             ACSDB::_do_query("ROLLBACK;");
             print "ERROR: フォルダを作成できませんでした。";
             exit;
         }
     } elseif ($action_type == 'update') {
         /* -------- */
         /* 更新処理 */
         /* -------- */
         // 更新対象のフォルダ情報取得
         $update_user_folder_obj = new ACSUserFolder($request->getParameter('id'), $acs_user_info_row, $edit_folder_id);
         $ret = $update_user_folder_obj->folder_obj->update_folder($input_folder_row);
         if (!$ret) {
             ACSDB::_do_query("ROLLBACK;");
             print "ERROR: フォルダ情報を変更できませんでした。";
             exit;
         }
     }
     ACSDB::_do_query("COMMIT;");
     /* -------------------- */
     /* フォルダ一覧画面表示 */
     /* -------------------- */
     $acs_user_info_row = $user->getAttribute('acs_user_info_row');
     $folder_action = $this->getControllerPath('User', 'Folder');
     $folder_action .= '&id=' . $target_user_info_row['user_community_id'];
     $folder_action .= '&folder_id=' . $target_user_community_folder_id;
     header("Location: {$folder_action}");
 }
 /**
  * role_arrayに応じてobj_row_arrayを取得する (コミュニティ)
  *
  * @param  $acs_user_info_row アクセス者のユーザ情報
  * @param  $role_array        アクセス者のrole_array
  * @param  $obj_row_array     アクセス対象となるデータ (オブジェクトの配列)
  * @return アクセス可能なデータ(オブジェクトの配列)
  */
 static function get_valid_obj_row_array_for_community($acs_user_info_row, $role_array, $obj_array)
 {
     $new_obj_array = array();
     /* 公開範囲マスタ取得 */
     $open_level_master_row_array = ACSAccessControl::get_all_open_level_master_row_array();
     foreach ($obj_array as $obj) {
         $open_level_code = $obj->get_open_level_code();
         // obj -> row に変換
         $row['community_id'] = $obj->get_community_id();
         $row['open_level_code'] = $open_level_code;
         $row['open_for_public'] = $open_level_master_row_array[$open_level_code]['open_for_public'];
         $row['open_for_user'] = $open_level_master_row_array[$open_level_code]['open_for_user'];
         $row['open_for_member'] = $open_level_master_row_array[$open_level_code]['open_for_member'];
         $row['open_for_administrator'] = $open_level_master_row_array[$open_level_code]['open_for_administrator'];
         $row['open_for_system_administrator'] = $open_level_master_row_array[$open_level_code]['open_for_system_administrator'];
         $row['trusted_community_row_array'] = $obj->get_trusted_community_row_array();
         if (ACSAccessControl::is_valid_user_for_community($acs_user_info_row, $role_array, $row)) {
             array_push($new_obj_array, $obj);
         }
     }
     return $new_obj_array;
 }