Skip to content

Commit 6bab360

Browse files
authored
Merge pull request #2081 from opensource-workshop/2.22.0
Merge v1.22.0 into 2
2 parents 85b0214 + 1e3ad5f commit 6bab360

File tree

25 files changed

+477
-310
lines changed

25 files changed

+477
-310
lines changed

app/Enums/ContentOpenType.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ final class ContentOpenType extends EnumsBase
1818

1919
// key/valueの連想配列
2020
const enum = [
21-
self::always_open => '公開',
2221
self::always_close => '非公開',
2322
self::limited_open => '限定公開',
2423
self::login_close => 'ログイン後非表示',
2524
self::login_open => 'ログイン後表示',
25+
self::always_open => '公開',
2626
];
2727
}

app/Http/Controllers/Auth/RegistersUsers.php

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,38 @@
22

33
namespace App\Http\Controllers\Auth;
44

5-
use Illuminate\Http\Request;
6-
use Illuminate\Support\Facades\Auth;
7-
use Illuminate\Auth\Events\Registered;
8-
use Illuminate\Foundation\Auth\RedirectsUsers;
9-
use Illuminate\Support\Facades\Validator;
10-
11-
use App\User;
5+
use App\Enums\UserRegisterNoticeEmbeddedTag;
6+
use App\Enums\UserStatus;
7+
use App\Models\Common\Group;
8+
use App\Models\Common\GroupUser;
129
use App\Models\Core\Configs;
10+
use App\Models\Core\Section;
1311
use App\Models\Core\UsersColumnsSet;
1412
use App\Models\Core\UsersRoles;
13+
use App\Models\Core\UserSection;
14+
use App\Plugins\Manage\UserManage\UsersTool;
15+
use App\Providers\RouteServiceProvider;
16+
use App\Rules\CustomValiTokenExists;
1517
use App\Traits\ConnectCommonTrait;
1618
use App\Traits\ConnectMailTrait;
17-
18-
use Carbon\Carbon;
19-
20-
use App\Plugins\Manage\UserManage\UsersTool;
19+
use App\User;
2120
use App\Utilities\Token\TokenUtils;
22-
use App\Rules\CustomValiTokenExists;
23-
use App\Providers\RouteServiceProvider;
24-
25-
use App\Enums\UserRegisterNoticeEmbeddedTag;
26-
use App\Enums\UserStatus;
27-
use App\Models\Core\Section;
28-
use App\Models\Core\UserSection;
21+
use Carbon\Carbon;
22+
use Illuminate\Auth\Events\Registered;
23+
use Illuminate\Foundation\Auth\RedirectsUsers;
24+
use Illuminate\Http\Request;
25+
use Illuminate\Support\Facades\Auth;
26+
use Illuminate\Support\Facades\Validator;
2927

28+
/**
29+
* ユーザ登録の共通処理
30+
*
31+
* @author 永原 篤 <nagahara@opensource-workshop.jp>
32+
* @author 牟田口 満 <mutaguchi@opensource-workshop.jp>
33+
* @copyright OpenSource-WorkShop Co.,Ltd. All Rights Reserved
34+
* @category Auth
35+
* @package CommonTrait
36+
*/
3037
trait RegistersUsers
3138
{
3239
use RedirectsUsers;
@@ -225,6 +232,20 @@ public function register(Request $request)
225232
}
226233
}
227234

