예제 #1
0
 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}");
 }
예제 #2
0
 /**
  * マイフレンズグループを登録する
  *
  * @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;
 }
예제 #3
0
 /**
  * ダイアリーを登録する
  *
  * @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;
     }
 }