Пример #1
0
 function getDefaultView()
 {
     $context = $this->getContext();
     $controller = $context->getController();
     $request = $context->getRequest();
     $user = $context->getUser();
     $acs_user_info_row = $user->getAttribute('acs_user_info_row');
     // 対象となるコミュニティIDを取得
     $community_id = $request->getParameter('community_id');
     // コミュニティ情報
     $community_row = ACSCommunity::get_community_profile_row($community_id);
     $community_row = ACSExternalRSS::add_contents_row_array($community_row);
     // BBS記事一覧
     $bbs_row_array = ACSBBS::get_bbs_row_array($community_id);
     foreach ($bbs_row_array as $index => $bbs_row) {
         // 信頼済みコミュニティ一覧
         $bbs_row_array[$index]['trusted_community_row_array'] = ACSBBS::get_bbs_trusted_community_row_array($bbs_row['bbs_id']);
         // 返信記事
         $bbs_row_array[$index]['bbs_res_row_array'] = ACSBBS::get_bbs_res_row_array($bbs_row['bbs_id']);
     }
     if ($community_row['contents_row_array']['self']['open_level_name'] == ACSMsg::get_mst('open_level_master', 'D03')) {
         // 非公開コミュニティ
         $open_level_master_row_array = ACSAccessControl::get_open_level_master_row_array(ACSMsg::get_mst('community_type_master', 'D40'), ACSMsg::get_mst('contents_type_master', 'D43'));
     } else {
         // 公開範囲
         $open_level_master_row_array = ACSAccessControl::get_open_level_master_row_array(ACSMsg::get_mst('community_type_master', 'D40'), ACSMsg::get_mst('contents_type_master', 'D42'));
     }
     // set
     $request->setAttribute('community_row', $community_row);
     $request->setAttribute('bbs_row_array', $bbs_row_array);
     $request->setAttribute('open_level_master_row_array', $open_level_master_row_array);
     return View::INPUT;
 }
 function getDefaultView()
 {
     $context = $this->getContext();
     $controller = $context->getController();
     $request = $context->getRequest();
     $user = $context->getUser();
     if (!$this->get_execute_privilege()) {
         $controller->forward(SECURE_MODULE, SECURE_ACTION);
         return;
     }
     $acs_user_info_row = $user->getAttribute('acs_user_info_row');
     // get
     $external_rss_url_open_level_master_row_array = ACSAccessControl::get_open_level_master_row_array(ACSMsg::get_mst('community_type_master', 'D40'), ACSMsg::get_mst('contents_type_master', 'D63'));
     // 対象となるコミュニティIDを取得
     $community_id = $request->ACSgetParameter('community_id');
     // コミュニティ情報
     $community_row = ACSCommunity::get_community_profile_row($community_id);
     $community_row = ACSExternalRSS::add_contents_row_array($community_row);
     // 入力エラー時の復元 //
     $form = $request->ACSGetParameters();
     if ($form['is_error']) {
         $community_row['contents_row_array']['external_rss_url']['contents_value'] = $form['external_rss_url'];
         $community_row['contents_row_array']['external_rss_url']['open_level_code'] = $form['external_rss_url_open_level_code'];
         $community_row['contents_row_array']['external_rss_url']['trusted_community_row_array'] = array();
         if (is_array($form['external_rss_url_trusted_community_id_array'])) {
             foreach ($form['external_rss_url_trusted_community_id_array'] as $trusted_community_id) {
                 array_push($community_row['contents_row_array']['external_rss_url']['trusted_community_row_array'], array('community_id' => $trusted_community_id));
             }
         }
         $community_row['contents_row_array']['external_rss_post_user']['contents_value'] = $form['external_rss_post_user'];
         $community_row['contents_row_array']['external_rss_public_release_expire_term']['contents_value'] = $form['external_rss_public_release_expire_term'];
         $community_row['contents_row_array']['external_rss_ml_send_flag']['contents_value'] = $form['external_rss_ml_send_flag'];
     }
     // 初期値 //
     // 投稿者
     if (!isset($community_row['contents_row_array']['external_rss_post_user']['contents_value'])) {
         $community_row['contents_row_array']['external_rss_post_user']['contents_value'] = $acs_user_info_row['user_community_id'];
     }
     // 公開範囲
     if (!isset($community_row['contents_row_array']['external_rss_url']['open_level_code'])) {
         $community_row['contents_row_array']['external_rss_url']['open_level_code'] = $community_row['contents_row_array']['bbs']['open_level_code'];
         $community_row['contents_row_array']['external_rss_url']['trusted_community_row_array'] = $community_row['contents_row_array']['bbs']['trusted_community_row_array'];
     }
     // コミュニティ管理者情報
     $community_admin_user_info_row_array = ACSCommunity::get_community_admin_user_info_row_array($community_row['community_id']);
     // set
     $request->setAttribute('community_row', $community_row);
     $request->setAttribute('community_admin_user_info_row_array', $community_admin_user_info_row_array);
     $request->setAttribute('external_rss_url_open_level_master_row_array', $external_rss_url_open_level_master_row_array);
     return View::INPUT;
 }
