====== startWith ====== /** * Tests if a string starts with a given string * * @param string * @param string * @return bool */ function startWith($string, $start) { return strpos($string, $start) === 0; } ====== endWith ====== /** * Tests if a string ends with the given string * * @param string * @param string * @return bool */ function endWith($string, $end) { return strrpos($string, $end) === strlen($string) - strlen($end); } ====== debug ====== class DebugTool { public static function show($object, $title = null, $backtrace_index = 0) { echo '
'; $calledFrom = debug_backtrace(); echo '' . $calledFrom[$backtrace_index]['file'] . ''; echo ' (line ' . $calledFrom[$backtrace_index]['line'] . ')'; if(isset($title)) { echo '

' . $title . '

'; } echo('
');
        if(is_array($object))
        {
            print_r($object);
        }
        elseif(is_a($object, 'DOMDocument'))
        {
            $object->formatOutput = true;
            $xml_string = $object->saveXML();
            echo htmlentities($xml_string);
        }
        elseif(is_a($object, 'DOMNodeList') || is_a($object, 'DOMElement'))
        {
            $dom = new DOMDocument();
            $debugElement = $dom->createElement('debug');
            $dom->appendChild($debugElement);
            
            if(is_a($object, 'DOMNodeList'))
            {
                foreach ($object as $node) 
                {
                	$node = $dom->importNode($node, true);
                	$debugElement->appendChild($node);
                }
            }
            elseif(is_a($object, 'DOMElement'))
            {
                $node = $dom->importNode($object, true);
                $debugElement->appendChild($node);
            }
            
            $dom->formatOutput = true;
            $xml_string = $dom->saveXML();
            echo htmlentities($xml_string);
        }
        elseif(is_object($object))
        {
            echo get_class($object);
        }
        else 
        {
            echo $object;
        }
        
        echo('
'); echo '
'; } } /*******************************************************************/ /***** GLOBAL FUNCTIONS ********************************************/ /*******************************************************************/ function debug($object, $title = null) { DebugTool :: show($object, $title, 1); }
====== to_db_date ====== /** * Converts a UNIX timestamp (as returned by time()) to a datetime string * for use in SQL queries. * @param int $date The date as a UNIX timestamp. * @return string The date in datetime format. */ static function to_db_date($date) { if (isset($date)) { return date('Y-m-d H:i:s', $date); } else { return null; } } ====== from_db_date ====== /** * Converts a datetime value (as retrieved from the database) to a UNIX * timestamp (as returned by time()). * @param string $date The date as a UNIX timestamp. * @return int The date as a UNIX timestamp. */ static function from_db_date($date) { if (isset ($date)) { return strtotime($date); } else { return null; } } ====== get_value_between_chars ====== /** * Return the string found between two characters. If an index is given, it returns the * value at the index position * * @param string $opening_char * @param string $closing_char * @param int $index 0 based index * @return string or null */ function get_value_between_chars($haystack, $index = 0, $opening_char = '[', $closing_char = ']') { $offset = 0; $found = true; $value = null; for ($i = 0; $i < $index + 1; $i++) { $op_pos = strpos($haystack, $opening_char, $offset); if($op_pos !== false) { $cl_pos = strpos($haystack, $closing_char, $op_pos + 1); if($cl_pos !== false) { $value = substr($haystack, $op_pos + 1, $cl_pos - $op_pos - 1); $offset = $cl_pos + 1; } else { $found = false; break; } } else { $found = false; break; } } if($found) { return $value; } else { return null; } } ====== to_multilevel_array ====== /** * Build an array from a list of strings * * E.g: Array with the following strings: * * 'general_description[0][0][string]' * 'general_description[0][1][string]' * 'general_description[1][0][string]' * * @param array $strings Array of (strings => value) pairs to merge into a multilevel array * @param string $opening_char * @param string $closing_char */ public static function to_multilevel_array($strings, $opening_char = '[', $closing_char = ']') { $array = array(); foreach ($strings as $string => $value) { self :: set_next_level_array($array, $string, $value, $opening_char, $closing_char); } return $array; } private static function set_next_level_array(&$container_array, $string, $value, $opening_char = '[', $closing_char = ']') { $key = self :: get_value_between_chars($string, 0, $opening_char, $closing_char); $sub_string = substr($string, strpos($string, $closing_char) + 1); if(isset($sub_string) && strlen($sub_string) > 0) { if(isset($container_array[$key])) { $sub_array = $container_array[$key]; } else { $sub_array = array(); } self :: set_next_level_array($sub_array, $sub_string, $value, $opening_char, $closing_char); $container_array[$key] = $sub_array; } else { if(isset($container_array[$key])) { $container_array[$key] = array_merge($container_array[$key], $value); } else { $container_array[$key] = $value; } } }