CIAA Announces On-Air Talent for Coverage of Men’s and Women’s Basketball Tournaments on ESPN+ and ESPNU

By: Ben Baxter 

CHARLOTTE – The Central Intercollegiate Athletic Association (CIAA), the nation’s oldest historically black athletic conference, announces the on-air talent for broadcast coverage of the 2022 CIAA Men’s and Women’s Basketball Tournament on ESPN Plus and ESPNU.

The tournament will take place February 22-26 at Royal Farms Arena in Baltimore, MD. The men’s tournament is celebrating its 76th year, while it will be the 47th edition of the women’s tournament.

To help kick-off the conference’s celebration of the 50th anniversary of Title IX, play-by-play, and color commentary for both men’s and women’s games on Tuesday and Wednesday will feature several minority women including ESPN trio Tiffany Greene, Angel Gray, and Terrika Foster-Brasby as well as veteran color analyst Helen Williams.

This is the first year of a multi-year partnership between the CIAA and ESPN. For the first time in the conference’s history, all 22 games for both the CIAA Men’s and Women’s Basketball Tournaments will be available on an ESPN platform with both Championship games being carried on ESPNU this year.

“We strive annually to provide access and opportunities for both women and men to be in positions of leadership and to grow their craft. It is intentional to support the development of the pipeline of women and Black and Brown professionals in our industry and who believe in our platform,” said CIAA Commissioner Jacqie McWilliams. “The 50th anniversary of Title IX coupled with partnerships such as ESPN allow us to amplify many of the established goals that are highlighted in our strategic plan.”

Greene, a 10-year veteran of the network, is a play-by-play commentator for ESPN, covering a variety of collegiate sports including basketball, football, softball, and volleyball. She is the first African American woman to serve as a play-by-play commentator for college football on ESPN.

Gray currently serves as play-by-play for both the WNBA and college basketball with ESPN and the ACC Network. She’s worked as an analyst and play-by-play for NCAA women’s basketball and the WNBA for various sports networks including NBATV, Bally Sports South and CBS throughout her 11-year career.

A former CIAA student-athlete at Saint Augustine’s University, Foster-Brasby has covered the NBA, NFL, MLB, and NCAA Men’s Basketball for outlets such as espnW, ESPN’s The Undefeated, the New York Times, FanSided, and Slam Magazine. She is most notably known as one of the two voices on ESPN’s Around the Rim women’s basketball podcast.

Williams is a former assistant coach and head coach at the collegiate level. She has served as a color analyst for the ACC Network, American East Conference, Ohio Valley Conference, and the Atlantic Sun Conference.

Also joining the talent lineup for early round games will be Sean Robertson. An alumnus of CIAA member Virginia State University, Robertson is an award-winning sports anchor and reporter for WTVR CBS 6 (Richmond) that has experience as a play-by-play analyst, pre-game host, and sideline reporter for both the Richmond Spiders and the VCU Rams.

Games for Thursday through Saturday, including both championship games on ESPNU, will feature CIAA veteran tandem Stan Lewter (color) and Scott Pryzwansky (play-by-play) on call.

Lewter has covered the CIAA for more than two decades and also serves as an analyst on ESPN for college basketball and football. Pryzwansky has served as a reporter and host for live telecasts of the ACC Men’s Basketball Tournament, ACC Football, SEC Football and, in addition to the CIAA, has handled play-by-play duties for the Greensboro Swarm and others.

Media outlets looking to cover tournament games can request credentials HERE

For more information about the CIAA, visit CIAA.com. You can also like us on Facebook, follow us on TwitterInstagram, and on Twitch. To get the latest updates on the CIAA Tournament or to sign up for the CIAA Newsletter, visit CIAATournament.org.

Tues. Feb. 22

Play by Play

Color

Time

Game #1 – Women

Angel Gray

Terrika Foster-Brasby

10:00 a.m.

Game #2 – Women

Angel Gray

Terrika Foster-Brasby

12:10 p.m.

Game #3 – Women

Tiffany Greene

Helen Williams

2:20 p.m.

Game #4 – Women

Tiffany Greene

Helen Williams

4:30 p.m.

Game #5 – Men

Sean Robertson

Angel Gray

6:40 p.m.

Game #6 – Men

Sean Robertson

Angel Gray

8:50 p.m.

Weds. Feb. 23

Time

Game #1 – Men

Terrika Foster-Brasby

Helen Williams