Пример #3
0
 /**
  * 外部RSS自動取り込みを実行する
  *
  * @param $community_row コミュニティ情報
  * @return $msg
  */
 static function do_process($community_row)
 {
     $msg = "";
     // 公開レベルマスタ
     $open_level_master_array = ACSDB::get_master_array('open_level');
     // 外部RSSコンテンツ情報を付加
     $community_row = ACSExternalRSS::add_contents_row_array($community_row);
     // RSS情報を取得
     $rss_row_array = ACSExternalRSS::get_external_rss_row_array($community_row['contents_row_array']['external_rss_url']['contents_value']);
     if ($rss_row_array == false) {
         return;
     }
     // 外部RSS.投稿者が該当コミュニティのコミュニティ管理者であるかどうかチェックする
     $community_admin_user_info_row_array = ACSCommunity::get_community_admin_user_info_row_array($community_row['community_id']);
     $err_flg = 1;
     foreach ($community_admin_user_info_row_array as $community_admin_user_info_row) {
         if ($community_admin_user_info_row['user_community_id'] == $community_row['contents_row_array']['external_rss_post_user']['contents_value']) {
             $err_flg = 0;
             break;
         }
     }
     if ($err_flg) {
         return;
     }
     // 投稿者情報 (ml_addrを含む情報)
     $post_user_info_row = ACSUser::get_user_info_row_by_user_community_id($community_row['contents_row_array']['external_rss_post_user']['contents_value']);
     $post_user_info_row = ACSUser::get_user_info_row_by_user_id($post_user_info_row['user_id']);
     // 投稿情報($form) //
     // 初期化
     $form = array();
     $form['community_id'] = $community_row['community_id'];
     $form['user_community_id'] = $community_row['contents_row_array']['external_rss_post_user']['contents_value'];
     $form['open_level_code'] = $community_row['contents_row_array']['external_rss_url']['open_level_code'];
     // パブリックリリース の場合
     if ($open_level_master_array[$form['open_level_code']] == ACSMsg::get_mst('open_level_master', 'D06') && intval($community_row['contents_row_array']['external_rss_public_release_expire_term']['contents_value']) >= 1) {
         $form['expire_date'] = "CURRENT_DATE + '@ " . ($community_row['contents_row_array']['external_rss_public_release_expire_term']['contents_value'] - 1) . " days'::INTERVAL";
     } else {
         $form['expire_date'] = '';
     }
     // 非公開 (メンバのみ) の場合
     if ($open_level_master_array[$form['open_level_code']] == ACSMsg::get_mst('open_level_master', 'D04')) {
         $form['trusted_community_row_array'] = $community_row['contents_row_array']['external_rss_url']['trusted_community_row_array'];
     } else {
         $form['trusted_community_row_array'] = array();
     }
     $form['ml_send_flag'] = ACSLib::get_pg_boolean(ACSLib::get_boolean($community_row['contents_row_array']['external_rss_ml_send_flag']['contents_value']));
     // RSS記事ごとの処理 //
     foreach ($rss_row_array['items'] as $rss_item_row) {
         // 掲載されているかチェック
         if (!ACSExternalRSS::is_posted_value($community_row['community_id'], $rss_item_row['rss_item_title'], $rss_item_row['rss_item_date'])) {
             // 掲載されていない場合
             $form['subject'] = $rss_item_row['rss_item_title'];
             $form['body'] = $rss_item_row['rss_item_content'];
             $form['post_date'] = $rss_item_row['rss_item_date'];
             $bbs_id = ACSExternalRSS::set_bbs_and_external_rss($form, $rss_row_array['channel_info'], $rss_item_row);
             if (!$bbs_id) {
                 echo "ERROR\n";
                 exit;
             } else {
                 $msg .= "掲載: {$community_row['community_name']} (community_id={$community_row['community_id']})\n";
                 $msg .= "\t=> {$form['subject']} (bbs_id={$bbs_id})\n";
                 if (ACSLib::get_boolean($form['ml_send_flag'])) {
                     // MLステータスの取得
                     $ml_status_row = ACSCommunity::get_contents_row($community_row['community_id'], ACSMsg::get_mst('contents_type_master', 'D62'));
                     $ml_status = $ml_status_row['contents_value'];
                     // ML有りの場合メールを送信
                     if ($ml_status == 'ACTIVE') {
                         // 件名編集
                         $subject = str_replace('{BBSID}', $bbs_id, ACS_COMMUNITY_ML_SUBJECT_FORMAT) . $form['subject'];
                         // ML送信
                         ACSCommunityMail::send_community_mailing_list($community_row['community_id'], $post_user_info_row['mail_addr'], $form['subject'], $form['body']);
                         $msg .= "\t=> ML送信\n";
                     }
                 }
             }
         }
     }
     return $msg;
 }