function execute()
 {
     $context = $this->getContext();
     $controller = $context->getController();
     $request = $context->getRequest();
     $user = $context->getUser();
     $acs_user_info_row = $user->getAttribute('acs_user_info_row');
     // get
     $target_user_info_row = $request->getAttribute('target_user_info_row');
     $diary_row_array = $request->getAttribute('diary_row_array_result');
     $open_level_master_row_array = $request->getAttribute('open_level_master_row_array');
     $friends_group_row_array = $request->getAttribute('friends_group_row_array');
     $err_str = $request->getAttribute('err_str');
     $form_pre = $request->getAttribute('form_pre');
     // トップページURL
     $link_page_url['top_page_url'] = $this->getControllerPath(DEFAULT_MODULE, 'Diary') . '&id=' . $acs_user_info_row['user_community_id'];
     //他人の日記を閲覧している場合のトップページURL
     $link_page_url['else_user_top_page_url'] = $this->getControllerPath(DEFAULT_MODULE, 'Index') . '&id=' . $target_user_info_row['community_id'];
     //他人の日記を閲覧している場合の日記ページURL
     $link_page_url['else_user_diary_url'] = $this->getControllerPath(DEFAULT_MODULE, 'Diary') . '&id=' . $target_user_info_row['community_id'];
     //検索画面url
     $link_page_url['search_diary_url'] = SCRIPT_PATH;
     // get でサブミットするための、遷移先情報
     $module = 'User';
     $action = 'SearchResultDiary';
     $id = $target_user_info_row['community_id'];
     $move_id = '2';
     // 加工
     if ($diary_row_array) {
         foreach ($diary_row_array as $index => $diary_row) {
             // ユーザ画像URL
             $diary_row_array[$index]['image_url'] = ACSUser::get_image_url($diary_row['community_id'], 'thumb');
             //ユーザページ
             $user_row = ACSUser::get_user_profile_row($diary_row['community_id']);
             $diary_row_array[$index]['top_page_url'] = $this->getControllerPath(DEFAULT_MODULE, DEFAULT_ACTION) . '&id=' . $diary_row['community_id'];
             $diary_row_array[$index]['community_name'] = $user_row['community_name'];
             // 投稿日時
             $diary_row_array[$index]['post_date'] = ACSLib::convert_pg_date_to_str($diary_row['post_date']);
             // コメントページURL
             $diary_row_array[$index]['diary_comment_url'] = $this->getControllerPath('User', 'DiaryComment') . '&id=' . $diary_row['community_id'] . '&diary_id=' . $diary_row['diary_id'];
             // 信頼済みコミュニティ(マイフレンズグループ)が定義されているか
             if ($diary_row['open_level_name'] == ACSMsg::get_mst('open_level_master', 'D05')) {
                 if (count($diary_row['trusted_community_row_array']) && $diary_row['trusted_community_row_array'][0]['community_type_name'] == ACSMsg::get_mst('community_type_master', 'D20')) {
                     $diary_row_array[$index]['trusted_community_flag'] = 0;
                 } else {
                     $diary_row_array[$index]['trusted_community_flag'] = 1;
                 }
             }
         }
         //---- アクセス制御 ----//
         $role_array = ACSAccessControl::get_user_community_role_array($acs_user_info_row, $target_user_info_row);
         $diary_row_array = ACSAccessControl::get_valid_row_array_for_user_community($acs_user_info_row, $role_array, $diary_row_array);
         //特別::全件検索の場合 ターゲットが自分のままになってしまうことを回避
         $diary_row_array_result = array();
         foreach ($diary_row_array as $index => $diary_row) {
             $diary_target_user_info_row = ACSUser::get_user_info_row_by_user_community_id($diary_row['community_id']);
             $role_array = ACSAccessControl::get_user_community_role_array($acs_user_info_row, $diary_target_user_info_row);
             $is_valid_user = ACSAccessControl::is_valid_user_for_community($acs_user_info_row, $role_array, $diary_row);
             if ($is_valid_user) {
                 //アクセス権がある
                 array_push($diary_row_array_result, $diary_row);
             }
         }
         //----------------------//
     }
     // 本人のページかどうか
     if ($target_user_info_row['user_community_id'] == $acs_user_info_row['user_community_id']) {
         $is_self_page = 1;
     } else {
         $is_self_page = 0;
     }
     // set
     $this->setAttribute('target_user_info_row', $target_user_info_row);
     $this->setAttribute('diary_row_array_result', $diary_row_array_result);
     $this->setAttribute('is_self_page', $is_self_page);
     $this->setAttribute('link_page_url', $link_page_url);
     $this->setAttribute('open_level_master_row_array', $open_level_master_row_array);
     $this->setAttribute('friends_group_row_array', $friends_group_row_array);
     $this->setAttribute('err_str', $err_str);
     $this->setAttribute('form_pre', $form_pre);
     $this->setAttribute('module', $module);
     $this->setAttribute('action', $action);
     $this->setAttribute('id', $id);
     $this->setAttribute('move_id', $move_id);
     // テンプレート
     $this->setScreenId("0001");
     $this->setTemplate('SearchResultDiary.tpl.php');
     return parent::execute();
 }
 function execute()
 {
     $context =& $this->getContext();
     $user = $context->getUser();
     $request = $context->getRequest();
     $controller = $context->getController();
     $acs_user_info_row = $user->getAttribute('acs_user_info_row');
     // get
     $community_row = $request->getAttribute('community_row');
     $sub_community_row_array = $request->getAttribute('sub_community_row_array');
     $parent_community_row_array = $request->getAttribute('parent_community_row_array');
     $community_member_user_info_row_array = $request->getAttribute('community_member_user_info_row_array');
     $community_admin_user_info_row_array = $request->getAttribute('community_admin_user_info_row_array');
     $community_id = $community_row['community_id'];
     $bbs_row_array = $request->getAttribute('bbs_row_array');
     // コミュニティメンバ数
     $community_member_display_max = ACSSystemConfig::get_keyword_value(ACSMsg::get_mst('system_config_group', 'D03'), 'COMMUNITY_MEMBER_DISPLAY_MAX_COUNT');
     $is_community_member = ACSCommunity::is_community_member($acs_user_info_row['user_community_id'], $community_id);
     $is_community_admin = ACSCommunity::is_community_admin($acs_user_info_row['user_community_id'], $community_id);
     // 掲示板新着記事数
     $bbs_display_max = 10;
     // URL
     $bbs_url = $this->getControllerPath("Community", 'BBS') . '&community_id=' . $community_id;
     $community_folder_url = $this->getControllerPath("Community", 'Folder') . '&community_id=' . $community_id;
     if (!$is_community_member && $acs_user_info_row['is_acs_user']) {
         $join_community_url = $this->getControllerPath("Community", 'JoinCommunity') . '&community_id=' . $community_id;
     }
     if ($is_community_admin) {
         //コミュニティ プロフィールの編集
         $community_change_url = $this->getControllerPath("Community", 'EditCommunity') . '&community_id=' . $community_id;
     }
     // コミュニティ退会URL
     //   コミュニティメンバで、管理者でない場合は表示
     if ($is_community_member and !$is_community_admin) {
         $leave_community_url = $this->getControllerPath("Community", 'LeaveCommunity') . '&community_id=' . $community_id;
     }
     // RSS出力ページのURL
     $PressRelease_community_url = $this->getControllerPath("Community", 'PressReleaseRSS') . '&community_id=' . $community_id;
     // 加工 //
     $community_row['register_date'] = ACSLib::convert_pg_date_to_str($community_row['register_date'], 0, 0, 0);
     // 登録日
     $community_row['community_member_num'] = count($community_member_user_info_row_array);
     // メンバー数
     // 画像ファイルのパスを設定
     $community_row['image_url'] = ACSCommunity::get_image_url($community_id);
     if ($is_community_admin) {
         $edit_profile_image_url = $this->getControllerPath("Community", 'EditProfileImage') . '&community_id=' . $community_id;
     }
     // 参加資格の自由参加可能コミュニティ
     foreach ($community_row['join_trusted_community_row_array'] as $index => $join_trusted_community_row) {
         $community_row['join_trusted_community_row_array'][$index]['top_page_url'] = $this->getControllerPath("Community", DEFAULT_ACTION) . '&community_id=' . $join_trusted_community_row['community_id'];
     }
     // 掲示板の公開コミュニティ
     foreach ($community_row['contents_row_array']['bbs']['trusted_community_row_array'] as $index => $trusted_community_row) {
         $community_row['contents_row_array']['bbs']['trusted_community_row_array'][$index]['top_page_url'] = $this->getControllerPath("Community", DEFAULT_ACTION) . '&community_id=' . $trusted_community_row['community_id'];
     }
     // コミュニティフォルダの公開コミュニティ
     foreach ($community_row['contents_row_array']['community_folder']['trusted_community_row_array'] as $index => $trusted_community_row) {
         $community_row['contents_row_array']['community_folder']['trusted_community_row_array'][$index]['top_page_url'] = $this->getControllerPath("Community", DEFAULT_ACTION) . '&community_id=' . $trusted_community_row['community_id'];
     }
     // コミュニティメンバ
     $community_member_display_user_info_row_array = array();
     $array_count = 0;
     foreach ($community_member_user_info_row_array as $index => $community_member_user_info_row) {
         $array_count++;
         $_community_member_row = array();
         $_community_member_row['community_name'] = $community_member_user_info_row['community_name'];
         $_community_member_row['top_page_url'] = $this->getControllerPath(DEFAULT_MODULE, DEFAULT_ACTION) . '&id=' . $community_member_user_info_row['user_community_id'];
         $_community_member_row['image_url'] = ACSUser::get_image_url($community_member_user_info_row['user_community_id'], 'thumb');
         $_community_member_row['friends_row_array_num'] = ACSUser::get_friends_row_array_num($community_member_user_info_row['user_community_id']);
         array_push($community_member_display_user_info_row_array, $_community_member_row);
         if ($array_count == $community_member_display_max) {
             break;
         }
     }
     // コミュニティ管理者
     foreach ($community_admin_user_info_row_array as $index => $community_admin_user_info_row) {
         $community_admin_user_info_row_array[$index]['top_page_url'] = $this->getControllerPath(DEFAULT_MODULE, DEFAULT_ACTION) . '&id=' . $community_admin_user_info_row['user_community_id'];
     }
     // 親コミュニティ
     foreach ($parent_community_row_array as $index => $parent_community_row) {
         $parent_community_row_array[$index]['top_page_url'] = $this->getControllerPath("Community", DEFAULT_ACTION) . '&community_id=' . $parent_community_row['community_id'];
     }
     // サブコミュニティ
     foreach ($sub_community_row_array as $index => $sub_community_row) {
         $sub_community_row_array[$index]['top_page_url'] = $this->getControllerPath("Community", DEFAULT_ACTION) . '&community_id=' . $sub_community_row['community_id'];
     }
     // URL
     // コミュニティ間リンク設定
     if ($is_community_admin) {
         $community_link_url = $this->getControllerPath("Community", 'CommunityLink') . '&community_id=' . $community_row['community_id'];
     }
     // コミュニティメンバ一覧
     $community_member_list_url = $this->getControllerPath("Community", 'CommunityMemberList') . '&community_id=' . $community_row['community_id'];
     // メンバ削除
     $delete_community_member_list_url = "";
     if ($is_community_admin) {
         $delete_community_member_list_url = $this->getControllerPath("Community", 'DeleteCommunityMemberList');
         $delete_community_member_list_url .= '&community_id=' . $community_row['community_id'];
     }
     // コミュニティ削除
     $delete_community_url = "";
     if ($is_community_admin) {
         $delete_community_url = $this->getControllerPath("Community", 'DeleteCommunity');
         $delete_community_url .= '&community_id=' . $community_row['community_id'];
     }
     // コミュニティ招待 URL
     if ($is_community_admin) {
         $invite_to_community_url = $this->getControllerPath("Community", 'InviteToCommunity') . '&community_id=' . $community_row['community_id'];
     }
     // コミュニティスケジュール URL
     if ($is_community_member) {
         $community_schedule_url = $this->getControllerPath("Community", 'Schedule') . '&community_id=' . $community_id;
     }
     // コミュニティ管理者設定
     if ($is_community_admin) {
         $edit_community_admin_url = $this->getControllerPath("Community", 'EditCommunityAdmin') . '&community_id=' . $community_row['community_id'];
     }
     // 外部RSS自動取り込み設定
     if ($is_community_admin) {
         $edit_external_rss_url = $this->getControllerPath("Community", 'EditExternalRSS') . '&community_id=' . $community_row['community_id'];
     }
     if ($is_community_admin) {
         // 待機: コミュニティ参加 承認待ち
         $waiting_for_join_community_row_array = $request->getAttribute('waiting_for_join_community_row_array');
         $waiting_for_join_community_row_array_num = count($waiting_for_join_community_row_array);
         if ($waiting_for_join_community_row_array_num) {
             // マイフレンズ追加 承認待ち URL
             $waiting_for_join_community_url = $this->getControllerPath("Community", 'WaitingList') . '&community_id=' . $community_id . '&waiting_type_code=' . $waiting_for_join_community_row_array[0]['waiting_type_code'] . '&waiting_status_code=' . $waiting_for_join_community_row_array[0]['waiting_status_code'];
         }
         // 待機: 親コミュニティ追加
         $waiting_for_parent_community_link_row_array = $request->getAttribute('waiting_for_parent_community_link_row_array');
         $waiting_for_parent_community_link_row_array_num = count($waiting_for_parent_community_link_row_array);
         if ($waiting_for_parent_community_link_row_array_num) {
             // 親コミュニティ追加 承認待ち URL
             $waiting_for_parent_community_link_url = $this->getControllerPath("Community", 'WaitingList') . '&community_id=' . $community_id . '&waiting_type_code=' . $waiting_for_parent_community_link_row_array[0]['waiting_type_code'] . '&waiting_status_code=' . $waiting_for_parent_community_link_row_array[0]['waiting_status_code'];
         }
         // 待機: サブコミュニティ追加
         $waiting_for_sub_community_link_row_array = $request->getAttribute('waiting_for_sub_community_link_row_array');
         $waiting_for_sub_community_link_row_array_num = count($waiting_for_sub_community_link_row_array);
         if ($waiting_for_sub_community_link_row_array_num) {
             // サブコミュニティ追加 承認待ち URL
             $waiting_for_sub_community_link_url = $this->getControllerPath("Community", 'WaitingList') . '&community_id=' . $community_id . '&waiting_type_code=' . $waiting_for_sub_community_link_row_array[0]['waiting_type_code'] . '&waiting_status_code=' . $waiting_for_sub_community_link_row_array[0]['waiting_status_code'];
         }
     }
     // 掲示板に対するアクセス権
     $bbs_contents_row = ACSCommunity::get_contents_row($community_id, ACSMsg::get_mst('contents_type_master', 'D41'));
     $bbs_contents_row['trusted_community_row_array'] = ACSCommunity::get_contents_trusted_community_row_array($community_id, $bbs_contents_row['contents_type_code'], $bbs_contents_row['open_level_code']);
     $role_array = ACSAccessControl::get_community_role_array($acs_user_info_row, $community_row);
     $ret = ACSAccessControl::is_valid_user_for_community($acs_user_info_row, $role_array, $bbs_contents_row);
     if ($ret) {
         // 掲示版最新情報
         foreach ($bbs_row_array as $index => $bbs_row) {
             // 返信画面URL
             $bbs_row_array[$index]['bbs_res_url'] = $this->getControllerPath("Community", 'BBSRes') . '&community_id=' . $community_row['community_id'] . '&bbs_id=' . $bbs_row['bbs_id'];
             $bbs_row_array[$index]['bbs_last_post_date'] = ACSLib::convert_pg_date_to_str($bbs_row['bbs_last_post_date'], true, false, false);
         }
         //---- アクセス制御 ----//
         $role_array = ACSAccessControl::get_community_role_array($acs_user_info_row, $community_row);
         $bbs_row_array = ACSAccessControl::get_valid_row_array_for_community($acs_user_info_row, $role_array, $bbs_row_array);
         //----------------------//
         $bbs_row_array = array_slice($bbs_row_array, 0, $bbs_display_max);
     } else {
         $bbs_row_array = array();
     }
     // set
     $this->setAttribute('community_row', $community_row);
     $this->setAttribute('parent_community_row_array', $parent_community_row_array);
     $this->setAttribute('sub_community_row_array', $sub_community_row_array);
     $this->setAttribute('community_member_display_user_info_row_array', $community_member_display_user_info_row_array);
     $this->setAttribute('community_admin_user_info_row_array', $community_admin_user_info_row_array);
     $this->setAttribute('bbs_row_array', $bbs_row_array);
     $this->setAttribute('is_community_member', $is_community_member);
     $this->setAttribute('is_community_admin', $is_community_admin);
     $this->setAttribute('bbs_url', $bbs_url);
     $this->setAttribute('community_folder_url', $community_folder_url);
     $this->setAttribute('create_sub_community_url', $create_sub_community_url);
     $this->setAttribute('join_community_url', $join_community_url);
     $this->setAttribute('leave_community_url', $leave_community_url);
     $this->setAttribute('community_change_url', $community_change_url);
     $this->setAttribute('community_schedule_url', $community_schedule_url);
     $this->setAttribute('community_link_url', $community_link_url);
     $this->setAttribute('delete_community_url', $delete_community_url);
     $this->setAttribute('edit_community_admin_url', $edit_community_admin_url);
     $this->setAttribute('invite_to_community_url', $invite_to_community_url);
     $this->setAttribute('edit_community_profile_url', $edit_community_profile_url);
     $this->setAttribute('edit_external_rss_url', $edit_external_rss_url);
     $this->setAttribute('community_member_list_url', $community_member_list_url);
     $this->setAttribute('delete_community_member_list_url', $delete_community_member_list_url);
     $this->setAttribute('PressRelease_community_url', $PressRelease_community_url);
     //画像
     $this->setAttribute('edit_profile_image_url', $edit_profile_image_url);
     // 待機
     $this->setAttribute('waiting_for_join_community_row_array_num', $waiting_for_join_community_row_array_num);
     $this->setAttribute('waiting_for_join_community_url', $waiting_for_join_community_url);
     $this->setAttribute('waiting_for_parent_community_link_row_array_num', $waiting_for_parent_community_link_row_array_num);
     $this->setAttribute('waiting_for_parent_community_link_url', $waiting_for_parent_community_link_url);
     $this->setAttribute('waiting_for_sub_community_link_row_array_num', $waiting_for_sub_community_link_row_array_num);
     $this->setAttribute('waiting_for_sub_community_link_url', $waiting_for_sub_community_link_url);
     // テンプレート
     $this->setScreenId("0001");
     $this->setTemplate('Index.tpl.php');
     return parent::execute();
 }
 function get_execute_privilege()
 {
     $context = $this->getContext();
     $controller = $context->getController();
     $request = $context->getRequest();
     $user = $context->getUser();
     // 公開範囲情報取得
     $acs_user_info_row = $user->getAttribute('acs_user_info_row');
     $bbs_row = ACSBBS::get_bbs_row($request->ACSGetParameter('id'));
     if (!$bbs_row) {
         return false;
     }
     // パブリックリリース
     if ($bbs_row['open_level_code'] == '06') {
         return true;
     }
     $bbs_row['trusted_community_row_array'] = ACSBBS::get_bbs_trusted_community_row_array($bbs_row['bbs_id']);
     $target_community_row = ACSCommunity::get_community_profile_row($bbs_row['bbs_community_id']);
     // スレッドごとのアクセス制御判定
     $role_array = ACSAccessControl::get_community_role_array($acs_user_info_row, $target_community_row);
     $ret = ACSAccessControl::is_valid_user_for_community($acs_user_info_row, $role_array, $bbs_row);
     return $ret;
 }
