Example #1
0
 /**
  * importCSV Importeert een lijst met personen naar de database
  * 
  * Deze methode maakt gebruik van PDO prepare om veelvuldig dezelfde query 
  * uit te voeren.
  * 
  * @access public
  * @param string $p_sBestand Naam van het importbestand
  * @return array aantal correct geimporteerde personen en aantal foute imports
  * @throws IllegalValueException
  */
 public static function importCSV($p_sBestand)
 {
     $aResult = array('correct' => 0, 'fout' => 0, 'dubbel' => 0, 'melding' => '');
     $nKolommen = 6;
     // aantal te importeren kolommen
     if (file_exists($p_sBestand)) {
         $aPersonen = @file($p_sBestand, FILE_IGNORE_NEW_LINES);
         if (is_array($aPersonen)) {
             try {
                 $oDB = new DB();
                 $sSql = 'SELECT Email FROM ledenlijst;';
                 $oResult = $oDB->query($sSql);
                 // bewaar alle emailadressen van bestaande leden
                 $aKlanten = $oResult->fetchAll(PDO::FETCH_COLUMN, 0);
             } catch (PDOException $e) {
                 $aKlanten = array();
             }
             $nTimeStart = microtime(true);
             $sVoorletters = '';
             $sVoornaam = '';
             $sTussenvoegsel = '';
             $sAchternaam = '';
             $sGeslacht = '';
             $sEmail = '';
             // bereid de query voor
             $sSql = "INSERT INTO ledenlijst (Voorletters, Voornaam, Tussenvoegsel, Achternaam, Geslacht, Adres, Postcode, Plaats, Email_prive, Username, Password) " . "VALUES (" . ":veld0" . ", :veld1" . ", :veld2" . ", :veld3" . ", :veld4" . ", ''" . ", ''" . ", ''" . ", :veld5" . ", ''" . ", ''" . ")";
             $oStatement = $oDB->prepare($sSql);
             // koppel de velden met PHP variabelen
             $oStatement->bindParam(':veld0', $sVoorletters);
             $oStatement->bindParam(':veld1', $sVoornaam);
             $oStatement->bindParam(':veld2', $sTussenvoegsel);
             $oStatement->bindParam(':veld3', $sAchternaam);
             $oStatement->bindParam(':veld4', $sGeslacht);
             $oStatement->bindParam(':veld5', $sEmail);
             foreach ($aPersonen as $sRegel) {
                 try {
                     // creeer de insert query met te vervangen velden
                     $aGegevens = split(',', $sRegel);
                     if (count($aGegevens == $nKolommen)) {
                         // strip de aamhalingstekens
                         for ($c = 0; $c < $nKolommen; $c++) {
                             $aGegevens[$c] = str_replace('"', '', $aGegevens[$c]);
                             // verwijder whitespaces
                             $aGegevens[$c] = trim($aGegevens[$c]);
                         }
                         // controleer de waarden op verkeerde data
                         if (!CheckLib::checkPlainText($aGegevens[0])) {
                             throw new InvalidTypeException('Incorrecte gegevens:' . $aGegevens[0]);
                         }
                         if (!CheckLib::checkPlainText($aGegevens[1])) {
                             throw new InvalidTypeException('Incorrecte gegevens:' . $aGegevens[1]);
                         }
                         if (!CheckLib::checkPlainText($aGegevens[2])) {
                             throw new InvalidTypeException('Incorrecte gegevens:' . $aGegevens[2]);
                         }
                         if (!CheckLib::checkPlainText($aGegevens[3])) {
                             throw new InvalidTypeException('Incorrecte gegevens:' . $aGegevens[3]);
                         }
                         if (!CheckLib::checkUserDefinedText("/[mv]{1}/", $aGegevens[4])) {
                             throw new IllegalTypeException('Incorrecte gegevens:' . $aGegevens[4]);
                         }
                         if (!CheckLib::checkEmail($aGegevens[5])) {
                             throw new InvalidTypeException('Incorrecte gegevens:' . $aGegevens[5]);
                         }
                         // controleer of lid nog niet bestaat adv het emailadres
                         if (!in_array($aGegevens[5], $aLeden)) {
                             // plaats de waarden in de juiste variabelen
                             $sVoorletters = $aGegevens[0];
                             $sVoornaam = $aGegevens[1];
                             $sTussenvoegsel = $aGegevens[2];
                             $sAchternaam = $aGegevens[3];
                             $sGeslacht = $aGegevens[4];
                             $sEmail = $aGegevens[5];
                             // voer de voorbereide query uit
                             $oStatement->execute();
                             $aResult['correct']++;
                         } else {
                             // Lid bestaat al
                             $aResult['dubbel']++;
                         }
                     }
                 } catch (IllegalTypeException $e) {
                     // hou een teller bij van foute invoer (voor later gebruik)
                     // negeer deze importregel
                     $aResult['fout']++;
                 }
             }
             $nTimeEnd = microtime(true);
             $aResult['time'] = round($nTimeEnd - $nTimeStart, 6);
             $oDB = null;
         } else {
             $aResult['melding'] = 'Importbestand niet correct gelezen';
         }
     } else {
         $aResult['melding'] = 'Importbestand niet gevonden';
     }
     return $aResult;
 }
 /**
  * checkType controleert  de gegeven waarde tegen het gegeven type
  * 
  * @access private
  * @param variant $p_vValue	de waarde
  * @param int $p_nType Het te controleren type
  * @return int het resultaat van de controle (RESULT_OK, RESULT_INVALID)
  */
 private function checkType($p_vValue, $p_nType)
 {
     $nResult = self::RESULT_INVALID;
     try {
         switch ($p_nType) {
             case self::TYPE_STRING:
                 if (is_string($p_vValue)) {
                     $nResult = self::RESULT_OK;
                 } else {
                     if (is_numeric($p_vValue)) {
                         $nResult = self::RESULT_CONVERTABLE;
                     }
                 }
                 break;
             case self::TYPE_BOOLEAN:
                 if (is_bool($p_vValue)) {
                     $nResult = self::RESULT_OK;
                 } else {
                     // convertable als het 1 of 0 bevat
                     if (is_numeric($p_vValue) && (intVal($p_vValue) == 1 || intVal($p_vValue) == 0)) {
                         $nResult = self::RESULT_CONVERTABLE;
                     }
                 }
                 break;
             case self::TYPE_INT:
                 if (is_int($p_vValue)) {
                     $nResult = self::RESULT_OK;
                 } else {
                     // convertable als het een getal bevat
                     if (is_numeric($p_vValue)) {
                         $nResult = self::RESULT_CONVERTABLE;
                     }
                 }
                 break;
             case self::TYPE_FLOAT:
                 if (is_float($p_vValue)) {
                     $nResult = self::RESULT_OK;
                 } else {
                     // convertable als het een getal bevat
                     if (is_numeric($p_vValue)) {
                         $nResult = self::RESULT_CONVERTABLE;
                     }
                 }
                 break;
             case self::TYPE_ARRAY:
                 if (is_array($p_vValue)) {
                     $nResult = self::RESULT_OK;
                 }
                 break;
             case self::TYPE_URL:
                 if (CheckLib::checkURL($p_vValue)) {
                     $nResult = self::RESULT_OK;
                 }
                 break;
             case self::TYPE_EMAIL:
                 if (CheckLib::checkEmail($p_vValue)) {
                     $nResult = self::RESULT_OK;
                 }
                 break;
             case self::TYPE_ZIPCODE:
                 if (CheckLib::checkDutchZipcode($p_vValue)) {
                     $nResult = self::RESULT_OK;
                 }
                 break;
             case self::TYPE_PLAINTEXT:
                 if (CheckLib::checkPlainText($p_vValue)) {
                     $nResult = self::RESULT_OK;
                 }
                 break;
             case self::TYPE_ALPHATEXT:
                 if (CheckLib::checkAlphaText($p_vValue)) {
                     $nResult = self::RESULT_OK;
                 }
                 break;
             case self::TYPE_PHONE:
                 if (CheckLib::checkPhoneNumber($p_vValue)) {
                     $nResult = self::RESULT_OK;
                 }
                 break;
             default:
                 // resultaat invalid
         }
     } catch (Exception $e) {
         // bij een fout wordt het resultaat invalid
         $nResult = self::RESULT_INVALID;
     }
     return $nResult;
 }
 static function isRequiredPhone(&$DataProvider, $Key, $NoneKey = 'CheckLib_RequiredPhone_None', $TooLongKey = 'CheckLib_RequiredPhone_TooLong', $FormatKey = 'CheckLib_RequiredPhone_Format')
 {
     $ReturnValue = true;
     $Value = $DataProvider->get($Key);
     if (strlen($Value) > 0) {
         $ReturnValue = CheckLib::isOptionalPhone($DataProvider, $Key, $TooLongKey, $FormatKey);
     } else {
         $ReturnValue = false;
         $DataProvider->setError($Key, $NoneKey);
     }
     return $ReturnValue;
 }