', $request); return $request; case 'Colons': $request = str_replace('/', ': ', $request); return $request; case 'Spaces': $request = str_replace('/', ' ', $request); return $request; default: $request = str_replace('/', $separator, $request); return $request; } return $request; } public static function get_title_from_file($file) { return static::get_title_from_filename(pathinfo($file, PATHINFO_FILENAME)); } public static function get_title_from_filename($filename) { $filename = explode('_', $filename); if ($filename[0] == '' || is_numeric($filename[0])) unset($filename[0]); $filename = implode(' ', $filename); return $filename; } public static function get_url_from_file($file) { return static::get_url_from_filename(pathinfo($file, PATHINFO_FILENAME)); } public static function get_url_from_filename($filename) { $filename = explode('_', $filename); if ($filename[0] == '' || is_numeric($filename[0])) unset($filename[0]); $filename = implode('_', $filename); return $filename; } public static function build_directory_tree($dir, $ignore, $mode) { return static::directory_tree_builder($dir, $ignore, $mode); } public static function get_request_from_url($url, $base_url) { $url = substr($url, strlen($base_url) + 1); if (strpos($url, 'index.php') === 0) { $request = (($i = strpos($url, 'request=')) !== false) ? $request = substr($url, $i + 8) : ''; if ($end = strpos($request, '&')) $request = substr($request, 0, $end); $request = ($request === '') ? 'index' : $request; } else { $request = ($url == '') ? 'index' : $url; $request = ($end = strpos($request, '?')) ? substr($request, 0, $end) : $request; } return $request; } public static function configure_theme($theme, $base_url, $local_base, $mode = Daux::LIVE_MODE) { if (is_file($theme)) { $theme = file_get_contents($theme); $theme = json_decode($theme, true); if (!$theme) $theme = array(); } else $theme = array(); if ($mode === Daux::LIVE_MODE) { if (!isset($theme['favicon'])) $theme['favicon'] = utf8_encode($base_url . 'img/favicon.png'); else { $theme['favicon'] = utf8_encode(str_replace('', $base_url, $theme['favicon'])); } if (!isset($theme['css'])) $theme['css'] = array(); else { foreach ($theme['css'] as $key => $css) { $theme['css'][$key] = utf8_encode(str_replace('', $base_url, $css)); } } if (!isset($theme['fonts'])) $theme['fonts'] = array(); else { foreach ($theme['fonts'] as $key => $font) { $theme['fonts'][$key] = utf8_encode(str_replace('', $base_url, $font)); } } if (!isset($theme['js'])) $theme['js'] = array(); else { foreach ($theme['js'] as $key => $js) { $theme['js'][$key] = utf8_encode(str_replace('', $base_url, $js)); } } } else { if (!isset($theme['favicon'])) $theme['favicon'] = 'img/favicon.png'; if (!isset($theme['css'])) $theme['css'] = array(); if (!isset($theme['fonts'])) $theme['fonts'] = array(); if (!isset($theme['js'])) $theme['js'] = array(); } if (!isset($theme['template'])) $theme['template'] = $local_base . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR . 'default.tpl'; else $theme['template'] = str_replace('', $local_base, $theme['template']); if (!isset($theme['error-template'])) $theme['error-template'] = $local_base . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR . 'error.tpl'; else $theme['error-template'] = str_replace('', $local_base, $theme['error-template']); if (!isset($theme['require-jquery'])) $theme['require-jquery'] = false; if (!isset($theme['bootstrap-js'])) $theme['bootstrap-js'] = false; return $theme; } public static function rebase_theme($theme, $base_url) { $theme['favicon'] = utf8_encode(str_replace('', $base_url, $theme['favicon'])); foreach ($theme['css'] as $key => $css) { $theme['css'][$key] = utf8_encode(str_replace('', $base_url, $css)); } foreach ($theme['fonts'] as $key => $font) { $theme['fonts'][$key] = utf8_encode(str_replace('', $base_url, $font)); } foreach ($theme['js'] as $key => $js) { $theme['js'][$key] = utf8_encode(str_replace('', $base_url, $js)); } return $theme; } public static function google_analytics($analytics, $host) { $ga = << (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); EOT; $ga .= "ga('create', '" . $analytics . "', '" . $host . "');"; $ga .= "ga('send', 'pageview');"; $ga .= ''; return $ga; } public static function piwik_analytics($analytics_url, $analytics_id) { $pa = << var _paq = _paq || []; _paq.push(["trackPageView"]); _paq.push(["enableLinkTracking"]); (function() { EOT; $pa .= 'var u=(("https:" == document.location.protocol) ? "https" : "http") + "://' . $analytics_url . '/";'; $pa .= '_paq.push(["setTrackerUrl", u+"piwik.php"]);'; $pa .= '_paq.push(["setSiteId", ' . $analytics_id . ']);'; $pa .= << EOT; return $pa; } private static function directory_tree_builder($dir, $ignore, $mode = Daux::LIVE_MODE, $parents = null) { if ($dh = opendir($dir)) { $node = new Directory_Entry($dir, $parents); $new_parents = $parents; if (is_null($new_parents)) $new_parents = array(); else $new_parents[] = $node; while (($entry = readdir($dh)) !== false) { if ($entry == '.' || $entry == '..') continue; $path = $dir . DIRECTORY_SEPARATOR . $entry; if (is_dir($path) && in_array($entry, $ignore['folders'])) continue; if (!is_dir($path) && in_array($entry, $ignore['files'])) continue; if (is_dir($path)) $entry = static::directory_tree_builder($path, $ignore, $mode, $new_parents); else if (in_array(pathinfo($path, PATHINFO_EXTENSION), Daux::$VALID_MARKDOWN_EXTENSIONS)) { $entry = new Directory_Entry($path, $new_parents); if ($mode === Daux::STATIC_MODE) $entry->uri .= '.html'; } if ($entry instanceof Directory_Entry) $node->value[$entry->uri] = $entry; } $node->sort(); $node->first_page = $node->get_first_page(); $index_key = ($mode === Daux::LIVE_MODE) ? 'index' : 'index.html'; if (isset($node->value[$index_key])) { $node->value[$index_key]->first_page = $node->first_page; $node->index_page = $node->value[$index_key]; } else $node->index_page = false; return $node; } } public static function clean_copy_assets($path, $local_base){ @mkdir($path); static::clean_directory($path); @mkdir($path . DIRECTORY_SEPARATOR . 'img'); static::copy_recursive($local_base . DIRECTORY_SEPARATOR . 'img', $path . DIRECTORY_SEPARATOR . 'img'); @mkdir($path . DIRECTORY_SEPARATOR . 'js'); static::copy_recursive($local_base . DIRECTORY_SEPARATOR . 'js', $path . DIRECTORY_SEPARATOR . 'js'); @mkdir($path . DIRECTORY_SEPARATOR . 'themes'); static::copy_recursive($local_base . DIRECTORY_SEPARATOR . 'themes', $path . DIRECTORY_SEPARATOR . 'themes'); } // Rmdir private static function clean_directory($dir) { $it = new \RecursiveDirectoryIterator($dir); $files = new \RecursiveIteratorIterator($it, \RecursiveIteratorIterator::CHILD_FIRST); foreach($files as $file) { if ($file->getFilename() === '.' || $file->getFilename() === '..') continue; if ($file->isDir()) rmdir($file->getRealPath()); else unlink($file->getRealPath()); } } private static function copy_recursive($src,$dst) { $dir = opendir($src); @mkdir($dst); while(false !== ( $file = readdir($dir)) ) { if (( $file != '.' ) && ( $file != '..' )) { if ( is_dir($src . '/' . $file) ) { static::copy_recursive($src . '/' . $file,$dst . '/' . $file); } else { copy($src . '/' . $file,$dst . '/' . $file); } } } closedir($dir); } } ?>