Example #4
0
 /**
  * 初期処理
  * @access public
  * @param Object $context context
  * @return boolean 処理結果
  */
 public function initialize($context)
 {
     parent::initialize($context);
     // アクションの共通処理を実装する
     /* 初期値をセットする */
     $this->controller = $context->getController();
     $this->request = $context->getRequest();
     $this->user = $context->getUser();
     $this->moduleName = $context->getModuleName();
     $this->actionName = $context->getActionName();
     $this->messages =& CommonMessages::getInstance();
     /* requestオブジェクトにフォーム登録リストをセットする */
     $this->request->setAttributeByRef('formList', $this->formList);
     $request =& $context->getRequest();
     $user =& $context->getUser();
     // セッションからユーザIDが取得できず、POSTでユーザIDが取得可能な場合
     $user_id = $user->getAttribute('login_user_id');
     $justLogin = false;
     if (($user_id == NULL || $user_id == "") && ($_POST['userid'] != NULL && $_POST['userid'] != "")) {
         $input_user_id = $_POST['userid'];
         $input_passwd = $_POST['passwd'];
         // エラーチェック(.htpasswd、LDAPの順)
         $user_id = ACSSystem::check_passwd($input_user_id, $input_passwd);
         if ($user_id) {
             $justLogin = true;
             $getLogoutDateEverytime = ACSSystemConfig::get_keyword_value(ACSMsg::get_mst('system_config_group', 'D08'), 'GET_LOGOUT_DATE_EVERYTIME');
             $user->setAttribute('getLogoutDateEverytime', $getLogoutDateEverytime);
         }
     }
     // 言語設定の実行
     if ($request->getparameter('acsmsg')) {
         ACSMsg::set_lang($request->getparameter('acsmsg'));
         ACSMsg::set_lang_cookie($request->getparameter('acsmsg'));
     }
     // 権限クリア
     $user->clearCredentials();
     // 認証済みを登録
     $user->setAuthenticated(true);
     // $acs_user_info_rowを設定する //
     $acs_user_info_row = array();
     if ($user_id) {
         $acs_user_info_row = ACSUser::get_user_info_row_by_user_id($user_id);
         // ユーザ情報が無い
         if ($user_id && !$acs_user_info_row['user_id']) {
             $acs_user_info_row['user_id'] = $user_id;
             $acs_user_info_row['user_community_id'] = ACS_PUBLIC_USER_COMMUNITY_ID;
             $acs_user_info_row['is_acs_user'] = false;
         } else {
             $acs_user_info_row['is_acs_user'] = true;
             // 権限登録
             $user->addCredential('ACS_USER');
         }
         // ログインユーザ(認証を通過したユーザ)かどうか
         $acs_user_info_row['is_login_user'] = true;
         // システム管理者かどうか
         if ($acs_user_info_row['administrator_flag'] == 't') {
             // 権限登録
             $user->addCredential('SYSTEM_ADMIN_USER');
         }
         // LDAPユーザかどうか (ファイル認証ユーザでなければLDAPユーザとみなす)
         $acs_user_info_row['is_ldap_user'] = !ACSSystem::is_htpasswd_user($user_id);
         // LDAP認証以外の場合、パスワード変更権限を付与
         if ($acs_user_info_row['is_ldap_user']) {
             $user->addCredential('LDAP_USER');
         } else {
             $user->addCredential('NOT_LDAP_USER');
         }
         // 未登録のLDAPユーザの場合は氏名を調べる
         if (!$acs_user_info_row['is_acs_user'] && $acs_user_info_row['is_ldap_user']) {
             $ldap_user_info_row = ACSLDAP::get_ldap_user_info_row($acs_user_info_row['user_id']);
             $acs_user_info_row['user_name'] = $ldap_user_info_row['user_name'];
         }
         // フレンズIDの配列を取得する
         $acs_user_info_row['friends_id_array'] = ACSUser::get_friends_id_array($acs_user_info_row['user_community_id']);
         // 各機能ごとで必要な権限を判別・設定する
         // マイページ所有者、コミュニティ管理者、メンバの設定など
         if ($this->moduleName == 'User') {
             $id = $request->getParameter('id');
             if (!$id) {
                 $id = $acs_user_info_row['user_community_id'];
             }
             // マイページ所有者かどうか
             if ($acs_user_info_row['user_community_id'] == $request->getParameter('id')) {
                 $user->addCredential('USER_PAGE_OWNER');
                 // 友人かどうか
             } elseif (!ACSUser::is_friends($id, $acs_user_info_row['user_community_id'])) {
                 $user->addCredential('NOT_FRIENDS');
             }
         } elseif ($this->moduleName == 'Community') {
             $community_id = $request->getParameter('community_id');
             // コミュニティIDの指定がある場合のみ、権限設定を行う
             if ($community_id) {
                 $is_community_member = ACSCommunity::is_community_member($acs_user_info_row['user_community_id'], $community_id);
                 $is_community_admin = ACSCommunity::is_community_admin($acs_user_info_row['user_community_id'], $community_id);
                 // コミュニティメンバかどうか
                 if ($is_community_member) {
                     $user->addCredential('COMMUNITY_MEMBER');
                     // コミュニティ管理者かどうか
                     if ($is_community_admin) {
                         $user->addCredential('COMMUNITY_ADMIN');
                     }
                     // コミュニティメンバではない
                 } else {
                     $user->addCredential('NOT_COMMUNITY_MEMBER');
                 }
             }
         }
         $user->setAttribute('login_user_id', $user_id);
     } else {
         $acs_user_info_row['user_name'] = ACS_PUBLIC_USER_NAME;
         $acs_user_info_row['user_community_id'] = ACS_PUBLIC_USER_COMMUNITY_ID;
         $acs_user_info_row['is_acs_user'] = false;
         $acs_user_info_row['is_login_user'] = false;
         // 権限設定
         $user->addCredential('PUBLIC_USER');
     }
     $user->setAttribute('acs_user_info_row', $acs_user_info_row);
     // ログイン情報作成
     if ($justLogin) {
         ACSUser::set_login_date($user);
     }
     // アクセス毎のログアウト時間更新
     $getLogoutDateEverytime = $user->getAttribute('getLogoutDateEverytime');
     if ($getLogoutDateEverytime != NULL && $getLogoutDateEverytime == "1") {
         ACSUser::acs_login_date($user);
     }
     if ($acs_user_info_row['is_acs_user'] && $acs_user_info_row['open_level_name'] == ACSMsg::get_mst('open_level_master', 'D01')) {
         // OK
     } elseif ($acs_user_info_row['is_acs_user'] && $acs_user_info_row['open_level_name'] == ACSMsg::get_mst('open_level_master', 'D03') || !$acs_user_info_row['is_acs_user'] && $acs_user_info_row['is_ldap_user']) {
         // マイページ全体が非公開のユーザ or 未登録のLDAPユーザ
         // マイページのプロフィール編集可能な権限を付与する
         $user->addCredential('USER_PAGE_OWNER');
         if ($this->moduleName == DEFAULT_MODULE && ($this->actionName == 'EditProfile' || $this->actionName == 'SetOpenLevelForProfile')) {
             // 未登録のLDAPユーザの場合、プロフィール設定画面へのアクセスを許可
         } else {
             $edit_profile_url = $this->getControllerPath(DEFAULT_MODULE, 'EditProfile');
             header("Location: {$edit_profile_url}");
         }
     } elseif (!$acs_user_info_row['is_acs_user'] && $acs_user_info_row['is_login_user'] && !$acs_user_info_row['is_ldap_user']) {
         echo "Forbidden";
         exit;
     }
     // form で enctype="multipart/form-data" の指定が合った場合の対処
     // エンコーディングを変換する
     if (count($_FILES) && !ini_get('mbstring.encoding_translation')) {
         $request->params = ACSLib::convert_post_data_encoding($request->params);
     }
     // 共通アクセス制御 //
     $access_control_info = $this->get_access_control_info($controller, $request, $user);
     $valid_flag = true;
     if ($access_control_info) {
         $valid_flag = false;
         if ($access_control_info['role_array'] && $access_control_info['contents_row_array']) {
             foreach ($access_control_info['contents_row_array'] as $contents_row) {
                 if ($contents_row['community_type_name'] == ACSMsg::get_mst('community_type_master', 'D40')) {
                     if (ACSAccessControl::is_valid_user_for_community($acs_user_info_row, $access_control_info['role_array'], $contents_row)) {
                         $valid_flag = true;
                     } else {
                         $valid_flag = false;
                         break;
                     }
                 } elseif ($contents_row['community_type_name'] == ACSMsg::get_mst('community_type_master', 'D10')) {
                     if (ACSAccessControl::is_valid_user_for_user_community($acs_user_info_row, $access_control_info['role_array'], $contents_row)) {
                         $valid_flag = true;
                     } else {
                         $valid_flag = false;
                         break;
                     }
                 }
             }
         }
     }
     if (!$valid_flag) {
         $this->controller->forward(SECURE_MODULE, SECURE_ACTION);
         exit;
     }
     // 各機能固有の権限判別を取得
     if ($this->get_execute_privilege($controller, $request, $user)) {
         $user->addCredential('EXECUTE');
     }
     //return parent::initialize($controller);
     return true;
 }
 function get_execute_privilege(&$controller, &$request, &$user)
 {
     // 公開範囲情報取得
     $acs_user_info_row = $user->getAttribute('acs_user_info_row');
     $target_community_row = ACSCommunity::get_community_profile_row($request->getParameter('community_id'));
     $bbs_row = ACSBBS::get_bbs_row($request->getParameter('bbs_id'));
     if (!$bbs_row) {
         return false;
     }
     $bbs_row['trusted_community_row_array'] = ACSBBS::get_bbs_trusted_community_row_array($bbs_row['bbs_id']);
     // アクセス制御判定
     $role_array = ACSAccessControl::get_community_role_array($acs_user_info_row, $target_community_row);
     $ret = ACSAccessControl::is_valid_user_for_community($acs_user_info_row, $role_array, $bbs_row);
     return $ret;
 }
 /**
  * role_arrayに応じてobj_row_arrayを取得する (コミュニティ)
  *
  * @param  $acs_user_info_row アクセス者のユーザ情報
  * @param  $role_array        アクセス者のrole_array
  * @param  $obj_row_array     アクセス対象となるデータ (オブジェクトの配列)
  * @return アクセス可能なデータ(オブジェクトの配列)
  */
 static function get_valid_obj_row_array_for_community($acs_user_info_row, $role_array, $obj_array)
 {
     $new_obj_array = array();
     /* 公開範囲マスタ取得 */
     $open_level_master_row_array = ACSAccessControl::get_all_open_level_master_row_array();
     foreach ($obj_array as $obj) {
         $open_level_code = $obj->get_open_level_code();
         // obj -> row に変換
         $row['community_id'] = $obj->get_community_id();
         $row['open_level_code'] = $open_level_code;
         $row['open_for_public'] = $open_level_master_row_array[$open_level_code]['open_for_public'];
         $row['open_for_user'] = $open_level_master_row_array[$open_level_code]['open_for_user'];
         $row['open_for_member'] = $open_level_master_row_array[$open_level_code]['open_for_member'];
         $row['open_for_administrator'] = $open_level_master_row_array[$open_level_code]['open_for_administrator'];
         $row['open_for_system_administrator'] = $open_level_master_row_array[$open_level_code]['open_for_system_administrator'];
         $row['trusted_community_row_array'] = $obj->get_trusted_community_row_array();
         if (ACSAccessControl::is_valid_user_for_community($acs_user_info_row, $role_array, $row)) {
             array_push($new_obj_array, $obj);
         }
     }
     return $new_obj_array;
 }