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}"); }
/** * マイフレンズグループを登録する * * @param マイフレンズグループコミュニティ情報 (連想配列) * @return マイフレンズグループコミュニティID(成功) / false(失敗) */ static function set_friends_group($form) { // コミュニティ種別マスタ $community_type_master_array = ACSDB::get_master_array('community_type'); // コミュニティ種別コード $community_type_code = array_search(ACSMsg::get_mst('community_type_master', 'D30'), $community_type_master_array); // フレンズコミュニティID $friends_community_id = ACSUser::get_friends_community_id($form['user_community_id']); ACSLib::escape_sql_array($form); ACSLib::get_sql_value_array($form); // BEGIN ACSDB::_do_query("BEGIN"); $community_id_seq = ACSDB::get_next_seq('community_id_seq'); // INSERT $sql = "INSERT INTO community"; $sql .= " (community_id, community_name, community_type_code)"; $sql .= " VALUES ({$community_id_seq}, {$form['community_name']}, '{$community_type_code}')"; $ret = ACSDB::_do_query($sql); if (!$ret) { ACSDB::_do_query("ROLLBACK"); return $ret; } // INSERT $sql = "INSERT INTO sub_community"; $sql .= " (community_id, sub_community_id)"; $sql .= " VALUES ('{$friends_community_id}', '{$community_id_seq}')"; $ret = ACSDB::_do_query($sql); if (!$ret) { ACSDB::_do_query("ROLLBACK"); return $ret; } // COMMIT ACSDB::_do_query("COMMIT"); return $community_id_seq; }
/** * ダイアリーを登録する * * @param $form ダイアリー情報の配列 * @return 成功(登録されたダイアリーID) / 失敗(false) */ static function set_diary($form) { $org_form = $form; ACSLib::escape_sql_array($form); ACSLib::get_sql_value_array($form); // BEGIN //ACSDB::_do_query("BEGIN"); $diary_id_seq = ACSDB::get_next_seq('diary_id_seq'); // diary $sql = "INSERT INTO diary"; $sql .= " (diary_id, community_id, subject, body, open_level_code, diary_delete_flag)"; $sql .= " VALUES ({$diary_id_seq}, {$form['user_community_id']}, {$form['subject']}, {$form['body']}, {$form['open_level_code']},'f')"; $ret = ACSDB::_do_query($sql); if (!$ret) { ACSDB::_do_query("ROLLBACK"); echo "ERROR: insert diary error"; return $ret; } $form = $org_form; if ($form['new_file'] != "") { //画像ファイルの登録 $file_obj = $form['new_file']; $ret = $file_obj->save_upload_file('DIARY'); //ファイルをディスクに保存 if ($ret) { $ret = $file_obj->add_file(); //ファイル情報をDBへ保存 } if ($ret) { $ret = ACSDiaryFile::insert_diary_file($file_obj, $diary_id_seq); } if (!$ret) { ACSDB::_do_query("ROLLBACK"); echo "ERROR: insert diary_file error"; return $ret; } } // diary_trusted_community // 友人に公開を選択した場合 $open_level_master_array = ACSDB::get_master_array('open_level'); // 友人に公開 if ($open_level_master_array[$form['open_level_code']] == ACSMsg::get_mst('open_level_master', 'D05')) { // マイフレンズグループを指定した場合 if ($form['trusted_community_flag']) { foreach ($form['trusted_community_id_array'] as $trusted_community_id) { $trusted_community_id = pg_escape_string($trusted_community_id); $sql = "INSERT INTO diary_trusted_community"; $sql .= " (diary_id, trusted_community_id)"; $sql .= " VALUES ({$diary_id_seq}, {$trusted_community_id})"; $ret = ACSDB::_do_query($sql); if (!$ret) { ACSDB::_do_query("ROLLBACK"); echo "ERROR: insert diary_trusted_community error:FRIEND"; return $ret; } } } else { // 全てのマイフレンズ $trusted_community_id = ACSUser::get_friends_community_id($form['user_community_id']); $sql = "INSERT INTO diary_trusted_community"; $sql .= " (diary_id, trusted_community_id)"; $sql .= " VALUES ({$diary_id_seq}, {$trusted_community_id})"; $ret = ACSDB::_do_query($sql); if (!$ret) { ACSDB::_do_query("ROLLBACK"); echo "ERROR: insert diary_trusted_community error:ALL"; return $ret; } } } // COMMIT //ACSDB::_do_query("COMMIT"); if ($ret) { return $diary_id_seq; } else { return false; } }