'; } add_action( 'admin_head', 'aag_admin_head' ); function aag_admin_load_js() { global $plugin_page; if ( ! isset( $plugin_page ) || 0 !== strpos( $plugin_page, AAG_PLUGIN_NAME ) ) return; wp_enqueue_script( 'aag', aag_plugin_url( 'admin/aag.js' ), array('jquery'), AAG_VERSION, true ); } add_action( 'wp_print_scripts', 'aag_admin_load_js' ); function aag_add_pages() { $join = aag_plugin_path( 'admin/join-group.php' ); $messages = aag_plugin_path( 'admin/messages.php' ); $edit = aag_plugin_path( 'admin/edit-groups.php' ); $add_new = aag_plugin_path( 'admin/add-new-group.php' ); $manage = aag_plugin_path( 'admin/manage-group.php' ); $parent = $join; add_menu_page( __( 'Groups', 'aag' ), __( 'Groups', 'aag' ), aag_join_group_capability(), $parent ); add_submenu_page( $parent, __( 'Join Group', 'aag' ), __( 'Join', 'aag' ), aag_join_group_capability(), $join ); if ( aag_get_your_groups() ) { add_submenu_page( $parent, __( 'Group Messages', 'aag' ), __( 'Messages', 'aag' ), aag_join_group_capability(), $messages ); } add_submenu_page( $parent, __( 'Manage Groups', 'aag' ), __( 'Manage', 'aag' ), aag_add_group_capability(), $manage ); } function aag_admin_init() { aag_add_pages(); if ( isset( $_POST['aag-create-group'] ) ) { check_admin_referer( 'aag-create-group' ); if ( ! aag_you_can_add_group() ) wp_die( __( 'Cheatin’ uh?', 'aag' ) ); $group_id = aag_insert_group( array( 'group_name' => $_POST['group-name'], 'group_description' => $_POST['group-description'], 'group_status' => $_POST['group-status'] ) ); wp_redirect( aag_admin_url( 'manage-group.php', array( 'group_id' => $group_id, 'created' => 1 ) ) ); exit(); } elseif ( isset( $_POST['aag-edit-group'] ) ) { $group_id = (int) $_POST['group-id']; check_admin_referer( 'aag-edit-group-' . $group_id ); if ( ! aag_you_can_edit_group( $group_id ) ) wp_die( __( 'Cheatin’ uh?', 'aag' ) ); aag_update_group( $group_id, array( 'group_name' => $_POST['group-name'], 'group_description' => $_POST['group-description'], 'group_status' => $_POST['group-status'] ) ); wp_redirect( aag_admin_url( 'manage-group.php', array( 'group_id' => $group_id, 'updated' => 1 ) ) ); exit(); } elseif ( isset( $_POST['aag-delete-group'] ) ) { $group_id = (int) $_POST['group-id']; check_admin_referer( 'aag-delete-group-' . $group_id ); if ( ! aag_you_can_delete_group( $group_id ) ) wp_die( __( 'Cheatin’ uh?', 'aag' ) ); aag_delete_group( $group_id ); wp_redirect( aag_admin_url( 'manage-group.php', array( 'deleted' => 1 ) ) ); exit(); } elseif ( isset( $_GET['aag-member-acceptance'] ) ) { $group_id = (int) $_GET['group_id']; $membership_id = (int) $_GET['membership_id']; check_admin_referer( 'aag-member-acceptance-' . $membership_id ); if ( ! aag_you_can_accept_member( $group_id ) ) wp_die( __( 'Cheatin’ uh?', 'aag' ) ); $member = aag_get_membership_by_id( $membership_id ); aag_update_member_status( $group_id, $member->user_id, 'member' ); wp_redirect( aag_admin_url( 'manage-group.php', array( 'group_id' => $group_id ) ) ); exit(); } elseif ( isset( $_GET['aag-member-rejection'] ) ) { $group_id = (int) $_GET['group_id']; $membership_id = (int) $_GET['membership_id']; check_admin_referer( 'aag-member-rejection-' . $membership_id ); if ( ! aag_you_can_accept_member( $group_id ) ) wp_die( __( 'Cheatin’ uh?', 'aag' ) ); $member = aag_get_membership_by_id( $membership_id ); aag_leave_group( $group_id, $member->user_id ); wp_redirect( aag_admin_url( 'manage-group.php', array( 'group_id' => $group_id ) ) ); exit(); } elseif ( isset( $_GET['aag-member-promotion'] ) ) { $group_id = (int) $_GET['group_id']; $membership_id = (int) $_GET['membership_id']; check_admin_referer( 'aag-member-promotion-' . $membership_id ); if ( ! aag_you_can_promote_member( $group_id ) ) wp_die( __( 'Cheatin’ uh?', 'aag' ) ); $member = aag_get_membership_by_id( $membership_id ); aag_update_member_status( $group_id, $member->user_id, 'admin' ); wp_redirect( aag_admin_url( 'manage-group.php', array( 'group_id' => $group_id ) ) ); exit(); } elseif ( isset( $_GET['aag-member-demotion'] ) ) { $group_id = (int) $_GET['group_id']; $membership_id = (int) $_GET['membership_id']; check_admin_referer( 'aag-member-demotion-' . $membership_id ); if ( ! aag_you_can_promote_member( $group_id ) ) wp_die( __( 'Cheatin’ uh?', 'aag' ) ); $member = aag_get_membership_by_id( $membership_id ); aag_update_member_status( $group_id, $member->user_id, 'member' ); wp_redirect( aag_admin_url( 'manage-group.php', array( 'group_id' => $group_id ) ) ); exit(); } elseif ( isset( $_GET['aag-member-removal'] ) ) { $group_id = (int) $_GET['group_id']; $membership_id = (int) $_GET['membership_id']; check_admin_referer( 'aag-member-removal-' . $membership_id ); if ( ! aag_you_can_accept_member( $group_id ) ) wp_die( __( 'Cheatin’ uh?', 'aag' ) ); $member = aag_get_membership_by_id( $membership_id ); aag_leave_group( $group_id, $member->user_id ); wp_redirect( aag_admin_url( 'manage-group.php', array( 'group_id' => $group_id ) ) ); exit(); } elseif ( isset( $_POST['aag-join-group'] ) ) { $group_id = (int) $_POST['group_id']; check_admin_referer( 'aag-join-group-' . $group_id ); aag_request_to_join_group( $group_id ); wp_redirect( aag_admin_url( 'join-group.php' ) ); exit(); } elseif ( isset( $_POST['aag-leave-group'] ) ) { $group_id = (int) $_POST['group_id']; check_admin_referer( 'aag-leave-group-' . $group_id ); aag_leave_group( $group_id ); wp_redirect( aag_admin_url( 'join-group.php' ) ); exit(); } elseif ( isset( $_POST['aag-add-new-message'] ) ) { $group_id = (int) $_POST['group_id']; $reply_to = (int) $_POST['reply_to']; check_admin_referer( 'aag-add-new-message-' . $group_id ); if ( ! aag_you_can_message_group( $group_id ) ) wp_die( __( 'Cheatin’ uh?', 'aag' ) ); aag_post_message( $group_id, $_POST['message-content'], $reply_to ); wp_redirect( aag_admin_url( 'messages.php', array( 'group_id' => $group_id ) ) ); exit(); } elseif ( isset( $_GET['aag-message-delete'] ) ) { $group_id = (int) $_GET['group_id']; $author_id = (int) $_GET['author_id']; $message_id = (int) $_GET['message_id']; check_admin_referer( 'aag-message-delete-' . $message_id ); if ( ! aag_you_can_delete_message( $message_id ) ) wp_die( __( 'Cheatin’ uh?', 'aag' ) ); aag_delete_message( $message_id ); wp_redirect( aag_admin_url( 'messages.php', array( 'group_id' => $group_id, 'author_id' => $author_id ) ) ); exit(); } } add_action( 'admin_menu', 'aag_admin_init' ); function aag_add_group_capability() { return apply_filters( 'aag_add_group_capability', AAG_ADD_GROUP_CAPABILITY ); } function aag_join_group_capability() { return apply_filters( 'aag_join_group_capability', AAG_JOIN_GROUP_CAPABILITY ); } function aag_you_can_add_group() { return current_user_can( aag_add_group_capability() ); } function aag_you_can_edit_group( $group_id ) { global $current_user; if ( ! $group_id = absint( $group_id ) ) return false; $user_id = (int) $current_user->ID; if ( ! $membership = aag_get_membership( $group_id, $user_id ) ) return false; if ( 'founder' == $membership->member_status || 'admin' == $membership->member_status ) return true; return false; } function aag_you_can_delete_group( $group_id ) { global $current_user; if ( ! $group_id = absint( $group_id ) ) return false; $user_id = (int) $current_user->ID; if ( ! $membership = aag_get_membership( $group_id, $user_id ) ) return false; if ( 'founder' == $membership->member_status ) return true; return false; } function aag_you_can_promote_member( $group_id ) { return aag_you_can_delete_group( $group_id ); } function aag_you_can_accept_member( $group_id ) { return aag_you_can_edit_group( $group_id ); } function aag_you_can_message_group( $group_id ) { global $current_user; if ( ! $group_id = absint( $group_id ) ) return false; $user_id = (int) $current_user->ID; if ( ! $membership = aag_get_membership( $group_id, $user_id ) ) return false; if ( in_array( $membership->member_status, array( 'founder', 'admin', 'member' ) ) ) return true; return false; } function aag_you_can_delete_message( $message_id ) { global $current_user; if ( ! $message = aag_get_message_by_id( $message_id ) ) return false; if ( $current_user->ID == $message->user_id ) return true; if ( ! $membership = aag_get_membership( $message->group_id ) ) return false; if ( in_array( $membership->member_status, array( 'founder', 'admin' ) ) ) return true; return false; } function aag_admin_url( $file, $query = array() ) { $file = trim( $file, ' /' ); if ( 'admin/' != substr( $file, 0, 6 ) ) $file = 'admin/' . $file; $url = 'admin.php'; $url .= '?page=' . AAG_PLUGIN_NAME . '/' . $file; if ( $query = build_query( $query ) ) $url .= '&' . $query; return $url; } function aag_join_link( $group_id ) { $membership = aag_get_membership( $group_id ); if ( $membership ) : if ( 'founder' == $membership->member_status ) return '---'; if ( 'pending' == $membership->member_status ) return esc_html( __( 'Pending', 'aag' ) ); ?>