]> git.mxchange.org Git - friendica.git/blobdiff - include/text.php
Merge pull request #3463 from friendica/develop
[friendica.git] / include / text.php
index 580bd95fc75c81343dd3e8466cc09bba9574fd35..c9babba940f8f06e31770f638407bb5a3839b169 100644 (file)
@@ -1,12 +1,13 @@
 <?php
 
+use Friendica\App;
+
 require_once("include/template_processor.php");
 require_once("include/friendica_smarty.php");
 require_once("include/Smilies.php");
 require_once("include/map.php");
 require_once("mod/proxy.php");
 
-
 if(! function_exists('replace_macros')) {
 /**
  * This is our template processor
@@ -291,8 +292,8 @@ function paginate_data(App $a, $count = null) {
        }
 
        $url = $stripped;
-
        $data = array();
+
        function _l(&$d, $name, $url, $text, $class = '') {
                if (strpos($url, '?') === false && ($pos = strpos($url, '&')) !== false) {
                        $url = substr($url, 0, $pos) . '?' . substr($url, $pos + 1);
@@ -318,9 +319,10 @@ function paginate_data(App $a, $count = null) {
                        $numstart = 1;
                        $numstop = $numpages;
 
-                       if ($numpages > 14) {
-                               $numstart = (($pagenum > 7) ? ($pagenum - 7) : 1);
-                               $numstop = (($pagenum > ($numpages - 7)) ? $numpages : ($numstart + 14));
+                       // Limit the number of displayed page number buttons.
+                       if ($numpages > 8) {
+                               $numstart = (($pagenum > 4) ? ($pagenum - 4) : 1);
+                               $numstop = (($pagenum > ($numpages - 7)) ? $numpages : ($numstart + 8));
                        }
 
                        $pages = array();
@@ -752,6 +754,72 @@ function logger($msg, $level = 0) {
        $a->save_timestamp($stamp1, "file");
 }}
 
+/**
+ * @brief An alternative logger for development.
+ * Works largely as logger() but allows developers
+ * to isolate particular elements they are targetting
+ * personally without background noise
+ *
+ * log levels:
+ * LOGGER_NORMAL (default)
+ * LOGGER_TRACE
+ * LOGGER_DEBUG
+ * LOGGER_DATA
+ * LOGGER_ALL
+ *
+ * @global App $a
+ * @global dba $db
+ * @global array $LOGGER_LEVELS
+ * @param string $msg
+ * @param int $level
+ */
+
+function dlogger($msg, $level = 0) {
+       $a = get_app();
+       global $db;
+
+       // turn off logger in install mode
+       if (
+               $a->module == 'install'
+               || ! ($db && $db->connected)
+       ) {
+               return;
+       }
+
+       $logfile = get_config('system','dlogfile');
+
+       if (! $logfile) {
+               return;
+       }
+
+       if (count($LOGGER_LEVELS) == 0) {
+               foreach (get_defined_constants() as $k => $v) {
+                       if (substr($k, 0, 7) == "LOGGER_") {
+                               $LOGGER_LEVELS[$v] = substr($k, 7, 7);
+                       }
+               }
+       }
+
+       $process_id = session_id();
+
+       if ($process_id == '') {
+               $process_id = get_app()->process_id;
+       }
+
+       $callers = debug_backtrace();
+       $logline = sprintf("%s@\t%s:\t%s:\t%s\t%s\t%s\n",
+                       datetime_convert(),
+                       $process_id,
+                       basename($callers[0]['file']),
+                       $callers[0]['line'],
+                       $callers[1]['function'],
+                       $msg
+               );
+
+       $stamp1 = microtime(true);
+       @file_put_contents($logfile, $logline, FILE_APPEND);
+       $a->save_timestamp($stamp1, "file");
+}
 
 if(! function_exists('activity_match')) {
 /**
@@ -902,10 +970,10 @@ function contact_block() {
                                intval($shown)
                );
                if (dbm::is_result($r)) {
-                       $contacts = "";
-                       foreach ($r AS $contact)
+                       $contacts = array();
+                       foreach ($r AS $contact) {
                                $contacts[] = $contact["id"];
-
+                       }
                        $r = q("SELECT `id`, `uid`, `addr`, `url`, `name`, `thumb`, `network` FROM `contact` WHERE `id` IN (%s)",
                                dbesc(implode(",", $contacts)));
 
@@ -2124,47 +2192,48 @@ function format_network_name($network, $url = 0) {
  * @param string $lang Programming language
  * @return string Formated html
  */
-function text_highlight($s,$lang) {
-       if($lang === 'js')
+function text_highlight($s, $lang) {
+       if ($lang === 'js') {
                $lang = 'javascript';
-
-       if(! strpos('Text_Highlighter',get_include_path())) {
-               set_include_path(get_include_path() . PATH_SEPARATOR . 'library/Text_Highlighter');
        }
 
-       require_once('library/Text_Highlighter/Text/Highlighter.php');
-       require_once('library/Text_Highlighter/Text/Highlighter/Renderer/Html.php');
+       // @TODO: Replace Text_Highlighter_Renderer_Html by scrivo/highlight.php
+
+       // Autoload the library to make constants available
+       class_exists('Text_Highlighter_Renderer_Html');
+
        $options = array(
                'numbers' => HL_NUMBERS_LI,
                'tabsize' => 4,
-               );
+       );
 
        $tag_added = false;
-       $s = trim(html_entity_decode($s,ENT_COMPAT));
-       $s = str_replace("    ","\t",$s);
+       $s = trim(html_entity_decode($s, ENT_COMPAT));
+       $s = str_replace('    ', "\t", $s);
 
        // The highlighter library insists on an opening php tag for php code blocks. If
        // it isn't present, nothing is highlighted. So we're going to see if it's present.
        // If not, we'll add it, and then quietly remove it after we get the processed output back.
 
-       if($lang === 'php') {
-               if(strpos('<?php',$s) !== 0) {
+       if ($lang === 'php') {
+               if (strpos($s, '<?php') !== 0) {
                        $s = '<?php' . "\n" . $s;
                        $tag_added = true;
                }
        }
 
-       $renderer = new Text_Highlighter_Renderer_HTML($options);
+       $renderer = new Text_Highlighter_Renderer_Html($options);
        $hl = Text_Highlighter::factory($lang);
        $hl->setRenderer($renderer);
        $o = $hl->highlight($s);
-       $o = str_replace(["    ","\n"],["&nbsp;&nbsp;&nbsp;&nbsp;",''],$o);
+       $o = str_replace("\n", '', $o);
+
 
-       if($tag_added) {
-               $b = substr($o,0,strpos($o,'<li>'));
-               $e = substr($o,strpos($o,'</li>'));
+       if ($tag_added) {
+               $b = substr($o, 0, strpos($o, '<li>'));
+               $e = substr($o, strpos($o, '</li>'));
                $o = $b . $e;
        }
 
-       return('<code>' . $o . '</code>');
+       return '<code>' . $o . '</code>';
 }