<?php
    
/*
     * klasse for håndtering av bilder i applikasjonen
     * 
     * bruker imagemagick (www.imagemagick.org) og
     * GD
     * 
     */
    
class imageHandler
    
{
        
/*
         * inneholder filbane/filnavn til redigert bilde
         *
         * @var String
         */
        
var $imageStream;
        
        
/*
         * inneholder filstørrelse
         *
         * @var Integer
         */        
        
var $imageSize;
        
        
/*
         * inneholder filtype
         *
         * @var String
         */
        
var $imageType;
        
        
/*
         * inneholder filnavn etter rename
         *
         * @var String
         */
        
var $imageRenamed;        
        
        
/*
         * om et bilde/bildene er ferdige
         *
         * @var Boolean
         */
        
var $imageComplete false;
        
        
/*
         * absolutt filbane for mappen med bilder
         * eks: /home/usr/www/images/
         *
         * @var String
         */        
        
var $imagePath "/home/gensertrykk/www/v1/img/";
        
        
/*
         * max filstørrelse
         *
         * @var Integer
         */
        
var $imageMaxSize 2000000;
        
        
/*
         * telleren
         *
         * @var Integer
         */
        
var $imageTicker 0;
        
        
/*
         * bildearrayen
         *
         * @var Array
         */        
        
var $imageArray = array();
        
        
/*
         * for bruker input text
         *
         * @var String
         */
        
var $textStream;
        
        
/*
         * for evt feil på systemkommandoer
         *
         * @var Integer
         */
        
var $systemCheck;
        
        
/*
         * for combineTextImage()
         *
         * @var String
         */
        
var $outputStream;        
        
        
/*
         * kompilerer bilde og tekst sammen
         * 
         * @input String, Integer, String, Integer, Integer, String
         * @output String
         * @return Boolean
         */
        
function combineTextImage($sessionID$resize$imageStream$x$y$output)
        {
            
system("/usr/bin/composite /home/gensertrykk/www/v1/txt/".$sessionID."_text.png -resize ".$resize."% /home/gensertrykk/www/v1/composed/".$sessionID."_comp.png -compose bumpmap -gravity south /home/gensertrykk/www/v1/composed/".$sessionID."_txt_comp.png"$this->systemCheck);            
            if(
$this->systemCheck == 1)
            {
                
$this->outputStream $sessionID."_txt_comp.png";
                return 
true;                
            }
            else
            {
                return 
false;
            }            
        }
        
        
/*
         * overlapper bilde
         * brukes bla. til å kompilere forhåndsvisning
          * 
         * @input String, Integer, String, Integer, Integer, String
         * @output String
         * @return Boolean
         */
        
function overLayImage($inputStream$resize$fabric$x$y$sessionID)
        {
            
system("/usr/bin/composite /home/gensertrykk/www/v1/img/kaligraph.gif -resize 50% /home/gensertrykk/www/v1/fabric/ValueweightT_skyBlue.gif -compose bumpmap -gravity center /home/gensertrykk/www/v1/composed/test6.png"$this->systemCheck);
            
            if(
$this->systemCheck == 1)
            {
                
$this->outputStream $sessionID."_comp.png";
                return 
true;                
            }
            else
            {
                return 
false;
            }
        }
        
        
/*
         * lager en bildefil av oppgitt tekst
         *
         * @input String, String
         * @output String
         * @return Boolean
         */
        
function makeText($text$session)
        {
            
/*prøvde meg med skgge, bra resultat, men tar lengre tid...
                    system("/usr/local/bin/convert -size 500x200 xc:transparent -font Bookman-DemiItalic -pointsize 100 -draw \"text 100,130 '".$text."'\" \
                -channel RGBA -gaussian 0x6 -fill white -stroke blue -draw \"text 110,140 '".$text."'\" /home/gensertrykk/www/v1/txt/".$session."_text.png");*/
            
system("/usr/local/bin/convert -size 500x200 xc:transparent -font Bookman-DemiItalic -pointsize 100 -fill white -stroke blue -draw \"text 110,140 '".$text."'\"                             /home/gensertrykk/www/v1/txt/".$session."_text.png"$this->systemCheck);
    
            
$this->textStream $session."_text.png";
            if(
$this->systemCheck == 1)
            {
                return 
true;                
            }
            else
            {
                return 
false;
            }
        }
        
        
/*
         * renamer gitt bilde
         *
         * @input String, String
         * @output Boolean
         * @return Boolean
         */
        
function renameImage($fileStream$sessionID)
        {    
            
$this->imageRenamed $sessionID."_".$fileStream;
            
                
$renameImage copy($this->imagePath $fileStream$this->imagePath $this->imageRenamed);
                
$unLink unlink($this->imagePath $fileStream);
                    if (!
$renameImage)
                    { 
                        exit(
"kunne ikke rename fil");
                    } 
                    else
                    { 
                        
$this->imageComplete true;
                    }
            return 
true;
        }

        
/*
         * lager thumbnails og kaster dem ut
         *
         * @input String
         * @output Array
         * @return true
         */            
        
function makeThumbnails($imagesFolder)
        {
            
$imageWidth "75";  
            
$imageHeight "75";  
            
            
$imageDirectory opendir($imagesFolder);
            
$directoryException = array(".""..");  
            
            while(
$this->imageStream readdir($imageDirectory)):

                if (
$this->imageStream == $directoryException[0] || $this->imageStream == $directoryException[1]):
                    continue;
                Endif;
                
$this->imageStream $imagesFolder."/".$this->imageStream;
                
$this->imageArray[$this->imageTicker] = "\n<a href=\"$this->imageStream\" target=\"_blank\"><img src=\"$this->imageStream\" height=\"$imageHeight\" widht=\"$imageWidth\" border=\"0\" alt=\"$this->imageStream\"></a>\n";
                
$this->imageTicker++;
            Endwhile;
            
            
closedir($imageDirectory);
            return 
true;
        }
        
        
/*
         * resizer gitt bilde med imagemagick
         *
         * @input Integer, Integer, String, String, Integer
         * @output Boolean
         * @return Boolean
         */
        
function resizeImage($newWidth$newHeight$imageType$imageName$imageRatio)
        {
            if(
$imageRatio == 1)
            {
                
system("/usr/bin/mogrify -resize ".$newWidth."x".$newHeight."! /home/gensertrykk/www/v1/img/".$imageName.".".$imageType.""$this->systemCheck);        
            }
            else
            {
                
system("/usr/bin/mogrify -resize ".$newWidth."x".$newHeight." /home/gensertrykk/www/v1/img/".$imageName.".".$imageType.""$this->systemCheck);            
            }

            if(
$this->systemCheck == 1)
            {
                
$this->imageComplete true;                
            }
            else
            {
                
$this->imageComplete false;                
            }
            return 
true;
        }
        
        
/*
         * laster opp bilde
         *
         * @input String, Integer, String, String
         * @output Boolean, String, Integer, String
         * @return Boolean
         */
        
function uploadImage($fileTmpName$fileSize$fileType$fileName)
        {
            if (
is_uploaded_file($fileTmpName)) 
            {
                if (
$fileSize $this->imageMaxSize)
                {
                    exit(
"fil for stor");
                }
                if ((
$fileType == "image/gif") || ($fileType == "image/pjpeg") || ($fileType == "image/jpeg") || ($fileType == "image/png"))
                {
                    if (
file_exists($this->imagePath $fileName))
                    {
                        exit(
"filen eksisterer fra før");
                    }
                
                    
$uploadImage copy($fileTmpName$this->imagePath.$fileName);
                    
                    if (!
$uploadImage)
                    { 
                        exit(
"kunne ikke laste opp fil");
                    } 
                    else
                    { 
                        
$this->imageComplete true;
                    }
                
                    
$this->imageStream $fileName;
                    
$this->imageSize $fileSize;
                    
$this->imageType $fileType;
                } 
                else 
                { 
                    exit(
"feil filtype");
                }
            }
            return 
true;
        }
    }
    
