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');
     // 詳細情報を表示するファイルIDを取得
     $file_id = $request->getParameter('file_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);
     $folder_obj = $user_folder_obj->get_folder_obj();
     // フォルダの公開範囲でアクセス制御
     if (!$user_folder_obj->has_privilege($target_user_info_row)) {
         $controller->forward(SECURE_MODULE, SECURE_ACTION);
         return;
     }
     // ルートフォルダ直下のファイルは本人以外アクセス不可
     $privilege_array = $this->getCredential();
     //if ($folder_obj->get_is_root_folder() && !in_array('USER_PAGE_OWNER', $privilege_array)) {
     if ($folder_obj->get_is_root_folder() && !$this->get_execute_privilege()) {
         $controller->forward(SECURE_MODULE, SECURE_ACTION);
         return;
     }
     // ファイル情報取得
     $file_obj = ACSFile::get_file_info_instance($file_id);
     // ファイルの詳細情報
     $file_detail_info_row = ACSFileDetailInfo::get_file_detail_info_row($file_id);
     // ファイルの履歴情報
     $file_history_row_array = ACSFileHistory::get_file_history_row_array($file_id);
     // ファイル履歴ごとのコメント
     foreach ($file_history_row_array as $index => $file_history_row) {
         $file_history_row_array[$index]['file_history_comment_row_array'] = ACSFileHistoryComment::get_file_history_comment_row_array($file_history_row['file_history_id']);
     }
     // ファイルアクセス履歴登録
     if ($acs_user_info_row['is_acs_user']) {
         ACSFile::set_file_access_history($acs_user_info_row['user_community_id'], $file_id);
     }
     // 足跡情報取得
     $footprint_url = $this->getControllerPath('User', 'FileDetail') . "&id=" . $target_user_community_id . "&file_id=" . $file_obj->get_file_id() . "&folder_id=" . $user_folder_obj->folder_obj->get_folder_id();
     $where = "foot.contents_link_url = '" . $footprint_url . "'";
     $where .= " AND foot.visitor_community_id = '" . $acs_user_info_row['user_community_id'] . "'";
     $footprint_info = ACSUser::get_footprint_list($target_user_community_id, $where);
     // set
     $request->setAttribute('target_user_info_row', $target_user_info_row);
     $request->setAttribute('file_obj', $file_obj);
     $request->setAttribute('user_folder_obj', $user_folder_obj);
     $request->setAttribute('file_detail_info_row', $file_detail_info_row);
     $request->setAttribute('file_history_row_array', $file_history_row_array);
     $request->setAttribute('footprint_info', $footprint_info);
     return View::SUCCESS;
 }
 function execute()
 {
     $context = $this->getContext();
     $controller = $context->getController();
     $request = $context->getRequest();
     $user = $context->getUser();
     $target_community_id = $request->getParameter('community_id');
     $acs_user_info_row = $user->getAttribute('acs_user_info_row');
     $target_community_folder_id = $request->getParameter('folder_id');
     // form
     $form = $request->ACSGetParameters();
     /* ファイルアップロード処理 */
     $ret = 0;
     if ($_FILES['new_file']['tmp_name'] != '') {
         // ファイル情報取得
         $file_obj = ACSFile::get_upload_file_info_instance($_FILES['new_file'], $target_community_id, $acs_user_info_row['user_community_id']);
         // フォルダにファイル追加処理
         $user_folder_obj = new ACSCommunityFolder($target_community_id, $acs_user_info_row, $target_community_folder_id);
         $folder_obj = $user_folder_obj->get_folder_obj();
         $ret = $folder_obj->add_file($file_obj);
     }
     if (!$ret) {
         print "ERROR: Upload file failed.";
     }
     if ($ret) {
         // 新規登録したファイルID
         $file_id = $file_obj->get_file_id();
         // 2007.12 追加
         // ML通知チェックがあればMLにメール送信する
         $send_announce_mail = $request->getParameter('send_announce_mail');
         if ($send_announce_mail == "t") {
             ACSCommunityMail::send_fileupload_mail($target_community_id, $acs_user_info_row, $folder_obj, $file_obj);
         }
     }
     // ファイル履歴情報登録
     if ($ret) {
         $file_info_row = ACSFileInfoModel::select_file_info_row($file_id);
         $ret = ACSFileHistory::set_file_history($file_info_row, $acs_user_info_row['user_community_id'], $form['comment'], ACSMsg::get_mst('file_history_operation_master', 'D0101'));
     }
     // ファイル詳細情報登録
     if ($form['file_category_code'] != '' && $ret) {
         $file_contents_type_list_row_array = ACSFileDetailInfo::get_file_contents_type_list_row_array($form['file_category_code']);
         $file_contents_form_array = array();
         foreach ($file_contents_type_list_row_array as $file_contents_type_list_row) {
             $file_contents_form = array('file_id' => $file_id, 'file_contents_type_code' => $file_contents_type_list_row['file_contents_type_code'], 'file_contents_value' => $form['file_contents_array'][$file_contents_type_list_row['file_contents_type_code']]);
             array_push($file_contents_form_array, $file_contents_form);
         }
         $ret = ACSFileDetailInfo::set_file_detail_info($file_id, $form['file_category_code'], $file_contents_form_array);
     }
     // フォルダ表示アクション呼び出し
     $acs_user_info_row = $user->getAttribute('acs_user_info_row');
     $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 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;
     }
     $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');
     $file_id = $request->getParameter('file_id');
     $file_history_id = $request->getParameter('file_history_id');
     // アクセス制御 // プットフォルダ、ファイルはNG
     $file_obj = ACSFile::get_file_info_instance($file_id);
     if ($file_obj->get_owner_community_id() != $target_community_id) {
         $controller->forward(SECURE_MODULE, SECURE_ACTION);
         return;
         //return VIEW_NONE;
     }
     $file_info_row = ACSFileInfoModel::select_file_info_row($file_id);
     $file_history_row = ACSFileHistory::get_file_history_row($file_history_id);
     // form
     $form = $request->ACSGetParameters();
     // ファイル復活処理
     // フォルダobj
     $community_folder_obj = new ACSUserFolder($target_community_id, $acs_user_info_row, $target_community_folder_id);
     $folder_obj = $community_folder_obj->get_folder_obj();
     // file_info更新
     $ret = $folder_obj->restore_history_file($file_info_row, $file_history_row);
     if (!$ret) {
         print "ERROR: Restore file failed.";
     }
     // ファイル履歴情報登録
     if ($ret) {
         $file_info_row = ACSFileInfoModel::select_file_info_row($file_id);
         $ret = ACSFileHistory::set_file_history($file_info_row, $acs_user_info_row['user_community_id'], $form['comment'], ACSMsg::get_msg('Community', '', 'M001'));
     }
     // ファイル詳細情報へ遷移
     $file_detail_url = $this->getControllerPath('Community', 'FileDetail');
     $file_detail_url .= '&community_id=' . $target_community_id;
     $file_detail_url .= '&file_id=' . $file_id;
     $file_detail_url .= '&folder_id=' . $target_community_folder_id;
     header("Location: {$file_detail_url}");
     //return VIEW_NONE;
 }
 function execute()
 {
     $context = $this->getContext();
     $controller = $context->getController();
     $request = $context->getRequest();
     $user = $context->getUser();
     $acs_user_info_row = $user->getAttribute('acs_user_info_row');
     $target_user_community_id = $request->getParameter('id');
     $target_user_community_folder_id = $request->getParameter('folder_id');
     $file_id = $request->getParameter('file_id');
     if (!$this->get_execute_privilege()) {
         $controller->forward(SECURE_MODULE, SECURE_ACTION);
         return;
     }
     // form
     $form = $request->ACSGetParameters();
     // ファイル更新処理
     if ($_FILES['new_file']['tmp_name'] != '') {
         // ファイルobj
         $file_obj = ACSFile::get_upload_file_info_instance_for_update($_FILES['new_file'], $target_user_community_id, $acs_user_info_row['user_community_id'], $file_id);
         // フォルダobj
         $user_folder_obj = new ACSUserFolder($target_user_community_id, $acs_user_info_row, $target_user_community_folder_id);
         $folder_obj = $user_folder_obj->get_folder_obj();
         // ファイル履歴が1件も登録されていない場合は"作成"を登録する
         $file_history_row_array = ACSFileHistory::get_file_history_row_array($file_id);
         if (count($file_history_row_array) == 0) {
             $file_info_row = ACSFileInfoModel::select_file_info_row($file_id);
             $file_history_id = ACSFileHistory::set_file_history($file_info_row, $file_info_row['entry_user_community_id'], '', ACSMsg::get_mst('file_history_operation_master', 'D0101'));
         }
         // file_info更新, ファイル保存
         $ret = $folder_obj->update_file($file_obj);
     }
     if (!$ret) {
         print "ERROR: Upload file failed.";
     }
     // ファイル履歴情報登録
     if ($ret) {
         $file_info_row = ACSFileInfoModel::select_file_info_row($file_id);
         $ret = ACSFileHistory::set_file_history($file_info_row, $acs_user_info_row['user_community_id'], $form['comment'], ACSMsg::get_mst('file_history_operation_master', 'D0201'));
     }
     // ファイル詳細情報へ遷移
     $file_detail_url = $this->getControllerPath('User', 'FileDetail');
     $file_detail_url .= '&id=' . $target_user_community_id;
     $file_detail_url .= '&file_id=' . $file_id;
     $file_detail_url .= '&folder_id=' . $target_user_community_folder_id;
     header("Location: {$file_detail_url}");
 }
 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_community_id = $request->getParameter('community_id');
     // 対象となるフォルダIDを取得
     $target_community_folder_id = $request->getParameter('folder_id');
     // 詳細情報を表示するファイルIDを取得
     $file_id = $request->getParameter('file_id');
     // ファイル履歴ID
     $file_history_id = $request->getParameter('file_history_id');
     // form
     $form = $request->ACSGetParameters();
     // 表示するページの所有者情報取得
     $target_community_row = ACSCommunity::get_community_row($target_community_id);
     // フォルダ情報取得
     $community_folder_obj = new ACSCommunityFolder($target_community_id, $acs_user_info_row, $target_community_folder_id);
     $folder_obj = $community_folder_obj->get_folder_obj();
     // ファイル情報取得
     $file_obj = ACSFile::get_file_info_instance($file_id);
     // フォルダの公開範囲でアクセス制御
     if (!$community_folder_obj->has_privilege($target_community_row)) {
         $controller->forward(SECURE_MODULE, SECURE_ACTION);
         return;
     }
     // ファイル履歴コメントを登録する
     if ($form['comment'] != '') {
         // ファイル履歴が1件も登録されていない場合は"作成"を登録する
         $file_history_row_array = ACSFileHistory::get_file_history_row_array($file_id);
         if (count($file_history_row_array) == 0) {
             $file_info_row = ACSFileInfoModel::select_file_info_row($file_id);
             $file_history_id = ACSFileHistory::set_file_history($file_info_row, $file_info_row['entry_user_community_id'], '', ACSMsg::get_mst('file_history_operation_master', 'D0101'));
         }
         $ret = ACSFileHistoryComment::set_file_history_comment($file_history_id, $acs_user_info_row['user_community_id'], $form['comment']);
     }
     // ファイル詳細情報へ遷移
     $file_detail_url = $this->getControllerPath('Community', 'FileDetail');
     $file_detail_url .= '&community_id=' . $target_community_id;
     $file_detail_url .= '&file_id=' . $file_id;
     $file_detail_url .= '&folder_id=' . $target_community_folder_id;
     header("Location: {$file_detail_url}");
 }
