function dispatch() { global $xoopsUser, $xoopsUserIsAdmin; if($this->isGuest() || !$this->validateToken('MEMBER_EDIT')){ redirect_header(XOOPS_URL, 2, _NOPERM); } $own_uid = $xoopsUser->getVar('uid'); $cid = $this->getIntRequest('cid'); $uid = $this->getIntRequest('uid'); if(!$cid || !$uid || $uid == $own_uid){ redirect_header(XOOPS_URL, 2, _NOPERM); } // コミュニティの取得 $perm = XSNS_AUTH_XOOPS_ADMIN | XSNS_AUTH_ADMIN; $commu_handler =& XsnsCommunityHandler::getInstance(); $community =& $commu_handler->get($cid); if(!is_object($community) || !$community->checkAuthority($perm)){ redirect_header(XOOPS_URL, 2, _NOPERM); } // 対象コミュニティメンバーの取得 $c_member_handler =& XsnsMemberHandler::getInstance(); $c_member =& $c_member_handler->getOne($cid, $uid); if(!is_object($c_member)){ redirect_header(XOOPS_URL, 2, _NOPERM); } $c_member_info =& $c_member->getInfo(); // コミュニティメンバーの強制退会 if($c_member_handler->delete($c_member)){ // 既存の依頼を削除 $confirm_handler =& XsnsConfirmHandler::getInstance(); $criteria = new CriteriaCompo(new Criteria('c_commu_id', $cid)); $criteria->add(new Criteria('uid_from', $own_uid)); $criteria->add(new Criteria('uid_to', $uid)); $criteria->add(new Criteria('mode', '(1,2)', 'IN')); // 管理者交代 or 副管理者就任 $confirm_handler->deleteObjects($criteria); // XOOPS管理者による特別な処理 if($xoopsUserIsAdmin){ // 対象が管理者の場合、自分が管理者に代わる if($uid == $community->getVar('uid_admin')){ $community->setVar('uid_admin', $own_uid); } // 対象が副管理者の場合、副管理者は無しにする elseif($uid == $community->getVar('uid_sub_admin')){ $community->setVar('uid_sub_admin', 0); } $commu_handler->insert($community); } redirect_header(XSNS_URL_COMMU.'?cid='.$cid, 2, sprintf(_MD_XSNS_MEMBER_LEAVE_OK, $c_member_info['name'])); } redirect_header(XSNS_URL_COMMU, 2, _MD_XSNS_MEMBER_LEAVE_NG); }
function dispatch() { global $xoopsUser; $confirm_id = $this->getIntRequest('confirm_id'); if($confirm_id < 1){ redirect_header(XOOPS_URL, 2, _NOPERM); } if($this->isGuest() || !$this->validateToken('CONFIRM_REJECT_ID'.$confirm_id)){ redirect_header(XOOPS_URL, 2, _NOPERM); } // 依頼情報の取得 $confirm_handler =& XsnsConfirmHandler::getInstance(); $confirm =& $confirm_handler->get($confirm_id); if(!is_object($confirm)){ redirect_header(XOOPS_URL, 2, _NOPERM); } $cid = $confirm->getVar('c_commu_id'); $uid_from = $confirm->getVar('uid_from'); $uid_to = $confirm->getVar('uid_to'); $mode = $confirm->getVar('mode'); if($uid_to != $xoopsUser->getVar('uid')){ redirect_header(XOOPS_URL, 2, _NOPERM); } // ユーザーの取得(依頼者が存在しなくても処理を続行) $user_handler =& XsnsUserHandler::getInstance(); $user_to =& $user_handler->get($uid_to); if(!is_object($user_to)){ redirect_header(XOOPS_URL, 2, _NOPERM); } if($mode < 3){ // コミュニティの取得 $commu_handler =& XsnsCommunityHandler::getInstance(); $community =& $commu_handler->get($cid); if(!is_object($community) || $community->getAuthority() < XSNS_AUTH_MEMBER){ redirect_header(XOOPS_URL, 2, _NOPERM); } } // 依頼の削除 if($confirm_handler->delete($confirm)){ $url = ($confirm_handler->getCount(new Criteria('uid_to', $uid_to)) > 0) ? XSNS_URL_MYPAGE.'&'.XSNS_ACTION_ARG.'=confirm' : XSNS_URL_MYPAGE; redirect_header($url, 2, sprintf(_MD_XSNS_CONFIRM_REJECT_OK, $user_to->getVar('uname'))); } redirect_header(XSNS_URL_MYPAGE, 2, _MD_XSNS_CONFIRM_REJECT_NG); }
function dispatch() { if($this->isGuest() || !$this->validateToken('COMMUNITY_DELETE')){ redirect_header(XOOPS_URL, 2, _NOPERM); } $cid = $this->getIntRequest('cid'); if(!isset($cid)){ redirect_header(XOOPS_URL, 2, _NOPERM); } // コミュニティの取得 $perm = XSNS_AUTH_XOOPS_ADMIN | XSNS_AUTH_ADMIN; $commu_handler =& XsnsCommunityHandler::getInstance(); $community =& $commu_handler->get($cid); if(!is_object($community) || !$community->checkAuthority($perm) || $community->getTopicCount() > 0){ redirect_header(XOOPS_URL, 2, _NOPERM); } $old_name = $community->getVar('name'); if($commu_handler->delete($community)){ $category_handler =& XsnsCategoryHandler::getInstance(); if($category_handler->updateSelector()){ $criteria = new Criteria('c_commu_id', $cid); // 所属メンバーデータの削除 $c_member_handler =& XsnsMemberHandler::getInstance(); $c_member_handler->deleteObjects($criteria); // 依頼データの削除 $confirm_handler =& XsnsConfirmHandler::getInstance(); $confirm_handler->deleteObjects($criteria); // アクセスログの削除 $access_log_handler =& XsnsAccessLogHandler::getInstance(); $access_log_handler->deleteObjects($criteria); // 画像の削除 $image_criteria = new CriteriaCompo(new Criteria('target', 1)); $image_criteria->add(new Criteria('target_id', $cid)); $image_handler =& XsnsImageHandler::getInstance(); $image_handler->deleteObjects($image_criteria); redirect_header(XSNS_URL_COMMU, 2, sprintf(_MD_XSNS_INDEX_DEL_OK, $old_name)); } } redirect_header(XSNS_URL_COMMU, 2, _MD_XSNS_INDEX_DEL_NG); }
function XsnsUser() { $this->XoopsUser(); $this->ts =& XsnsTextSanitizer::getInstance(); $this->handler = array( 'community' => XsnsCommunityHandler::getInstance(), 'member' => XsnsMemberHandler::getInstance(), 'user' => XsnsUserHandler::getInstance(), 'friend' => XsnsFriendHandler::getInstance(), 'confirm' => XsnsConfirmHandler::getInstance(), 'module_config' => XsnsModuleConfigHandler::getInstance(), 'intro' => XsnsIntroductionHandler::getInstance(), ); }
function dispatch() { global $xoopsUser; if($this->isGuest() || !$this->validateToken('FRIEND_DELETE')){ redirect_header(XOOPS_URL, 2, _NOPERM); } $own_uid = $xoopsUser->getVar('uid'); $uid = $this->getIntRequest('uid'); if(!$uid){ redirect_header(XOOPS_URL, 2, _NOPERM); } $user_handler =& XsnsUserHandler::getInstance(); $user =& $user_handler->get($own_uid); $friend =& $user_handler->get($uid); $friend_name = is_object($friend) ? $friend->getVar('uname') : ""; if(is_object($user) && is_object($friend) && $user->unsetFriend($uid)){ // 削除した旨を送信 $confirm_handler =& XsnsConfirmHandler::getInstance(); $new_confirm =& $confirm_handler->create(); $new_confirm->setVars(array( 'uid_from' => $own_uid, 'uid_to' => $uid, 'mode' => 4, 'r_datetime' => date('Y-m-d H:i:s'), )); $confirm_handler->insert($new_confirm); // 互いの紹介文を削除 $intro_handler =& XsnsIntroductionHandler::getInstance(); $criteria1 = new CriteriaCompo(new Criteria('uid_to', $own_uid)); $criteria1->add(new Criteria('uid_from', $uid)); $criteria2 = new CriteriaCompo(new Criteria('uid_to', $uid)); $criteria2->add(new Criteria('uid_from', $own_uid)); $criteria1->add($criteria2, 'OR'); $intro_handler->deleteObjects($criteria1); redirect_header(XSNS_URL_MYPAGE, 2, sprintf(_MD_XSNS_FRIEND_DELETE_OK, $friend_name)); } redirect_header(XSNS_URL_MYPAGE, 2, _MD_XSNS_FRIEND_DELETE_NG); }
function dispatch() { global $xoopsUser; if($this->isGuest()){ redirect_header(XOOPS_URL, 2, _NOPERM); } $own_uid = $xoopsUser->getVar('uid'); $cid = $this->getIntRequest('cid', XSNS_REQUEST_GET); if(!isset($cid)){ redirect_header(XOOPS_URL, 2, _NOPERM); } // コミュニティの取得 $perm = XSNS_AUTH_NON_MEMBER; $commu_handler =& XsnsCommunityHandler::getInstance(); $community =& $commu_handler->get($cid); if(!is_object($community) || !$community->checkAuthority($perm)){ redirect_header(XOOPS_URL, 2, _NOPERM); } $public_flag = $community->getVar('public_flag'); $is_public = true; if($public_flag > 1){ $is_public = false; // 依頼送信済みかどうかの確認 $uid_admin = $community->getVar('uid_admin'); $confirm_handler =& XsnsConfirmHandler::getInstance(); if($confirm_handler->getOne($cid, $own_uid, $uid_admin, 0)){ redirect_header(XSNS_URL_COMMU.'?cid='.$cid, 2, _MD_XSNS_INDEX_JOIN_REQ_NG_ALREADY); } } $commu = array( 'id' => $cid, 'name' => $community->getVar('name'), 'is_public' => $is_public, ); $this->context->setAttribute('commu', $commu); }
function dispatch() { global $xoopsUser; if($this->isGuest() || !$this->validateToken('FRIEND_ADD')){ redirect_header(XOOPS_URL, 2, _NOPERM); } $uid = $this->getIntRequest('uid'); $own_uid = $xoopsUser->getVar('uid'); if(!$uid || $uid == $own_uid){ redirect_header(XOOPS_URL, 2, _NOPERM); } $user_handler =& XsnsUserHandler::getInstance(); $own_user =& $user_handler->get($own_uid); $target_user =& $user_handler->get($uid); if(!is_object($own_user) || !is_object($target_user) || $own_user->isFriend($uid)){ redirect_header(XOOPS_URL, 2, _NOPERM); } $message = $this->getTextRequest('message'); $confirm_handler =& XsnsConfirmHandler::getInstance(); $confirm =& $confirm_handler->getOne(0, $own_uid, $uid, 3); if(!is_object($confirm)){ $confirm =& $confirm_handler->create(); } $confirm->setVars(array( 'uid_from' => $own_uid, 'uid_to' => $uid, 'mode' => 3, 'r_datetime' => date('Y-m-d H:i:s'), 'message' => $message, )); if($confirm_handler->insert($confirm)){ redirect_header(XSNS_URL_MYPAGE, 2, sprintf(_MD_XSNS_FRIEND_ADD_OK, $target_user->getVar('uname'))); } redirect_header(XSNS_URL_MYPAGE, 2, _MD_XSNS_FRIEND_ADD_NG); }
function dispatch() { global $xoopsUser; if($this->isGuest()){ redirect_header(XOOPS_URL, 2, _NOPERM); } $own_uid = $xoopsUser->getVar('uid'); $confirm_handler =& XsnsConfirmHandler::getInstance(); $user_handler =& XsnsUserHandler::getInstance(); $commu_handler =& XsnsCommunityHandler::getInstance(); $own_user =& $user_handler->get($own_uid); if(!is_object($own_user)){ redirect_header(XOOPS_URL, 2, _NOPERM); } $criteria = new CriteriaCompo(new Criteria('uid_to', $own_uid)); $criteria->setSort('r_datetime'); $criteria->setOrder('DESC'); $confirm_obj_list =& $confirm_handler->getObjects($criteria); $confirm_list_all = array(); if(count($confirm_obj_list) > 0){ $confirm_format = array( 0 => array( 'title' => _MD_XSNS_CONFIRM_JOIN_TITLE, 'desc' => _MD_XSNS_CONFIRM_JOIN_DESC, 'show_commu' => true, 'show_message' => true, 'accept_only' => false, ), 1 => array( 'title' => _MD_XSNS_CONFIRM_ADMIN_TITLE, 'desc' => _MD_XSNS_CONFIRM_ADMIN_DESC, 'show_commu' => true, 'show_message' => true, 'accept_only' => false, ), 2 => array( 'title' => _MD_XSNS_CONFIRM_SUB_ADMIN_TITLE, 'desc' => _MD_XSNS_CONFIRM_SUB_ADMIN_DESC, 'show_commu' => true, 'show_message' => true, 'accept_only' => false, ), 3 => array( 'title' => _MD_XSNS_CONFIRM_FRIEND_TITLE, 'desc' => _MD_XSNS_CONFIRM_FRIEND_DESC, 'show_commu' => false, 'show_message' => true, 'accept_only' => false, ), 4 => array( 'title' => _MD_XSNS_CONFIRM_FRIEND_DEL_TITLE, 'desc' => _MD_XSNS_CONFIRM_FRIEND_DEL_DESC, 'show_commu' => false, 'show_message' => false, 'accept_only' => true, ), ); $confirm_format_count = count($confirm_format); $user_info = $commu_info = array(); foreach($confirm_obj_list as $confirm_obj){ $rows = 2; $id = $confirm_obj->getVar('c_commu_confirm_id'); $uid_from = $confirm_obj->getVar('uid_from'); $mode = $confirm_obj->getVar('mode'); if(!isset($user_info[$uid_from])){ $user =& $user_handler->get($uid_from); if(is_object($user)){ $user_info[$uid_from] =& $user->getInfo(); } unset($user); } $cid = $confirm_obj->getVar('c_commu_id'); if($cid > 0 && !isset($commu_info[$cid])){ $community =& $commu_handler->get($cid); if(is_object($community)){ $commu_info[$cid] =& $community->getInfo(); $commu_info[$cid]['url'] = XSNS_URL_COMMU.'?cid='.$cid; } unset($community); } $form_vars = array('confirm_id' => $id); $form_accept = $this->getFormHeader('post', 'mypage', 'confirm_accept_exec', false, $form_vars, 'CONFIRM_ACCEPT_ID'.$id); $form_reject = !$confirm_format[$mode]['accept_only'] ? $this->getFormHeader('post', 'mypage', 'confirm_reject_exec', false, $form_vars, 'CONFIRM_REJECT_ID'.$id) : NULL; if($confirm_format[$mode]['show_commu']){ $rows++; } if($confirm_format[$mode]['show_message']){ $rows++; } $confirm_list[$mode][$id] = array( 'member' => $user_info[$uid_from], 'commu' => ($cid>0)? $commu_info[$cid] : NULL, 'req_mode' => $mode, 'time' => $confirm_obj->getVar('r_datetime'), 'message' => $confirm_obj->getVar('message'), 'show_commu' => $confirm_format[$mode]['show_commu'], 'show_message' => $confirm_format[$mode]['show_message'], 'accept_only' => $confirm_format[$mode]['accept_only'], 'rows' => $rows, 'form_accept' => $form_accept, 'form_reject' => $form_reject, ); } for($i=0; $i<$confirm_format_count; $i++){ $req_count = isset($confirm_list[$i])? count($confirm_list[$i]) : 0; $confirm_list_all[$i] = array( 'lang_title' => $confirm_format[$i]['title'], 'lang_desc' => $confirm_format[$i]['desc'], 'request_count' => $req_count, 'confirm_list' => ($req_count>0)? $confirm_list[$i] : NULL, ); } } $this->context->setAttribute('user_menu', $own_user->getMypageMenu()); $this->context->setAttribute('confirm_list_all', $confirm_list_all); }
function dispatch() { global $xoopsUser, $xoopsUserIsAdmin; if($this->isGuest() || !$this->validateToken('MEMBER_EDIT')){ redirect_header(XOOPS_URL, 2, _NOPERM); } $own_uid = $xoopsUser->getVar('uid'); $cid = $this->getIntRequest('cid'); $uid = $this->getIntRequest('uid'); $message = $this->getTextRequest('message'); if(!$cid || !$uid || $uid == $own_uid){ redirect_header(XOOPS_URL, 2, _NOPERM); } // コミュニティの取得 $perm = XSNS_AUTH_XOOPS_ADMIN | XSNS_AUTH_ADMIN; $commu_handler =& XsnsCommunityHandler::getInstance(); $community =& $commu_handler->get($cid); if(!is_object($community) || !$community->checkAuthority($perm)){ redirect_header(XOOPS_URL, 2, _NOPERM); } if($xoopsUserIsAdmin && $own_uid != $community->getVar('uid_admin')){ redirect_header(XOOPS_URL, 2, _NOPERM); } // 対象コミュニティメンバーの取得 $c_member_handler =& XsnsMemberHandler::getInstance(); $c_member =& $c_member_handler->getOne($cid, $uid); if(!is_object($c_member)){ redirect_header(XOOPS_URL, 2, _NOPERM); } $c_member_info =& $c_member->getInfo(); // 既存の依頼を削除(重複を防ぐため) $confirm_handler =& XsnsConfirmHandler::getInstance(); $criteria = new CriteriaCompo(new Criteria('c_commu_id', $cid)); $criteria->add(new Criteria('uid_from', $own_uid)); $criteria->add(new Criteria('uid_to', $uid)); $criteria->add(new Criteria('mode', '(1,2)', 'IN')); // 管理者交代 or 副管理者就任 $confirm_handler->deleteObjects($criteria); // 新規依頼の送信 $confirm =& $confirm_handler->create(); $confirm->setVars(array( 'c_commu_id' => $cid, 'uid_from' => $own_uid, 'uid_to' => $uid, 'mode' => 1, // 管理者交代 'r_datetime' => date('Y-m-d H:i:s'), 'message' => $message, )); if($confirm_handler->insert($confirm)){ redirect_header(XSNS_URL_COMMU.'?cid='.$cid, 2, sprintf(_MD_XSNS_MEMBER_ADMIN_OK, $c_member_info['name'])); } redirect_header(XSNS_URL_COMMU, 2, _MD_XSNS_MEMBER_ADMIN_NG); }
function dispatch() { global $xoopsUser; $confirm_id = $this->getIntRequest('confirm_id'); if($confirm_id < 1){ redirect_header(XOOPS_URL, 2, _NOPERM); } if($this->isGuest() || !$this->validateToken('CONFIRM_ACCEPT_ID'.$confirm_id)){ redirect_header(XOOPS_URL, 2, _NOPERM); } // 依頼情報の取得 $confirm_handler =& XsnsConfirmHandler::getInstance(); $confirm =& $confirm_handler->get($confirm_id); if(!is_object($confirm)){ redirect_header(XOOPS_URL, 2, _NOPERM); } $cid = $confirm->getVar('c_commu_id'); $uid_from = $confirm->getVar('uid_from'); $uid_to = $confirm->getVar('uid_to'); $mode = $confirm->getVar('mode'); if($uid_to != $xoopsUser->getVar('uid')){ redirect_header(XOOPS_URL, 2, _NOPERM); } // ユーザーの取得 $user_handler =& XsnsUserHandler::getInstance(); $user_from =& $user_handler->get($uid_from); // 依頼者(他人) $user_to =& $user_handler->get($uid_to); // 自分 if(!is_object($user_from) || !is_object($user_to)){ redirect_header(XOOPS_URL, 2, _NOPERM); } if($mode < 3){ // コミュニティの取得 $commu_handler =& XsnsCommunityHandler::getInstance(); $community =& $commu_handler->get($cid); if(!is_object($community) || $community->getAuthority() < XSNS_AUTH_MEMBER){ redirect_header(XOOPS_URL, 2, _NOPERM); } } switch($mode){ case 0: // コミュニティ参加 $ret = $user_from->joinCommunity($cid); $msg = _MD_XSNS_CONFIRM_JOIN; break; case 1: // 管理者交代 $ret = $user_to->setCommunityAdmin($cid); $msg = _MD_XSNS_CONFIRM_ADMIN; break; case 2: // 副管理者就任 $ret = $user_to->setCommunitySubAdmin($cid); $msg = _MD_XSNS_CONFIRM_SUB_ADMIN; break; case 3: // 友達リスト登録 $ret1 = $user_to->setFriend($uid_from); $ret2 = $user_from->setFriend($uid_to); $ret = $ret1 | $ret2; $msg = _MD_XSNS_CONFIRM_FRIEND; break; case 4: // 友達リスト登録解除(確認のみ) if($confirm_handler->delete($confirm)){ header("Location: ".XSNS_URL_MYPAGE); exit; } redirect_header(XOOPS_URL, 2, _NOPERM); break; default: redirect_header(XOOPS_URL, 2, _NOPERM); break; } if($ret && $confirm_handler->delete($confirm)){ $url = ($confirm_handler->getCount(new Criteria('uid_to', $uid_to)) > 0) ? XSNS_URL_MYPAGE.'&'.XSNS_ACTION_ARG.'=confirm' : XSNS_URL_MYPAGE; redirect_header($url, 2, sprintf(_MD_XSNS_CONFIRM_ACCEPT_OK. $msg, $user_from->getVar('uname'))); } redirect_header(XSNS_URL_MYPAGE, 2, _MD_XSNS_CONFIRM_ACCEPT_NG); }
function dispatch() { global $xoopsUser; if($this->isGuest() || !$this->validateToken('COMMUNITY_JOIN')){ redirect_header(XOOPS_URL, 2, _NOPERM); } $own_uid = $xoopsUser->getVar('uid'); $cid = $this->getIntRequest('cid'); if(!isset($cid)){ redirect_header(XOOPS_URL, 2, _NOPERM); } // コミュニティの取得 $perm = XSNS_AUTH_NON_MEMBER; $commu_handler =& XsnsCommunityHandler::getInstance(); $community =& $commu_handler->get($cid); if(!is_object($community) || !$community->checkAuthority($perm)){ redirect_header(XOOPS_URL, 2, _NOPERM); } $public_flag = $community->getVar('public_flag'); $is_public = true; $name = $community->getVar('name'); $redirect_url = XSNS_URL_COMMU.'?cid='.$cid; if($public_flag > 1){ // 参加の際に管理者の承認が必要なコミュニティ // 依頼送信済みかどうかの確認 $uid_admin = $community->getVar('uid_admin'); $confirm_handler =& XsnsConfirmHandler::getInstance(); if($confirm_handler->getOne($cid, $own_uid, $uid_admin, 0)){ redirect_header($redirect_url, 2, _MD_XSNS_INDEX_JOIN_REQ_NG_ALREADY); } // 依頼の送信 $new_confirm =& $confirm_handler->create(); $new_confirm->setVars(array( 'c_commu_id' => $cid, 'uid_from' => $own_uid, 'uid_to' => $uid_admin, 'mode' => 0, // コミュニティ参加 'r_datetime' => date('Y-m-d H:i:s'), 'message' => $this->getTextRequest('message'), )); if($confirm_handler->insert($new_confirm)){ redirect_header($redirect_url, 2, sprintf(_MD_XSNS_INDEX_JOIN_REQ_OK, $name)); } redirect_header($redirect_url, 2, _MD_XSNS_INDEX_JOIN_REQ_NG); } else{ // 誰でも参加可能なコミュニティ $c_member_handler =& XsnsMemberHandler::getInstance(); $new_member =& $c_member_handler->create(); $new_member->setVars(array( 'uid' => $own_uid, 'c_commu_id' => $cid, 'r_datetime' => date('Y-m-d H:i:s'), )); if($c_member_handler->insert($new_member)){ redirect_header($redirect_url, 2, sprintf(_MD_XSNS_INDEX_JOIN_OK, $name)); } redirect_header($redirect_url, 2, _MD_XSNS_INDEX_JOIN_NG); } }