/*
     * klasse for håndtering av sesjoner
     *
     * @var String
     */
    
class sessionHandler
    
{
        
/*
         * om bruker er logget inn
         *
         * @var Boolean
         */
        
var $loggedIn false;
        
        
/*
         * feilmelding
         *
         * @var Integer
         */
        
var $logError;
        
        
/*
         * http_referer
         *
         * @var String
         */
        
var $getUrl;
        
        
/*
         * logg ut funksjonen
         *
         * @input String, String
         * @outputs String
         * @returns Integer
         */
        
function logOut($userSessionID,$userReferer)
        {
            
//spørring - sletter sesjon fra tabell
            
$query mysql_query("DELETE FROM systemSession WHERE sessionID = '$userSessionID'");
            if(!
$query)
            {
                
$this->logError 601;
            }
            else
            {
                
$this->logError 600;
            }
    
            
//clearer variablene
            
session_unset();
            
            
//&oslash;delegger denne sesjonen
            
session_destroy();

            
$this->getUrl $userReferer;
        }
        
        
/*
         * logg inn funksjon
         *
         * @input String, String
         * @return Boolean, Integer
         */
        
function logIn($userName$userPassword)
        {    
            
//sikkerhet og formatering
            
$cryptedPwd md5($userPassword);
        
            
//henter ut bruker som logger inn
            
$userSessionQuery mysql_query("SELECT * FROM systemUser WHERE userName = '$userName'");// or die("MySQL Login Error: ".mysql_error()." ".mysql_errno()); 
            
$userFetchRow mysql_fetch_array($userSessionQuery);
        
            
//deklarere variabler
            
$userEmail $userFetchRow["userEmail"];
            
$userNameDB $userFetchRow["userName"];
            
$userPasswordDB $userFetchRow["userPassword"];
            
$userFirstName $userFetchRow["userFirstName"];
            
$userLastName $userFetchRow["userLastName"];
            
$userRights $userFetchRow["userRights"];
            
$userStatus $userFetchRow["userStatus"];
            
$userID $userFetchRow["userID"];
            
$checkUser "OK";
            
$userReferer $_SERVER['HTTP_REFERER'];
            
            
$timeStamp time();
        
            
//sjekker om mailen og passordet stemmer overens med det i databasen
            
if (($userName == $userNameDB) && ($userPasswordDB == $cryptedPwd))
            {
                
//hvis bruker har aktivert kontoen sin
                
if($userStatus == $checkUser)
                {
                    
$userSessionID $_SESSION["userSessionID"];
                    
                    
//hvis bruker ikke har plukket varer og f&aring;tt sesjonsid der
                    
if(empty($userSessionID))
                    {
                        
//kryptering
                        
$_SESSION["sessionID"] = md5(uniqid(rand(), true));
                        
//registrerer bruker
                        
$_SESSION["userEmail"] = $userEmail;
                        
//brukernavn
                        
$_SESSION["userName"] = $userNameDB;
                        
//passord
                        
$_SESSION["userPwd"] = $userPassword;
                        
//rettigheter
                        
$_SESSION["userRights"] = $userRights;
                        
//fornavn
                        
$_SESSION["userFirstName"] = $userFirstName;
                        
//etternavn
                        
$_SESSION["userLastName"] = $userLastName;
                        
//ip-adresse
                        
$_SESSION["userRemoteAdress"] = $_SERVER['REMOTE_ADDR'];
                        
//logget inn
                        
$_SESSION["userLoggedIn"] = date("Y-m-d H:i:s");
                        
//aktivert eller ei
                        
$_SESSION["userStatus"] = $userStatus;
                        
                        
//dette kunne skippes, men hvis disse variablene settes så vet vi at sesjonen er i orden
                        
$userSessionID $_SESSION["sessionID"];
                        
$userEmail $_SESSION["userEmail"];
                        
$userCheckID $userID;
                        
$userRemoteAdress $_SESSION["userRemoteAdress"];
        
                        
$userLoggedIn date("Y-m-d H:i:s");
                    
                        
//sp&oslash;rring
                        
$checkUserSql mysql_query("SELECT * FROM systemSession WHERE userMail = '$userEmail'");
                        
//henter rader
                        
$numRows mysql_num_rows($checkUserSql);
                        
//hvis raden eksisterer
                        
if($numRows == 1)
                        {        
                            
//f&oslash;rst slette gammel sesjon
                            
$checkUserSql mysql_query("DELETE FROM systemSession WHERE userMail = '$userEmail'");// or die("MySQL Login Error: ".mysql_error()." ".mysql_errno()); 
                            //s&aring; lage ny
                            
$updateUserQuery mysql_query("INSERT INTO systemSession VALUES ( '$userSessionID','$userEmail','$userCheckID', '$userRemoteAdress','$userLoggedIn','$timeStamp')") or die("MySQL Login Error: ".mysql_error()." ".mysql_errno()); 
                        }
                        else
                        {
                            
$insertUserQuery mysql_query("INSERT INTO systemSession VALUES ( '$userSessionID','$userEmail','$userCheckID', '$userRemoteAdress','$userLoggedIn','$timeStamp')") or die("MySQL Login Error: ".mysql_error()." ".mysql_errno()); 
                        }
                        
$this->loggedIn true;        
                        
$this->userEmail $userEmail;
                        
$this->logError 500;
                        return 
true;
                    }
                    else
                    {    
                        
//registrerer bruker
                        
$_SESSION["userEmail"] = $userEmail;
                        
//passord
                        
$_SESSION["userPwd"] = $userPassword;
                        
//rettigheter
                        
$_SESSION["userRights"] = $userRights;
                                        
//brukernavn
                        
$_SESSION["userName"] = $userNameDB;
                        
//fornavn
                        
$_SESSION["userFirstName"] = $userFirstName;
                        
//etternavn
                        
$_SESSION["userLastName"] = $userLastName;
                        
//ip-adresse
                        
$_SESSION["userRemoteAdress"] = $_SERVER['REMOTE_ADDR'];
                        
//logget inn
                        
$_SESSION["userLoggedIn"] = date("Y-m-d H:i:s");
                        
//aktivert eller ei
                        
$_SESSION["userStatus"] = $userStatus;
                        
                        
//dette kunne skippes, men hvis disse variablene settes så vet vi at sesjonen er i orden
                        
$userSessionID $_SESSION["sessionID"];
                        
$userEmail $_SESSION["userEmail"];
                        
$userCheckID $userID;
                        
$userRemoteAdress $_SESSION["userRemoteAdress"];
                        
$userLoggedIn date("Y-m-d H:i:s");
                    
                        
$checkUserSql mysql_query("SELECT * FROM systemSession WHERE userEmail = '$userEmail'") or die("MySQL Login Error: ".mysql_error()." ".mysql_errno()); 
                        
$numRows mysql_num_rows($checkUserSql);
                        if(
$numRows == 1)
                        {        
                            
//f&oslash;rst slette gammel sesjon
                            
$checkUserSql mysql_query("DELETE FROM systemSession WHERE userEmail = '$userEmail'") or die("MySQL Login Error: ".mysql_error()." ".mysql_errno()); 
                            
//s&aring; lage ny
                            
$updateUserQuery mysql_query("INSERT INTO systemSession VALUES ( '$userSessionID','$userEmail','$userCheckID', '$userRemoteAdress','$userLoggedIn','$timeStamp')") or die("MySQL Login Error: ".mysql_error()." ".mysql_errno()); 
                        }
                        else
                        {
                            
$insertUserQuery mysql_query("INSERT INTO systemSession VALUES ( '$userSessionID','$userEmail','$userCheckID', '$userRemoteAdress','$userLoggedIn','$timeStamp')") or die("MySQL Login Error: ".mysql_error()." ".mysql_errno()); 
                        }        
                        
$this->loggedIn true;        
                        
$this->userEmail $userEmail;
                        
$this->logError 500;                        
                        return 
true;            
                    }
                }
                
//bruker har ikke aktivert kontoen sin
                
else
                {
                    
$this->loggedIn false;
                    
$this->logError 100;
                }
            }
            
//sjekker om passordet er feil
            
elseif (($userName == $userNameDB) && ($cryptedPwd != $userPasswordDB))
            {
                    
$this->loggedIn false;
                    
$this->logError 101;
            }
            
//feil p&aring; begge
            
else
            {
                    
$this->loggedIn false;
                    
$this->logError 102;
            }
        }
    }    
    
    
