コード例 #1
0
 /**
  * Get the singleton object
  * @return BP_Members_With_Avatar_Helper object
  */
 public static function get_instance()
 {
     if (!isset(self::$instance)) {
         self::$instance = new self();
     }
     return self::$instance;
 }
コード例 #2
0
 function get_game($seconds, $num_choices, $check_gravatars)
 {
     if (!is_user_logged_in()) {
         return new WP_Error('user-not-logged-in', 'You must be logged in to play the Do You Know game!');
     }
     $game_start = get_user_meta(get_current_user_id(), '_dyk_game_start', true);
     $current_user = get_user_meta(get_current_user_id(), '_dyk_current_user', true);
     $answers = get_user_meta(get_current_user_id(), '_dyk_current_answers', true);
     $result = get_user_meta(get_current_user_id(), '_dyk_current_result', true);
     if ($result === '') {
         $result = null;
     } else {
         $result = (bool) $result;
     }
     $action = 'dyk_game_' . $game_start;
     // answer was submitted
     if ('POST' === $_SERVER['REQUEST_METHOD'] && isset($_POST['_dyk_answer']) && is_null($result) && wp_verify_nonce($_REQUEST['_wpnonce'], $action)) {
         $result = $answers[$_POST['_dyk_answer']] == $current_user ? '1' : '0';
         add_user_meta(get_current_user_id(), '_dyk_current_result', $result, true);
         $result = (bool) $result;
         if ($result) {
             do_action('dyk_correct_answer');
         } else {
             do_action('dyk_wrong_answer');
         }
     } else {
         if (!$game_start || time() - $game_start > $seconds) {
             $game_start = time();
             $current_user = null;
             $result = null;
             // set current user
             $current_user = BP_Members_With_Avatar_Helper::get_instance()->get_random_user_with_avatar(get_current_user_id(), $check_gravatars);
             if (!$current_user) {
                 return new WP_Error('no-avatar', 'No other user with an avatar could be found! You need at least one user with an avatar apart from the currently logged in user.');
             }
             $current_user = $current_user->ID;
             // set answers
             $answers = BP_Members_With_Avatar_Helper::get_instance()->get_random_users($num_choices - 1, array(get_current_user_id(), $current_user));
             // set random correct position
             if (count($answers) < $num_choices - 1) {
                 return new WP_Error('not-enough-users', sprintf("Not enough users to play the game! You need at least %s users.", $num_choices + 1));
             }
             $correct = rand(0, $num_choices - 1);
             array_splice($answers, $correct, 0, $current_user);
             update_user_meta(get_current_user_id(), '_dyk_game_start', $game_start);
             delete_user_meta(get_current_user_id(), '_dyk_current_result');
             update_user_meta(get_current_user_id(), '_dyk_current_user', $current_user);
             update_user_meta(get_current_user_id(), '_dyk_current_answers', $answers);
         }
     }
     return array('start' => $game_start, 'user' => $current_user, 'answers' => $answers, 'result' => $result, 'next' => $seconds - (time() - $game_start));
 }