Example #6
0
 /**
  * 履歴ファイルダウンロード
  *
  * @param none
  *
  * @return none
  */
 function download_history_file($file_history_id, $mode = '')
 {
     $file_history_row = ACSFileHistory::get_file_history_row($file_history_id);
     // ファイルパス
     if ($mode == 'thumb') {
         $file_path = $file_history_row['thumbnail_server_file_name'];
     } else {
         $file_path = $file_history_row['server_file_name'];
     }
     // ファイルが読み込みできない場合
     if (!is_readable(ACS_FOLDER_DIR . $file_path)) {
         header("Cache-Control: public, max-age=0");
         header("Pragma:");
         echo "Not Found";
         return;
     }
     // ダウンロードファイル名
     //		$download_file_name = mb_convert_encoding($this->get_display_file_name(), mb_http_output());
     $download_file_name = $this->get_display_file_name();
     // Content-type
     $content_type = $file_history_row['mime_type'];
     if ($content_type == '') {
         $content_type = 'application/octet-stream';
     }
     // charset (textの場合)
     if (preg_match('/text/', $content_type)) {
         $str = implode('', file(ACS_FOLDER_DIR . $file_path));
         $encoding = mb_detect_encoding($str, 'auto');
         if ($encoding == 'ASCII' && mb_http_output() != 'pass') {
             $content_type .= "; charset=" . mb_preferred_mime_name(mb_http_output());
         } else {
             $content_type .= "; charset=" . mb_preferred_mime_name($encoding);
         }
     }
     // action: inline(ブラウザ内表示), attachment(ダウンロードダイアログ)
     //if (preg_match('/text|image/', $content_type)) {
     if (preg_match('/image/', $file_history_row['mime_type']) || preg_match('/text/', $file_history_row['mime_type'])) {
         $action = 'inline';
     } else {
         $action = 'attachment';
     }
     // HTTPヘッダを吐く (action: inline, attachment)
     //		header("Content-disposition: $action; filename=\"$download_file_name\"");
     header("Content-disposition: {$action}; attachment; filename=\"" . ACSFile::get_download_name($download_file_name) . '"');
     header("Content-type: {$content_type}");
     // output_bufferingを無効にする
     mb_http_output('pass');
     if ($mode == 'thumb') {
         header("Cache-Control: public, max-age=1800");
         header("Pragma:");
     } else {
         header("Cache-Control: public, max-age=0");
         header("Pragma:");
     }
     // ファイルを読み出す
     readfile(ACS_FOLDER_DIR . $file_path);
 }
 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_community_id = $request->getParameter('community_id');
     // 対象となるフォルダIDを取得
     $target_community_folder_id = $request->getParameter('folder_id');
     // 詳細情報を表示するファイルIDを取得
     $file_id = $request->getParameter('file_id');
     // コミュニティ管理者か
     $is_community_admin = false;
     if (ACSCommunity::is_community_admin($acs_user_info_row['user_community_id'], $target_community_id)) {
         $is_community_admin = true;
     }
     // 表示するページの所有者情報取得
     $target_community_row = ACSCommunity::get_community_row($target_community_id);
     // フォルダ情報取得
     $community_folder_obj = new ACSCommunityFolder($target_community_id, $acs_user_info_row, $target_community_folder_id);
     $folder_obj = $community_folder_obj->get_folder_obj();
     // フォルダの公開範囲でアクセス制御
     if (!$community_folder_obj->has_privilege($target_community_row)) {
         // 2010.03.24 未ログイン時の誘導
         // ログインユーザでない場合はログイン画面へ
         if ($user->hasCredential('PUBLIC_USER')) {
             $controller->forward("User", "Login");
             return;
         }
         $controller->forward(SECURE_MODULE, SECURE_ACTION);
         return;
     }
     // ルートフォルダ直下のファイルはコミュニティメンバ以外アクセス不可
     if ($folder_obj->get_is_root_folder() && $user->hasCredential('COMMUNITY_MEMBER')) {
         // 2010.03.24 未ログイン時の誘導
         // ログインユーザでない場合はログイン画面へ
         if ($user->hasCredential('PUBLIC_USER')) {
             $controller->forward("User", "Login");
             return;
         }
         $controller->forward(SECURE_MODULE, SECURE_ACTION);
         return;
     }
     // ファイル情報取得
     $file_obj = ACSFile::get_file_info_instance($file_id);
     // ファイルの詳細情報
     $file_detail_info_row = ACSFileDetailInfo::get_file_detail_info_row($file_id);
     // ファイルの履歴情報
     $file_history_row_array = ACSFileHistory::get_file_history_row_array($file_id);
     // ファイル履歴ごとのコメント
     foreach ($file_history_row_array as $index => $file_history_row) {
         $file_history_row_array[$index]['file_history_comment_row_array'] = ACSFileHistoryComment::get_file_history_comment_row_array($file_history_row['file_history_id']);
     }
     // ファイルアクセス履歴登録
     if ($acs_user_info_row['is_acs_user']) {
         ACSFile::set_file_access_history($acs_user_info_row['user_community_id'], $file_id);
     }
     // プットファイルでない場合
     if ($file_obj->get_owner_community_id() == $target_community_id) {
         // ファイルの公開情報
         $file_public_access_row = ACSFileDetailInfo::get_file_public_access_row($file_id);
     }
     // set
     $request->setAttribute('target_community_row', $target_community_row);
     $request->setAttribute('file_obj', $file_obj);
     $request->setAttribute('community_folder_obj', $community_folder_obj);
     $request->setAttribute('file_detail_info_row', $file_detail_info_row);
     $request->setAttribute('file_history_row_array', $file_history_row_array);
     $request->setAttribute('is_community_admin', $is_community_admin);
     $request->setAttribute('file_public_access_row', $file_public_access_row);
     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;
     }
     $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');
     $file_id = $request->getParameter('file_id');
     // アクセス制御 // プットフォルダ、ファイルはNG
     $file_obj = ACSFile::get_file_info_instance($file_id);
     if ($file_obj->get_owner_community_id() != $target_community_id) {
         $controller->forward(SECURE_MODULE, SECURE_ACTION);
         return;
     }
     // form
     $form = $request->ACSGetParameters();
     $ret = false;
     // ファイル更新処理
     if ($_FILES['new_file']['tmp_name'] != '') {
         // ファイルobj
         $file_obj = ACSFile::get_upload_file_info_instance_for_update($_FILES['new_file'], $target_community_id, $acs_user_info_row['user_community_id'], $file_id);
         // フォルダobj
         $community_folder_obj = new ACSCommunityFolder($target_community_id, $acs_user_info_row, $target_community_folder_id);
         $folder_obj = $community_folder_obj->get_folder_obj();
         // ファイル履歴が1件も登録されていない場合は"作成"を登録する
         $file_history_row_array = ACSFileHistory::get_file_history_row_array($file_id);
         if (count($file_history_row_array) == 0) {
             $file_info_row = ACSFileInfoModel::select_file_info_row($file_id);
             $file_history_id = ACSFileHistory::set_file_history($file_info_row, $file_info_row['entry_user_community_id'], '', ACSMsg::get_mst('file_history_operation_master', 'D0101'));
         }
         // file_info更新, ファイル保存
         $ret = $folder_obj->update_file($file_obj);
     }
     if (!$ret) {
         print "ERROR: ファイルアップロードに失敗しました";
     }
     // ファイル履歴情報登録
     if ($ret) {
         $file_info_row = ACSFileInfoModel::select_file_info_row($file_id);
         $ret = ACSFileHistory::set_file_history($file_info_row, $acs_user_info_row['user_community_id'], $form['comment'], ACSMsg::get_mst('file_history_operation_master', 'D0201'));
         // 2007.12 追加
         // ML通知チェックがあればMLにメール送信する
         // コミュニティ情報の取得
         $send_announce_mail = $request->getParameter('send_announce_mail');
         if ($send_announce_mail == "t") {
             ACSCommunityMail::send_fileupload_mail($target_community_id, $acs_user_info_row, $folder_obj, $file_obj);
         }
     }
     // ファイル詳細情報へ遷移
     $file_detail_url = $this->getControllerPath('Community', 'FileDetail');
     $file_detail_url .= '&community_id=' . $target_community_id;
     $file_detail_url .= '&file_id=' . $file_id;
     $file_detail_url .= '&folder_id=' . $target_community_folder_id;
     header("Location: {$file_detail_url}");
 }