function GetPath($path) { $fullPath = system\Helper::arcGetPath(true) . "assets/" . $path . "/"; $webPath = system\Helper::arcGetPath() . "assets" . $path; $files = scandir($fullPath); $html = ""; foreach ($files as $file) { if ($file != "." && $file != "..") { $html .= "<tr>" . "<td style=\"width: 10px;\"><input type=\"checkbox\" id=\"{$file}\" onchange=\"mark('{$path}/{$file}')\"><label for=\"{$file}\"></label></td>"; if (is_dir($fullPath . $file)) { // folder $fi = new FilesystemIterator($fullPath . $file, FilesystemIterator::SKIP_DOTS); $html .= "<td><i class=\"fa fa-folder-o\"></i> <a class=\"clickable\" onclick=\"getFolderPath('{$path}/{$file}')\">{$file}</a></td>" . "<td style=\"width: 10px;\">folder</td>" . "<td style=\"width: 10px;\">-</td>" . "<td style=\"width: 100px;\">" . iterator_count($fi) . ngettext(" item", " items", iterator_count($fi)) . "</td>" . "<td style=\"width: 100px;\">" . date("d M Y", filectime($fullPath . $file)) . "</td>"; } else { // get file type $finfo = finfo_open(FILEINFO_MIME_TYPE); $filetype = finfo_file($finfo, $fullPath . $file); finfo_close($finfo); // file $html .= "<td><i class=\"" . GetFileTypeIcon($filetype) . "\"></i> <a class=\"clickable\" onclick=\"viewFile('{$webPath}/{$file}', '{$filetype}', '" . FileSizeConvert(filesize($fullPath . $file)) . "', '" . date("d M Y", filectime($fullPath . $file)) . "')\">{$file}<a/></td>" . "<td style=\"width: 10px;\">{$filetype}</td>" . "<td style=\"width: 10px;\"><a alt=\"Copy link to clipboard\" class=\"clickable\" onclick=\"copyToClipboard('{$webPath}/{$file}')\"><i class=\"fa fa-link\"></i></a></td>" . "<td style=\"width: 100px;\">" . FileSizeConvert(filesize($fullPath . $file)) . "</td>" . "<td style=\"width: 100px;\">" . date("d M Y", filectime($fullPath . $file)) . "</td>"; } $html .= "</tr>"; } } // no files if (count($files) == 2) { $html .= "<tr><td colspan=\"4\" class=\"text-center\">Folder is empty.</td></tr>"; } return $html; }
public function test_FileSizeConvert() { $this->assertEquals(FileSizeConvert(1), "1 B"); $this->assertEquals(FileSizeConvert(1000), "1000 B"); $this->assertEquals(FileSizeConvert(100000), "97,66 KB"); $this->assertEquals(FileSizeConvert(100000000), "95,37 MB"); $this->assertEquals(FileSizeConvert(100000000000), "93,13 GB"); }
} } } echo "</files>"; break; case "encrypted": $userIdResult = dbUtil::SELECT("SELECT clmnId FROM tblUsers WHERE clmnUserName=:uname", array(':uname' => $_SESSION['un'])); if (count($userIdResult) != 0) { $userId = $userIdResult[0]['clmnId']; } $fileResult = dbUtil::SELECT("SELECT clmnFileName, clmnFileSize, clmnFileModified, clmnFileType FROM tblFiles WHERE clmnUNFile=:uname AND clmnEncrypted='1'", array(':uname' => $_SESSION['un'])); if (count($fileResult)) { foreach ($fileResult as $trow) { echo "<file>"; echo "<filename>" . $trow['clmnFileName'] . "</filename>"; echo "<filesize>" . FileSizeConvert($trow['clmnFileSize']) . "</filesize>"; echo "<filemod>" . date("d/m/Y", $trow['clmnFileModified']) . "</filemod>"; $type = explode("/", $trow['clmnFileType']); echo "<filetype>" . $type[0] . "</filetype>"; echo "</file>"; } } else { xml_encode("error", "No files were found!"); } break; default: //not supported break; } echo "</flrequest>"; header('Content-Type: application/xml; charset=utf-8');
if (count($userInfoResult) != 0) { echo "<name>" . $userInfoResult[0]['clmnName'] . "</name>"; echo "<email>" . $userInfoResult[0]['clmnEmail'] . "</email>"; } echo "</userinfo>"; break; case 'fileusage': echo "<usagerequest>"; $allFileSizesResult = dbUtil::SELECT("SELECT clmnFileSize FROM tblFiles WHERE clmnUNFile=:uname", array(':uname' => $_SESSION['un'])); $overallusage = 0; if (count($allFileSizesResult) != 0) { foreach ($allFileSizesResult as $row) { $overallusage += $row['clmnFileSize']; } } echo "<fig>" . FileSizeConvert($overallusage) . "</fig>"; /* 52 428 800 = 100% usage = ? */ $uppercal = $overallusage * 100; $usage = $uppercal / 52428800; echo "<perc>" . (int) $usage . "</perc>"; echo "</usagerequest>"; break; case 'adminusage': if ($_SESSION['un'] == 'admin') { $action = $_GET['action']; echo "<usagerequest>"; switch ($action) { case 'file':
} if (empty($result)) { $result = "Folder"; return $result; } else { return $result; } } sort($files); /** * Ini untuk download file * header('Content-Disposition: attachment; filename="' . $filename . '"'); * echo $filedata; exit(); */ foreach ($files as $f) { echo "\n\t\t\t\t\t\t\t<tr style='font-size:12px;'><td>{$f}</td><td>" . FileSizeConvert(filesize($f)) . "</td><td>30.11.2014 16:21:38</td><td>drwxrwxrwx(777)</td><td>Edit | Download | Delete | Rename</td></tr>"; } closedir($handle); } else { echo 'Failed to access folder'; } ?> </table> </td> </tr> <tr> <td> <table width="100%" style="font-size:14px;background:transparent;" border="0" cellpadding="20px"> <tr> <td> Upload : <br /><input type="text" style="padding:5px;margin-top:10px;width:290px;" placeholder="Path Upload" name="path" value="<?php
require_once 'C:\\wamp\\www\\corro_zone\\data_site.php'; $directory = scandir('C:\\wamp\\www\\corro_zone\\Vues\\', 1); ?> <!--File Template afficheur de repertoire de correction --> <div id="mon_espace"> <h3>Mes corros <small> <a>#MTS </a> <a>#204</a></small></h3> <div class="panel panel-default row " > <div class="panel-heading"><h3 style="font-size:16px;"><a> #Folder path </a></h3></div> <div class="panel-body"> <!--Listes des corrections --> <table class="table table-striped" style="width:100%"> <?php $i = 0; for ($i == 0; $i < count($directory) - 2; $i++) { $taille = FileSizeConvert(filesize("Vues/" . $directory[$i])); echo " <tr>\n <td><a>" . $directory[$i] . "<a></td>\n <td>" . $taille . "</td>\n </tr>"; } ?> </table> </div> </div> <div>
<?php include_once 'models/add_file.model.php'; include_once 'helper/add_file_functions.php'; include_once 'common.php'; $addfile = $_FILES['addfile']; $postname = $_POST['postname']; $day = $_POST['day']; $month = $_POST['month']; $year = $_POST['year']; $info = new SplFileInfo($_FILES['addfile']['name']); $filesize = FileSizeConvert(filesize($_FILES['addfile']['tmp_name'])); $date = time(); $data = array('file_name' => $postname, 'create_date' => date('Y-m-d', $date), 'size' => $filesize, 'type' => $info->getExtension()); $id = add_file($data); if ($id) { $uploads_dir = '../files/'; if (!is_dir($uploads_dir)) { mkdir($uploads_dir); chmod($uploads_dir, 0777); } $uploadfile = $uploads_dir . basename($id) . '.' . $info->getExtension(); $upload_bool = move_uploaded_file($_FILES['addfile']['tmp_name'], $uploadfile); if ($upload_bool == false) { } } require_once 'templates/add_file.template.php';
} $num = count($total_logfiles); if ($total_size < $batch_limit && $batches_left == "") { $text = 'Located ' . $num . ' netLog files totaling ' . FileSizeConvert($total_size) . '. Do you want to import them?<br /><br /><a href="import.php?import">Import logs</a>'; echo notice($text, "Import Logs"); } else { $batches = ceil($total_size / $batch_limit); $numss = $_GET["num"]; if ($batches_left == "1") { $text = 'Located ' . $num . ' netLog files totaling ' . FileSizeConvert($total_size) . '. Due to the size of the logs, they need to be imported in batches of ' . FileSizeConvert($batch_limit) . '.<br />Do you want to import them?<br /><br /><div id="text" style="text-align:center;"><a href="import.php?import&num=' . $numss . '" onclick="document.getElementById(\'loadin\').style.display=\'block\';document.getElementById(\'text\').style.display=\'none\';">Import logs, last batch</a></div><div id="loadin" style="text-align:center;display:none;"><img src="/style/img/loading.gif" alt="Loading..." \\></div>'; echo notice($text, "Import Logs"); } elseif ($batches_left == "") { $text = 'Located ' . $num . ' netLog files totaling ' . FileSizeConvert($total_size) . '. Due to the size of the logs, they need to be imported in batches of ' . FileSizeConvert($batch_limit) . '.<br />Do you want to import them?<br /><br /><div id="text" style="text-align:center;"><a href="import.php?import&batches_left=' . $batches . '&num=' . $numss . '" onclick="document.getElementById(\'loadin\').style.display=\'block\';document.getElementById(\'text\').style.display=\'none\';">Import logs, patch 1 of ' . $batches . '</a></div><div id="loadin" style="text-align:center;display:none;"><img src="/style/img/loading.gif" alt="Loading..." \\></div>'; echo notice($text, "Import Logs"); } else { $text = '' . $num . ' netLog files totaling ' . FileSizeConvert($total_size) . ' remaining.<br />Do you want to import the next batch?<br /><br /><div id="text" style="text-align:center;"><a href="import.php?import&batches_left=' . $batches_left . '&num=' . $numss . '" onclick="document.getElementById(\'loadin\').style.display=\'block\';document.getElementById(\'text\').style.display=\'none\';">Import logs, ' . $batches . ' batches left</a></div><div id="loadin" style="text-align:center;display:none;"><img src="/style/img/loading.gif" alt="Loading..." \\></div>'; echo notice($text, "Import Logs"); } } if (isset($_GET["import"])) { $i = 0; $current_sys = ""; foreach ($logfiles as $newest_file) { if (!array_search($newest_file, $imported_files)) { // read first line to get date $fline = fgets(fopen($newest_file, 'r')); $sub = substr($fline, 0, 8); $sub = explode("-", $sub); $year = "20" . $sub[0]; $month = $sub[1]; $day = $sub[2];
/** * Chuẩn bị status page * @return string * @since 20160622112201 */ function get_status() { $size_family = FileSizeConvert(foldersize(FCPATH)); $size_git = FileSizeConvert(foldersize(FCPATH . ".git")); $size_assets = FileSizeConvert(foldersize(FCPATH . "asset")); $size_db = FileSizeConvert(foldersize(APPPATH . "models/db")); $access_chart = get_access_chart(); ob_start(); ?> <h3>SIZE</h3> <p><b>Size of family: </b><?php echo $size_family; ?> </p> <p><b>Size of git: </b><?php echo $size_git; ?> </p> <p><b>Size of assets: </b><?php echo $size_assets; ?> </p> <p><b>Size of db: </b><?php echo $size_db; ?> </p> <button class="btn btn-default ajax_button download_backup" data-href="/ajax/do_ajax/download_backup"> Download backup</button> <script> $(".ajax_button.download_backup").click(function(){ $(this).after("<div class='loading_m'>Loading ... <i class='fa fa-spin fa-refresh'></i> </div>"); $.post($(this).data("href"),null, function(data, textStatus, xhr) { $(".loading_m").remove(); var return_data = JSON.parse(data); if(return_data.status=="done"){ $(".ajax_button.download_backup").after("<p><a href='"+return_data.url+"'>"+return_data.url+"</a></p>"); } }); }); </script> <hr> <div class="connect"> <h3>Lượt truy cập</h3> <p><b>Bố: </b> <div class="progress"> <div class="progress-bar progress-bar-success progress-bar-striped" role="progressbar" aria-valuenow="<?php echo $access_chart[0]; ?> " aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $access_chart[0]; ?> %"> <span class="sr-only"><?php echo $access_chart[0]; ?> % Complete (success)</span> </div> </div> </p> <p><b>Mẹ: </b> <div class="progress"> <div class="progress-bar progress-bar-danger progress-bar-striped" role="progressbar" aria-valuenow="<?php echo $access_chart[1]; ?> " aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $access_chart[1]; ?> %"> <span class="sr-only"><?php echo $access_chart[1]; ?> % Complete (success)</span> </div> </div> </p> </div> <hr> <?php $return = ob_get_clean(); return $return; }
public function displayDebug() { global $start_time; $this->display(); $this->_memory['display'] = memory_get_usage(); $this->_mempeak['display'] = memory_get_peak_usage(); $this->_time['display'] = microtime(true); if (!$this->ini_get_display_errors()) { return; } $memory_peak_usage = memory_get_peak_usage(); $hr = '<hr style="color:#F5F5F5;margin:2px" />'; $totalSize = 0; foreach (get_included_files() as $file) { $totalSize += filesize($file); } $totalQueryTime = 0; foreach (Db::getInstance()->queries as $data) { $totalQueryTime += $data['time']; } $hooktime = Hook::getHookTime(); arsort($hooktime); $totalHookTime = 0; foreach ($hooktime as $time) { $totalHookTime += $time; } $hookMemoryUsage = Hook::getHookMemoryUsage(); arsort($hookMemoryUsage); $totalHookMemoryUsage = 0; foreach ($hookMemoryUsage as $usage) { $totalHookMemoryUsage += $usage; } $globalSize = array(); $totalGlobalSize = 0; foreach ($GLOBALS as $key => $value) { if ($key != 'GLOBALS') { $totalGlobalSize += $size = $this->sizeofvar($value); if ($size > 1024) { $globalSize[$key] = round($size / 1024, 1); } } } arsort($globalSize); $cache = Cache::retrieveAll(); $totalCacheSize = $this->sizeofvar($cache); $output = ''; $output .= '<link href="' . Tools::getShopDomain(true) . '/modules/debugtoolbar/views/assets/css/debugtoolbar.css" rel="stylesheet" type="text/css" media="all">'; $output .= ' <div class="debugtoolbar"> <div class="debugtoolbar-window"> <div class="debugtoolbar-content-area"> '; /* LOAD TIME */ $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-load-times">'; $output .= ' <table> <tr> <th>Name</th> <th>Running Time (ms)</th> </tr> <tr> <td class="debugtoolbar-table-first">Global Application</td> <td>' . $this->displayLoadTimeColor($this->_time['display'] - $start_time, true) . '</td> </tr> '; $last_time = $start_time; foreach ($this->_time as $k => $time) { $output .= ' <tr> <td class="debugtoolbar-table-first">' . ucfirst($k) . '</td> <td>' . $this->displayLoadTimeColor($time - $last_time, true) . '</td> </tr> '; $last_time = $time; } $output .= ' </table> '; $output .= ' </div>'; /* /LOAD TIME */ /* HOOK PROCESSING */ $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-hook-processing">'; $output .= ' <table> <tr> <th>Name</th> <th>Running Time (ms) / Memory Usage</th> </tr> <tr> <td class="debugtoolbar-table-first">Global Hook</td> <td><pre>' . $this->displayLoadTimeColor($totalHookTime) . ' / ' . $this->displayMemoryColor($totalHookMemoryUsage) . '</pre></td> </tr> '; foreach ($hooktime as $hook => $time) { $output .= ' <tr> <td class="debugtoolbar-table-first">' . ucfirst($hook) . '</td> <td><pre>' . $this->displayLoadTimeColor($time) . ' / ' . $this->displayMemoryColor($hookMemoryUsage[$hook]) . '</pre></td> </tr> '; } $output .= ' </table> '; $output .= ' </div>'; /* /HOOK PROCESSING */ /* MEMORY PEAK USAGE */ $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-memory-peak-usage">'; $output .= ' <table> <tr> <th>Name</th> <th>Memory Usage (Global)</th> </tr> <tr> <td class="debugtoolbar-table-first">Global Memory</td> <td><pre>' . $this->displayPeakMemoryColor($memory_peak_usage) . '</pre></td> </tr> '; foreach ($this->_memory as $k => $memory) { $last_memory = 0; $output .= ' <tr> <td class="debugtoolbar-table-first">' . ucfirst($k) . '</td> <td><pre>' . $this->displayMemoryColor($memory - $last_memory) . ' (' . $this->displayPeakMemoryColor($this->_mempeak[$k]) . ')</pre></td> </tr> '; $last_memory = $memory; } $output .= ' </table> '; $output .= ' </div>'; /* /MEMORY PEAK USAGE */ /* INCLUDED FILES */ $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-included-files">'; $output .= ' <table> <tr> <th>#</th> <th>File</th> <th>Size</th> </tr> <tr> <td class="debugtoolbar-table-first">Size global files</td> <td><pre>' . $this->displayMemoryColor($totalSize) . '</pre></td> <td>-</td> </tr> '; $i = 1; foreach (get_included_files() as $file) { $f = ltrim(str_replace('\\', '/', str_replace(_PS_ROOT_DIR_, '', $file)), '/'); $f = dirname($file) . '/<span style="color: #0080b0">' . basename($file) . '</span>'; $output .= ' <tr> <td class="debugtoolbar-table-first">' . $i . '</td> <td><pre>' . $f . '</pre></td> <td>' . FileSizeConvert(@filesize($file)) . '</td> </tr> '; $i++; } $output .= ' </table> '; $output .= ' </div>'; /* /INCLUDED FILES */ /* SQL QUERIES */ $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-sql-queries">'; $output .= ' <table> <tr> <th>Time</th> <th>Query</th> </tr> '; $array_queries = array(); $queries = Db::getInstance()->queries; uasort($queries, 'prestashop_querytime_sort'); foreach ($queries as $data) { $query_row = array('time' => $data['time'], 'query' => $data['query'], 'location' => $data['file'] . ':<span style="color:#0080b0">' . $data['line'] . '</span>', 'filesort' => false, 'rows' => 1, 'group_by' => false); if (preg_match('/^\\s*select\\s+/i', $data['query'])) { $explain = Db::getInstance()->executeS('explain ' . $data['query']); if (stristr($explain[0]['Extra'], 'filesort')) { $query_row['filesort'] = true; } foreach ($explain as $row) { $query_row['rows'] *= $row['rows']; } if (stristr($data['query'], 'group by') && !preg_match('/(avg|count|min|max|group_concat|sum)\\s*\\(/i', $data['query'])) { $query_row['group_by'] = true; } } $array_queries[] = $query_row; } foreach ($array_queries as $data) { $filestortGroup = ''; if (preg_match('/^\\s*select\\s+/i', $data['query'])) { if ($data['filesort']) { $filestortGroup .= '<b ' . $this->getTimeColor($data['time'] * 1000) . '>USING FILESORT</b> - '; } $filestortGroup .= $this->displayRowsBrowsed($data['rows']); if ($data['group_by']) { $filestortGroup .= ' - <b>Useless GROUP BY need to be removed</b>'; } } $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2"><strong>Query in : </strong>' . $data['location'] . ' - ' . $filestortGroup . '</td> </tr> <tr> <td class="debugtoolbar-table-first"><span ' . $this->getTimeColor($data['time'] * 1000) . '>' . round($data['time'] * 1000, 3) . ' ms</span></td> <td><pre>' . htmlspecialchars($data['query'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> '; } $output .= ' </table> '; $output .= ' </div>'; /* /SQL QUERIES */ /* TABLES */ $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-sql-table">'; $output .= ' <table> <tr> <th>Nb call</th> <th>Table</th> </tr> '; $tables = Db::getInstance()->tables; arsort($tables); foreach ($tables as $table => $nb) { $output .= ' <tr> <td class="debugtoolbar-table-first"><b ' . $this->getTableColor($nb) . '>' . $nb . '</b></td> <td><pre>' . $table . '</pre></td> </tr> '; } $output .= ' </table> '; $output .= ' </div>'; /* /TABLES */ /* OBJECTMODEL */ if (isset(ObjectModel::$debug_list)) { $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-objectmodel-instance">'; $output .= ' <table> <tr> <th>Nb call</th> <th>ObjectModel Instance</th> </tr> '; $list = ObjectModel::$debug_list; uasort($list, create_function('$a,$b', 'return (count($a) < count($b)) ? 1 : -1;')); $i = 0; foreach ($list as $class => $info) { echo ''; echo ''; $i++; $output .= ' <tr> <td class="debugtoolbar-table-first"><b ' . $this->getObjectModelColor(count($info)) . '>' . count($info) . '</b></td> <td><a href="#" onclick="$(\'#object_model_' . $i . '\').css(\'display\', $(\'#object_model_' . $i . '\').css(\'display\') == \'none\' ? \'block\' : \'none\'); return false" style="color:#0080b0">' . $class . '</a> <pre id="object_model_' . $i . '" style="display: none">'; foreach ($info as $trace) { $output .= ltrim(str_replace(array(_PS_ROOT_DIR_, '\\'), array('', '/'), $trace['file']), '/') . ' [' . $trace['line'] . ']<br />'; } $output .= '</pre></td> </tr> '; } $output .= ' </table> '; $output .= ' </div>'; } /* /OBJECTMODEL */ /* GETALLHEADERS */ $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-getallheader">'; $output .= ' <table> <tr> <th>Name</th> <th>Value</th> </tr> '; $getallheaders = getallheaders(); foreach ($getallheaders as $name => $value) { $output .= ' <tr> <td class="debugtoolbar-table-first">' . $name . '</td> <td><pre>' . $value . '</pre></td> </tr> '; } stream_context_set_default(array('http' => array('method' => 'HEAD'))); $url = getUrl(); if ($get_headers = get_headers($url, 1)) { foreach ($get_headers as $name => $value) { $output .= ' <tr> <td class="debugtoolbar-table-first">' . $name . '</td> <td><pre>' . (is_array($value) ? $value[0] : $value) . '</pre></td> </tr> '; } } $output .= ' </table> '; $output .= ' </div>'; /* /GETALLHEADERS */ /* DATA */ $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-getpost-data">'; $output .= ' <table> <tr> <th>Name</th> <th>Value</th> </tr> <tr> <td class="debugtoolbar-table-title" colspan="2">Post Data</td> </tr> '; $post = isset($_POST) ? $_POST : array(); if (!count($post)) { $output .= '<tr><td colspan="2">No POST Data Found</td></tr>'; } else { foreach ($post as $name => $value) { if (!is_array($value)) { $output .= ' <tr> <td class="debugtoolbar-table-first">' . $name . '</td> <td><pre>' . $value . '</pre></td> </tr> '; } else { $output .= ' <tr> <td class="debugtoolbar-table-first">' . $name . '</td> <td> '; foreach ($value as $k => $v) { $output .= ' <pre>' . $k . ' : ' . $v . '</pre> '; } $output .= ' </td> </tr> '; } } } $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2">Get Data</td> </tr> '; $get = isset($_GET) ? $_GET : array(); if (!count($get)) { $output .= '<tr><td colspan="2">No GET Data Found</td></tr>'; } else { foreach ($get as $name => $value) { $output .= ' <tr> <td class="debugtoolbar-table-first">' . $name . '</td> <td><pre>' . $value . '</pre></td> </tr> '; } } $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2">Server Data</td> </tr> '; $server = isset($_SERVER) ? $_SERVER : array(); if (!count($server)) { $output .= '<tr><td colspan="2">No SERVER Data Found</td></tr>'; } else { foreach ($server as $name => $value) { $output .= ' <tr> <td class="debugtoolbar-table-first">' . $name . '</td> <td><pre>' . $value . '</pre></td> </tr> '; } } $output .= ' </table> '; $output .= ' </div>'; /* /DATA */ /* DEBUG */ if (count($GLOBALS['debugtoolbar'])) { $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-debug">'; $output .= ' <table> <tr> <th>Debug</th> </tr> '; $output .= ' <tr> <td colspan="2">' . $GLOBALS['debugtoolbar'] . '</td> </tr> '; $output .= ' </table> '; $output .= ' </div>'; } /* /DEBUG */ /* PS INFOS */ if (isset($this->context->employee->id)) { $ps_infos = array('version' => array('php' => phpversion(), 'server' => $_SERVER['SERVER_SOFTWARE'], 'memory_limit' => ini_get('memory_limit'), 'max_execution_time' => ini_get('max_execution_time')), 'database' => array('version' => Db::getInstance()->getVersion(), 'prefix' => _DB_PREFIX_, 'engine' => _MYSQL_ENGINE_), 'uname' => function_exists('php_uname') ? php_uname('s') . ' ' . php_uname('v') . ' ' . php_uname('m') : '', 'apache_instaweb' => Tools::apacheModExists('mod_instaweb'), 'shop' => array('ps' => _PS_VERSION_, 'url' => Tools::getHttpHost(true) . __PS_BASE_URI__, 'theme' => _THEME_NAME_), 'mail' => Configuration::get('PS_MAIL_METHOD') == 1, 'smtp' => array('server' => Configuration::get('PS_MAIL_SERVER'), 'user' => Configuration::get('PS_MAIL_USER'), 'password' => Configuration::get('PS_MAIL_PASSWD'), 'encryption' => Configuration::get('PS_MAIL_SMTP_ENCRYPTION'), 'port' => Configuration::get('PS_MAIL_SMTP_PORT')), 'user_agent' => $_SERVER['HTTP_USER_AGENT']); $tests = ConfigurationTest::getDefaultTests(); $tests_op = ConfigurationTest::getDefaultTestsOp(); $params_required_results = ConfigurationTest::check($tests); $params_optional_results = ConfigurationTest::check($tests_op); $tests_errors = array('phpversion' => 'Update your PHP version', 'upload' => 'Configure your server to allow file uploads', 'system' => 'Configure your server to allow the creation of directories and files with write permissions.', 'gd' => 'Enable the GD library on your server.', 'mysql_support' => 'Enable the MySQL support on your server.', 'config_dir' => 'Set write permissions for the "config" folder.', 'cache_dir' => 'Set write permissions for the "cache" folder.', 'sitemap' => 'Set write permissions for the "sitemap.xml" file.', 'img_dir' => 'Set write permissions for the "img" folder and subfolders.', 'log_dir' => 'Set write permissions for the "log" folder and subfolders.', 'mails_dir' => 'Set write permissions for the "mails" folder and subfolders.', 'module_dir' => 'Set write permissions for the "modules" folder and subfolders.', 'theme_lang_dir' => 'Set the write permissions for the "themes' . _THEME_NAME_ . '/lang/" folder and subfolders, recursively.', 'translations_dir' => 'Set write permissions for the "translations" folder and subfolders.', 'customizable_products_dir' => 'Set write permissions for the "upload" folder and subfolders.', 'virtual_products_dir' => 'Set write permissions for the "download" folder and subfolders.', 'fopen' => 'Allow the PHP fopen() function on your server', 'register_globals' => 'Set PHP "register_global" option to "Off"', 'gz' => 'Enable GZIP compression on your server.'); $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-ps-info">'; $output .= "\r\n\t\t\t\t\t\t\t\t\t\t\t<script type=\"text/javascript\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\$(document).ready(function()\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\$.ajax({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'GET',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\turl: '" . $this->context->link->getAdminLink('AdminInformation') . "',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'action': 'checkFiles',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'ajax': 1\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsuccess: function(json)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar tab = {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'missing': 'Missing files',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'updated': 'Updated files'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (json.missing.length || json.updated.length)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\$('#changedFilesDebugtoolbar').html('<div style=\"color:#ef8400;\">Changed/missing files have been detected.</div>');\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\$('#changedFilesDebugtoolbar').html('<div style=\"color:#0080b0;\">No change has been detected in your files</div>');\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\$.each(tab, function(key, lang)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (json[key].length)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar html = \$('<ul>').attr('id', key+'_files');\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\$(json[key]).each(function(key, file)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thtml.append(\$('<li>').html(file))\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\$('#changedFilesDebugtoolbar')\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.append(\$('<h3>').html(lang+' ('+json[key].length+')'))\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.append(html);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t</script>\r\n\t\t\t"; $output .= ' <table> <tr> <th>Name</th> <th>Value</th> </tr> '; $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2"><strong>Server Informations</strong></td> </tr> <tr> <td class="debugtoolbar-table-first">Server</td> <td><pre>' . htmlspecialchars($ps_infos['uname'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> <tr> <td class="debugtoolbar-table-first">Logiciel Serveur</td> <td><pre>' . htmlspecialchars($ps_infos['version']['server'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> <tr> <td class="debugtoolbar-table-first">PHP Version</td> <td><pre>' . htmlspecialchars($ps_infos['version']['php'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> <tr> <td class="debugtoolbar-table-first">Memory Limit</td> <td><pre>' . htmlspecialchars($ps_infos['version']['memory_limit'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> <tr> <td class="debugtoolbar-table-first">Max Execution Time</td> <td><pre>' . htmlspecialchars($ps_infos['version']['max_execution_time'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> '; $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2"><strong>Database Informations</strong></td> </tr> <tr> <td class="debugtoolbar-table-first">MySQL Version</td> <td><pre>' . htmlspecialchars($ps_infos['database']['version'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> <tr> <td class="debugtoolbar-table-first">MySQL Engine</td> <td><pre>' . htmlspecialchars($ps_infos['database']['engine'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> <tr> <td class="debugtoolbar-table-first">MySQL Prefix</td> <td><pre>' . htmlspecialchars($ps_infos['database']['prefix'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> '; $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2"><strong>Store Informations</strong></td> </tr> <tr> <td class="debugtoolbar-table-first">PrestaShop Version</td> <td><pre>' . htmlspecialchars($ps_infos['shop']['ps'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> <tr> <td class="debugtoolbar-table-first">Store Url</td> <td><pre>' . htmlspecialchars($ps_infos['shop']['url'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> <tr> <td class="debugtoolbar-table-first">Themes Use</td> <td><pre>' . htmlspecialchars($ps_infos['shop']['theme'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> '; if (!empty($ps_infos['mail'])) { $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2"><strong>Email Setting</strong></td> </tr> <tr> <td colspan="2"><pre>You are using the PHP mail function.</pre></td> </tr> '; } else { $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2"><strong>Email Setting</strong></td> </tr> <tr> <td class="debugtoolbar-table-first">SMTP Server</td> <td><pre>' . htmlspecialchars($ps_infos['smtp']['server'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> <tr> <td class="debugtoolbar-table-first">Cryptage</td> <td><pre>' . htmlspecialchars($ps_infos['smtp']['encryption'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> <tr> <td class="debugtoolbar-table-first">Port</td> <td><pre>' . htmlspecialchars($ps_infos['smtp']['port'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> <tr> <td class="debugtoolbar-table-first">Login</td> <td><pre>' . (!empty($ps_infos['smtp']['user']) ? '<span style="color:#90bd00;font-weight:bold;">OK</span>' : '<span style="color:#ff4141;font-weight:bold;">Not defined</span>') . '</pre></td> </tr> <tr> <td class="debugtoolbar-table-first">Password</td> <td><pre>' . (!empty($ps_infos['smtp']['password']) ? '<span style="color:#90bd00;font-weight:bold;">OK</span>' : '<span style="color:#ff4141;font-weight:bold;">Not defined</span>') . '</pre></td> </tr> '; } $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2"><strong>Your information</strong></td> </tr> <tr> <td class="debugtoolbar-table-first">Your web browser</td> <td><pre>' . htmlspecialchars($ps_infos['user_agent'], ENT_NOQUOTES, 'utf-8', false) . '</pre></td> </tr> '; $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2"><strong>Check your configuration</strong></td> </tr> '; $output .= ' <tr> <td class="debugtoolbar-table-first">Required parameters</td> '; if (!in_array('fail', $params_required_results)) { $output .= ' <td><pre><span style="color:#90bd00;font-weight:bold;">OK</span></pre></td> '; } else { $output .= ' <td> <pre><span style="color:#ff4141;font-weight:bold;">Please fix the following error(s)</span></pre> <ul> '; foreach ($params_required_results as $key => $value) { if ($value == 'fail') { $output .= ' <li>' . $tests_errors[$key] . '</li>'; } } $output .= ' </ul> </td> '; } $output .= ' </tr> '; $output .= ' <tr> <td class="debugtoolbar-table-first">Optional parameters</td> '; if (!in_array('fail', $params_optional_results)) { $output .= ' <td><pre><span style="color:#90bd00;font-weight:bold;">OK</span></pre></td> '; } else { $output .= ' <td> <pre><span style="color:#ff4141;font-weight:bold;">Please fix the following error(s)</span></pre> <ul> '; foreach ($params_optional_results as $key => $value) { if ($value == 'fail') { $output .= ' <li>' . $key . '</li>'; } } $output .= ' </ul> </td> '; } $output .= ' </tr> '; $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2"><strong>List of changed files</strong></td> </tr> '; $output .= ' <tr> <td colspan="2"><div id="changedFilesDebugtoolbar"><img src="../img/admin/ajax-loader.gif" /> Checking files...</div></td> </tr> '; $output .= ' </table> '; $output .= ' </div>'; } else { $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-ps-info">'; $output .= ' <table> <tr> <td><pre><span style="color:#ff4141;font-weight:bold;">Not display in Front office</span></pre></td> </tr> </table> </div> '; } /* /PS INFOS */ /* SMARTY DEBUG */ $this->context->smarty->loadPlugin('Smarty_Internal_Debug'); // Smarty_Internal_Debug::display_debug($this->context->smarty); $SID = new Smarty_Internal_Debug(); $obj = $this->context->smarty; $ptr = $SID::get_debug_vars($obj); if ($obj instanceof Smarty) { $smarty = clone $obj; } else { $smarty = clone $obj->smarty; } $_assigned_vars = $ptr->tpl_vars; ksort($_assigned_vars); $_config_vars = $ptr->config_vars; ksort($_config_vars); $smarty->registered_filters = array(); $smarty->autoload_filters = array(); $smarty->default_modifiers = array(); $smarty->force_compile = false; $smarty->left_delimiter = '{'; $smarty->right_delimiter = '}'; $smarty->debugging = false; $smarty->force_compile = false; if ($obj instanceof Smarty_Internal_Template) { $template_name = $obj->source->type . ':' . $obj->source->name; } if ($obj instanceof Smarty) { $template_name = $SID::$template_data; } else { $template_name = null; } $execution_time = microtime(true) - $smarty->start_time; $assigned_vars = $_assigned_vars; $config_vars = $_config_vars; // echo 'assigned_vars<pre>'.print_r($assigned_vars['SCRIPT_NAME'], true).'</pre>';die; $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-smarty-debug">'; $output .= ' <table> <tr> <th colspan="2">Smarty Debug Console - ' . (isset($template_name) && count($template_name) ? $template_name : 'Total Time ' . number_format($execution_time, 5, '.', '')) . '</th> </tr> '; if (isset($template_name) && count($template_name)) { foreach ($template_name as $template) { $output .= ' <tr> <td class="debugtoolbar-table-first"><font color=brown>' . $template['name'] . '</font></td> <td> <span style="font-size: 0.8em;font-style: italic;"> ' . number_format($template['compile_time'], 5, '.', '') . ' ' . number_format($template['render_time'], 5, '.', '') . ' ' . number_format($template['cache_time'], 5, '.', '') . ' </span> </td> </tr> '; } } $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2"><strong>Assigned template variables</strong></td> </tr> '; foreach ($assigned_vars as $key => $vars) { $output .= ' <tr> <td class="debugtoolbar-table-first">' . $key . '</td> <td><pre>' . smarty_modifier_debug_print_var($vars) . '</pre></td> </tr> '; } $output .= ' <tr> <td class="debugtoolbar-table-title" colspan="2"><trong>Assigned config file variables (outer template scope)</strong></td> </tr> '; foreach ($config_vars as $key => $vars) { $output .= ' <tr> <td class="debugtoolbar-table-first">' . $key . '</td> <td><pre>' . smarty_modifier_debug_print_var($vars) . '</pre></td> </tr> '; } $output .= ' </table> '; $output .= ' </div>'; /* SMARTY DEBUG */ /* ADMINER */ if (isset($this->context->employee->id)) { $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-adminer">'; $output .= ' <table> <tr> <th>Adminer</th> </tr> '; $output .= ' <tr> <td colspan="2"> <iframe src="' . Tools::getShopDomain(true) . '/modules/debugtoolbar/tools/adminer/display.php?server=' . _DB_SERVER_ . '&username='******'&db=' . _DB_NAME_ . '" frameborder="0" height="880" width="100%" id="adminerFrame"></iframe> <script type="text/javascript"> $(\'#adminerFrame\').load(function(){ $self = $(this).contents(); $self.find("input[name=\'auth[server]\']").val("' . _DB_SERVER_ . '"); $self.find("input[name=\'auth[username]\']").val("' . _DB_USER_ . '"); $self.find("input[name=\'auth[password]\']").val("' . _DB_PASSWD_ . '"); $self.find("input[name=\'auth[db]\']").val("' . _DB_NAME_ . '"); }); </script> </td> </tr> '; $output .= ' </table> '; $output .= ' </div>'; } else { $output .= ' <div class="debugtoolbar-tab-pane debugtoolbar-table debugtoolbar-adminer">'; $output .= ' <table> <tr> <td><pre><span style="color:#ff4141;font-weight:bold;">Not display in Front office</span></pre></td> </tr> </table> </div> '; } /* /ADMINER */ $output .= ' </div> </div> <ul id="debugtoolbar-open-tabs" class="debugtoolbar-tabs"> <!-- LOAD TIME --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-load-times">Time <span class="debugtoolbar-count">' . $this->displayLoadTimeColor($this->_time['display'] - $start_time) . '</span></a></li> <!-- /LOAD TIME --> <!-- HOOK PROCESSING --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-hook-processing">Hook <span class="debugtoolbar-count">' . $this->displayLoadTimeColor($totalHookTime) . ' / ' . $this->displayMemoryColor($totalHookMemoryUsage) . '</span></a></li> <!-- /HOOK PROCESSING --> <!-- MEMORY PEAK USAGE --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-memory-peak-usage">Memory <span class="debugtoolbar-count">' . $this->displayPeakMemoryColor($memory_peak_usage) . '</span></a></li> <!-- /MEMORY PEAK USAGE --> <!-- INCLUDED FILES --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-included-files">Files <span class="debugtoolbar-count">' . sizeof(get_included_files()) . '</span></a></li> <!-- /INCLUDED FILES --> <!-- SQL QUERIES --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-sql-queries">Sql <span class="debugtoolbar-count">' . $this->displaySQLQueries(count(Db::getInstance()->queries)) . '</span><span class="debugtoolbar-count">' . $this->displayLoadTimeColor($totalQueryTime) . '</span></a></li> <!-- /SQL QUERIES --> <!-- TABLE --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-sql-table">Table</a></li> <!-- /TABLE --> <!-- OBJECTMODEL --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-objectmodel-instance">ObjectModel</a></li> <!-- /OBJECTMODEL --> <!-- GETALLHEADERS --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-getallheader">Header</a></li> <!-- /GETALLHEADERS --> <!-- DATA --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-getpost-data">Data</a></li> <!-- /DATA --> <!-- PS INFOS --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-ps-info">Infos</a></li> <!-- /PS INFOS --> <!-- SMARTY DEBUG --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-smarty-debug">Smarty</a></li> <!-- /SMARTY DEBUG --> <!-- ADMINER --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-adminer">Adminer</a></li> <!-- /ADMINER --> '; if (count($GLOBALS['debugtoolbar'])) { $output .= ' <!-- DEBUG --> <li><a class="debugtoolbar-tab" data-debugtoolbar-tab="debugtoolbar-debug">Debug</a></li> <!-- /DEBUG --> '; } $output .= ' <li class="debugtoolbar-tab-right"><a id="debugtoolbar-hide" href="#">↦</a></li> <li class="debugtoolbar-tab-right"><a id="debugtoolbar-close" href="#">×</a></li> <li class="debugtoolbar-tab-right"><a id="debugtoolbar-zoom" href="#">⇅</a></li> </ul> <ul id="debugtoolbar-closed-tabs" class="debugtoolbar-tabs"> <li><a id="debugtoolbar-show" href="#">↤</a></li> </ul> </div> '; $output .= '<script type="text/javascript" src="' . Tools::getShopDomain(true) . '/modules/debugtoolbar/views/assets/js/debugtoolbar.js"></script>'; echo $output; }