<?php

class sfFullnameValidator extends sfStringValidator
{
  public function execute(&$fullname, &$error)
  {
    if (!parent::execute($fullname, $error)) return false;

    $specical_char = '1234567890,.<>/?;:\'"`~!@#$%^&*()-_=+\\|[]{}';
    for ($i = 0; $i < strlen($specical_char); $i++) {
      $pos = stripos($fullname, $specical_char[$i]);
      if ($pos !== false) {$error = 'Please do not enter special char'; return false;}
    }

    $fullname = mb_convert_case($fullname, MB_CASE_TITLE, "UTF-8");
    $names = explode(' ', $fullname);
    $count = count($names);
    if($count < 2) {$error = 'Please enter exact your fullname'; return false;}

    $cousin = $names[0];
    $surnames = array(
    "Bui", "Dam", "Dao", "Duong", "Do", "Doan", "Dang", "Dinh",
    "Ha", "Ho", "Hoang", "Huynh", "Kieu", "Khong", "Le", "Luu",
    "Luong", "Ly", "Nguyen", "Ngo", "Ta", "Thai", "Tran", "Trinh",
    "Ton", "Tong", "Truong", "Pham", "Vo", "Vu", "Vuong");
    if (in_array($cousin, $surnames)) {$error = 'Please enter in Vietnamese'; return false;}

    $surnamesVietcode = array(
    //---- VNI code ---
    "Buøi", "Ñaøm", "Ñaøo", "Döông", "Ñoã", "Ñoaøn", "Ñaëng", "Ñinh",
    "Haø", "Hoaøng", "Huyønh", "Kieàu", "Khoång", "Leâ", "Löu",           // thiếu "Hoà" (Hồ)
    "Löông", "Lyù", "Nguyeãn", "Ngoâ", "Taï", "Thaùi", "Traàn", "Trònh",
    "Toân", "Tröông", "Phaïm", "Voõ", "Vuõ", "Vöông",                     // thiếu "Toáng" (Tống)
    //---- TCVN3 code ----
    "Bïi", "§Μm", "§Μo", "D­¬Ng", "§Ç", "§Oµn", "§Æng", "§Inh",
    "®Μm", "®Μo", "®Ç", "®Oµn", "®Æng", "®Inh",
    "Hµ", "Hå", "Hoµng", "Huúnh", "Kiòu", "Khæng", "Lª", "L­U",
    "L­¬Ng", "Nguyôn", "Ng«", "T¹", "Th¸i", "Trçn", "Trþnh",              // thiếu "Lý" (Lý)
    "T«N", "Tr­¬Ng", "Ph¹M", "Vâ", "V­¬Ng");                              // thiếu "Tèng" (Tống) và "Vò" (Vũ)
    if (in_array($cousin, $surnamesVietcode)) {$error = 'Please disable the Viet Typing program and input again'; return false;}

    for ($i = 0; $i < $count; $i++){
      if ($names[$i] == '') continue;
      if ($i == 0) $fullname = $names[$i] ;
      else $fullname .= ' '.$names[$i];
    }

    return true;
  }
}
