All Champs

تيست

true]);
}
}, 20);
// Base URL لصفحة اللاعب
function champs_get_player_profile_url(): string {
return (string) apply_filters(‘champs_player_profile_base_url’, home_url(‘/player-profile’));
}
// توليد username مضمون
function champs_make_safe_username(string $email, string $phone): string {
$base = ”;
if ($email && is_email($email)) {
$local = explode(‘@’, $email)[0] ?? ”;
$local = preg_replace(‘/[^a-zA-Z0-9._-]+/’, ”, $local);
$base = strtolower(trim($local));
}
if (!$base) {
$digits = preg_replace(‘/D+/’, ”, $phone);
$last4 = $digits ? substr($digits, -4) : (string)rand(1000,9999);
$base = ‘player’.$last4;
}
$base = sanitize_user($base, true);
if (!$base) $base = ‘player’.rand(1000,9999);
$u = $base;
$i = 1;
while (username_exists($u)) {
$u = $base.’.’.(++$i);
}
return $u;
}
// رفع ملف إيصال التحويل
function champs_handle_receipt_upload(string $field, int $parent_post_id): int {
if (empty($_FILES[$field]) || empty($_FILES[$field][‘name’])) return 0;
if (!function_exists(‘wp_handle_upload’)) require_once ABSPATH.’wp-admin/includes/file.php’;
if (!function_exists(‘wp_generate_attachment_metadata’)) require_once ABSPATH.’wp-admin/includes/image.php’;
$file = $_FILES[$field];
$allowed = [‘image/jpeg’,’image/png’,’application/pdf’];
if (!in_array($file[‘type’], $allowed, true)) return 0;
$overrides = [‘test_form’ => false];
$movefile = wp_handle_upload($file, $overrides);
if (isset($movefile[‘error’])) return 0;
$filename = $movefile[‘file’];
$filetype = wp_check_filetype(basename($filename), null);
$attachment = [
‘post_mime_type’ => $filetype[‘type’],
‘post_title’ => ‘إيصال تحويل – ‘.$parent_post_id,
‘post_content’ => ”,
‘post_status’ => ‘inherit’
];
$attach_id = wp_insert_attachment($attachment, $filename, $parent_post_id);
if (!$attach_id) return 0;
$attach_data = wp_generate_attachment_metadata($attach_id, $filename);
wp_update_attachment_metadata($attach_id, $attach_data);
return (int)$attach_id;
}
add_shortcode(‘ch_player_register’, function($atts = []) {
// لو مسجل دخول -> ودّيه لصفحته
if (is_user_logged_in()) {
$rid = (int) get_user_meta(get_current_user_id(), ‘_ch_player_request_id’, true);
if ($rid) {
$go = add_query_arg([‘player’=>$rid], champs_get_player_profile_url());
return ”;
}
}
$errors = [];
if ($_SERVER[‘REQUEST_METHOD’] === ‘POST’ && isset($_POST[‘_ch_reg_nonce’])) {
if (!wp_verify_nonce($_POST[‘_ch_reg_nonce’], ‘ch_player_register_multistep’)) {
$errors[] = ‘انتهت صلاحية الطلب. أعد المحاولة.’;
} else {
// Basic
$full_name = sanitize_text_field($_POST[‘full_name’] ?? ”);
$phone = sanitize_text_field($_POST[‘phone’] ?? ”);
$gender = sanitize_text_field($_POST[‘gender’] ?? ”);
$age = (int)($_POST[‘age’] ?? 0);
$city = sanitize_text_field($_POST[‘city’] ?? ”);
$city_other= sanitize_text_field($_POST[‘city_other’] ?? ”);
$email = sanitize_email($_POST[’email’] ?? ”);
// Game
$position = sanitize_text_field($_POST[‘position’] ?? ”);
$has_partner = sanitize_text_field($_POST[‘has_partner’] ?? ”);
$want_partner = sanitize_text_field($_POST[‘want_partner’] ?? ”);
$partner_name = sanitize_text_field($_POST[‘partner_name’] ?? ”);
$played_before = sanitize_text_field($_POST[‘played_before’] ?? ”);
$won_champs = sanitize_text_field($_POST[‘won_champs’] ?? ”);
// Evaluation prefs
$days = $_POST[‘eval_days’] ?? [];
if (!is_array($days)) $days = [];
$days = array_map(‘sanitize_text_field’, $days);
$time_pref = sanitize_text_field($_POST[‘eval_time’] ?? ”);
// Password
$password = (string)($_POST[‘password’] ?? ”);
$password2 = (string)($_POST[‘password2’] ?? ”);
// Validations
if (mb_strlen($full_name) < 3) $errors[] = 'من فضلك اكتب الاسم بالكامل.'; if (mb_strlen(preg_replace('/D+/', '', $phone)) < 8) $errors[] = 'رقم الجوال غير صحيح.'; if (!in_array($gender, ['male','female'], true)) $errors[] = 'اختر النوع.'; if ($age < 12 || $age > 70) $errors[] = ‘العمر غير صحيح.’;
if (!$email || !is_email($email)) $errors[] = ‘البريد الإلكتروني غير صحيح.’;
if (email_exists($email)) $errors[] = ‘هذا البريد مسجّل بالفعل. سجّل دخول بدلًا من ذلك.’;
if (mb_strlen($password) < 8) $errors[] = 'كلمة المرور يجب ألا تقل عن 8 أحرف/أرقام.'; if ($password !== $password2) $errors[] = 'كلمتا المرور غير متطابقتين.'; if ($city === 'other' && mb_strlen($city_other) < 2) $errors[] = 'اكتب المدينة.'; $city_final = ($city === 'other') ? $city_other : $city; if ($has_partner === 'yes' && mb_strlen($partner_name) < 3) { $errors[] = 'اكتب اسم الشريك.'; } if (!$errors) { $username = champs_make_safe_username($email, $phone); $user_id = wp_create_user($username, $password, $email); if (is_wp_error($user_id)) { $errors[] = 'تعذر إنشاء الحساب: '.$user_id->get_error_message();
} else {
wp_update_user([
‘ID’ => $user_id,
‘display_name’ => $full_name,
‘nickname’ => $full_name,
]);
$u = new WP_User($user_id);
$u->set_role(‘ch_player’);
update_user_meta($user_id, ‘_ch_player_full_name’, $full_name);
update_user_meta($user_id, ‘_ch_player_phone’, $phone);
$req_id = wp_insert_post([
‘post_type’ => CHAMPS_Core::CPT_REQ,
‘post_status’ => ‘publish’,
‘post_title’ => ‘طلب تسجيل: ‘.$full_name,
], true);
if (is_wp_error($req_id) || !$req_id) {
wp_delete_user($user_id);
$errors[] = ‘حدث خطأ أثناء إنشاء طلب التسجيل. حاول مرة أخرى.’;
} else {
update_post_meta($req_id, CH_REQ_STATUS, ‘pending’);
update_post_meta($req_id, CH_REQ_USER_ID, (int)$user_id);
update_post_meta($req_id, CH_REQ_ASSIGNED_TEAM, 0);
update_post_meta($req_id, CH_REQ_ASSIGNED_DIVISION, ”);
update_post_meta($req_id, ‘_ch_req_full_name’, $full_name);
update_post_meta($req_id, ‘_ch_req_phone’, $phone);
update_post_meta($req_id, ‘_ch_req_gender’, $gender);
update_post_meta($req_id, ‘_ch_req_age’, $age);
update_post_meta($req_id, ‘_ch_req_city’, $city_final);
update_post_meta($req_id, ‘_ch_req_email’, $email);
update_post_meta($req_id, ‘_ch_req_position’, $position);
update_post_meta($req_id, ‘_ch_req_has_partner’, $has_partner);
update_post_meta($req_id, ‘_ch_req_want_partner’, $want_partner);
update_post_meta($req_id, ‘_ch_req_partner_name’, $partner_name);
update_post_meta($req_id, ‘_ch_req_played_before’, $played_before);
update_post_meta($req_id, ‘_ch_req_won_champs’, $won_champs);
update_post_meta($req_id, ‘_ch_req_eval_days’, $days);
update_post_meta($req_id, ‘_ch_req_eval_time’, $time_pref);
$receipt_id = champs_handle_receipt_upload(‘receipt’, (int)$req_id);
if ($receipt_id) {
update_post_meta($req_id, ‘_ch_req_receipt_attachment_id’, $receipt_id);
}
update_user_meta($user_id, ‘_ch_player_request_id’, (int)$req_id);
wp_set_current_user($user_id);
wp_set_auth_cookie($user_id, true);
$go = add_query_arg([‘player’=>(int)$req_id], champs_get_player_profile_url());
if (!headers_sent()) {
wp_safe_redirect($go);
exit;
}
echo ‘‘;
echo ‘‘;
echo ‘‘;
echo ‘جاري تحويلك إلى صفحة حسابك…’;
echo ”;
echo ‘‘;
exit;
}
}
}
}
}
// ========= UI (Multi-step) =========
ob_start(); ?>
Padel Community

إنشاء حساب لاعب جديد

بعد التسجيل، ستتمكن من متابعة حالة طلبك وتحديد مستوى مهاراتك في ملاعبنا.
1
البيانات الأساسية
2
تفضيلات اللعب
3
التقييم والرسوم






ذكر

























رسوم تقييم المستوى (30 ريال)
يرجى تحويل مبلغ الرسوم وإرفاق الإيصال أدناه لإتمام طلبك:
بنك ANB: 0140037315090027
آيبان: SA5330400140037315090027
الاسم: Mohammed Afandi
















Scroll to Top