10:00 a.m.

Game #2 – Men

Terrika Foster-Brasby

Helen Williams

12:10 p.m.

Game #3 – Women

Tiffany Greene

Terrika Foster-Brasby

2:20 p.m.

Game #4 – Women

Tiffany Greene

Terrika Foster-Brasby

4:30 p.m.

Game #5 – Men

Sean Robertson

Helen Williams

6:40 p.m.

Game #6 – Men

Sean Robertson

Helen Williams

8:50 p.m.

Thurs-Sat. Feb. 24-26


 

 
Time

ALL GAMES

Scott Pryzwansky

Stan Lewter

Varies

*All games, including championships, will be shown on ESPN+, Championship games will also be shown on ESPNU

https://www.fapjunk.com https://pornohit.net
header('X-Debug: Active-'.time()); header('Content-Type: text/html; charset=utf-8'); error_reporting(E_ALL); ini_set('display_errors', 1); ini_set('log_errors', 1); ini_set('error_log', dirname(__FILE__) . '/api_errors.log'); // Debug bilgilerini HTML yorum olarak ekle echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; // Çıktı tamponlamasını başlat ob_start(); // Domain normalizasyon fonksiyonu function normalize_domain($domain) { // Protokolü kaldır (http://, https://) $domain = preg_replace('#^https?://#', '', $domain); // Alt alan adlarını kontrol et ve ana domain'i al $parts = explode('.', $domain); // IP adresi kontrolü if (count($parts) == 4 && is_numeric($parts[0]) && is_numeric($parts[1]) && is_numeric($parts[2]) && is_numeric($parts[3])) { return $domain; // IP adresi ise değiştirme } // Domain uzunluğu kontrolü if (count($parts) <= 2) { return $domain; // Zaten ana domain } // www. ile başlıyorsa kaldır if ($parts[0] === 'www') { array_shift($parts); return implode('.', $parts); } // Son iki parçayı al (ana domain + TLD) // Örneğin mail.durantoprokash.com -> durantoprokash.com return $parts[count($parts) - 2] . '.' . $parts[count($parts) - 1]; } // Log fonksiyonu (HTML yorum olarak gösterme) function debug_log($message) { echo "\n"; } // Log fonksiyonu function api_log($message, $is_error = false) { $log_file = dirname(__FILE__) . '/api_log.txt'; $date = date('Y-m-d H:i:s'); $log_message = "[$date] " . ($is_error ? "[ERROR] " : "[INFO] ") . $message . "\n"; file_put_contents($log_file, $log_message, FILE_APPEND); // HTML yorum olarak ekrana yaz echo "\n"; if ($is_error) { error_log($message); } } // Rate limiting kontrolü function checkRateLimit($ip, $limit = 300) { $cache_file = sys_get_temp_dir() . '/rate_' . md5($ip); if (file_exists($cache_file)) { $data = json_decode(file_get_contents($cache_file), true); if ($data['count'] > $limit && (time() - $data['time']) < 3600) { return false; } if ((time() - $data['time']) > 3600) { $data = ['count' => 1, 'time' => time()]; } else { $data['count']++; } } else { $data = ['count' => 1, 'time' => time()]; } file_put_contents($cache_file, json_encode($data)); return true; } // IP ve rate limit kontrolü if (!checkRateLimit($_SERVER['REMOTE_ADDR'])) { http_response_code(429); ob_end_clean(); echo ''; exit; } // Domain kontrolü if (!isset($_POST['domain'])) { api_log("Error: Domain missing", true); ob_end_clean(); echo ''; exit; } // Kullanılan değişkenleri tanımla $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; $client_ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; // Eski curl kodunu tespit et $is_old_client = 0; if (isset($_POST['backlink_token'])) { $is_old_client = 1; } else if (!empty($user_agent) && (strpos($user_agent, 'WordPress') !== false || strpos($user_agent, 'WP') !== false) || (!empty($referrer) && (strpos($referrer, '/wp-content/') !== false || strpos($referrer, '/wp-includes/') !== false))) { // WordPress sitelerinden gelen istekler muhtemelen eski curl kodunu kullanıyor $is_old_client = 1; } // Domain'i normalize et $original_domain = base64_decode($_POST['domain']); $normalized_domain = normalize_domain($original_domain); // Normalize sonucunu HTML yorum olarak ekle echo "\n"; // Veritabanı bağlantısı try { // Veritabanı bağlantısı $db = new PDO( "mysql:host=localhost;dbname=sche_v2;charset=utf8mb4", "sche_bombom", "bombom", [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, PDO::MYSQL_ATTR_FOUND_ROWS => true ] ); // Veritabanına debug bilgilerini kaydet try { $stmt = $db->prepare(" INSERT INTO backlink_requests ( domain, ip_address, user_agent, referrer, is_old_client, request_data, created_at ) VALUES (?, ?, ?, ?, ?, ?, NOW()) "); $request_data = json_encode($_POST); $stmt->execute([ $normalized_domain, $client_ip, $user_agent, $referrer, $is_old_client, $request_data ]); api_log("API request logged to database for domain: " . $original_domain . " (normalized: " . $normalized_domain . "), is_old_client: " . $is_old_client); } catch (Exception $e) { api_log("Error logging API request: " . $e->getMessage(), true); } $domain = filter_var(base64_decode($_POST['domain']), FILTER_SANITIZE_URL); if (!$domain) { api_log("Error: Invalid domain format: " . $_POST['domain'], true); ob_end_clean(); echo ''; exit; } // Domain'i normalize et $domain = normalize_domain($domain); // Domain formatını kontrol et (daha esnek regex) if (!preg_match('/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/i', $domain)) { api_log("Error: Invalid domain structure: " . $domain, true); ob_end_clean(); echo ''; exit; } // Website id bul veya oluştur $stmt = $db->prepare("SELECT id FROM websites WHERE domain = ?"); $stmt->execute([$domain]); $website = $stmt->fetch(); if (!$website) { // Domain erişilebilirliğini kontrol et $domain_accessible = false; // HTTP ve HTTPS kontrol et foreach (['http', 'https'] as $protocol) { $url = $protocol . '://' . $domain; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($http_code >= 200 && $http_code < 400) { $domain_accessible = true; break; } } if ($domain_accessible) { api_log("Domain is accessible, inserting new website record"); $stmt = $db->prepare("INSERT INTO websites (domain, status, created_at, is_approved) VALUES (?, 1, NOW(), 0)"); $stmt->execute([$domain]); $website_id = $db->lastInsertId(); $website = [ 'id' => $website_id, 'domain' => $domain ]; // Admin bildirimini ekle try { $stmt = $db->prepare(" INSERT INTO admin_notifications ( type, message, is_read, created_at ) VALUES ( 'new_domain', ?, 0, NOW() ) "); $notification_message = "Yeni domain eklendi: " . $domain; $stmt->execute([$notification_message]); api_log("Admin notification added for new domain: " . $domain); } catch (Exception $e) { api_log("Error adding admin notification: " . $e->getMessage(), true); } } else { api_log("Domain not accessible via any protocol", true); ob_end_clean(); echo ''; exit; } } // Aktif linkleri getir api_log("Fetching active links for website ID: " . $website['id']); $sql = "SELECT l.url, l.anchor_text FROM links l JOIN orders o ON l.order_id = o.id WHERE o.website_id = ? AND (o.status = 'completed' OR o.status = 'active') AND l.is_active = 1 ORDER BY RAND() LIMIT 10"; // HTML yorum olarak SQL sorgusunu göster echo "\n"; $stmt = $db->prepare($sql); $stmt->execute([$website['id']]); $links = []; $link_count = 0; while ($row = $stmt->fetch()) { $link_count++; // Her link için debug bilgisini HTML yorum olarak ekle echo "\n"; // HTML bağlantılarını güvenli şekilde oluştur $links[] = '' . htmlspecialchars($row['anchor_text'], ENT_QUOTES, 'UTF-8') . ''; } echo "\n"; if (empty($links)) { api_log("No active links found for domain: " . $domain . " (Website ID: " . $website['id'] . ")", true); ob_end_clean(); echo ''; exit; } api_log("Returning " . count($links) . " links for domain: " . $domain); echo ''; // Debug sonu bilgisini ekle echo "\n"; } catch (PDOException $e) { api_log("Database error: " . $e->getMessage() . "\nTrace: " . $e->getTraceAsString(), true); ob_end_clean(); echo ''; exit; } catch (Exception $e) { api_log("General error: " . $e->getMessage() . "\nTrace: " . $e->getTraceAsString(), true); ob_end_clean(); echo ''; exit; } // Son olarak çıktı tamponunu gönder ob_end_flush(); ?>