235+
// ユーザー自動登録(未ログイン、ユーザ管理者以外)
236+
if (!Auth::user() || !$this->isCan('admin_user')) {
237+
// 初期参加グループ
238+
$groups = Group::where('initial_group_flag', 1)->get();
239+
foreach ($groups as $group) {
240+
// グループ参加
241+
GroupUser::create([
242+
'group_id' => $group->id,
243+
'user_id' => $user->id,
244+
'group_role' => 'general',
245+
]);
246+
}
247+
}
248+
228249
// ユーザー自動登録(未ログイン、ユーザ管理者以外)
229250
if (!Auth::user() || !$this->isCan('admin_user')) {
230251
// 登録者に仮登録メールを送信する

app/Models/Common/Group.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,21 @@
22

33
namespace App\Models\Common;
44

5-
use Illuminate\Database\Eloquent\Model;
6-
use Illuminate\Database\Eloquent\SoftDeletes;
7-
85
use App\Models\Common\GroupUser;
96
use App\UserableNohistory;
107
use Illuminate\Database\Eloquent\Factories\HasFactory;
8+
use Illuminate\Database\Eloquent\Model;
9+
use Illuminate\Database\Eloquent\SoftDeletes;
1110

11+
/**
12+
* グループ
13+
*
14+
* @author 永原 篤 <nagahara@opensource-workshop.jp>
15+
* @author 牟田口 満 <mutaguchi@opensource-workshop.jp>
16+
* @copyright OpenSource-WorkShop Co.,Ltd. All Rights Reserved
17+
* @category グループ管理
18+
* @package Model
19+
*/
1220
class Group extends Model
1321
{
1422
// 論理削除
@@ -21,7 +29,7 @@ class Group extends Model
2129
/**
2230
* create()やupdate()で入力を受け付ける ホワイトリスト
2331
*/
24-
protected $fillable = ['name', 'display_sequence'];
32+
protected $fillable = ['name', 'initial_group_flag', 'display_sequence'];
2533

2634
/**
2735
* 日付型の場合、$dates にカラムを指定しておく。

app/Plugins/Manage/GroupManage/GroupManage.php

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,20 @@
22

33
namespace App\Plugins\Manage\GroupManage;
44

5-
use Illuminate\Http\Request;
6-
use Illuminate\Support\Facades\Auth;
7-
use Illuminate\Support\Facades\DB;
8-
use Illuminate\Support\Facades\Log;
9-
use Illuminate\Support\Facades\Validator;
10-
use Illuminate\Validation\Rule;
11-
125
use App\Enums\UserStatus;
13-
146
use App\Models\Common\Group;
157
use App\Models\Common\GroupUser;
16-
178
use App\Plugins\Manage\ManagePluginBase;
189
use App\User;
1910
use App\Utilities\String\StringUtils;
11+
use Illuminate\Support\Facades\DB;
12+
use Illuminate\Support\Facades\Validator;
2013

2114
/**
2215
* グループ管理クラス
2316
*
2417
* @author 永原 篤 <nagahara@opensource-workshop.jp>
18+
* @author 牟田口 満 <mutaguchi@opensource-workshop.jp>
2519
* @copyright OpenSource-WorkShop Co.,Ltd. All Rights Reserved
2620
* @category グループ管理
2721
* @package Controller
@@ -37,16 +31,16 @@ class GroupManage extends ManagePluginBase
3731
public function declareRole()
3832
{
3933
// 権限チェックテーブル
40-
$role_ckeck_table = array();
41-
$role_ckeck_table["index"] = array('admin_user');
42-
$role_ckeck_table["edit"] = array('admin_user');
43-
$role_ckeck_table["update"] = array('admin_user');
44-
$role_ckeck_table["delete"] = array('admin_user');
45-
$role_ckeck_table["removeUser"] = array('admin_user');
46-
$role_ckeck_table["joinUser"] = array('admin_user');
47-
$role_ckeck_table["notJoinedUsers"] = array('admin_user');
48-
// $role_ckeck_table["list"] = array('admin_user');
49-
return $role_ckeck_table;
34+
$role_check_table = array();
35+
$role_check_table["index"] = array('admin_user');
36+
$role_check_table["edit"] = array('admin_user');
37+
$role_check_table["update"] = array('admin_user');
38+
$role_check_table["delete"] = array('admin_user');
39+
$role_check_table["removeUser"] = array('admin_user');
40+
$role_check_table["joinUser"] = array('admin_user');
41+
$role_check_table["notJoinedUsers"] = array('admin_user');
42+
// $role_check_table["list"] = array('admin_user');
43+
return $role_check_table;
5044
}
5145

5246
/**
@@ -96,7 +90,7 @@ public function index($request, $id)
9690
}
9791

9892
/**
99-
* グループ登録・変更画面表示
93+
* グループ登録・変更画面表示
10094
*
10195
* @method_title グループ登録
10296
* @method_desc グループ名の変更及び、参加ユーザを一覧で確認できます。
@@ -105,13 +99,7 @@ public function index($request, $id)
10599
public function edit($request, $id = null)
106100
{
107101
// グループデータの取得
108-
if (empty($id)) {
109-
// グループデータの空枠
110-
$group = new Group();
111-
} else {
112-
// グループデータの呼び出し
113-
$group = Group::find($id);
114-
}
102+
$group = Group::findOrNew($id);
115103

116104
// グループのユーザデータの取得
117105
$group_users = $this->getGroupUsers($id);
@@ -126,13 +114,13 @@ public function edit($request, $id = null)
126114
}
127115

128116
/**
129-
* グループ登録・変更処理
117+
* グループ登録・変更処理
130118
*/
131119
public function update($request, $id = null)
132120
{
133121
// 項目のエラーチェック
134122
$validator = Validator::make($request->all(), [
135-
'name' => 'required|string|max:255',
123+
'name' => 'required|string|max:191',
136124
'display_sequence' => ['nullable', 'numeric'],
137125
]);
138126
$validator->setAttributeNames([
@@ -147,9 +135,8 @@ public function update($request, $id = null)
147135

148136
// エラーがあった場合は入力画面に戻る。
149137
if ($validator->fails()) {
150-
return redirect('manage/group/edit/')
151-
->withErrors($validator)
152-
->withInput();
138+
$url = $id ? "manage/group/edit/$id" : 'manage/group/edit/';
139+
return redirect($url)->withErrors($validator)->withInput();
153140
}
154141

155142
// 表示順が空なら、自分を省いた最後の番号+1 をセット
@@ -160,12 +147,19 @@ public function update($request, $id = null)
160147
['id' => $id],
161148
[
162149
'name' => $request->name,
150+
'initial_group_flag' => $request->initial_group_flag ? 1 : 0,
163151
'display_sequence' => $display_sequence,
164152
]
165153
);
166154

155+
if ($id) {
156+
$flash_message = 'グループを変更しました。';
157+
} else {
158+
$flash_message = 'グループを登録しました。';
159+
}
160+
167161
// 登録・更新後は一覧画面へ
168-
return redirect('manage/group');
162+
return redirect('manage/group')->with('flash_message', $flash_message);
169163
}
170164

171165
/**
@@ -184,22 +178,23 @@ private function getSaveDisplaySequence($display_sequence, $id)
184178
}
185179

186180
/**
187-
* グループ削除処理
181+
* グループ削除処理
188182
*/
189183
public function delete($request, $id)
190184
{
191185
// カテゴリ削除
192186
Group::find($id)->delete();
193187

194188
// 削除後は一覧画面へ
195-
return redirect('manage/group');
189+
return redirect('manage/group')->with('flash_message', 'グループを削除しました。');
196190
}
197191

198192
/**
199-
* グループ内ユーザー表示
193+
* グループ内ユーザー表示
200194
*
201195
* @return view
202196
*/
197+
/*
203198
public function list($request, $id)
204199
{
205200
// グループデータの取得
@@ -211,6 +206,7 @@ public function list($request, $id)
211206
"group_users" => $group_users,
212207
]);
213208
}
209+
*/
214210

215211
/**
216212
* グループユーザー削除
@@ -220,7 +216,7 @@ public function removeUser($request, $id)
220216
// グループユーザーから削除
221217
GroupUser::where('group_id', $id)->where('user_id', $request->user_id)->delete();
222218

223-
return redirect('manage/group/edit/' . $id);
219+
return redirect("manage/group/edit/$id")->with('flash_message', 'グループから抜けました。');
224220
}
225221

226222
/**
@@ -238,7 +234,7 @@ public function joinUser($request, $id)
238234
]
239235
);
240236

241-
return redirect('manage/group/edit/' . $id);
237+
return redirect("manage/group/edit/$id")->with('flash_message', 'グループに参加しました。');
242238
}
243239

244240
/**

app/Plugins/Manage/ReservationManage/ReservationManage.php

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,20 @@ private function getReservationsInputsQuery()
928928
$inputs_query->where('reservations_facilities.facility_name', 'like', '%' . session()->get('app_reservation_search_condition.facility_name') . '%');
929929
}
930930

931+
// 利用日From
932+
if (session()->has('app_reservation_search_condition.start_datetime')) {
933+
// 例) (S)2024-12-09 13:00 ~ (E)2024-12-10 15:00 = (input-S)2024-12-10 15:00 <= (E) o:含む
934+
// 例) (S)2024-12-09 13:00 ~ (E)2024-12-10 15:00 = (input-S)2024-12-10 15:01 <= (E) x:含まない
935+
$inputs_query->where('reservations_inputs.end_datetime', '>=', session()->get('app_reservation_search_condition.start_datetime'));
936+
}
937+
938+
// 利用日To
939+
if (session()->has('app_reservation_search_condition.end_datetime')) {
940+
// 例) (S)2024-12-09 13:00 ~ (E)2024-12-10 15:00 = (S) <= (input-E)2024-12-09 13:00 o:含む
941+
// 例) (S)2024-12-09 13:00 ~ (E)2024-12-10 15:00 = (S) <= (input-E)2024-12-09 12:59 x:含まない
942+
$inputs_query->where('reservations_inputs.start_datetime', '<=', session()->get('app_reservation_search_condition.end_datetime'));
943+
}
944+
931945
// 登録者名
932946
if (session()->has('app_reservation_search_condition.created_name')) {
933947
$inputs_query->where('reservations_inputs.created_name', 'like', '%' . session()->get('app_reservation_search_condition.created_name') . '%');
@@ -1052,6 +1066,27 @@ public function search($request, $id)
10521066
// 画面上、検索条件は app_reservation_search_condition という名前で配列になっているので、
10531067
// app_reservation_search_condition をセッションに持つことで、条件の持ち回りが可能。
10541068
session(["app_reservation_search_condition" => $request->input('app_reservation_search_condition')]);
1069+
1070+
// エラーチェック
1071+
$validator = Validator::make($request->all(), [
1072+
'app_reservation_search_condition.start_datetime' => ['nullable'],
1073+
'app_reservation_search_condition.end_datetime' => ['nullable', 'after_or_equal:app_reservation_search_condition.start_datetime'],
1074+
]);
1075+
$validator->setAttributeNames([
1076+
'app_reservation_search_condition.start_datetime' => '利用日From',
1077+
'app_reservation_search_condition.end_datetime' => '利用日To',
1078+
]);
1079+
1080+
// カスタムエラーメッセージ
1081+
$validator->setCustomMessages([
1082+
'app_reservation_search_condition.end_datetime.after_or_equal' => ':attributeには:date以降の日時を指定してください。',
1083+
]);
1084+
1085+
// エラーがあった場合は入力画面に戻る。
1086+
if ($validator->fails()) {
1087+
return redirect()->back()->withErrors($validator)->withInput();
1088+
}
1089+
10551090
return redirect("/manage/reservation/bookings");
10561091
}
10571092

@@ -1060,7 +1095,7 @@ public function search($request, $id)
10601095
*/
10611096
public function clearSearch($request, $id)
10621097
{
1063-
$request->session()->forget('app_reservation_search_condition');
1098+
session()->forget('app_reservation_search_condition');
10641099
return redirect("/manage/reservation/bookings");
10651100
}
10661101
}

app/Plugins/Manage/UserManage/UserManage.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1248,6 +1248,16 @@ public function groups($request, $id)
12481248
->get();
12491249
// ->paginate(10);
12501250

1251+
// register_redirectTo あり(ユーザ新規登録>グループ参加)の場合
1252+
if (session('register_redirectTo')) {
1253+
foreach ($group_users as &$group_user) {
1254+
// 初期参加グループなら、参加で初期表示
1255+
if ($group_user->initial_group_flag) {
1256+
$group_user->group_role = 'general';
1257+
}
1258+
}
1259+
}
1260+
12511261
// 画面呼び出し
12521262
return view('plugins.manage.user.groups', [
12531263
"function" => __FUNCTION__,

app/Plugins/User/Bbses/BbsesPlugin.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ public static function getWhatsnewArgs()
278278
/**
279279
* 検索用メソッド
280280
*/
281-
public static function getSearchArgs($search_keyword)
281+
public static function getSearchArgs($search_keyword, $page_ids = null)
282282
{
283283
$return[] = BbsPost::
284284
select(
@@ -303,6 +303,7 @@ public static function getSearchArgs($search_keyword)
303303
})
304304
->join('frames', 'frames.bucket_id', '=', 'bbses.bucket_id')
305305
->leftjoin('pages', 'pages.id', '=', 'frames.page_id')
306+
->whereIn('pages.id', $page_ids)
306307
->where(function ($plugin_query) use ($search_keyword) {
307308
$plugin_query->where('bbs_posts.title', 'like', '%' . $search_keyword . '%')
308309
->orWhere('bbs_posts.body', 'like', '%' . $search_keyword . '%');

0 commit comments

Comments
 (0)