/*
     * klasse for håndtering av brukere
     *
     * 
     */
    
class userHandler
    
{
    
        var 
$userEmail;
        var 
$systemOut;
        
        
/*
         * henter ut bruker (UFERDIG)
         *
         * @input String
         */
        
function getUser($userEmail)
        {
            
//hente ut bruker
            
$fetchUserQuery mysql_query("SELECT * FROM systemUser WHERE userEmail = '$userEmail'");
        }
        function 
registerUser(    $dateRegistered
                                
$userFirstName
                                
$userLastName
                                
$userName
                                
$userEmail
                                
$userPassword
                                
$reqNews
                                
$reqOffer
                                
$userAdress1
                                
$userAdress2
                                
$userPostalCode
                                
$userPostLocation
                                
$userPhone
                                
$userMobilePhone
                                
$userRights
                                
$userActHash
                                
$userStatus)
        {
            
//vi krypterer passordet for sikkerhet
            
$cryptedPassword md5($userPassword);
        
            
//spørringen for å registrere brukere
            
$registerUserQuery mysql_query("INSERT INTO systemUser VALUES(
                                                                            '',
                                                                            '$dateRegistered',
                                                                            '$userFirstName',
                                                                            '$userLastName',
                                                                            '$userName',
                                                                            '$userEmail',
                                                                            '$cryptedPassword',
                                                                            '$reqNews',
                                                                            '$reqOffer',
                                                                            '$userAdress1',
                                                                            '$userAdress2',
                                                                            '',
                                                                            '',
                                                                            '$userPostalCode',
                                                                            '$userPostLocation',
                                                                            '$userPhone',
                                                                            '$userMobilePhone',
                                                                            '$userRights',
                                                                            '$userActHash',
                                                                            '$userStatus')"
);
        
            
$this->systemOut $dateRegistered;
            return 
true;
        }
    }
    class 
mailHandler
    
{
        function 
sendMail($mailto$emne,$mail$headers)
        {
            
mail($mailto$emne$mail$headers);        
        }
    }
?>