connect_error) { die("Connection failed: " . $conn->connect_error); } # Sends the given text wrapped in triple backticks as Markdown. function send_code($post_message) { global $bot_api; global $chat_id; $url = 'https://api.telegram.org/bot' . $bot_api . '/sendMessage'; $post_msg = array('chat_id' => $chat_id, 'text' => '```\n ' . $post_message . '```', 'parse_mode' => 'markdown' ); $options = array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($post_msg) ) ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); } # Takes a user array as input. Checks who follows him/her and adds # him/her to $output array. Exits when a user is followed by no one. function get_chain_from_user($user) { global $conn; $output = array($user); $last_user_id = $user['user_id']; while (true) { $query = "SELECT user_id, username from users where follows = $last_user_id"; $result = $conn->query($query); if ($result->num_rows > 0){ # Code executed if this isn't the last user $details = $result->fetch_assoc(); array_push($output, $details ); $last_user_id = $details['user_id']; } else { break; } } return $output; } # First generates a list of people not following anyone (end_points) # Then runs get_chain_from_user on all of them and stores them in # $chains array. Then compares the arrays inside $chains array and # returns the longest one. function get_longest_chain() { global $conn; $query = "SELECT user_id, username FROM users WHERE follows = -1;"; $end_points = $conn->query($query); if ($end_points->num_rows == 0) { return array(); } $chains = array(); while ($end_point = $end_points->fetch_assoc()){ $chain = get_chain_from_user($end_points); array_push($chains, $chain); } $longest_chain_index = 0; for ($i = 0; $i < count($chains); $i++){ if (count($chains[$i]) > count($chains[$longest_chain_index])) { $longest_chain_index = $i; } } return $chains[$longest_chain_index]; } $conn->close(); ?>