<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>php resources</title>
<link rel="stylesheet" type="text/css" href="../style/oophp.css" title="oophp" />
<!--lokalne elementy stylu-->
<style type="text/css">
</style>
</head>
<body>
<!--źródła-->
<h1>źródła php</h1>
<div class="sidebar">
<a href =../index.php" >Strona główna</a><br /><br /> 
<a href ="link.php" >Dodaj odnośnik</a><br /><br /> 
<a href ="getresources.php" >Podejrzyj źródła</a><br /><br />
</div>
<div class="main">
<?php
//wywołane z link.php
//dodaje do źródeł
////////////////////////////////////////////////////////////
function check_third_party($originatingurl, $linkurl){
    //protokół już z usuniętym www
    if (strpos($linkurl, $originatingurl) !== false ||
        strpos($originatingurl, $linkurl) !== false)
    {
        $error = '';
    }
    else
    {
        $error = ' - Brak źródeł zewnętrznych';
    }
    return $error;
}
////////////////////////////////////////////////////////////
function check_listed($url, $db){
    $error = '';
    try{
      //remove wildcards and use UDF instead
      $strsql = "SELECT url FROM tblresources ".
              "WHERE url LIKE '%$url%' ";
      $result = $db->query($strsql);
      $row = $result->fetch();      
      if(!empty($row)){
        $error = " - URL już znajduje się na liście";
      }
    }catch(PDOException $e){
      echo $e;
    }
    return $error;
}
////////////////////////////////////////////////////////////
//główna
require_once '../includes/dbfunctions.inc';
//blok try
try{
    define('TBLNAME','tblresources');
    $db = new PDO('sqlite:resources.sqlite');
    //wyrzuca wyjątek
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //upewnia się, że nazwa pola jest właściwa i hermetyzuje dane
    //nie jest to metoda klasy
    setTablenames($db);
    $cleanpost = cleanData($_POST, TBLNAME, $db);
    //cytowanie w pętli
    foreach ($cleanpost as $key=>$value){
        $$key = $value;
    }
    //pobiera url
    $arr = @parse_url($url);
    $url = $arr['host'];
    $error = '';
    if($url != ''){
        $error .= check_listed($url, $db);
    }
    $arr = @parse_url($theirlink);
    $theirlink = $arr['host'];
    if($theirlink != '' ){
        $error .= check_third_party($url, $theirlink);
    }    
    //musi dac przynajmniej url i tekst + bez błędów
    if ($url != '' && $linktext != '' && $error == '' ){
        //hermetyzuje
        foreach ($cleanpost as $key=>$value){
          $$key = $db->quote($value);
        }
        $strsql="INSERT INTO ". TBLNAME . " ".
           "(id, url, email, precedingcopy, linktext, ".
           "followingcopy, target, theirlinkpage, reviewed) ".
           "Values(NULL, $url, $email, $precedingcopy, $linktext, ".
           "$followingcopy, '_blank', $theirlinkpage, 0 )";
        //wyrzuca wyjątek w razie niepowodzenia
        //echo $strsql;
        $db->exec($strsql);
        //nie można użyć $db->close();
        $message = "<center>Dziękujemy za zainteresowanie. Twój odnośnik zostanie wkrótce poddany ocenie.</center>";
    }else{
    //ponawia próbę
        $message = "<center>Dziękujemy z azaunteresowanie. Twój URL nie został dodany.<span style='color:red;'>$error</span>.</center>";
    }
}catch(PDOException $e){
    ///zmiany
    //klasa Exceptions ułatwia zarządznie
    $message = $e;
}
//niekoniecznie, bo to nie jest metoda OO
unset($db);
echo $message;
?>
</div>
</body>
</html>

