PHPには詳しくないが、なんとなくで編集してみた。

OpenPNE Ver2.14.1.1

まずは、[webapp_biz]-[module]-[biz]-[templates]にある「fh_biz_schedule_add.tpl」で参加者のチェックボックスがどうなっているか。

90行目

<div class="item"><input name='sc_j_mem[]' value='({$item.c_member_id})' type='checkbox' ({if $item.checkflag}) checked="checked"({/if}) />({$item.nickname})</div>

これが、foreachで囲まれているので、メンバーIDを配列に格納して渡しているのだろう。

でおそらく、8行目に記述されている「do_fhg_biz_schedule_add」に渡しているみたい。

[webapp_biz]-[module]-[biz]-「fhg_biz_schedule_add.php」を開いてみると

135行目

//参加者のチェック
if (in_array('0', $requests['sc_j_mem'])) {
//「全員」が含まれている場合は、配列を空に
$requests['sc_j_mem'] = array();
}

$requests['sc_j_mem']の$requestsがどこでどう定義されているのかよくわからんが、この配列にフォームのデータが全て格納されているみたい。

でもって、$requests['sc_j_mem']に0が入っているなら配列を初期化しろと書いてあるので、参加者がノーチェックなら0が入ってくるんだなぁと判断。

でも、その定義はどこで行われているのかわからない。

といろいろファイルを見ていると、[webapp_biz]-[module]-[biz]-[validate]-[page]-「fh_biz_schedule_add.ini」というファイルに

[sc_j_mem] type= "string"
is_array = 1
required = 0
caption = "メンバー"

という記述があった。

おそらくこれが初期化の設定なんだろう。

というわけで、「fhg_biz_schedule_add.php」を編集し、$requests['sc_j_mem']に0がある場合は、作成者のIDに置き換えるという形にしようと思ったが、うまくいかない。

$requests['sc_j_mem']は、$requestsという配列のsc_j_memという要素にアクセスするんだよな?

でも、array()で初期化しているから、中にいるのは配列だよな。

でも、単純にarray($u)では代入できない。

この要素には、sc_j_mem[]という配列が入ってるはず・・・?

二次元配列なのか?

なんか違うぞ・・・

結局ここでのカスタマイズは諦めた(汗

あまりよろしくないカスタマイズだが、[webapp_biz]-[module]-[biz]-[lib]にある「mysql-functions.php」を編集することにした。

817行目の「スケジュール登録」にある

//参加者が指定されていない場合は、c_memberすべてが予定の参加者に
if (empty($join_members)) {
$sql = 'SELECT c_member_id FROM c_member';
$join_members = db_get_col($sql);
}

を編集する。

$join_membersは配列で、「fh_biz_schedule_add.ini」で呼び出されるときにさっきの$requests['sc_j_mem']を渡されている。

//参加者が指定されていない場合は、作成者が予定の参加者に
if (empty($join_members)) {
$join_members = array($c_member_id);
}

同じように884行目からの「スケジュールの編集」で922行目付近にも同じものを追加しておく。(foreachの手前)

注意するのは、$c_member_idを$member_idとしておかなくてはならない。

おすすめの記事