/**
  * プット先コミュニティ設定処理
  */
 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を取得
     $user_community_id = $request->ACSgetParameter('id');
     // 対象となるフォルダIDを取得
     $target_folder_id = $request->ACSgetParameter('folder_id');
     // ACSUserFolder インスタンス生成
     $user_folder_obj = new ACSUserFolder($user_community_id, $acs_user_info_row, $target_folder_id);
     $target_folder_obj = $user_folder_obj->get_folder_obj();
     // 選択された community_id, folder_id を取得
     $selected_put_folder_row_array = $request->getParameter('selected_put_folder_id');
     // ----------------------------
     // 更新用にデータ加工
     // プット先コミュニティ更新用に、row_array 作成
     $put_community_row_array = array();
     foreach ($selected_put_folder_row_array as $community_id => $folder_id) {
         array_push($put_community_row_array, array('put_community_id' => $community_id, 'put_community_folder_id' => $folder_id));
     }
     // ----------------------------
     // 更新処理
     $ret = $target_folder_obj->update_put_community($target_folder_id, $put_community_row_array);
     if (!$ret) {
         print "ERROR: Update put-community failed.<br>\n";
         exit;
     }
     // ML通知チェックがあればMLにメール送信する
     // コミュニティ情報の取得
     $send_announce_mail = $request->getParameter('send_announce_mail');
     if ($send_announce_mail == "t") {
         foreach ($selected_put_folder_row_array as $community_id => $folder_id) {
             $folder_info = ACSFolderModel::select_folder_row($folder_id);
             ACSCommunityMail::send_putfolder_mail($acs_user_info_row, $folder_info, $community_id);
         }
     }
     // 処理が終わったら、ウィンドウを閉じる
     $controller->forward('Common', 'CloseChildWindow');
 }
 /**
  * フォルダ削除
  *
  * @param $target_folder_obj  削除対象のフォルダ
  */
 function delete_folder($target_folder_obj)
 {
     // 配下のフォルダ構成取得
     $target_folder_obj = $this->get_lower_folder_tree($target_folder_obj);
     // 配下の全フォルダID取得
     $folder_id_array = array();
     // 配下のフォルダ全てがセットされる
     $this->get_lower_folder_obj_array($target_folder_obj, $folder_id_array);
     // 対象となるフォルダも追加
     array_push($folder_id_array, $target_folder_obj->get_folder_id());
     // フォルダ削除
     $ret = ACSFolderModel::delete_folder($folder_id_array);
     return $ret;
 }
 static function delete_folder_file($folder_id_array)
 {
     /* folder_file の file_info 情報取得 */
     // folder_file 削除前に取得する必要あり
     $file_info_row_array = ACSFolderModel::select_folder_file_info_row_array($folder_id_array);
     /* folder_file 削除 */
     $target_folder_id = implode(", ", $folder_id_array);
     $sql = "DELETE FROM folder_file";
     $sql .= " WHERE";
     $sql .= " folder_id IN (" . $target_folder_id . ")";
     $ret = ACSDB::_do_query($sql);
     if (!$ret) {
         return false;
     }
     /* ファイル削除 */
     if ($file_info_row_array) {
         foreach ($file_info_row_array as $file_info_row) {
             $file_obj = new ACSFile($file_info_row);
             $ret = $file_obj->delete_file();
             if (!$ret) {
                 return false;
             }
         }
     }
     return $ret;
 }
 /**
  * フォルダ全体の公開範囲セット
  *
  * @param $community_id
  */
 function set_contents_folder_open_level($community_id)
 {
     // フォルダ全体の公開範囲取得
     $open_level_row = ACSFolderModel::select_contents_folder_open_level_row($community_id);
     if (!$open_level_row) {
         $community_type_name = $this->get_community_type_name();
         $open_level_row = ACSFolderModel::select_folder_open_level_default_row($community_type_name);
     }
     $this->open_level_code = $open_level_row['open_level_code'];
     $this->open_level_name = $open_level_row['open_level_name'];
     // 閲覧許可コミュニティセット
     $this->set_contents_folder_trusted_community_row_array($open_level_row['trusted_community_row_array']);
 }
 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}");
 }
示例#6
0
 /**
  * 公開範囲更新
  *
  * @param  $new_open_level_code
  * @param  $new_trusted_community_row_array
  * @return $ret
  */
 function update_open_level_code($new_open_level_code, $new_trusted_community_row_array)
 {
     $ret = ACSFolderModel::update_folder_open_level_code($this->get_folder_id(), $new_open_level_code, $new_trusted_community_row_array);
     return $ret;
 }