Skip to content
Snippets Groups Projects
class_functions.php 48.9 KiB
Newer Older
  • Learn to ignore specific revisions
  • *    Copyright 2008-2015 Maarch
    
    *
    *  This file is part of Maarch Framework.
    *
    *   Maarch Framework is free software: you can redistribute it and/or modify
    *   it under the terms of the GNU General Public License as published by
    *   the Free Software Foundation, either version 3 of the License, or
    *   (at your option) any later version.
    *
    *   Maarch Framework is distributed in the hope that it will be useful,
    *   but WITHOUT ANY WARRANTY; without even the implied warranty of
    *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    *   GNU General Public License for more details.
    *
    *   You should have received a copy of the GNU General Public License
    *    along with Maarch Framework.  If not, see <http://www.gnu.org/licenses/>.
    */
    
    /**
    * @brief   Contains all the various functions of this application.
    *
    * @file
    * @author Claire Figueras <dev@maarch.org>
    * @date $date$
    * @version $Revision$
    * @ingroup core
    */
    
    /**
    * @brief   Contains all the various functions of this application.
    *
    * <ul>
    *  <li>The toolkit of the Maarch framework</li>
    *  <li>Management of variables format</li>
    *  <li>Management of date format</li>
    * </ul>
    * @ingroup core
    */
    class functions
    {
        /**
        *
        * @deprecated
             */
        private $f_page;
    
        /**
        * To calculate the page generation time
        * Integer
             */
        private $start_page;
    
        /**
        * Loads in the start_page variable the start time of the page loading
        *
        */
        public function start_page_stat()
        {
            $this->start_page = microtime(true);
        }
    
    
    Damien's avatar
    Damien committed
        public function normalize ($string)
        {
            $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ'
                . 'ßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ';
            $b = 'aaaaaaaceeeeiiiidnoooooouuuuy'
                . 'bsaaaaaaaceeeeiiiidnoooooouuuyybyRr';
            $string = utf8_decode($string);
            $string = strtr($string, utf8_decode($a), $b);
            $string = strtolower($string);
    
            return utf8_encode($string);
        }
    
    
        /**
        * Cuts a string at the maximum number of char to displayed
        *
        * @param     $string string String value
        * @param     $max integer Maximum character number
        */
        public function cut_string($string, $max)
        {
            if (strlen($string) >= $max)
            {
              $string = substr($string, 0, $max);
              $espace = strrpos($string, " ");
              $string = substr($string, 0, $espace)."...";
              return $string;
            }
            else
            {
                return $string;
            }
        }
    
        /**
        * Ends the page loading time and displays it
        *
        */
        public function show_page_stat()
        {
            $end_page = microtime(true);
            $page_total = round($end_page - $this->start_page,3);
            if($page_total > 1)
            {
                $page_seconds = _SECONDS;
            }
            else
            {
                $page_seconds = _SECOND;
            }
            echo _PAGE_GENERATED_IN." <b>".$page_total."</b> ".$page_seconds;
        }
    
        /**
        * Configures the actual position of the visitor with all query strings to go to the right page after the logging action
        *
        * @param     $index string "index.php?" by default
        */
        public function configPosition($index ="index.php?")
        {
            $querystring = $_SERVER['QUERY_STRING'];
            $tab_query = explode("&",$querystring);
            $querystring = "";
    
            for($i=0;$i<count($tab_query);$i++)
            {
                if(substr($tab_query[$i],0,3) <> "css" && substr($tab_query[$i],0,3) <> "CSS")
                {
                    $querystring .= $tab_query[$i]."&";
                }
            }
            $querystring = substr($querystring,0,strlen($querystring)-1);
            $_SESSION['position'] = $index.$querystring;
        }
    
        /**
        * Adds en error to the errors log
        *
        * @param     $msg  string Message to add
        * @param  $var  string Language dependant message
        */
    
        public function add_error($msg, $var)
    
                $_SESSION['error'] .= $msg." ".$var . ' ';
    
                if(strlen(str_replace(array("<br />","<br />"),"",$_SESSION['error'])) < 6)
                {
                    $_SESSION['error'] = "";
                }
            }
        }
    
        /**
        * Cleans a variable with multiple possibility
        *
        * @param     $what  string Variable to clean
        * @param  $mask  string Mask, "no" by default
        * @param     $msg_error string Error message, empty by default
        * @param     $empty  string "yes" by default
        * @param     $min_limit integer Empty by default
        * @param     $max_limit integer Empty by default
        * @return   string Cleaned variable or empty string
        */
        public function wash($what, $mask = "no", $msg_error = "", $empty = "yes", $min_limit = "", $max_limit = "", $custom_pattern = '', $custom_error_msg = '')
        {
    
            //$w_var = addslashes(trim(strip_tags($what)));
    
            $w_var = trim(strip_tags($what));
            $test_empty = "ok";
    
            if($empty == "yes")
            {
                // We use strlen instead of the php's empty function because for a var containing 0 return by a form (in string format)
                // the empty function return that the var is empty but it contains à 0
                if(strlen($w_var) == 0)
                {
                    $test_empty = "no";
                }
                else
                {
                    $test_empty = "ok";
                }
            }
            if($test_empty == "no")
            {
                $this->add_error($msg_error, _IS_EMPTY);
                return "";
            }
            else
            {
                if($msg_error <> '')
                {
                    if($min_limit <> "")
                    {
                        if(strlen($w_var) < $min_limit)
                        {
                            if($min_limit > 1)
                            {
                                $this->add_error($msg_error,  _MUST_MAKE_AT_LEAST." ".$min_limit." "._CHARACTERS);
                            }
                            else
                            {
                                $this->add_error($msg_error, _MUST_MAKE_AT_LEAST." ".$min_limit." "._CHARACTERS);
                            }
                            return "";
                        }
                    }
                }
    
                if($max_limit <> "")
                {
                    if(strlen($w_var) > $max_limit)
                    {
                        if($min_limit > 1)
                        {
                            $this->add_error($msg_error, MUST_BE_LESS_THAN." ".$max_limit." "._CHARACTERS);
                        }
                        else
                        {
                            $this->add_error($msg_error,  MUST_BE_LESS_THAN." ".$max_limit." "._CHARACTERS);
                        }
    
                        return "";
                    }
                }
    
                switch ($mask)
                {
                    case "no":
                        return $w_var;
    
                    case "num":
                        if (preg_match("/^[0-9]+$/",$w_var))
                        {
                            return $w_var;
                        }
                        else
                        {
                            $this->add_error($msg_error, _WRONG_FORMAT." :<br/>"._WAITING_INTEGER);
                            return "";
                        }
    
                    case "float":
                        if (preg_match("/^[0-9.,]+$/",$w_var))
                        {
                            return $w_var;
                        }
                        else
                        {
                            $this->add_error($msg_error, _WRONG_FORMAT." "._WAITING_FLOAT);
                            return "";
                        }
    
                    case "letter":
                        if (preg_match("/^[a-zA-Z]+$/",$w_var))
                        {
                            return $w_var;
                        }
                        else
                        {
                            $this->add_error($msg_error, _WRONG_FORMAT);
    
                            $this->add_error(_ONLY_ALPHABETIC, '');
    
                            return "";
                        }
    
                    case "alphanum":
                        if (preg_match("/^[a-zA-Z0-9]+$/",$w_var))
                        {
                            return $w_var;
                        }
                        else
                        {
                            $this->add_error($msg_error,_WRONG_FORMAT);
    
                            $this->add_error(_ONLY_ALPHANUM,  '');
    
                    case "alphanumunderscore":
                        if (preg_match("/^[a-zA-Z0-9_]+$/",$w_var))
                        {
                            return $w_var;
                        }
                        else
                        {
                            $this->add_error($msg_error,_WRONG_FORMAT);
                            return "";
                        }   
    
    
                    case "nick":
                        if (preg_match("/^[_a-zA-Z0-9.-]+$/",$w_var))
                        {
                            return $w_var;
                        }
                        else
                        {
                            $this->add_error($msg_error,_WRONG_FORMAT);
                            return "";
                        }
    
                    case "mail":
    
                        if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,10}$/",$w_var))
    
                        {
                            return $w_var;
                        }
                        else
                        {
                            $this->add_error($msg_error, _WRONG_FORMAT);
                            return "";
                        }
    
                    case "url":
                        if (preg_match("/^[www.]+[_a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/",$w_var))
                        {
                            return $w_var;
                        }
                        else
                        {
                            $this->add_error($msg_error, _WRONG_FORMAT);
                            return "";
                        }
    
                    case "file":
                        if (preg_match("/^[_a-zA-Z0-9.-? é&\/]+$/",$w_var))
                        {
                            return $w_var;
                        }
                        else
                        {
                            $this->add_error($msg_error, _WRONG_FORMAT);
                            return "";
                        }
    
                    case "name":
                        if (preg_match("/^[_a-zA-Z0-9.-? \'\/&éea]+$/",$w_var))
                        {
                            return $w_var;
                        }
                        else
                        {
                            $this->add_error($msg_error, _WRONG_FORMAT);
                            return "";
                        }
    
                        if (preg_match("/^[\+0-9\(\)\s\.]*$/",$w_var))
    
                        {
                            return $w_var;
                        }
                        else
                        {
                            $this->add_error($msg_error, _WRONG_FORMAT);
                            return "";
                        }
    
                        $date_pattern = "/^[0-3][0-9]-[0-1][0-9]-[1-2][0-9][0-9][0-9]$/";
    
                        if(preg_match($date_pattern,$w_var))
                        {
                            return $w_var;
                        }
                        else
                        {
                            $this->add_error($msg_error, _WRONG_FORMAT." "._WAITING_DATE);
                            return "";
                        }
                    case "custom":
                        if(preg_match($custom_pattern,$w_var) == 0)
                        {
                            $this->add_error($msg_error, $custom_error_msg.' '.$custom_pattern.' '.$w_var);
                            return "";
                        }
                        else
                        {
                            return $w_var;
                        }
                }
            }
        }
    
        /**
        * Returns a variable with personnal formating. It allows you to add formating action when you displays the variable the var
        *
        * @param     $what string Variable to format
        * @return string  Formated variable
        */
    
        public static function show_str($what)
    
        {
            return stripslashes($what);
        }
    
        /**
        * Manages the location bar in session (4 levels max), then calls the where_am_i() function.
        *
        * @param     $path  string Url (empty by default)
        * @param   $label string Label to show in the location bar (empty by default)
        * @param   $id_pagestring  Page identifier (empty by default)
        * @param   $init bool If true reinits the location bar (true by default)
        * @param   $level string Level in the location bar (empty by default)
        */
        public function manage_location_bar($path = '', $label = '', $id_page = '', $init = true, $level = '')
        {
            //Fix un little php bug
            if(strpos($label,"&rsquo;")!== false)
            {
                $label = str_replace("&rsquo;" , "\'", $label);
            }
    
            $_SESSION['location_bar']['level1']['path'] = "index.php?reinit=true";
            $_SESSION['location_bar']['level1']['label'] = $_SESSION['config']['applicationname'];
            $_SESSION['location_bar']['level1']['id'] = "welcome";
    
            if(!empty($level))
            {
                if($level == 1)
                {
                    $_SESSION['location_bar']['level2']['path'] = "";
                    $_SESSION['location_bar']['level2']['label'] = "";
                    $_SESSION['location_bar']['level2']['id'] = "" ;
    
                    $_SESSION['location_bar']['level3']['path'] = "";
                    $_SESSION['location_bar']['level3']['label'] = "";
                    $_SESSION['location_bar']['level3']['id'] = "" ;
    
                    $_SESSION['location_bar']['level4']['path'] = "";
                    $_SESSION['location_bar']['level4']['label'] = "";
                    $_SESSION['location_bar']['level4']['id'] = "" ;
                }
                elseif($level == 2)
                {
                    $_SESSION['location_bar']['level3']['path'] = "";
                    $_SESSION['location_bar']['level3']['label'] = "";
                    $_SESSION['location_bar']['level3']['id'] = "" ;
    
                    $_SESSION['location_bar']['level4']['path'] = "";
                    $_SESSION['location_bar']['level4']['label'] = "";
                    $_SESSION['location_bar']['level4']['id'] = "" ;
                }
                elseif($level == 3)
                {
                    $_SESSION['location_bar']['level4']['path'] = "";
                    $_SESSION['location_bar']['level4']['label'] = "";
                    $_SESSION['location_bar']['level4']['id'] = "" ;
                }
            }
            else
            {
    
                if(isset($_SESSION['location_bar']['level1']['id']) && trim($id_page) == trim($_SESSION['location_bar']['level1']['id']))
                {
                    $_SESSION['location_bar']['level2']['path'] = "";
                    $_SESSION['location_bar']['level2']['label'] = "";
                    $_SESSION['location_bar']['level2']['id'] = "" ;
    
                    $_SESSION['location_bar']['level3']['path'] = "";
                    $_SESSION['location_bar']['level3']['label'] = "";
                    $_SESSION['location_bar']['level3']['id'] = "" ;
    
                    $_SESSION['location_bar']['level4']['path'] = "";
                    $_SESSION['location_bar']['level4']['label'] = "";
                    $_SESSION['location_bar']['level4']['id'] = "" ;
                }
                elseif( isset($_SESSION['location_bar']['level2']['id']) && trim($id_page) == trim($_SESSION['location_bar']['level2']['id']))
                {
                    $_SESSION['location_bar']['level3']['path'] = "";
                    $_SESSION['location_bar']['level3']['label'] = "";
                    $_SESSION['location_bar']['level3']['id'] = "" ;
    
                    $_SESSION['location_bar']['level4']['path'] = "";
                    $_SESSION['location_bar']['level4']['label'] = "";
                    $_SESSION['location_bar']['level4']['id'] = "" ;
                }
                elseif(isset($_SESSION['location_bar']['level3']['id']) && trim($id_page) == trim($_SESSION['location_bar']['level3']['id']))
                {
                    $_SESSION['location_bar']['level4']['path'] = "";
                    $_SESSION['location_bar']['level4']['label'] = "";
                    $_SESSION['location_bar']['level4']['id'] = "" ;
                }
                elseif($init || empty($_SESSION['location_bar']['level2']['id']))
                {
                    $_SESSION['location_bar']['level2']['path'] = $path;
                    $_SESSION['location_bar']['level2']['path'] .= "&level=2";
                    $_SESSION['location_bar']['level2']['label'] = $this->wash_html($label);
                    $_SESSION['location_bar']['level2']['id'] = $id_page ;
    
                    $_SESSION['location_bar']['level3']['path'] = "";
                    $_SESSION['location_bar']['level3']['label'] = "";
                    $_SESSION['location_bar']['level3']['id'] = "" ;
    
                    $_SESSION['location_bar']['level4']['path'] = "";
                    $_SESSION['location_bar']['level4']['label'] = "";
                    $_SESSION['location_bar']['level4']['id'] = "" ;
                }
                else
                {
                    if(empty($_SESSION['location_bar']['level3']['path']))
                    {
                        $_SESSION['location_bar']['level3']['path'] = $path."&level=3";
                        $_SESSION['location_bar']['level3']['label'] = $this->wash_html($label);
                        $_SESSION['location_bar']['level3']['id'] = $id_page ;
    
                        $_SESSION['location_bar']['level4']['path'] = "";
                        $_SESSION['location_bar']['level4']['label'] = "";
                        $_SESSION['location_bar']['level4']['id'] = "" ;
                    }
                    else
                    {
                        $_SESSION['location_bar']['level4']['path'] = $path."&level=4";
                        $_SESSION['location_bar']['level4']['label'] = $this->wash_html($label);
                        $_SESSION['location_bar']['level4']['id'] = $id_page ;
                    }
                }
            }
            $this->where_am_i();
        }
    
        /**
        * Uses javascript to rewrite the location bar
        *
        */
        private function where_am_i()
        {
            if(empty($_SESSION['location_bar']['level2']['path']))
            {
            ?><script  type="text/javascript">
                var bar = window.document.getElementById('ariane');
                if(bar != null)
                {
                    var link1 = document.createElement("a");
    
                    link1.href='<?php echo($_SESSION['location_bar']['level1']['path']);?>';
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                    var label1 = document.createTextNode("<?php functions::xecho($_SESSION['location_bar']['level1']['label']);?>");
    
                    link1.appendChild(label1);
                    bar.appendChild(link1);
                }
            </script><?php
            }
            else
            {
                if(empty($_SESSION['location_bar']['level3']['path']))
                {
                    ?><script  type="text/javascript">
                        var bar = window.document.getElementById('ariane');
                        if(bar != null)
                        {
                            var link1 = document.createElement("a");
    
                            link1.href='<?php echo($_SESSION['location_bar']['level1']['path']);?>';
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                            var label1 = document.createTextNode("<?php functions::xecho($_SESSION['location_bar']['level1']['label']);?>");
    
                            link1.appendChild(label1);
                            bar.appendChild(link1);
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                            var text1 = document.createTextNode(" > <?php functions::xecho($_SESSION['location_bar']['level2']['label']);?>");
    
                            bar.appendChild(text1);
                        }
                    </script><?php
                }
                else
                {
                    if(empty($_SESSION['location_bar']['level4']['path']))
                    {
                        ?><script type="text/javascript">
                            var bar = window.document.getElementById('ariane');
                            if(bar != null)
                            {
                                var link1 = document.createElement("a");
    
                                link1.href='<?php echo($_SESSION['location_bar']['level1']['path']);?>';
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                                var label1 = document.createTextNode("<?php functions::xecho($_SESSION['location_bar']['level1']['label']);?>");
    
                                link1.appendChild(label1);
                                bar.appendChild(link1);
                                var text1 = document.createTextNode(" > ");
                                bar.appendChild(text1);
                                var link2 = document.createElement("a");
    
                                link2.href='<?php echo($_SESSION['location_bar']['level2']['path']);?>';
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                                var label2 = document.createTextNode("<?php functions::xecho($_SESSION['location_bar']['level2']['label']);?>");
    
                                link2.appendChild(label2);
                                bar.appendChild(link2);
    
    Florian Azizian's avatar
    Florian Azizian committed
                                var text2 = document.createTextNode(" > <?php echo $_SESSION['location_bar']['level3']['label'];?>");
    
                                bar.appendChild(text2);
                            }
                        </script><?php
                    }
                    else
                    {
                        ?><script  type="text/javascript">
                            var bar = window.document.getElementById('ariane');
                            if(bar != null)
                            {
                                var link1 = document.createElement("a");
    
                                link1.href='<?php echo($_SESSION['location_bar']['level1']['path']);?>';
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                                var label1 = document.createTextNode("<?php functions::xecho($_SESSION['location_bar']['level1']['label']);?>");
    
                                link1.appendChild(label1);
                                bar.appendChild(link1);
                                var text1 = document.createTextNode(" > ");
                                bar.appendChild(text1);
                                var link2 = document.createElement("a");
    
                                link2.href='<?php echo($_SESSION['location_bar']['level2']['path']);?>';
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                                var label2 = document.createTextNode("<?php functions::xecho($_SESSION['location_bar']['level2']['label']);?>");
    
                                link2.appendChild(label2);
                                bar.appendChild(link2);
                                var text2 = document.createTextNode(" > ");
                                bar.appendChild(text2);
                                var link3 = document.createElement("a");
    
                                link3.href='<?php echo($_SESSION['location_bar']['level3']['path']);?>';
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                                var label3 = document.createTextNode("<?php functions::xecho($_SESSION['location_bar']['level3']['label']);?>");
    
                                link3.appendChild(label3);
                                bar.appendChild(link3);
    
                                var text3 = document.createTextNode(" > <?php echo $_SESSION['location_bar']['level4']['label'];?>");
    
                                bar.appendChild(text3);
                            }
                        </script><?php
                    }
                }
            }
        }
    
        /**
        * For debug, displays an array in a more readable way
        *
        * @param   $arr array Array to display
        */
        public function show_array($arr)
        {
            echo "<table width=\"550\"><tr><td align=\"left\">";
            echo "<pre>";
            print_r($arr);
            echo "</pre>";
            echo "</td></tr></table>";
        }
    
        /**
        * Formats a datetime to a dd/mm/yyyy format (date)
        *
        * @param   $date datetime The date to format
        * @return   datetime  The formated date
        */
        public function format_date($date)
        {
            $last_date = '';
            if($date <> "")
            {
                if(strpos($date," "))
                {
                    $date_ex = explode(" ",$date);
                    $the_date = explode("-",$date_ex[0]);
                    $last_date = $the_date[2]."-".$the_date[1]."-".$the_date[0];
                }
                else
                {
                    $the_date = explode("-",$date);
                    $last_date = $the_date[2]."-".$the_date[1]."-".$the_date[0];
                }
            }
            return $last_date;
        }
    
        /**
        * Formats a datetime to a dd/mm/yyyy hh:ii:ss format (timestamp)
        *
        * @param   $date  datetime The date to format
        * @return   datetime  The formatted date
        */
        public function dateformat($realDate, $sep='/')
        {
            if ($realDate <> '') {
                if (preg_match('/ /', $realDate)) {
                    $hasTime = true;
                    $tmpArr = explode(" ", $realDate);
                    $date = $tmpArr[0];
                    $time = $tmpArr[1];
                    if (preg_match('/\./', $time)) {  // POSTGRES date
                        $tmp = explode('.', $time);
                        $time = $tmp[0];
                    } else if (preg_match('/,/', $time)) { // ORACLE date
                        $tmp = explode(',', $time);
                        $time = $tmp[0];
                    }
                } else {
                    $hasTime = false;
                    $date = $realDate;
                }
                if (preg_match('/-/', $date)) {
                    $dateArr = explode("-", $date);
                } else if (preg_match('@\/@', $date)) {
                    $dateArr = explode("/", $date);
                }
                if (! $hasTime || substr($tmpArr[1], 0, 2) == "00") {
                    return $dateArr[2] . $sep . $dateArr[1] . $sep . $dateArr[0];
                } else {
                    return $dateArr[2] . $sep . $dateArr[1] . $sep . $dateArr[0]
                        . " " . $time;
                }
            }
            return '';
        }
    
        /**
        * Writes an error in pre formating format with header and footer
        *
        * @param   $title string Error title
        * @param      $message  string Error message
        * @param      $type string If 'title' then displays the title otherwise do not displays it (empty by default)
        * @param      $img_src string Source of the image to show (empty by default)
        */
        public function echo_error($title,$message, $type = '', $img_src = '')
        {
            if ($type == 'title' || $type <> '')
            {
                if($img_src <> '')
                {
                    echo '<h1><img src="'.$img_src.'" alt="" />'.$title.'</h1>';
                }
                else
                {
                    echo "<h1>".$title."</h1>";
                }
                echo '<div id="inner_content">';
            } ?>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
            <?php functions::xecho($message);
    
            if ($type <> '')
            {
                echo '</div>';
            }
        }
    
        /**
        *  Extracts the user informations from database and puts the result in an array
        *
        * @param  $id integer User identifier
        */
        public function infouser($id)
        {
    
            require_once "modules" . DIRECTORY_SEPARATOR . "visa" . DIRECTORY_SEPARATOR. "class" . DIRECTORY_SEPARATOR. "class_user_signatures.php";
            $us = new UserSignatures();
    
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
            $conn = new Database();
    
            $stmt = $conn->query("SELECT * FROM ".$_SESSION['tablename']['users']." WHERE user_id = ?", array($id));
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
            if($stmt->rowCount() == 0)
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                    "FirstName" => "",
                    "LastName" => "",
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                    "Phone" => "",
                    "Mail" => "",
    
    Damien's avatar
    Damien committed
                    "pathToSignature" => []
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                );
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                $line = $stmt->fetchObject();
    
                $query = "SELECT path_template FROM docservers WHERE docserver_id = 'TEMPLATES'";
    
                $stmt2 = $conn->query($query);
                $resDs = $stmt2->fetchObject();
                $pathToDs = $resDs->path_template;
    
                
                $tab_sign = $us->getForUser($line->user_id);
                $_SESSION['user']['pathToSignature'] = array();
                foreach ($tab_sign as $sign) {
                    $path = $pathToDs . str_replace(
    
    Damien's avatar
    Damien committed
                        "#",
                        DIRECTORY_SEPARATOR,
    
                        $sign['signature_path']
                    )
                    . $sign['signature_file_name'];
                    array_push($_SESSION['user']['pathToSignature'], $path);
    
                return array("UserId" => $line->user_id,
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                    "FirstName" => $line->firstname,
                    "LastName" => $line->lastname,
    
                    "Initials" => $line->initials,
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                    "Phone" => $line->phone,
                    "Mail" => $line->mail ,
    
                    "department" => $line->department,
                    "thumbprint" => $line->thumbprint,
                    "pathToSignature" => $_SESSION['user']['pathToSignature']
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                );
    
            }
        }
    
    
        /**
        * Returns a formated date for SQL queries
        *
        * @param  $date date Date to format
        * @param  $insert bool If true format the date to insert in the database (true by default)
        * @return Formated date or empty string if any error
        */
    
        public static function format_date_db($date, $insert=true, $databasetype= '', $withTimeZone=false)
    
        {
            if (isset($_SESSION['config']['databasetype'])
                && ! empty($_SESSION['config']['databasetype'])) {
                $databasetype = $_SESSION['config']['databasetype'];
            }
    
    
            if ($date <> "" ) {
                $var = explode('-', $date) ;
    
                if (preg_match('/\s/', $var[2])) {
                    $tmp = explode(' ', $var[2]);
                    $var[2] = $tmp[0];
    
                if (preg_match('/^[0-3][0-9]$/', $var[0])) {
                    $day = $var[0];
                    $month = $var[1];
                    $year = $var[2];
    
                } else {
                    $year = $var[0];
                    $month = $var[1];
                    $day = substr($var[2], 0, 2);
    
                }
                if ($year <= "1900") {
                    return '';
                } else {
                    if ($databasetype == "SQLSERVER") {
    
                        if ($withTimeZone) {
    
                            return  $day . "-" . $month . "-" . $year . " " . $hours;
    
                        }else{
                            return  $day . "-" . $month . "-" . $year;
                        }
                        
    
                    } else if ($databasetype == "POSTGRESQL") {
                        if ($_SESSION['config']['lang'] == "fr") {
    
                            if ($withTimeZone) {
    
                                return $day . "-" . $month . "-" . $year . " " . $hours;
    
                            }else{
                                return $day . "-" . $month . "-" . $year;
                            }
    
                            if ($withTimeZone) {
    
                                return $year . "-" . $month . "-" . $day . " " . $hours;
    
                            }else{
                                return $year . "-" . $month . "-" . $day;
                            }
    
                        }
                    } else if ($databasetype == "ORACLE") {
    
                        return  $day . "-" . $month . "-" . $year;
                    } else if ($databasetype == "MYSQL" && $insert) {
                        return $year . "-" . $month . "-" . $day;
                    } else if ($databasetype == "MYSQL" && !$insert) {
                        return  $day . "-" . $month . "-" . $year;
                    }
                }
            } else {
                return '';
            }
        }
    
        /**
        * Protects string to insert in the database
        *
        * @param  $string string String to format
        * @return Formated date
        */
    
        public function protect_string_db($string, $databasetype = '', $full='yes')
    
            if (isset($_SESSION['config']['databasetype']) && !empty($_SESSION['config']['databasetype']))
    
            {
                $databasetype = $_SESSION['config']['databasetype'];
            }
    
            if ($databasetype  == "SQLSERVER")
    
            {
                $string = str_replace("'", "''", $string);
                $string = str_replace("\\", "", $string);
    
            } else if($databasetype  == "ORACLE") {
    
                $string = str_replace("'", "''", $string);
                $string = str_replace("\\", "", $string);
    
            } else if(($databasetype  == "MYSQL")  && !get_magic_quotes_runtime()) {
    
                $string = addslashes($string);
    
            } else if(($databasetype  == "POSTGRESQL")  && !get_magic_quotes_runtime()) {
    
                $string = str_replace("&#039;", "'", $string);
    
                $string = pg_escape_string($string);
    
            if ($full == 'yes') {
                $string=str_replace(';', ' ', $string);
                $string=str_replace('--', '-', $string);  
            }
            
    
            return $string;
        }
    
        /**
        * Returns a string without the escaping characters
        *
        * @param  $string string String to format
        * @return Formated string
        */
    
        public static function show_string($string, $replace_CR = false, $chars_to_escape = array(), $databasetype = '', $escape_quote = true)
    
        {
            if(isset($string) && !empty($string) && is_string($string))
            {
                if(isset($_SESSION['config']['databasetype']) && !empty($_SESSION['config']['databasetype']))
                {
                    $databasetype = $_SESSION['config']['databasetype'];
                }
                if($databasetype == "SQLSERVER")
                {
                    $string = str_replace("''", "'", $string);
                    $string = str_replace("\\", "", $string);
                }
                else if($databasetype == "MYSQL" || $databasetype == "POSTGRESQL" && (ini_get('magic_quotes_gpc') <> true || phpversion() >= 6))
                {
                    $string = stripslashes($string);
                    $string = str_replace("\\'", "'", $string);
                    $string = str_replace('\\"', '"', $string);
                }
                else if($databasetype == "ORACLE")
                {
                    $string = str_replace("''", "'", $string);
                    $string = str_replace("\\", "", $string);
                }
                if($replace_CR)
                {
                    $to_del = array("\t", "\n", "&#0A;", "&#0D;", "\r");
                    $string = str_replace($to_del, ' ', $string);
                }
                for($i=0;$i<count($chars_to_escape);$i++)
                {
                    $string = str_replace($chars_to_escape[$i], '\\'.$chars_to_escape, $string);
                }
    
    
                if ($escape_quote) {
                    $string = str_replace('"', "'", $string);
                }
                
    
                $string = trim($string);
            }
            return $string;
        }
    
        /**
        * Cleans html string, replacing entities by utf-8 code
        *
        * @param  $var string  String to clean
        * @return Cleaned string
        */
        public function wash_html($var, $mode="UNICODE")
        {
            if($mode == "UNICODE")
            {
                $var = str_replace("<br/>","\\n",$var);
                $var = str_replace("<br />","\\n",$var);
                $var = str_replace("<br/>","\\n",$var);
                $var = str_replace("&nbsp;"," ",$var);
                $var = str_replace("&eacute;", "\u00e9",$var);
                $var = str_replace("&egrave;","\u00e8",$var);
                $var = str_replace("&ecirc;","\00ea",$var);
                $var = str_replace("&agrave;","\u00e0",$var);
                $var = str_replace("&acirc;","\u00e2",$var);
                $var = str_replace("&icirc;","\u00ee",$var);
                $var = str_replace("&ocirc;","\u00f4",$var);
                $var = str_replace("&ucirc;","\u00fb",$var);
                $var = str_replace("&acute;","\u0027",$var);
                $var = str_replace("&deg;","\u00b0",$var);
    
                $var = str_replace("&rsquo;", "\u2019",$var);
    
            }
            else if($mode == 'NO_ACCENT')
            {
                $var = str_replace("<br/>","\\n",$var);
                $var = str_replace("<br />","\\n",$var);
                $var = str_replace("<br/>","\\n",$var);
                $var = str_replace("&nbsp;"," ",$var);
                $var = str_replace("&eacute;", "e",$var);
                $var = str_replace("&egrave;","e",$var);
                $var = str_replace("&ecirc;","e",$var);
                $var = str_replace("&agrave;","a",$var);
    
                $var = str_replace("&acirc;","a",$var);
    
                $var = str_replace("&icirc;","i",$var);
                $var = str_replace("&ocirc;","o",$var);
                $var = str_replace("&ucirc;","u",$var);
                $var = str_replace("&acute;","",$var);
    
                $var = str_replace("&deg;","o",$var);
                $var = str_replace("&rsquo;", "'",$var);
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
    
                // AT LAST
                $var = str_replace("&", " et ",$var);